<?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>210035</bug_id>
          
          <creation_ts>2020-04-05 13:32:44 -0700</creation_ts>
          <short_desc>Make RenderObject TextStream-loggable</short_desc>
          <delta_ts>2020-04-06 11:24:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637938</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-05 13:32:44 -0700</bug_when>
    <thetext>Make RenderObject TextStream-loggable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637940</commentid>
    <comment_count>1</comment_count>
      <attachid>395522</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-05 13:34:42 -0700</bug_when>
    <thetext>Created attachment 395522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637945</commentid>
    <comment_count>2</comment_count>
      <attachid>395522</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-04-05 13:46:03 -0700</bug_when>
    <thetext>Comment on attachment 395522
Patch

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

&gt; Source/WebCore/rendering/RenderObject.cpp:1918
&gt; +    builder.append(&apos; &apos;);

this will generate trailing whitespace for anonymous renderer (not really an issue though).

&gt; Source/WebCore/rendering/RenderObject.h:786
&gt; +    virtual String debugDescription() const;

why virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637976</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-05 16:04:58 -0700</bug_when>
    <thetext>(In reply to zalan from comment #2)

&gt; &gt; Source/WebCore/rendering/RenderObject.h:786
&gt; &gt; +    virtual String debugDescription() const;
&gt; 
&gt; why virtual?

Some renderers might want to dump more stuff (e.g. multicol or something).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637978</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-04-05 16:07:05 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; (In reply to zalan from comment #2)
&gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderObject.h:786
&gt; &gt; &gt; +    virtual String debugDescription() const;
&gt; &gt; 
&gt; &gt; why virtual?
&gt; 
&gt; Some renderers might want to dump more stuff (e.g. multicol or something).
sure, let&apos;s make it virtual when we&apos;ve got overrides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637979</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-04-05 16:07:27 -0700</bug_when>
    <thetext>oh, cq+. ok then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637984</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-05 16:24:05 -0700</bug_when>
    <thetext>Committed r259557: &lt;https://trac.webkit.org/changeset/259557&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395522.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637985</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-05 16:25:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/61323098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637990</commentid>
    <comment_count>8</comment_count>
      <attachid>395522</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-05 16:49:28 -0700</bug_when>
    <thetext>Comment on attachment 395522
Patch

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

&gt; Source/WebCore/dom/Element.cpp:2654
&gt; +    if (hasID()) {
&gt; +        builder.appendLiteral(&quot; id=\&apos;&quot;);
&gt; +        builder.append(getIdAttribute());
&gt; +        builder.append(&apos;\&apos;&apos;);
&gt; +    }

Can be done more efficiently and more attractively in a single line with StringBuilder&apos;s variadic append:

    if (hasID())
        append(&quot; id=\&apos;&quot;, getIdAttribute(), &apos;\&apos;&apos;);

&gt; Source/WebCore/dom/Element.cpp:2659
&gt; +        const size_t maxNumClassNames = 7;

constexpr is better

&gt; Source/WebCore/dom/Element.cpp:2672
&gt; +        if (addEllipsis)
&gt; +            builder.append(&quot;...&quot;);

More beautiful with a space before the ellipsis?

&gt; Source/WebCore/dom/Node.cpp:1760
&gt; +    if (isTextNode()) {

Since this is already virtual, could put this in Text::debugDescription.

&gt; Source/WebCore/dom/Node.cpp:1774
&gt; +        builder.append(&apos; &apos;);
&gt; +        builder.append(&apos;\&quot;&apos;);
&gt; +        builder.append(value);
&gt; +        builder.append(&apos;\&quot;&apos;);

More efficient in a single line:

    builder.append(&quot; \&quot;&quot;, value, &apos;&quot;&apos;);

&gt; Source/WebCore/rendering/RenderObject.cpp:1917
&gt; +    builder.append(renderName());
&gt; +    builder.append(&quot; 0x&quot;_s);
&gt; +    builder.append(hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));

Same thing where this could be done in one line and it’s more efficient that way and reads pretty well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638166</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-06 10:43:20 -0700</bug_when>
    <thetext>Will fix in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638170</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-06 10:52:46 -0700</bug_when>
    <thetext>Reopen for cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638172</commentid>
    <comment_count>11</comment_count>
      <attachid>395587</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-06 10:59:33 -0700</bug_when>
    <thetext>Created attachment 395587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638186</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-06 11:09:39 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/259581/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638202</commentid>
    <comment_count>13</comment_count>
      <attachid>395587</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-06 11:24:15 -0700</bug_when>
    <thetext>Comment on attachment 395587
Patch

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

One last comment -- not mandatory to do this, but I want you to know about it.

&gt; Source/WebCore/dom/Node.cpp:1759
&gt; +    builder.append(nodeName(), &quot; 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));
&gt;      return builder.toString();

I don’t want to keep you going forever, but this can be written:

    return makeString(nodeName(), &quot; 0x&quot;, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));

The &quot;_s&quot; isn&apos;t needed in the variadic context, butI also don’t think it’s harmful. (Sorry that the rule is so inconsistent.) A StringBuilder isn’t needed if you are only doing a single append, and I believe slightly less efficient than just makeString.

&gt; Source/WebCore/dom/Text.cpp:231
&gt; +    builder.append(&quot; length=&quot;_s, value.length());

The &quot;_s&quot; here isn’t helpful, but I don’t think it’s harmful either.

&gt; Source/WebCore/rendering/RenderObject.cpp:1919
&gt;      StringBuilder builder;
&gt;  
&gt; -    builder.append(renderName());
&gt; -    builder.append(&quot; 0x&quot;_s);
&gt; -    builder.append(hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));
&gt; -    builder.append(&apos; &apos;);
&gt; -
&gt; +    builder.append(renderName(), &quot; 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));
&gt;      if (node())
&gt; -        builder.append(node()-&gt;debugDescription());
&gt; +        builder.append(&apos; &apos;, node()-&gt;debugDescription());
&gt;      
&gt;      return builder.toString();

Since this is for debugging, we don’t have to worry about efficiency much, but I have recently been going out of my way to write these simpler functions with makeString instead of StringBuilder. One of these two ways would work:

    if (!node())
        return makeString(renderName(), &quot; 0x&quot;, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));
    return makeString(renderName(), &quot; 0x&quot;, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase), &apos; &apos;, node()-&gt;debugDescription());

Or:

    auto separator = node() ? &quot; &quot; : &quot;&quot;;
    auto description = node() ? String() : node()-&gt;debugDescription();
    return makeString(renderName(), &quot; 0x&quot;, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase), separator, node()-&gt;debugDescription());</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395522</attachid>
            <date>2020-04-05 13:34:42 -0700</date>
            <delta_ts>2020-04-06 10:59:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210035-20200405133442.patch</filename>
            <type>text/plain</type>
            <size>9720</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVjYWJhYTdmNzZhNmM0
MGViY2I0NGRhNjk0OGUzNTRiYjViYjY0MS4uZTRiZDg4YzdiMTEwM2Q5NWUxY2E3ZTE1NWJlZWQy
YTQ4MGNjZWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVuZGVy
T2JqZWN0IFRleHRTdHJlYW0tbG9nZ2FibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBvcGVyYXRvcjw8KFRleHRTdHJlYW0sIGNvbnN0IFJlbmRl
ck9iamVjdCYpIGFuZCBhZGQgdmlydHVhbCBkZWJ1Z0Rlc2NyaXB0aW9uKCkgZnVuY3Rpb25zIG9u
CisgICAgICAgIE5vZGUgYW5kIFJlbmRlck9iamVjdCB3aGljaCBzaG91bGQgZXZlbnR1YWxseSBy
ZXBsYWNlIHRoZSBhd2t3YXJkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgbGVuZ3RoKS4KKworICAgICAgICBDb252ZXJ0IFJlbmRlckxheWVyIHRvIHVzZSByZW5kZXJl
cidzIGRlYnVnIGRlc2NyaXB0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yPDwpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpuYW1lIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisK
IDIwMjAtMDQtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIHNvbWUgd2hlZWwtZXZlbnQgcmVsYXRlZCBmdW5jdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCBjOWRiZDVlNTNhM2U2MjIxNGFkOGU0N2U4ODRjYjYwNzM1MzU4M2Zm
Li5hOGI0MDExOTI1NDE4ZDNmOGUyNDliMWY5MTVmZjZiMTJlYTZjYzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yNjQxLDYgKzI2NDEsNDEgQEAgdm9pZCBFbGVtZW50OjpmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKQogICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygqdGhpcywgRmlu
aXNoZWRQYXJzaW5nQ2hpbGRyZW4sIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCgqdGhpcyks
IG51bGxwdHIpOwogfQogCitTdHJpbmcgRWxlbWVudDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQobm9k
ZU5hbWUoKSk7CisKKyAgICBpZiAoaGFzSUQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBpZD1cJyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChnZXRJZEF0dHJpYnV0ZSgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1wnJyk7CisgICAgfQorCisgICAgaWYgKGhhc0Ns
YXNzKCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY2xhc3M9XCciKTsKKyAg
ICAgICAgc2l6ZV90IGNsYXNzTmFtZXNUb0R1bXAgPSBjbGFzc05hbWVzKCkuc2l6ZSgpOworICAg
ICAgICBjb25zdCBzaXplX3QgbWF4TnVtQ2xhc3NOYW1lcyA9IDc7CisgICAgICAgIGJvb2wgYWRk
RWxsaXBzaXMgPSBmYWxzZTsKKyAgICAgICAgaWYgKGNsYXNzTmFtZXNUb0R1bXAgPiBtYXhOdW1D
bGFzc05hbWVzKSB7CisgICAgICAgICAgICBjbGFzc05hbWVzVG9EdW1wID0gbWF4TnVtQ2xhc3NO
YW1lczsKKyAgICAgICAgICAgIGFkZEVsbGlwc2lzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVzVG9EdW1wOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoY2xhc3NOYW1lcygpW2ldKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoYWRkRWxsaXBzaXMpCisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiLi4uIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcJycpOworICAgIH0KKworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCiAKIHZvaWQgRWxlbWVudDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA0ZDcyZDNhNjg4OTI2MjU1
M2I0NGFjOTFmNjZhNDdhNzIzNzEzMTUxLi41NmI0NjdiNGIxYzU5NTU3YzRhNmU0N2Y3NWQyZmVi
YmExMzA5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTYxNSw2ICs2MTUsOCBAQCBwdWJsaWM6
CiAKICAgICBFbGVtZW50SWRlbnRpZmllciBjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpOwogCisg
ICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKKwogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0
aW9uVHlwZSk7CiAKQEAgLTY4Niw3ICs2ODgsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0UmVj
dCBhYnNvbHV0ZUV2ZW50Qm91bmRzKGJvb2wmIGJvdW5kc0luY2x1ZGVBbGxEZXNjZW5kYW50RWxl
bWVudHMsIGJvb2wmIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzKTsKICAgICBMYXlvdXRS
ZWN0IGFic29sdXRlRXZlbnRCb3VuZHNPZkVsZW1lbnRBbmREZXNjZW5kYW50cyhib29sJiBpbmNs
dWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50cyk7Ci0gICAgCisKICNpZiBFTkFCTEUoVFJFRV9ERUJV
R0dJTkcpCiAgICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVk
IGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwZDZm
NGQyMzkzNDZhYjA3MmU1YzRiYTFkMWM3MDBhZWNhYzRkMjJlLi4wMjBiZWQ5NDI5MGU1YWExZGY5
NDNjZDJjMjFiNTg0YzgxMDhjOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNzUxLDYgKzE3NTEs
MzIgQEAgRmxvYXRQb2ludCBOb2RlOjpjb252ZXJ0RnJvbVBhZ2UoY29uc3QgRmxvYXRQb2ludCYg
cCkgY29uc3QKICAgICByZXR1cm4gcDsKIH0KIAorU3RyaW5nIE5vZGU6OmRlYnVnRGVzY3JpcHRp
b24oKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIu
YXBwZW5kKG5vZGVOYW1lKCkpOworCisgICAgaWYgKGlzVGV4dE5vZGUoKSkgeworICAgICAgICBT
dHJpbmcgdmFsdWUgPSBub2RlVmFsdWUoKTsKKyAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRl
cmFsKCdcXCcsICJcXFxcIik7CisgICAgICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4n
LCAiXFxuIik7CisgICAgICAgIAorICAgICAgICBjb25zdCBzaXplX3QgbWF4RHVtcExlbmd0aCA9
IDMwOworICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3RoKSB7CisgICAg
ICAgICAgICB2YWx1ZS50cnVuY2F0ZShtYXhEdW1wTGVuZ3RoIC0gMTApOworICAgICAgICAgICAg
dmFsdWUuYXBwZW5kKCIuLi4iX3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnXCInKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQodmFsdWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnXCInKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiAjaWYgRU5BQkxFKFRS
RUVfREVCVUdHSU5HKQogCiBzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVEZXNjKGNvbnN0IE5v
ZGUqIG5vZGUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IGNoYXIqIGF0dHJEZXNjKQpAQCAtMjYxOSwxNSArMjY0NSw3IEBAIHZv
aWQqIE5vZGU6Om9wYXF1ZVJvb3RTbG93KCkgY29uc3QKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTm9kZSYgbm9kZSkKIHsKLSNpZiBFTkFCTEUoVFJFRV9E
RUJVR0dJTkcpCi0gICAgY29uc3Qgc2l6ZV90IEZvcm1hdEJ1ZmZlclNpemUgPSA1MTI7Ci0gICAg
Y2hhciBzW0Zvcm1hdEJ1ZmZlclNpemVdOwotICAgIG5vZGUuZm9ybWF0Rm9yRGVidWdnZXIocywg
Rm9ybWF0QnVmZmVyU2l6ZSk7Ci0gICAgdHMgPDwgIm5vZGUgIiA8PCAmbm9kZSA8PCAiICIgPDwg
czsKLSNlbHNlCi0gICAgdHMgPDwgIm5vZGUgIiA8PCAmbm9kZSA8PCAiICIgPDwgbm9kZS5ub2Rl
TmFtZSgpOwotI2VuZGlmCi0KKyAgICB0cyA8PCAibm9kZSAiIDw8ICZub2RlIDw8ICIgIiA8PCBu
b2RlLmRlYnVnRGVzY3JpcHRpb24oKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDZkOTc2ZTlkZmJkZGQ4OGI1N2M3OWIxZTMxOGIyMGFmOWJmMGYzZjIuLmYwNDczOGViNTlh
NmExNzgyOWQzNTVmN2ViYjY4OTlmZGJiMzQ0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDMzLDYgKzQz
Myw4IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbUFuY2Vz
dG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsK
IAorICAgIHZpcnR1YWwgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKwogI2lmIEVO
QUJMRShUUkVFX0RFQlVHR0lORykKICAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIo
Y2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBhYTA3ZjZhNDkwYmNjYWIwNTdiZjEwNjk4OTNi
M2RmMzE1YTNkY2Q3Li4zNmRlNDgxZmZiMDRlYTQ2YjFlMWU3MTNkMTlkMzZhMzBmZWJmZDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTgzMCwzOSArODMw
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCkKIFN0cmlu
ZyBSZW5kZXJMYXllcjo6bmFtZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBuYW1lOwot
Ci0gICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmVsZW1lbnQoKSkgewotICAg
ICAgICBuYW1lLmFwcGVuZCgiIDwiKTsKLSAgICAgICAgbmFtZS5hcHBlbmQoZWxlbWVudC0+dGFn
TmFtZSgpLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSk7Ci0gICAgICAgIG5hbWUu
YXBwZW5kKCc+Jyk7Ci0KLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0lEKCkpIHsKLSAgICAgICAg
ICAgIG5hbWUuYXBwZW5kTGl0ZXJhbCgiIGlkPVwnIik7Ci0gICAgICAgICAgICBuYW1lLmFwcGVu
ZChlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpKTsKLSAgICAgICAgICAgIG5hbWUuYXBwZW5kKCdc
JycpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0NsYXNzKCkpIHsKLSAg
ICAgICAgICAgIG5hbWUuYXBwZW5kTGl0ZXJhbCgiIGNsYXNzPVwnIik7Ci0gICAgICAgICAgICBz
aXplX3QgY2xhc3NOYW1lc1RvRHVtcCA9IGVsZW1lbnQtPmNsYXNzTmFtZXMoKS5zaXplKCk7Ci0g
ICAgICAgICAgICBjb25zdCBzaXplX3QgbWF4TnVtQ2xhc3NOYW1lcyA9IDc7Ci0gICAgICAgICAg
ICBib29sIGFkZEVsbGlwc2lzID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoY2xhc3NOYW1lc1Rv
RHVtcCA+IG1heE51bUNsYXNzTmFtZXMpIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWVzVG9E
dW1wID0gbWF4TnVtQ2xhc3NOYW1lczsKLSAgICAgICAgICAgICAgICBhZGRFbGxpcHNpcyA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2xhc3NOYW1lc1RvRHVtcDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGkgPiAwKQotICAgICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgICAgIG5hbWUuYXBwZW5kKGVsZW1lbnQtPmNsYXNzTmFtZXMoKVtpXSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoYWRkRWxsaXBzaXMpCi0gICAgICAgICAgICAgICAgbmFtZS5h
cHBlbmQoIi4uLiIpOwotICAgICAgICAgICAgbmFtZS5hcHBlbmQoJ1wnJyk7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UKLSAgICAgICAgbmFtZS5hcHBlbmQocmVuZGVyZXIoKS5yZW5kZXJOYW1lKCkp
OworICAgIG5hbWUuYXBwZW5kKHJlbmRlcmVyKCkuZGVidWdEZXNjcmlwdGlvbigpKTsKIAogICAg
IGlmIChpc1JlZmxlY3Rpb24oKSkKICAgICAgICAgbmFtZS5hcHBlbmRMaXRlcmFsKCIgKHJlZmxl
Y3Rpb24pIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IGQ1NjAyODc1MjZkMWI3ZGI1YjliNDk2MmUxNTZiYjA2ZDU4MzZlMTkuLmIyNDNkMTg3MzBiNjEz
Nzg0N2I0ZmE1ZmVhZDRkZjZhY2RhODY4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiVHJhbnNmb3JtU3Rh
dGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgpAQCAtMTkwNyw2ICsxOTA4LDI3IEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojpo
YXNOb25FbXB0eVZpc2libGVSZWN0UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitTdHJpbmcgUmVuZGVyT2JqZWN0OjpkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFw
cGVuZChyZW5kZXJOYW1lKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgMHgiX3MpOworICAgIGJ1
aWxkZXIuYXBwZW5kKGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIExvd2Vy
Y2FzZSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisKKyAgICBpZiAobm9kZSgpKQorICAg
ICAgICBidWlsZGVyLmFwcGVuZChub2RlKCktPmRlYnVnRGVzY3JpcHRpb24oKSk7CisgICAgCisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICB0
cyA8PCByZW5kZXJlci5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CisgICAgcmV0dXJuIHRzOworfQorCiAj
aWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogCiB2b2lkIHByaW50UmVuZGVyVHJlZUZvckxpdmVE
b2N1bWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDI2
NGYxZDE2ZWI2OTMxMTM2OTEyYzJhZDI3NDFmNzVlMTU3ZjBkYWUuLjVjMDRiZWY3OWI0NDBjODU3
M2NjNjVjNTVkMzg2NDI4OGMzYTVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0
cmVhbTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CkBAIC03NzksNiArNzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUZyYWdtZW50
ZWRGbG93U3RhdGVPbkluc2VydGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9U
cmVlKCk7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CisK
IHByb3RlY3RlZDoKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zLiBEYW5nZXJvdXMgdG8gdXNlIQpAQCAtMTEwNiw2
ICsxMTEyLDggQEAgaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0OjpuZWVkc1NpbXBsaWZpZWROb3Jt
YWxGbG93TGF5b3V0T25seSgpIGNvbnN0CiAKIGlubGluZSB2b2lkIE5vZGU6OnNldFJlbmRlcmVy
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlcldpdGhTdHlsZUZsYWdzLnNldFBv
aW50ZXIocmVuZGVyZXIpOyB9CiAKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBjb25zdCBSZW5kZXJPYmplY3QmKTsKKwogI2lmIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpOwogdm9pZCBwcmlu
dExheWVyVHJlZUZvckxpdmVEb2N1bWVudHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395587</attachid>
            <date>2020-04-06 10:59:33 -0700</date>
            <delta_ts>2020-04-06 11:08:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210035-20200406105932.patch</filename>
            <type>text/plain</type>
            <size>6849</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRjNjRlNjg2NTE3OTM0
ODIyNjkxMTljNzIzYWQ3NmYwOGM1NTFmNS4uYzk3NGM1NWEzZTY1NmFmZTRlYWZhNGNiNmZhYzM3
Yzc0ZjVhYmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA0LTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVuZGVy
T2JqZWN0IFRleHRTdHJlYW0tbG9nZ2FibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBvc3QtbGFuZGluZyBmb2xsb3d1cC4gTW9yZSB1c2Ugb2YgU3Ry
aW5nQnVpbGRlcidzIHZhcmlhZGljIGFwcGVuZC4gSGF2ZSBOb2RlOjpkZWJ1Z0Rlc2NyaXB0aW9u
KCkgaW5jbHVkZQorICAgICAgICBpdHMgYWRkcmVzcywgYW5kIGhhdmUgZGVyaXZlZCBjbGFzc2Vz
IGdldCB0aGUgYmFzZSBjbGFzcyBkZWJ1Z0Rlc2NyaXB0aW9uKCkuIEFkZCBhbiBvdmVycmlkZSBp
biBUZXh0LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAg
ICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6ZGVidWdEZXNjcmlw
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlciBj
b25zdCk6CisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZGVidWdEZXNjcmlw
dGlvbiBjb25zdCk6CisKIDIwMjAtMDQtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkcmVzcyByZXZpZXcgY29tbWVudHMgYWZ0ZXIgcjI1OTU1
MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGE4YjQwMTE5MjU0MThkM2Y4ZTI0OWIxZjkxNWZm
NmIxMmVhNmNjNzIuLmYwNmZhMzU5ZGU2MGRjZWZhZTFjNjQzM2YwNDEwNjlmMThmY2Q5MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTI2NDUsMTggKzI2NDUsMTUgQEAgU3RyaW5nIEVsZW1l
bnQ6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKG5vZGVOYW1lKCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KENvbnRhaW5lck5vZGU6OmRlYnVnRGVzY3JpcHRpb24oKSk7CiAKLSAgICBpZiAoaGFzSUQoKSkg
ewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpZD1cJyIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChnZXRJZEF0dHJpYnV0ZSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1wn
Jyk7Ci0gICAgfQorICAgIGlmIChoYXNJRCgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGlk
PVwnIiwgZ2V0SWRBdHRyaWJ1dGUoKSwgJ1wnJyk7CiAKICAgICBpZiAoaGFzQ2xhc3MoKSkgewog
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjbGFzcz1cJyIpOwogICAgICAgICBzaXpl
X3QgY2xhc3NOYW1lc1RvRHVtcCA9IGNsYXNzTmFtZXMoKS5zaXplKCk7Ci0gICAgICAgIGNvbnN0
IHNpemVfdCBtYXhOdW1DbGFzc05hbWVzID0gNzsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBt
YXhOdW1DbGFzc05hbWVzID0gNzsKICAgICAgICAgYm9vbCBhZGRFbGxpcHNpcyA9IGZhbHNlOwog
ICAgICAgICBpZiAoY2xhc3NOYW1lc1RvRHVtcCA+IG1heE51bUNsYXNzTmFtZXMpIHsKICAgICAg
ICAgICAgIGNsYXNzTmFtZXNUb0R1bXAgPSBtYXhOdW1DbGFzc05hbWVzOwpAQCAtMjY2OSw3ICsy
NjY2LDcgQEAgU3RyaW5nIEVsZW1lbnQ6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoY2xhc3NOYW1lcygpW2ldKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoYWRkRWxsaXBzaXMpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLi4uIik7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIC4uLiIpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnXCcnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwMjBiZWQ5NDI5MGU1YWExZGY5
NDNjZDJjMjFiNTg0YzgxMDhjOWMxLi44YzFiYTdlNmZmODY3Zjk1MTM4NGZhZWE3MjRjZGJiNzU1
NjQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiWE1M
TlNOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcElubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KQEAgLTE3NTQsMjYgKzE3NTUsNyBAQCBGbG9h
dFBvaW50IE5vZGU6OmNvbnZlcnRGcm9tUGFnZShjb25zdCBGbG9hdFBvaW50JiBwKSBjb25zdAog
U3RyaW5nIE5vZGU6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLQotICAgIGJ1aWxkZXIuYXBwZW5kKG5vZGVOYW1lKCkpOwotCi0gICAgaWYg
KGlzVGV4dE5vZGUoKSkgewotICAgICAgICBTdHJpbmcgdmFsdWUgPSBub2RlVmFsdWUoKTsKLSAg
ICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxcIik7Ci0gICAgICAgIHZh
bHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7Ci0gICAgICAgIAotICAgICAgICBj
b25zdCBzaXplX3QgbWF4RHVtcExlbmd0aCA9IDMwOwotICAgICAgICBpZiAodmFsdWUubGVuZ3Ro
KCkgPiBtYXhEdW1wTGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YWx1ZS50cnVuY2F0ZShtYXhEdW1w
TGVuZ3RoIC0gMTApOwotICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCIuLi4iX3MpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnXCInKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXCInKTsKLSAgICB9Ci0KKyAgICBidWlsZGVyLmFwcGVuZChub2Rl
TmFtZSgpLCAiIDB4Il9zLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBM
b3dlcmNhc2UpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAKaW5kZXggYzUzOWIwNDNmOTkwNDkwYmIzZTc4MTYxMjc2NDVjZjQxMjMyMWRkNC4uMDQ1
YzgxYTY1ZmIwNzY1ODI0OGZmMGUxYmFhMWVhNGQwYWUzYTc4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApA
QCAtMjIxLDI2ICsyMjEsMzMgQEAgdm9pZCBUZXh0Ojp1cGRhdGVSZW5kZXJlckFmdGVyQ29udGVu
dENoYW5nZSh1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWcKICAgICBkb2N1bWVu
dCgpLnVwZGF0ZVRleHRSZW5kZXJlcigqdGhpcywgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIGxlbmd0
aE9mUmVwbGFjZWREYXRhKTsKIH0KIAotI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLXZvaWQg
VGV4dDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CitTdHJpbmcgVGV4dDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7Ci0gICAgU3RyaW5nIHM7Ci0KLSAgICByZXN1bHQuYXBwZW5kKG5vZGVO
YW1lKCkpOwotCi0gICAgcyA9IGRhdGEoKTsKLSAgICBpZiAocy5sZW5ndGgoKSA+IDApIHsKLSAg
ICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCI7ICIpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgibGVuZ3RoPSIpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHMubGVuZ3RoKCkpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiOyB2YWx1ZT1cIiIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHMpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKCciJyk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisg
ICAgYnVpbGRlci5hcHBlbmQoQ2hhcmFjdGVyRGF0YTo6ZGVidWdEZXNjcmlwdGlvbigpKTsKKwor
ICAgIFN0cmluZyB2YWx1ZSA9IGRhdGEoKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiIGxlbmd0aD0i
X3MsIHZhbHVlLmxlbmd0aCgpKTsKKworICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwn
LCAiXFxcXCIpOworICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7Cisg
ICAgCisgICAgY29uc3Qgc2l6ZV90IG1heER1bXBMZW5ndGggPSAzMDsKKyAgICBpZiAodmFsdWUu
bGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3RoKSB7CisgICAgICAgIHZhbHVlLnRydW5jYXRlKG1heER1
bXBMZW5ndGggLSAxMCk7CisgICAgICAgIHZhbHVlLmFwcGVuZCgiLi4uIl9zKTsKICAgICB9CiAK
LSAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGVu
Z3RoIC0gMSk7CisgICAgYnVpbGRlci5hcHBlbmQoIiBcIiIsIHZhbHVlLCAnXCInKTsKKworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCit2b2lkIFRleHQ6OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdAoreworICAgIHN0cm5jcHkoYnVmZmVyLCBkZWJ1Z0Rlc2NyaXB0aW9uKCku
dXRmOCgpLmRhdGEoKSwgbGVuZ3RoIC0gMSk7CiAgICAgYnVmZmVyW2xlbmd0aCAtIDFdID0gJ1ww
JzsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXggNmQ4NGE2YjY1OGY3OGQxOGZiZGE0MDZlYWRl
NTRkMDdjZDg2MjUwZi4uNWZmNWU3NzdiZWI2ZDc0OGQ2NWNkODA0ZjZmYjEwMGZlN2IzMGQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRl
UmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2UodW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEs
IHVuc2lnbmVkIGxlbmd0aE9mUmVwbGFjZWREYXRhKTsKIAorICAgIFN0cmluZyBkZWJ1Z0Rlc2Ny
aXB0aW9uKCkgY29uc3QgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBUZXh0KERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAg
ICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwgdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjI0M2QxODczMGI2MTM3ODQ3YjRmYTVm
ZWFkNGRmNmFjZGE4NjhlZi4uYzc0ZGFkM2FlODlkNmZjYWQxZjIwYzMxZTkxNmNiYzA0ODNkNzI4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5MTIs
MTMgKzE5MTIsOSBAQCBTdHJpbmcgUmVuZGVyT2JqZWN0OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29u
c3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZChy
ZW5kZXJOYW1lKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCIgMHgiX3MpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIExvd2VyY2FzZSkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KKyAgICBidWlsZGVyLmFwcGVuZChyZW5kZXJO
YW1lKCksICIgMHgiX3MsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIExv
d2VyY2FzZSkpOwogICAgIGlmIChub2RlKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5vZGUo
KS0+ZGVidWdEZXNjcmlwdGlvbigpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBub2Rl
KCktPmRlYnVnRGVzY3JpcHRpb24oKSk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>