<?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>146161</bug_id>
          
          <creation_ts>2015-06-19 14:17:33 -0700</creation_ts>
          <short_desc>Web Inspector: DOM.highlightSelector should work for &quot;a:visited&quot;</short_desc>
          <delta_ts>2019-11-18 11:43:00 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>204306</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103401</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-19 14:17:33 -0700</bug_when>
    <thetext>Currently, Document.querySelectorAll does not match selectors that have &quot;:visited&quot; pseudo-selectors.  This should be implemented as it currently works for CSS rules and should therefore also work for JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103402</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-06-19 14:18:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/21467303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103445</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-19 15:36:00 -0700</bug_when>
    <thetext>The original description sounds wrong.

It is expected behavior that &quot;:visited&quot; pseudo-selectors doesn&apos;t work with querySelectorAll for privacy reasons.

However, for the inspector to highlight all nodes matching a selector, we should properly highlight elements matching the &quot;:visited&quot;. The current implementation uses document.querySelectorAll and therefore misses them. We should covert to something more powerful internally to really find all the nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581080</commentid>
    <comment_count>3</comment_count>
      <attachid>381210</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-17 11:53:30 -0700</bug_when>
    <thetext>Created attachment 381210
[Patch] WIP

Current bugs:
 - `:before` and `:after` don&apos;t match anything
 - the selector `div` will match internal shadow elements, like the `&lt;div&gt;` inside an `&lt;input&gt;`

The result I&apos;m hoping to eventually get is what the CSS selector matching engine actually results in when it applies styles from a style sheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581377</commentid>
    <comment_count>4</comment_count>
      <attachid>381210</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-18 05:00:22 -0700</bug_when>
    <thetext>Comment on attachment 381210
[Patch] WIP

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

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1260
&gt; +        SelectorChecker::CheckingContext context(SelectorChecker::Mode::CollectingRules);

I think you can make virtual pseudo elements (::before, ::after, ::first-line etc) work like this:

1) Switch to SelectorChecker::Mode::ResolvingStyle
2) After match() check if context.pseudoIDSet contains a pseudo element (match return false in this case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581378</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-18 05:04:11 -0700</bug_when>
    <thetext>&gt;  - the selector `div` will match internal shadow elements, like the `&lt;div&gt;`
&gt; inside an `&lt;input&gt;`

You should probably just skip everything in UA shadow trees (element.containingShadowRoot()-&gt;mode() == ShadowRootMode::UserAgent) that doesn&apos;t have pseudoId().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581668</commentid>
    <comment_count>6</comment_count>
      <attachid>381364</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-18 19:51:54 -0700</bug_when>
    <thetext>Created attachment 381364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581669</commentid>
    <comment_count>7</comment_count>
      <attachid>381364</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-18 19:58:13 -0700</bug_when>
    <thetext>Comment on attachment 381364
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1266
&gt; +        if (auto* beforePseudoElement = descendantElement.beforePseudoElement())
&gt; +            checkNode(*beforePseudoElement);
&gt; +        if (auto* afterPseudoElement = descendantElement.afterPseudoElement())
&gt; +            checkNode(*afterPseudoElement);

This works for selectors like `:before, but not `div:before`.

From what I can tell, `composedTreeDescendants` doesn&apos;t iterate over pseudo elements like `:before`/`:after`.

@Antti, is this correct, or am I missing something?

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1273
&gt; +            if (isInUserAgentShadowTree &amp;&amp; (selector-&gt;match() != CSSSelector::PseudoElement || selector-&gt;serializingValue() != pseudo))

As you suggested @Antti, this works great to prevent nodes that don&apos;t have a corresponding pseudo-selector from being highlighted.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589696</commentid>
    <comment_count>8</comment_count>
      <attachid>383405</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-11-12 16:42:27 -0800</bug_when>
    <thetext>Created attachment 383405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589988</commentid>
    <comment_count>9</comment_count>
      <attachid>383405</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-13 12:33:34 -0800</bug_when>
    <thetext>Comment on attachment 383405
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1276
&gt; +            if (isInUserAgentShadowTree &amp;&amp; (selector-&gt;match() != CSSSelector::PseudoElement || selector-&gt;serializingValue() != pseudo))

I thin that you can test &apos;CSSSelector::pseudoId(selector-&gt;pseudoElementType())) == pseudoId&apos; instead of going via serializingValue. You won&apos;t need &apos;pseudo&apos; variable either.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1306
&gt; +                if (pseudoIDs) {
&gt; +                    nodes.append(descendantElement);
&gt; +                    break;
&gt; +                }

Not sure if this is the right thing to do for pseudo elements that don&apos;t match any element (::first-line etc). Maybe it is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590041</commentid>
    <comment_count>10</comment_count>
      <attachid>383405</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-11-13 14:12:33 -0800</bug_when>
    <thetext>Comment on attachment 383405
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1276
&gt;&gt; +            if (isInUserAgentShadowTree &amp;&amp; (selector-&gt;match() != CSSSelector::PseudoElement || selector-&gt;serializingValue() != pseudo))
&gt; 
&gt; I thin that you can test &apos;CSSSelector::pseudoId(selector-&gt;pseudoElementType())) == pseudoId&apos; instead of going via serializingValue. You won&apos;t need &apos;pseudo&apos; variable either.

This doesn&apos;t work with user-agent pseudo selectors like `::-webkit-textfield-decoration-container`.  I derived this logic from `CSSSelector::selectorText`, which made sense to me given that I&apos;m trying to see what elements match the selector string given to this function.

This does need to be adjusted slightly to use `CSSSelector::value` instead of `CSSSelector::serializingValue`, as the latter doesn&apos;t work with `:placeholder`.

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1306
&gt;&gt; +                }
&gt; 
&gt; Not sure if this is the right thing to do for pseudo elements that don&apos;t match any element (::first-line etc). Maybe it is?

I think it&apos;s better to at least highlight elements that would match `::first-line`, rather than show nothing.  This way, there&apos;s at least some visual indication of where to look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590042</commentid>
    <comment_count>11</comment_count>
      <attachid>383496</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-11-13 14:13:53 -0800</bug_when>
    <thetext>Created attachment 383496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590082</commentid>
    <comment_count>12</comment_count>
      <attachid>383496</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 15:56:43 -0800</bug_when>
    <thetext>Comment on attachment 383496
Patch

Clearing flags on attachment: 383496

Committed r252436: &lt;https://trac.webkit.org/changeset/252436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590083</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 15:56:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591041</commentid>
    <comment_count>14</comment_count>
      <attachid>383496</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 07:24:49 -0800</bug_when>
    <thetext>Comment on attachment 383496
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1286
&gt; +            if (selectorChecker.match(*selector, descendantElement, context, ignoredSpecificity)) {
&gt; +                nodes.append(descendantElement);
&gt; +                break;
&gt; +            }

Shouldn&apos;t this continue instead of break? If you have selector like &apos;.foo, .foo::before&apos; I think the current code will only highlight .foo.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1305
&gt; +                    break;

This too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591148</commentid>
    <comment_count>15</comment_count>
      <attachid>383496</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-11-18 11:43:00 -0800</bug_when>
    <thetext>Comment on attachment 383496
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1286
&gt;&gt; +            }
&gt; 
&gt; Shouldn&apos;t this continue instead of break? If you have selector like &apos;.foo, .foo::before&apos; I think the current code will only highlight .foo.

Good catch!  I was thinking that once we matched a node, we wouldn&apos;t need to check it again, but you&apos;re example is a reason why we still have to. &lt;https://webkit.org/b/204306&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381210</attachid>
            <date>2019-10-17 11:53:30 -0700</date>
            <delta_ts>2019-10-18 19:51:51 -0700</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>146161.diff</filename>
            <type>text/plain</type>
            <size>4523</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MWZiNDc1M2U0My4uZjQxNTg1MzIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOS0xMC0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRE9NLmhpZ2hsaWdodFNlbGVjdG9yIHNob3VsZCB3
b3JrIGZvciAiYTp2aXNpdGVkIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2MTYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTQ2NzMwMz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKToKKyAgICAgICAgUmF0aGVyIHRoYW4gdXNl
IGBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsYCwgd2hpY2ggZG9lc24ndCBtYXRjaCBwc2V1ZG8t
c2VsZWN0b3JzLCBhdHRlbXB0CisgICAgICAgIHRvIG1pbWljIGhvdyBDU1MgYWN0dWFsbHkgbWF0
Y2hlcyBub2Rlcy4KKwogMjAxOS0xMC0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmV3b3JrIGZyb250ZW5kIGFnZW50IGNvbnN0
cnVjdGlvbiB0byBhbGxvdyBjb21tYW5kcy9ldmVudHMgdG8gYmUgY29udHJvbGxlZCBieSB0aGUg
cmVsYXRlZCB0YXJnZXQncyB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGVlYTViY2FmMDA2Li43Y2NlYjVh
NTI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTM1LDE0ICszNSwxOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIK
ICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRl
ICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
aGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCisjaW5jbHVk
ZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAj
aW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCkBAIC05Miw2ICs5Niw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0
YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC0xMDksNiArMTE0LDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9Dcnlw
dG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMjEzLDYgKzEyMTksMTAgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1
YWQsIGNvbnMKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZywgY29uc3QgU3RyaW5nKiBm
cmFtZUlkKQogeworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJv
bUluc3BlY3Rvck9iamVjdChlcnJvclN0cmluZywgJmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7
CisgICAgaWYgKCFoaWdobGlnaHRDb25maWcpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0
cjxEb2N1bWVudD4gZG9jdW1lbnQ7CiAKICAgICBpZiAoZnJhbWVJZCkgewpAQCAtMTIzNSwxOCAr
MTI0NSwzMCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3RvcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9yQWxsKHNl
bGVjdG9yU3RyaW5nKTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0NjE2
MT4gV2ViIEluc3BlY3RvcjogRE9NLmhpZ2hsaWdodFNlbGVjdG9yIHNob3VsZCB3b3JrIGZvciAi
YTp2aXNpdGVkIgotICAgIGlmIChxdWVyeVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAg
ICBlcnJvclN0cmluZyA9ICJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmcgd2l0aCBnaXZlbiBzZWxl
Y3RvclN0cmluZyJfczsKLSAgICAgICAgcmV0dXJuOworICAgIENTU1BhcnNlciBwYXJzZXIoKmRv
Y3VtZW50KTsKKyAgICBDU1NTZWxlY3Rvckxpc3Qgc2VsZWN0b3JMaXN0OworICAgIHBhcnNlci5w
YXJzZVNlbGVjdG9yKHNlbGVjdG9yU3RyaW5nLCBzZWxlY3Rvckxpc3QpOworCisgICAgU2VsZWN0
b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcigqZG9jdW1lbnQpOworCisgICAgVmVjdG9yPFJlZjxO
b2RlPj4gbm9kZXM7CisgICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogY29tcG9zZWRUcmVlRGVz
Y2VuZGFudHMoKmRvY3VtZW50KSkgeworICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KGRlc2NlbmRh
bnQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRFbGVt
ZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oZGVzY2VuZGFudCk7CisKKyAgICAgICAgU2VsZWN0b3JD
aGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNv
bGxlY3RpbmdSdWxlcyk7CisgICAgICAgIGNvbnRleHQucHNldWRvSWQgPSBkZXNjZW5kYW50RWxl
bWVudC5wc2V1ZG9JZCgpOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byogc2VsZWN0b3IgPSBz
ZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0
OjpuZXh0KHNlbGVjdG9yKSkgeworICAgICAgICAgICAgdW5zaWduZWQgaWdub3JlZFNwZWNpZmlj
aXR5OworICAgICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsIGRl
c2NlbmRhbnRFbGVtZW50LCBjb250ZXh0LCBpZ25vcmVkU3BlY2lmaWNpdHkpKSB7CisgICAgICAg
ICAgICAgICAgbm9kZXMuYXBwZW5kKGRlc2NlbmRhbnRFbGVtZW50KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLQotICAgIGF1dG8gaGln
aGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChlcnJvclN0
cmluZywgJmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Ci0gICAgaWYgKCFoaWdobGlnaHRDb25m
aWcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZUxpc3Qo
cXVlcnlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksICpoaWdobGlnaHRDb25maWcpOworICAg
IG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZUxpc3QoU3RhdGljTm9kZUxpc3Q6OmNyZWF0ZShXVEZN
b3ZlKG5vZGVzKSksICpoaWdobGlnaHRDb25maWcpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6
T2JqZWN0JiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QsIGNvbnN0IGludCogbm9kZUlkLCBjb25z
dCBTdHJpbmcqIG9iamVjdElkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381364</attachid>
            <date>2019-10-18 19:51:54 -0700</date>
            <delta_ts>2019-11-12 16:42:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146161-20191018195152.patch</filename>
            <type>text/plain</type>
            <size>5294</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YmFiMmUwYTk0MzQzMGJlNDZiYzg2ZjJhNjc1MTVjZjAwMWY5ZTZiLi43
NmFmODc2ZDIxYWUwODk0NmE2MzdhMTJiOThlNGUxNTQ0YjUxN2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTktMTAtMTggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQg
d29yayBmb3IgImE6dmlzaXRlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjE2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE0NjczMDM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgIFJhdGhlciB0aGFuIHVz
ZSBgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbGAsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggcHNldWRv
LXNlbGVjdG9ycywgYXR0ZW1wdAorICAgICAgICB0byBtaW1pYyBob3cgQ1NTIGFjdHVhbGx5IG1h
dGNoZXMgbm9kZXMuCisKIDIwMTktMTAtMTcgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIHRleEltYWdlMkQgZm9yIGEgaGFsZi1mbG9hdCB0ZXh0dXJlIG9ubHkgYWNj
ZXB0cyBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGVlYTViY2FmMDA2NzllMjNlMGUyZjNmNjhhMjA5NDYx
MGU0MGIxMTUuLmUxNWRhMjMzMDBjN2Q5OTY0NTQ0Mzg3ZTVjNTc1MDI2ZTlkM2I2NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC0zNSwxNCArMzUsMTggQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5oIgogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAi
Q1NTUnVsZS5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0
b3IuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1
bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0
YS5oIgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgorI2luY2x1ZGUgIkNvbXBvc2Vk
VHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNv
b2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgpAQCAtOTIsNiArOTYsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1
ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtMTA5LDYgKzExNCw3IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMTIxMyw2ICsxMjE5LDEwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zCiAK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qs
IGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJpbmcsIGNvbnN0IFN0cmluZyogZnJhbWVJZCkKIHsK
KyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JP
YmplY3QoZXJyb3JTdHJpbmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGlmICgh
aGlnaGxpZ2h0Q29uZmlnKQorICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50OwogCiAgICAgaWYgKGZyYW1lSWQpIHsKQEAgLTEyMzUsMTggKzEyNDUsNDggQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBKU09OOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gcXVlcnlSZXN1bHQgPSBkb2N1bWVudC0+cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvclN0cmlu
Zyk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDYxNjE+IFdlYiBJbnNw
ZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQgd29yayBmb3IgImE6dmlzaXRlZCIK
LSAgICBpZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiRE9NIEVycm9yIHdoaWxlIHF1ZXJ5aW5nIHdpdGggZ2l2ZW4gc2VsZWN0b3JTdHJpbmci
X3M7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ1NTUGFyc2VyIHBhcnNlcigqZG9jdW1l
bnQpOworICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3Q7CisgICAgcGFyc2VyLnBhcnNl
U2VsZWN0b3Ioc2VsZWN0b3JTdHJpbmcsIHNlbGVjdG9yTGlzdCk7CiAKLSAgICBhdXRvIGhpZ2hs
aWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoZXJyb3JTdHJp
bmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAgIGlmICghaGlnaGxpZ2h0Q29uZmln
KQotICAgICAgICByZXR1cm47CisgICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcigq
ZG9jdW1lbnQpOwogCi0gICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlTGlzdChxdWVyeVJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgKmhpZ2hsaWdodENvbmZpZyk7CisgICAgVmVjdG9yPFJl
ZjxOb2RlPj4gbm9kZXM7CisKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoTm9kZSYpPiBjaGVja05v
ZGU7CisgICAgY2hlY2tOb2RlID0gWyZdIChOb2RlJiBkZXNjZW5kYW50KSB7CisgICAgICAgIGlm
ICghaXM8RWxlbWVudD4oZGVzY2VuZGFudCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgYXV0byYgZGVzY2VuZGFudEVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PihkZXNjZW5kYW50
KTsKKworICAgICAgICBpZiAoYXV0byogYmVmb3JlUHNldWRvRWxlbWVudCA9IGRlc2NlbmRhbnRF
bGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGNoZWNrTm9kZSgqYmVm
b3JlUHNldWRvRWxlbWVudCk7CisgICAgICAgIGlmIChhdXRvKiBhZnRlclBzZXVkb0VsZW1lbnQg
PSBkZXNjZW5kYW50RWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGNo
ZWNrTm9kZSgqYWZ0ZXJQc2V1ZG9FbGVtZW50KTsKKworICAgICAgICBhdXRvIGlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlID0gZGVzY2VuZGFudEVsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUo
KTsKKyAgICAgICAgYXV0byBwc2V1ZG9JZCA9IGRlc2NlbmRhbnRFbGVtZW50LnBzZXVkb0lkKCk7
CisgICAgICAgIGF1dG8mIHBzZXVkbyA9IGRlc2NlbmRhbnRFbGVtZW50LnBzZXVkbygpOworCisg
ICAgICAgIGZvciAoY29uc3QgYXV0byogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsg
c2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewor
ICAgICAgICAgICAgaWYgKGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlICYmIChzZWxlY3Rvci0+bWF0
Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCB8fCBzZWxlY3Rvci0+c2VyaWFsaXpp
bmdWYWx1ZSgpICE9IHBzZXVkbykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNvbnRleHQoU2VsZWN0b3JD
aGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSk7CisgICAgICAgICAgICBjb250ZXh0LnBzZXVk
b0lkID0gcHNldWRvSWQ7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRTcGVjaWZpY2l0
eTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnNlbGVjdG9yLCBkZXNj
ZW5kYW50RWxlbWVudCwgY29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkgeworICAgICAgICAg
ICAgICAgIG5vZGVzLmFwcGVuZChkZXNjZW5kYW50RWxlbWVudCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIGZvciAoYXV0byYg
ZGVzY2VuZGFudCA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCpkb2N1bWVudCkpCisgICAgICAg
IGNoZWNrTm9kZShkZXNjZW5kYW50KTsKKworICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZUxp
c3QoU3RhdGljTm9kZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKG5vZGVzKSksICpoaWdobGlnaHRDb25m
aWcpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383405</attachid>
            <date>2019-11-12 16:42:27 -0800</date>
            <delta_ts>2019-11-13 14:13:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146161-20191112164227.patch</filename>
            <type>text/plain</type>
            <size>6592</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZDg2N2Y1MzQxMjdlM2Q4NTQ2NzNhYzJiYjg1YjVjODU2ZjMzNThmLi5l
MTE0OTkyYzc4ZDZkMzJiYjZjMzQ2MjYxNjM5N2JiYWUwMTYyZjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTktMTEtMTIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQg
d29yayBmb3IgImE6dmlzaXRlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjE2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE0NjczMDM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgIFJhdGhlciB0aGFuIHVz
ZSBgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbGAsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggcHNldWRv
LXNlbGVjdG9ycywgYXR0ZW1wdAorICAgICAgICB0byBtaW1pYyBob3cgQ1NTIGFjdHVhbGx5IG1h
dGNoZXMgbm9kZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0lkU2V0OjpyZW1vdmUpOiBBZGRlZC4K
KwogMjAxOS0xMS0xMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gTW92ZSBMaW5lOjpSdW4ncyBsaW5lIGxheW91dCBzcGVjaWZpYyBsb2dpYyB0
byBJbmxpbmVJdGVtUnVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDE5YmQwNGI4MDVjOWIwMzUyNzg5MjdjMmIz
NzJmZTYyNDg2NWRiZDQuLjg0NzY4MTUzNDE5ZmU4NjE0YjI5MDc2MDk2YTkyZjI5Nzk1OGI2YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0zNSwxNCArMzUsMTggQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oIgogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5j
bHVkZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCisjaW5jbHVkZSAiQ1NT
U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJDU1NT
dHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2hhcmFj
dGVyRGF0YS5oIgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgorI2luY2x1ZGUgIkNv
bXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgpAQCAtOTIsNiArOTYsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMu
aCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtMTA5LDYgKzExNCw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGln
ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtMTIyMiw2ICsxMjI4LDEwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBj
b25zCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJpbmcsIGNvbnN0IFN0cmluZyogZnJhbWVJ
ZCkKIHsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNw
ZWN0b3JPYmplY3QoZXJyb3JTdHJpbmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAg
IGlmICghaGlnaGxpZ2h0Q29uZmlnKQorICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RG9j
dW1lbnQ+IGRvY3VtZW50OwogCiAgICAgaWYgKGZyYW1lSWQpIHsKQEAgLTEyNDQsMTggKzEyNTQs
NjEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gcXVlcnlSZXN1bHQgPSBkb2N1bWVudC0+cXVlcnlTZWxlY3RvckFsbChzZWxlY3Rv
clN0cmluZyk7Ci0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDYxNjE+IFdl
YiBJbnNwZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQgd29yayBmb3IgImE6dmlz
aXRlZCIKLSAgICBpZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSAiRE9NIEVycm9yIHdoaWxlIHF1ZXJ5aW5nIHdpdGggZ2l2ZW4gc2VsZWN0b3JT
dHJpbmciX3M7Ci0gICAgICAgIHJldHVybjsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKCpkb2N1bWVu
dCk7CisgICAgQ1NTU2VsZWN0b3JMaXN0IHNlbGVjdG9yTGlzdDsKKyAgICBwYXJzZXIucGFyc2VT
ZWxlY3RvcihzZWxlY3RvclN0cmluZywgc2VsZWN0b3JMaXN0KTsKKworICAgIFNlbGVjdG9yQ2hl
Y2tlciBzZWxlY3RvckNoZWNrZXIoKmRvY3VtZW50KTsKKworICAgIFZlY3RvcjxSZWY8Tm9kZT4+
IG5vZGVzOworCisgICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogY29tcG9zZWRUcmVlRGVzY2Vu
ZGFudHMoKmRvY3VtZW50KSkgeworICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KGRlc2NlbmRhbnQp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgZGVzY2VuZGFudEVsZW1l
bnQgPSBkb3duY2FzdDxFbGVtZW50PihkZXNjZW5kYW50KTsKKworICAgICAgICBhdXRvIGlzSW5V
c2VyQWdlbnRTaGFkb3dUcmVlID0gZGVzY2VuZGFudEVsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRv
d1RyZWUoKTsKKyAgICAgICAgYXV0byBwc2V1ZG9JZCA9IGRlc2NlbmRhbnRFbGVtZW50LnBzZXVk
b0lkKCk7CisgICAgICAgIGF1dG8mIHBzZXVkbyA9IGRlc2NlbmRhbnRFbGVtZW50LnBzZXVkbygp
OworCisgICAgICAgIGZvciAoY29uc3QgYXV0byogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmly
c3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9y
KSkgeworICAgICAgICAgICAgaWYgKGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlICYmIChzZWxlY3Rv
ci0+bWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCB8fCBzZWxlY3Rvci0+c2Vy
aWFsaXppbmdWYWx1ZSgpICE9IHBzZXVkbykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNvbnRleHQoU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSk7CisgICAgICAgICAgICBjb250ZXh0
LnBzZXVkb0lkID0gcHNldWRvSWQ7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRTcGVj
aWZpY2l0eTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnNlbGVjdG9y
LCBkZXNjZW5kYW50RWxlbWVudCwgY29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkgeworICAg
ICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChkZXNjZW5kYW50RWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnBz
ZXVkb0lEU2V0KSB7CisgICAgICAgICAgICAgICAgYXV0byBwc2V1ZG9JRHMgPSBQc2V1ZG9JZFNl
dDo6ZnJvbU1hc2soY29udGV4dC5wc2V1ZG9JRFNldC5kYXRhKCkpOworCisgICAgICAgICAgICAg
ICAgaWYgKHBzZXVkb0lEcy5oYXMoUHNldWRvSWQ6OkJlZm9yZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHNldWRvSURzLnJlbW92ZShQc2V1ZG9JZDo6QmVmb3JlKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGJlZm9yZVBzZXVkb0VsZW1lbnQgPSBkZXNjZW5kYW50RWxlbWVudC5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBl
bmQoKmJlZm9yZVBzZXVkb0VsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChwc2V1ZG9JRHMuaGFzKFBzZXVkb0lkOjpBZnRlcikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHNldWRvSURzLnJlbW92ZShQc2V1ZG9JZDo6QWZ0ZXIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogYWZ0ZXJQc2V1ZG9FbGVtZW50ID0gZGVzY2VuZGFudEVsZW1lbnQu
YWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBl
bmQoKmFmdGVyUHNldWRvRWxlbWVudCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb0lEcykgeworICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQo
ZGVzY2VuZGFudEVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGhp
Z2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoZXJyb3JT
dHJpbmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAgIGlmICghaGlnaGxpZ2h0Q29u
ZmlnKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGVMaXN0
KHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAg
ICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGVMaXN0KFN0YXRpY05vZGVMaXN0OjpjcmVhdGUoV1RG
TW92ZShub2RlcykpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046
Ok9iamVjdCYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBpbnQqIG5vZGVJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggOGRhZjYyZGFmOTVkYWM5ZWM3OTIw
MDAzNGIzOGE3ZjcwZTc5Njk5NC4uMDZiMDlhY2U4ZjI2MGQ4ZTNiOTk5NzZhNjAyM2UzNGYwNDhi
MzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlQ29uc3RhbnRzLmgKQEAgLTE0MSw2ICsxNDEsMTIgQEAgcHVibGljOgogICAgICAgICBt
X2RhdGEgfD0gKDFVIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkpOwogICAgIH0K
IAorICAgIHZvaWQgcmVtb3ZlKFBzZXVkb0lkIHBzZXVkb0lkKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkb0lk
KSk7CisgICAgICAgIG1fZGF0YSAmPSB+KDFVIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1
ZG9JZCkpOworICAgIH0KKwogICAgIHZvaWQgbWVyZ2UoUHNldWRvSWRTZXQgc291cmNlKQogICAg
IHsKICAgICAgICAgbV9kYXRhIHw9IHNvdXJjZS5tX2RhdGE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383496</attachid>
            <date>2019-11-13 14:13:53 -0800</date>
            <delta_ts>2019-11-13 15:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146161-20191113141352.patch</filename>
            <type>text/plain</type>
            <size>6592</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTRjZWVjMjNkNWZjOTM0MDU4NDFkNTgwNzNkNDYxNGVmNzg2MTAwLi4x
MTc5MDJhYmQ4MjIzODFjMDlkYjBiYmMyMmVkZDE2MDQxMDQ0ODkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTktMTEtMTMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQg
d29yayBmb3IgImE6dmlzaXRlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjE2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE0NjczMDM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgIFJhdGhlciB0aGFuIHVz
ZSBgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbGAsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggcHNldWRv
LXNlbGVjdG9ycywgYXR0ZW1wdAorICAgICAgICB0byBtaW1pYyBob3cgQ1NTIGFjdHVhbGx5IG1h
dGNoZXMgbm9kZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0lkU2V0OjpyZW1vdmUpOiBBZGRlZC4K
KwogMjAxOS0xMS0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGVzIGxlYWsgaWYgdGhleSBoYXZlIGFuIGF0
dGFjaGVkIG9uZW5kZWQgRXZlbnRUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTliZDA0YjgwNWM5YjAz
NTI3ODkyN2MyYjM3MmZlNjI0ODY1ZGJkNC4uYzIzZWRiNjEyZTFiMjNmOWI1M2QxNzUxNTM0YWU2
NzU2MmQ5ZjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTM1LDE0ICszNSwxOCBAQAogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkNT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURh
dGEuaCIKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNp
bmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCisj
aW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2Rl
LmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCkBAIC05Miw2
ICs5Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSAiU2VsZWN0
b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC0xMDksNiArMTE0LDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMjIyLDYgKzEyMjgsMTAgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1
YWQ+IHF1YWQsIGNvbnMKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0
b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZywgY29uc3QgU3Ry
aW5nKiBmcmFtZUlkKQogeworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29u
ZmlnRnJvbUluc3BlY3Rvck9iamVjdChlcnJvclN0cmluZywgJmhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdCk7CisgICAgaWYgKCFoaWdobGlnaHRDb25maWcpCisgICAgICAgIHJldHVybjsKKwogICAg
IFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQ7CiAKICAgICBpZiAoZnJhbWVJZCkgewpAQCAtMTI0
NCwxOCArMTI1NCw2MSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rv
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9y
QWxsKHNlbGVjdG9yU3RyaW5nKTsKLSAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE0NjE2MT4gV2ViIEluc3BlY3RvcjogRE9NLmhpZ2hsaWdodFNlbGVjdG9yIHNob3VsZCB3b3Jr
IGZvciAiYTp2aXNpdGVkIgotICAgIGlmIChxdWVyeVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICBlcnJvclN0cmluZyA9ICJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmcgd2l0aCBnaXZl
biBzZWxlY3RvclN0cmluZyJfczsKLSAgICAgICAgcmV0dXJuOworICAgIENTU1BhcnNlciBwYXJz
ZXIoKmRvY3VtZW50KTsKKyAgICBDU1NTZWxlY3Rvckxpc3Qgc2VsZWN0b3JMaXN0OworICAgIHBh
cnNlci5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yU3RyaW5nLCBzZWxlY3Rvckxpc3QpOworCisgICAg
U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcigqZG9jdW1lbnQpOworCisgICAgVmVjdG9y
PFJlZjxOb2RlPj4gbm9kZXM7CisKKyAgICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBjb21wb3Nl
ZFRyZWVEZXNjZW5kYW50cygqZG9jdW1lbnQpKSB7CisgICAgICAgIGlmICghaXM8RWxlbWVudD4o
ZGVzY2VuZGFudCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBkZXNj
ZW5kYW50RWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KGRlc2NlbmRhbnQpOworCisgICAgICAg
IGF1dG8gaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUgPSBkZXNjZW5kYW50RWxlbWVudC5pc0luVXNl
ckFnZW50U2hhZG93VHJlZSgpOworICAgICAgICBhdXRvIHBzZXVkb0lkID0gZGVzY2VuZGFudEVs
ZW1lbnQucHNldWRvSWQoKTsKKyAgICAgICAgYXV0byYgcHNldWRvID0gZGVzY2VuZGFudEVsZW1l
bnQucHNldWRvKCk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvKiBzZWxlY3RvciA9IHNlbGVj
dG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5l
eHQoc2VsZWN0b3IpKSB7CisgICAgICAgICAgICBpZiAoaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUg
JiYgKHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50IHx8IHNl
bGVjdG9yLT52YWx1ZSgpICE9IHBzZXVkbykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNvbnRleHQoU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSk7CisgICAgICAgICAgICBjb250ZXh0
LnBzZXVkb0lkID0gcHNldWRvSWQ7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRTcGVj
aWZpY2l0eTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnNlbGVjdG9y
LCBkZXNjZW5kYW50RWxlbWVudCwgY29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkgeworICAg
ICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChkZXNjZW5kYW50RWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnBz
ZXVkb0lEU2V0KSB7CisgICAgICAgICAgICAgICAgYXV0byBwc2V1ZG9JRHMgPSBQc2V1ZG9JZFNl
dDo6ZnJvbU1hc2soY29udGV4dC5wc2V1ZG9JRFNldC5kYXRhKCkpOworCisgICAgICAgICAgICAg
ICAgaWYgKHBzZXVkb0lEcy5oYXMoUHNldWRvSWQ6OkJlZm9yZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHNldWRvSURzLnJlbW92ZShQc2V1ZG9JZDo6QmVmb3JlKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGJlZm9yZVBzZXVkb0VsZW1lbnQgPSBkZXNjZW5kYW50RWxlbWVudC5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBl
bmQoKmJlZm9yZVBzZXVkb0VsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChwc2V1ZG9JRHMuaGFzKFBzZXVkb0lkOjpBZnRlcikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHNldWRvSURzLnJlbW92ZShQc2V1ZG9JZDo6QWZ0ZXIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogYWZ0ZXJQc2V1ZG9FbGVtZW50ID0gZGVzY2VuZGFudEVsZW1lbnQu
YWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBl
bmQoKmFmdGVyUHNldWRvRWxlbWVudCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb0lEcykgeworICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQo
ZGVzY2VuZGFudEVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGhp
Z2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoZXJyb3JT
dHJpbmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAgIGlmICghaGlnaGxpZ2h0Q29u
ZmlnKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGVMaXN0
KHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAg
ICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGVMaXN0KFN0YXRpY05vZGVMaXN0OjpjcmVhdGUoV1RG
TW92ZShub2RlcykpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046
Ok9iamVjdCYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBpbnQqIG5vZGVJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggOTBmMDY2NGM0NWJiY2M4MmQ3OWI0
MWE0OTUxZTc2YzgxNDVjMzkxNi4uYWE5MjRmZWY2YTBlZmQ1YjQ0MGYwMGQ0ZWQ1MzJiYjY3NzUz
OGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlQ29uc3RhbnRzLmgKQEAgLTE0MSw2ICsxNDEsMTIgQEAgcHVibGljOgogICAgICAgICBt
X2RhdGEgfD0gKDFVIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkpOwogICAgIH0K
IAorICAgIHZvaWQgcmVtb3ZlKFBzZXVkb0lkIHBzZXVkb0lkKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkb0lk
KSk7CisgICAgICAgIG1fZGF0YSAmPSB+KDFVIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1
ZG9JZCkpOworICAgIH0KKwogICAgIHZvaWQgbWVyZ2UoUHNldWRvSWRTZXQgc291cmNlKQogICAg
IHsKICAgICAgICAgbV9kYXRhIHw9IHNvdXJjZS5tX2RhdGE7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>