<?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>189119</bug_id>
          
          <creation_ts>2018-08-29 16:30:07 -0700</creation_ts>
          <short_desc>Remove redundant inline text boxes for empty combined text</short_desc>
          <delta_ts>2018-09-04 11:22:01 -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>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184390</see_also>
          <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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>mmaxfield</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>1454995</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-29 16:30:07 -0700</bug_when>
    <thetext>While investigating bug #184390 I discovered that we are creating empty inline text boxes for combined text. We should look to avoid doing this both to save memory and make it easier to reason about painting of text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454997</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-29 16:33:42 -0700</bug_when>
    <thetext>An empty inline text box does not visually effect the rendering of the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455019</commentid>
    <comment_count>2</comment_count>
      <attachid>348448</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-29 16:49:54 -0700</bug_when>
    <thetext>Created attachment 348448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455262</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-30 10:21:54 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #0)
&gt; While investigating bug #184390 I discovered that we are creating empty
&gt; inline text boxes for combined text. We should look to avoid doing this both
&gt; to save memory and make it easier to reason about painting of text.

To be more precise: I discovered that our logic for removing &quot;redundant&quot; inline text boxes does not remove inline text boxes for empty combined texts. It does remove inline text boxes for non-combined text that are empty. We should consider inline text boxes with empty combined text to also be empty and remove such boxes because they have not visual appearance, take up memory, and make it harder to reason about painting of the inline text box tree (since we currently need to explicitly consider the case of an inline text box with a RenderCombineText renderer whose combined text string is the empty string as opposed to the higher level concept of whether the box is visually empty).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455274</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-30 10:41:13 -0700</bug_when>
    <thetext>For those not familiar with the concept of combined text. Combined text is defined to be &quot;the combination of multiple typographic character units into the space of a single typographic character unit. The resulting composition is treated as a single upright glyph for the purposes of layout and decoration.&quot; (https://drafts.csswg.org/css-writing-modes-4/#propdef-text-combine-upright; Editor&apos;s Draft, 17 August 2018). We model this in the engine with an inline text box that has length 1 (InlineTextBox::len() == 1) and its associated renderer (RenderCombineText) stores the resulting composition to be rendered in the box (RenderCombineText::combinedStringForRendering()).

Additional remarks:

Notice that inline text boxes hang off of renderers and we only create a text renderer if the underlying DOM text node is non-empty by RenderTreeUpdater::textRendererIsNeeded().

DOM operations, including Range.surroundContents(), can mutate both the DOM text nodes and the text in the associated renderers such that the composed string stored in a RenderCombineText can become the empty string (RenderCombineText::combinedStringForRendering().isEmpty() evaluates to true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455289</commentid>
    <comment_count>5</comment_count>
      <attachid>348448</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-30 11:02:42 -0700</bug_when>
    <thetext>Comment on attachment 348448
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        An empty inline text box does not visually effect the rendering of the page. We should not
&gt; +        create such text boxes both to reduce memory and to make it easier to reason about the line
&gt; +        box tree.

Will update this before landing to read:

We should consider inline text boxes that have a combined text renderer (RenderCombineText) whose composed string is empty as &quot;redundant&quot; just as we do for inline text boxes that have a non-combined text renderer that have zero length so that we remove them. Such boxes are visibly empty and do not take up space visually. By removing them we reduce memory and make it easier to reason about the line box tree.

Currently RenderBlockFlow::computeBlockDirectionPositionsForLine() tests if an inline text box is empty by checking if it has a zero length (InlineTextBox::len()). However an inline text box associated with a RenderCombineText always has length 1 regardless of whether the composed string it represents is the empty string. Instead we should expose a way to check if an inline text box is visually empty and have RenderBlockFlow::computeBlockDirectionPositionsForLine() query the inline text box for this answer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455293</commentid>
    <comment_count>6</comment_count>
      <attachid>348510</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-30 11:09:12 -0700</bug_when>
    <thetext>Created attachment 348510
Patch

Updated ChangeLogs to reflect updated title and my remarks in comment 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455297</commentid>
    <comment_count>7</comment_count>
      <attachid>348510</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-30 11:11:24 -0700</bug_when>
    <thetext>Comment on attachment 348510
Patch

I think this change looks good, but I&apos;d like Alan or Myles to give it a look, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455398</commentid>
    <comment_count>8</comment_count>
      <attachid>348510</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-08-30 13:59:39 -0700</bug_when>
    <thetext>Comment on attachment 348510
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:79
&gt; +bool InlineTextBox::isEmpty() const

In some cases we use &quot;empty&quot; in the context of something is _visually_ empty. I&apos;d rather try the term hasTextContent() or something along those lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456327</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-04 09:37:54 -0700</bug_when>
    <thetext>(In reply to zalan from comment #8)
&gt; Comment on attachment 348510 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348510&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/InlineTextBox.cpp:79
&gt; &gt; +bool InlineTextBox::isEmpty() const
&gt; 
&gt; In some cases we use &quot;empty&quot; in the context of something is _visually_
&gt; empty. I&apos;d rather try the term hasTextContent() or something along those
&gt; lines.

Will rename isEmpty() to hasTextContent() before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456339</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-04 10:02:00 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #9)
&gt; (In reply to zalan from comment #8)
&gt; &gt; Comment on attachment 348510 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=348510&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/InlineTextBox.cpp:79
&gt; &gt; &gt; +bool InlineTextBox::isEmpty() const
&gt; &gt; 
&gt; &gt; In some cases we use &quot;empty&quot; in the context of something is _visually_
&gt; &gt; empty. I&apos;d rather try the term hasTextContent() or something along those
&gt; &gt; lines.
&gt; 
&gt; Will rename isEmpty() to hasTextContent() before landing.

Clearly, I will also need to invert the logic in InlineTextBox::isEmpty() such that it return true if the text box has content and false otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456342</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-04 10:02:51 -0700</bug_when>
    <thetext>Committed r235615: &lt;https://trac.webkit.org/changeset/235615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456343</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 10:03:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/44101162&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456386</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-04 11:22:01 -0700</bug_when>
    <thetext>Committed attempt to fix layout tests in &lt;https://trac.webkit.org/changeset/235621&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348448</attachid>
            <date>2018-08-29 16:49:54 -0700</date>
            <delta_ts>2018-08-30 11:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189119-20180829164953.patch</filename>
            <type>text/plain</type>
            <size>7876</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY3M2JkYTI2MzQwZDU0
NmE5YjcxNWFhZGU2YTBhMjQwYTdlNWQwNS4uNmE5NWYxNjA2YzUwYjdjMDYzZjA4YzNiODhjODBh
MTRhZDVlNTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTA4LTI5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBEbyBub3QgY3JlYXRlIGlu
bGluZSB0ZXh0IGJveGVzIGZvciBlbXB0eSBjb21iaW5lZCB0ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbiBlbXB0eSBpbmxpbmUgdGV4dCBib3gg
ZG9lcyBub3QgdmlzdWFsbHkgZWZmZWN0IHRoZSByZW5kZXJpbmcgb2YgdGhlIHBhZ2UuIFdlIHNo
b3VsZCBub3QKKyAgICAgICAgY3JlYXRlIHN1Y2ggdGV4dCBib3hlcyBib3RoIHRvIHJlZHVjZSBt
ZW1vcnkgYW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCB0aGUgbGluZQorICAg
ICAgICBib3ggdHJlZS4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmlzRW1wdHkgY29uc3QpOiBBZGRlZC4g
UmV0dXJucyB3aGV0aGVyIGFuIGlubGluZSB0ZXh0IGJveCBpcyBlbXB0eS4KKyAgICAgICAgV2Ug
ZG8gbm90IG5lZWQgdG8gY29uc2lkZXIgaHlwZW5hdGlvbiBzaW5jZSBoeXBlbnMgYXJlIGFuIGVt
YmVsbGlzaG1lbnQgKGkuZS4gdGhleSBhcmUgbm90CisgICAgICAgIHBhcnQgb2YgdGhlIG1hcmt1
cCBvZiB0aGUgcGFnZSkuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6
IFdyaXRlIGluIHRlcm1zIG9mIGlzRW1wdHkoKS4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnN1YmRpdmlkZUFuZFJlc29sdmVTdHlsZSk6IEFzc2VydCB0aGF0IFdlYkNvcmU6OnN1
YmRpdmlkZSgpIGFsd2F5cworICAgICAgICByZXR1cm5zIGEgbm9uLWVtcHR5IGxpc3Qgb2Ygc3Vi
ZGl2aXNpb25zLiBBIG5vbi1lbXB0eSB0ZXh0IGJveCBzaG91bGQgYWx3YXlzIGhhdmUgYXQgbGVh
c3QKKyAgICAgICAgb25lIHN1YmRpdmlzaW9uLCBzYXkgZm9yIHRoZSB1bm1hcmtlZCB0ZXh0LiBJ
IGxlZnQgdGhlIGV4aXN0aW5nIGNvbmRpdG9uYWwgKHRob3VnaCBtYXJrZWQKKyAgICAgICAgaXQg
YXMgVU5MSUtFTFkoKSkgc28gYXMgdG8gYmUgZm9yZ2l2aW5nIGFuZCBhdm9pZCBhIGJhZCB1c2Vy
IGV4cGVyaWVuY2Ugc2hvdWxkIFdlYkNvcmU6OnN1YmRpdmlkZSgpCisgICAgICAgIHJldHVybiBh
biBlbXB0eSB2ZWN0b3IgaW4gYSBub24tZGVidWcgYnVpbGQuCisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUJsb2Nr
RGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6IFdyaXRlIGluIHRlcm1zIG9mIElubGluZVRleHRC
b3g6OmlzRW1wdHkoKQorICAgICAgICBzbyB0aGF0IHdlIHJlbW92ZSBlbXB0eSBpbmxpbmUgdGV4
dCBib3hlcyBhc3NvY2lhdGVkIHdpdGggY29tYmluZWQgdGV4dC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpwb3NpdGlv
bkxpbmVCb3gpOiBXcml0ZSBpbiB0ZXJtcyBvZiBJbmxpbmVUZXh0Qm94Ojppc0VtcHR5KCkuCisK
IDIwMTgtMDgtMjkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIyMjYxMzgpOiBXZWJDb3JlOjpzdWJkaXZpZGUoKSBtYXkgcmV0dXJuIGFu
IGVtcHR5IGFuIGVtcHR5IHZlY3RvcjsgV2ViIHByb2Nlc3MgY2FuIGNyYXNoIHdoZW4gcGVyZm9y
bWluZyBmaW5kIGluIEVwaXBoYW55CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggNTlhNzU2NTY1MmNmZThjMWQ2NWZiYTYwYmQ0NjlkZWIyYzMyNmMxMC4u
YjVlZDM4Yzc4YTM2NzNhYmU5MjZkZDJhMWI4NzYxYjg2MWNiZDFkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNzYsNiArNzYsMTUgQEAgSW5saW5l
VGV4dEJveDo6fklubGluZVRleHRCb3goKQogICAgIFRleHRQYWludGVyOjpyZW1vdmVHbHlwaERp
c3BsYXlMaXN0KCp0aGlzKTsKIH0KIAorYm9vbCBJbmxpbmVUZXh0Qm94Ojppc0VtcHR5KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fbGVuKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYXV0
byogY29tYmluZWRUZXh0ID0gdGhpcy0+Y29tYmluZWRUZXh0KCkpCisgICAgICAgIHJldHVybiBj
b21iaW5lZFRleHQtPmNvbWJpbmVkU3RyaW5nRm9yUmVuZGVyaW5nKCkuaXNFbXB0eSgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBJbmxpbmVUZXh0Qm94OjptYXJrRGlydHkoYm9vbCBk
aXJ0eSkKIHsKICAgICBpZiAoZGlydHkpIHsKQEAgLTQzNyw3ICs0NDYsNyBAQCBzdGF0aWMgTWFy
a2VkVGV4dCBjcmVhdGVNYXJrZWRUZXh0RnJvbVNlbGVjdGlvbkluQm94KGNvbnN0IElubGluZVRl
eHRCb3gmIGJveCkKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCAvKmxpbmVUb3Aq
LywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLykKIHsKICAgICBpZiAoaXNMaW5lQnJlYWsoKSB8
fCAhcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJl
cigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUKLSAgICAgICAg
fHwgbV90cnVuY2F0aW9uID09IGNGdWxsVHJ1bmNhdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZTo6T3V0bGluZSB8fCAhbV9sZW4pCisgICAgICAgIHx8IG1fdHJ1bmNhdGlvbiA9
PSBjRnVsbFRydW5jYXRpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6Ok91dGxp
bmUgfHwgaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQocGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpDaGlsZE91dGxpbmVzKTsKQEAgLTc5Miw3ICs4MDEsOCBAQCBhdXRvIElubGlu
ZVRleHRCb3g6OnN1YmRpdmlkZUFuZFJlc29sdmVTdHlsZShjb25zdCBWZWN0b3I8TWFya2VkVGV4
dD4mIHRleHRzVG9TdQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBtYXJrZWRUZXh0
cyA9IHN1YmRpdmlkZSh0ZXh0c1RvU3ViZGl2aWRlKTsKLSAgICBpZiAobWFya2VkVGV4dHMuaXNF
bXB0eSgpKQorICAgIEFTU0VSVCghbWFya2VkVGV4dHMuaXNFbXB0eSgpKTsKKyAgICBpZiAoVU5M
SUtFTFkobWFya2VkVGV4dHMuaXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IC8vIENvbXB1dGUgZnJvbnRtb3N0IG92ZXJsYXBwaW5nIHN0eWxlZCBtYXJrZWQgdGV4dHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA5MTU2YmFjODkxZWYy
MDc4YzUzYTYxYWVmNmY0ZWVjNzg3MWZkZmFkLi5lMDc5ZDM2MTgwYTdkOWY1ZDJiMjk3ODAxYmY3
NWE2M2I5MzJkNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgK
QEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmV4dFRleHRCb3goSW5saW5l
VGV4dEJveCogbikgeyBtX25leHRUZXh0Qm94ID0gbjsgfQogICAgIHZvaWQgc2V0UHJldmlvdXNU
ZXh0Qm94KElubGluZVRleHRCb3gqIHApIHsgbV9wcmV2VGV4dEJveCA9IHA7IH0KIAorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OworCiAgICAgLy8gRklYTUU6IFRoZXNlIGFjY2Vzc29ycyBzaG91
bGQgQVNTRVJUKCFpc0RpcnR5KCkpLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3MjY0CiAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0OyB9CiAgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9sZW4gPyBtX3N0YXJ0
ICsgbV9sZW4gLSAxIDogbV9zdGFydDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBiMTg4YTQ2ZTI2OWI1YzcwODdhMTYy
NWQxNzMxZmJkNWZiOWIxMTM0Li41Y2YyNmE2OWVhODFiOGExMTdlOGYzZWU2YWIzZmQ3YzE3YzQ5
NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcApAQCAtMTAwMSw3ICsxMDAxLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNv
bXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUIK
ICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0
byYgaW5saW5lVGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpydW4tPmJveCgpKTsK
ICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS5wb3NpdGlvbkxpbmVC
b3goaW5saW5lVGV4dEJveCk7Ci0gICAgICAgICAgICBpbmxpbmVCb3hJc1JlZHVuZGFudCA9ICFp
bmxpbmVUZXh0Qm94LmxlbigpOworICAgICAgICAgICAgaW5saW5lQm94SXNSZWR1bmRhbnQgPSBp
bmxpbmVUZXh0Qm94LmlzRW1wdHkoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJCb3g+
KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlciku
cG9zaXRpb25MaW5lQm94KGRvd25jYXN0PElubGluZUVsZW1lbnRCb3g+KCpydW4tPmJveCgpKSk7
CiAgICAgICAgICAgICBpbmxpbmVCb3hJc1JlZHVuZGFudCA9IHJlbmRlcmVyLmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IGZmMDViNzJkMjZmZTQ5Njc1MzQwMTFjZWFhZGNmZDNmNGZkNGNhZjIuLjRlMTY2NTMwNjc1ZGE3
MzhiNzM2Y2JlZDZmNWUxMjczMWUzYjBjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVU
ZXh0Qm94PiBSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KCkKIAogdm9pZCBSZW5kZXJUZXh0Ojpw
b3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKIHsKLSAgICBpZiAoIXRleHRC
b3gubGVuKCkpCisgICAgaWYgKHRleHRCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb250YWluc1JldmVyc2VkVGV4dCB8PSAhdGV4dEJveC5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggM2VjNWQ4Y2I4ZTUxNzQ4ZTkxZTc2NDU0OTMyMmEwYzNmZWRmNTc4
Ny4uNDk4NTE5NGMxMzY5YmYyYjRjYjhiNWNkYjc5ZTJjZjg3YzE3OTY1ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE4LTA4LTI5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBEbyBub3QgY3JlYXRlIGlubGluZSB0ZXh0IGJveGVzIGZvciBlbXB0eSBjb21i
aW5lZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgZXhwZWN0ZWQgcmVzdWx0IG5vdyB0aGF0IHdlIGRvIG5vdCBjcmVhdGUgYW4gaW5s
aW5lIHRleHQgYm94IGFzc29jaWF0ZWQgd2l0aCBjb21iaW5lZCB0ZXh0CisgICAgICAgIHdoZW4g
d2UgZG8gbm90IGhhdmUgYW55IGNvbWJpbmVkIHRleHQgdG8gcmVuZGVyLgorCisgICAgICAgICog
ZmFzdC90ZXh0L3RleHQtY29tYmluZS1zdXJyb3VuZENvbnRlbnRzLWNyYXNoLWV4cGVjdGVkLnR4
dDoKKwogMjAxOC0wOC0yOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjIyNjEzOCk6IFdlYkNvcmU6OnN1YmRpdmlkZSgpIG1heSByZXR1
cm4gYW4gZW1wdHkgYW4gZW1wdHkgdmVjdG9yOyBXZWIgcHJvY2VzcyBjYW4gY3Jhc2ggd2hlbiBw
ZXJmb3JtaW5nIGZpbmQgaW4gRXBpcGhhbnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC90ZXh0LWNvbWJpbmUtc3Vycm91bmRDb250ZW50cy1jcmFzaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC1jb21iaW5lLXN1cnJvdW5kQ29udGVudHMtY3Jhc2gt
ZXhwZWN0ZWQudHh0CmluZGV4IDhmY2Y0NDFhNGM2N2IzMjRlYWM1MDAxZTlhOThiOWMxZWIzNDQz
OTEuLjUzZjEyYzY5YmNlOGQ3MjYyZWJmYTcyYjI2Yjc1YTg1YmJmMGVkMmEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LWNvbWJpbmUtc3Vycm91bmRDb250ZW50cy1jcmFz
aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtY29tYmluZS1z
dXJyb3VuZENvbnRlbnRzLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtNCw4ICs0LDcgQEAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NzYKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDc2CiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NjAKICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMjB4NDAKLSAgICAgICAgUmVuZGVyQ29t
YmluZVRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIweDIwCi0gICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMjA6ICJceHtGRkZDfSIKKyAgICAgICAgUmVuZGVyQ29tYmluZVRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgMjB4MAogICAgICAgICBSZW5kZXJDb21iaW5lVGV4dCB7I3RleHR9IGF0ICgw
LDIwKSBzaXplIDIweDIwCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDIwOiAi
XHh7RkZGQ30iCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348510</attachid>
            <date>2018-08-30 11:09:12 -0700</date>
            <delta_ts>2018-08-30 13:59:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189119-20180830110912.patch</filename>
            <type>text/plain</type>
            <size>8687</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY3M2JkYTI2MzQwZDU0
NmE5YjcxNWFhZGU2YTBhMjQwYTdlNWQwNS4uNTdhMzA0ZjdjMmY2ZTMwYjRkN2I3OTljYjc0ZGUx
NzViZTRlZWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTMwICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcmVkdW5kYW50
IGlubGluZSB0ZXh0IGJveGVzIGZvciBlbXB0eSBjb21iaW5lZCB0ZXh0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgY29uc2lkZXIgaW5s
aW5lIHRleHQgYm94ZXMgdGhhdCBoYXZlIGEgY29tYmluZWQgdGV4dCByZW5kZXJlciAoUmVuZGVy
Q29tYmluZVRleHQpCisgICAgICAgIHdob3NlIGNvbXBvc2VkIHN0cmluZyBpcyBlbXB0eSBhcyAi
cmVkdW5kYW50IiBqdXN0IGFzIHdlIGRvIGZvciBpbmxpbmUgdGV4dCBib3hlcyB0aGF0IGhhdmUK
KyAgICAgICAgYSBub24tY29tYmluZWQgdGV4dCByZW5kZXJlciB0aGF0IGhhdmUgemVybyBsZW5n
dGggc28gdGhhdCB3ZSByZW1vdmUgdGhlbS4gU3VjaCBib3hlcyBhcmUKKyAgICAgICAgdmlzaWJs
eSBlbXB0eSBhbmQgZG8gbm90IHRha2UgdXAgc3BhY2UgdmlzdWFsbHkuIEJ5IHJlbW92aW5nIHRo
ZW0gd2UgcmVkdWNlIG1lbW9yeSBhbmQgbWFrZQorICAgICAgICBpdCBlYXNpZXIgdG8gcmVhc29u
IGFib3V0IHRoZSBsaW5lIGJveCB0cmVlLgorCisgICAgICAgIEN1cnJlbnRseSBSZW5kZXJCbG9j
a0Zsb3c6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoKSB0ZXN0cyBpZiBh
biBpbmxpbmUgdGV4dAorICAgICAgICBib3ggaXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgaXQgaGFz
IGEgemVybyBsZW5ndGggKElubGluZVRleHRCb3g6OmxlbigpKS4gSG93ZXZlciBhbiBpbmxpbmUK
KyAgICAgICAgdGV4dCBib3ggYXNzb2NpYXRlZCB3aXRoIGEgUmVuZGVyQ29tYmluZVRleHQgYWx3
YXlzIGhhcyBsZW5ndGggMSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlCisgICAgICAgIGNvbXBv
c2VkIHN0cmluZyBpdCByZXByZXNlbnRzIGlzIHRoZSBlbXB0eSBzdHJpbmcuIEluc3RlYWQgd2Ug
c2hvdWxkIGV4cG9zZSBhIHdheSB0byBjaGVjaworICAgICAgICBpZiBhbiBpbmxpbmUgdGV4dCBi
b3ggaXMgdmlzdWFsbHkgZW1wdHkgYW5kIGhhdmUgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQmxv
Y2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKCkKKyAgICAgICAgcXVlcnkgdGhlIGlubGluZSB0
ZXh0IGJveCBmb3IgdGhpcyBhbnN3ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojppc0VtcHR5IGNvbnN0
KTogQWRkZWQuIFJldHVybnMgd2hldGhlciBhbiBpbmxpbmUgdGV4dCBib3ggaXMgZW1wdHkuCisg
ICAgICAgIFdlIGRvIG5vdCBuZWVkIHRvIGNvbnNpZGVyIGh5cGVuYXRpb24gc2luY2UgaHlwZW5z
IGFyZSBhbiBlbWJlbGxpc2htZW50IChpLmUuIHRoZXkgYXJlIG5vdAorICAgICAgICBwYXJ0IG9m
IHRoZSBtYXJrdXAgb2YgdGhlIHBhZ2UpLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6cGFpbnQpOiBXcml0ZSBpbiB0ZXJtcyBvZiBpc0VtcHR5KCkuCisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVUZXh0Qm94OjpzdWJkaXZpZGVBbmRSZXNvbHZlU3R5bGUpOiBBc3NlcnQgdGhhdCBX
ZWJDb3JlOjpzdWJkaXZpZGUoKSBhbHdheXMKKyAgICAgICAgcmV0dXJucyBhIG5vbi1lbXB0eSBs
aXN0IG9mIHN1YmRpdmlzaW9ucy4gQSBub24tZW1wdHkgdGV4dCBib3ggc2hvdWxkIGFsd2F5cyBo
YXZlIGF0IGxlYXN0CisgICAgICAgIG9uZSBzdWJkaXZpc2lvbiwgc2F5IGZvciB0aGUgdW5tYXJr
ZWQgdGV4dC4gSSBsZWZ0IHRoZSBleGlzdGluZyBjb25kaXRvbmFsICh0aG91Z2ggbWFya2VkCisg
ICAgICAgIGl0IGFzIFVOTElLRUxZKCkpIHNvIGFzIHRvIGJlIGZvcmdpdmluZyBhbmQgYXZvaWQg
YSBiYWQgdXNlciBleHBlcmllbmNlIHNob3VsZCBXZWJDb3JlOjpzdWJkaXZpZGUoKQorICAgICAg
ICByZXR1cm4gYW4gZW1wdHkgdmVjdG9yIGluIGEgbm9uLWRlYnVnIGJ1aWxkLgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNv
bXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOiBXcml0ZSBpbiB0ZXJtcyBvZiBJ
bmxpbmVUZXh0Qm94Ojppc0VtcHR5KCkKKyAgICAgICAgc28gdGhhdCB3ZSByZW1vdmUgZW1wdHkg
aW5saW5lIHRleHQgYm94ZXMgYXNzb2NpYXRlZCB3aXRoIGNvbWJpbmVkIHRleHQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6cG9zaXRpb25MaW5lQm94KTogV3JpdGUgaW4gdGVybXMgb2YgSW5saW5lVGV4dEJveDo6aXNF
bXB0eSgpLgorCiAyMDE4LTA4LTI5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjI2MTM4KTogV2ViQ29yZTo6c3ViZGl2aWRlKCkgbWF5
IHJldHVybiBhbiBlbXB0eSBhbiBlbXB0eSB2ZWN0b3I7IFdlYiBwcm9jZXNzIGNhbiBjcmFzaCB3
aGVuIHBlcmZvcm1pbmcgZmluZCBpbiBFcGlwaGFueQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCmluZGV4IDU5YTc1NjU2NTJjZmU4YzFkNjVmYmE2MGJkNDY5ZGVi
MmMzMjZjMTAuLmI1ZWQzOGM3OGEzNjczYWJlOTI2ZGQyYTFiODc2MWI4NjFjYmQxZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTc2LDYgKzc2LDE1
IEBAIElubGluZVRleHRCb3g6On5JbmxpbmVUZXh0Qm94KCkKICAgICBUZXh0UGFpbnRlcjo6cmVt
b3ZlR2x5cGhEaXNwbGF5TGlzdCgqdGhpcyk7CiB9CiAKK2Jvb2wgSW5saW5lVGV4dEJveDo6aXNF
bXB0eSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xlbikKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKGF1dG8qIGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNvbWJpbmVkVGV4dCgpKQorICAgICAg
ICByZXR1cm4gY29tYmluZWRUZXh0LT5jb21iaW5lZFN0cmluZ0ZvclJlbmRlcmluZygpLmlzRW1w
dHkoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSW5saW5lVGV4dEJveDo6bWFya0Rp
cnR5KGJvb2wgZGlydHkpCiB7CiAgICAgaWYgKGRpcnR5KSB7CkBAIC00MzcsNyArNDQ2LDcgQEAg
c3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25z
dCBJbmxpbmVUZXh0Qm94JiBib3gpCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQg
LypsaW5lVG9wKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCiB7CiAgICAgaWYgKGlzTGlu
ZUJyZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkg
fHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
Ci0gICAgICAgIHx8IG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24gfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2U6Ok91dGxpbmUgfHwgIW1fbGVuKQorICAgICAgICB8fCBtX3Ry
dW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlOjpPdXRsaW5lIHx8IGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxmT3V0bGluZSAmJiBwYWludEluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZTo6Q2hpbGRPdXRsaW5lcyk7CkBAIC03OTIsNyArODAxLDggQEAg
YXV0byBJbmxpbmVUZXh0Qm94OjpzdWJkaXZpZGVBbmRSZXNvbHZlU3R5bGUoY29uc3QgVmVjdG9y
PE1hcmtlZFRleHQ+JiB0ZXh0c1RvU3UKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8g
bWFya2VkVGV4dHMgPSBzdWJkaXZpZGUodGV4dHNUb1N1YmRpdmlkZSk7Ci0gICAgaWYgKG1hcmtl
ZFRleHRzLmlzRW1wdHkoKSkKKyAgICBBU1NFUlQoIW1hcmtlZFRleHRzLmlzRW1wdHkoKSk7Cisg
ICAgaWYgKFVOTElLRUxZKG1hcmtlZFRleHRzLmlzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKICAgICAvLyBDb21wdXRlIGZyb250bW9zdCBvdmVybGFwcGluZyBzdHlsZWQgbWFya2Vk
IHRleHRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggOTE1
NmJhYzg5MWVmMjA3OGM1M2E2MWFlZjZmNGVlYzc4NzFmZGZhZC4uZTA3OWQzNjE4MGE3ZDlmNWQy
YjI5NzgwMWJmNzVhNjNiOTMyZDcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5leHRUZXh0
Qm94KElubGluZVRleHRCb3gqIG4pIHsgbV9uZXh0VGV4dEJveCA9IG47IH0KICAgICB2b2lkIHNl
dFByZXZpb3VzVGV4dEJveChJbmxpbmVUZXh0Qm94KiBwKSB7IG1fcHJldlRleHRCb3ggPSBwOyB9
CiAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBUaGVzZSBhY2Nl
c3NvcnMgc2hvdWxkIEFTU0VSVCghaXNEaXJ0eSgpKS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzI2NAogICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydDsgfQogICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
ID8gbV9zdGFydCArIG1fbGVuIC0gMSA6IG1fc3RhcnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggYjE4OGE0NmUyNjli
NWM3MDg3YTE2MjVkMTczMWZiZDVmYjliMTEzNC4uNWNmMjZhNjllYTgxYjhhMTE3ZThmM2VlNmFi
M2ZkN2MxN2M0OTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVC
b3gqIGxpbmVCCiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpIHsKICAgICAg
ICAgICAgIGF1dG8mIGlubGluZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqcnVu
LT5ib3goKSk7CiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikucG9z
aXRpb25MaW5lQm94KGlubGluZVRleHRCb3gpOwotICAgICAgICAgICAgaW5saW5lQm94SXNSZWR1
bmRhbnQgPSAhaW5saW5lVGV4dEJveC5sZW4oKTsKKyAgICAgICAgICAgIGlubGluZUJveElzUmVk
dW5kYW50ID0gaW5saW5lVGV4dEJveC5pc0VtcHR5KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXM8
UmVuZGVyQm94PihyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJveD4o
cmVuZGVyZXIpLnBvc2l0aW9uTGluZUJveChkb3duY2FzdDxJbmxpbmVFbGVtZW50Qm94PigqcnVu
LT5ib3goKSkpOwogICAgICAgICAgICAgaW5saW5lQm94SXNSZWR1bmRhbnQgPSByZW5kZXJlci5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAppbmRleCBmZjA1YjcyZDI2ZmU0OTY3NTM0MDExY2VhYWRjZmQzZjRmZDRjYWYyLi40ZTE2
NjUzMDY3NWRhNzM4YjczNmNiZWQ2ZjVlMTI3MzFlM2IwYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiAKIHZvaWQgUmVu
ZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCiB7Ci0gICAg
aWYgKCF0ZXh0Qm94LmxlbigpKQorICAgIGlmICh0ZXh0Qm94LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY29udGFpbnNSZXZlcnNlZFRleHQgfD0gIXRleHRCb3guaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNlYzVkOGNiOGU1MTc0OGU5MWU3NjQ1NDkzMjJh
MGMzZmVkZjU3ODcuLmRmYjJiMmJlYTIxYmNjOTI2NWMxZDllMGJiZGRlYTQ5ZmVhOTU1ZjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wOC0zMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHJlZHVuZGFudCBpbmxpbmUgdGV4dCBib3hlcyBm
b3IgZW1wdHkgY29tYmluZWQgdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg5MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdCBub3cgdGhhdCB3ZSBkbyBub3Qg
Y3JlYXRlIGFuIGlubGluZSB0ZXh0IGJveCBhc3NvY2lhdGVkIHdpdGggY29tYmluZWQgdGV4dAor
ICAgICAgICB3aGVuIHdlIGRvIG5vdCBoYXZlIGFueSBjb21iaW5lZCB0ZXh0IHRvIHJlbmRlci4K
KworICAgICAgICAqIGZhc3QvdGV4dC90ZXh0LWNvbWJpbmUtc3Vycm91bmRDb250ZW50cy1jcmFz
aC1leHBlY3RlZC50eHQ6CisKIDIwMTgtMDgtMjkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMjYxMzgpOiBXZWJDb3JlOjpzdWJkaXZp
ZGUoKSBtYXkgcmV0dXJuIGFuIGVtcHR5IGFuIGVtcHR5IHZlY3RvcjsgV2ViIHByb2Nlc3MgY2Fu
IGNyYXNoIHdoZW4gcGVyZm9ybWluZyBmaW5kIGluIEVwaXBoYW55CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvdGV4dC1jb21iaW5lLXN1cnJvdW5kQ29udGVudHMtY3Jhc2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtY29tYmluZS1zdXJyb3VuZENv
bnRlbnRzLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA4ZmNmNDQxYTRjNjdiMzI0ZWFjNTAwMWU5
YTk4YjljMWViMzQ0MzkxLi41M2YxMmM2OWJjZThkNzI2MmViZmE3MmIyNmI3NWE4NWJiZjBlZDJh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC1jb21iaW5lLXN1cnJvdW5k
Q29udGVudHMtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90
ZXh0LWNvbWJpbmUtc3Vycm91bmRDb250ZW50cy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTQsOCAr
NCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDc2CiAgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg3NgogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDYwCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDIweDQwCi0gICAg
ICAgIFJlbmRlckNvbWJpbmVUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMHgyMAotICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwOiAiXHh7RkZGQ30iCisgICAgICAgIFJlbmRl
ckNvbWJpbmVUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKICAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDIweDAKICAgICAgICAgUmVuZGVyQ29tYmluZVRleHQg
eyN0ZXh0fSBhdCAoMCwyMCkgc2l6ZSAyMHgyMAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIw
KSB3aWR0aCAyMDogIlx4e0ZGRkN9Igo=
</data>
<flag name="review"
          id="366153"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>