<?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>204520</bug_id>
          
          <creation_ts>2019-11-22 08:39:15 -0800</creation_ts>
          <short_desc>Make CSSValuePool constructable</short_desc>
          <delta_ts>2020-02-12 14:42:58 -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>CSS</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=207666</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>
          
          <blocked>182686</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1592815</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-11-22 08:39:15 -0800</bug_when>
    <thetext>Currently CSSValuePool is only ever created once and never destroyed, so it&apos;s organised in a way that it can only ever be constructed in that way. It will be useful for OffscreenCanvas to be able to make a ValuePool in a worker, so it needs to be constructable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592823</commentid>
    <comment_count>1</comment_count>
      <attachid>384158</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-11-22 09:01:56 -0800</bug_when>
    <thetext>Created attachment 384158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592827</commentid>
    <comment_count>2</comment_count>
      <attachid>384158</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-22 09:09:59 -0800</bug_when>
    <thetext>Comment on attachment 384158
Patch

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

&gt; Source/WebCore/css/CSSValuePool.cpp:60
&gt;      for (unsigned i = firstCSSValueKeyword; i &lt;= lastCSSValueKeyword; ++i)
&gt; -        m_identifierValues[i].construct(static_cast&lt;CSSValueID&gt;(i));
&gt; +        m_identifierValues.append(CSSPrimitiveValue::create(static_cast&lt;CSSValueID&gt;(i)));
&gt;  
&gt;      for (unsigned i = 0; i &lt; (maximumCacheableIntegerValue + 1); ++i) {
&gt; -        m_pixelValues[i].construct(i, CSSUnitType::CSS_PX);
&gt; -        m_percentValues[i].construct(i, CSSUnitType::CSS_PERCENTAGE);
&gt; -        m_numberValues[i].construct(i, CSSUnitType::CSS_NUMBER);
&gt; +        m_pixelValues.append(CSSPrimitiveValue::create(i, CSSUnitType::CSS_PX));
&gt; +        m_percentValues.append(CSSPrimitiveValue::create(i, CSSUnitType::CSS_PERCENTAGE));
&gt; +        m_numberValues.append(CSSPrimitiveValue::create(i, CSSUnitType::CSS_NUMBER));
&gt;      }

If you stick with the vector you should at least reserveCapacity and use uncheckedAppend

&gt; Source/WebCore/css/CSSValuePool.h:101
&gt; -    LazyNeverDestroyed&lt;CSSPrimitiveValue&gt; m_pixelValues[maximumCacheableIntegerValue + 1];
&gt; -    LazyNeverDestroyed&lt;CSSPrimitiveValue&gt; m_percentValues[maximumCacheableIntegerValue + 1];
&gt; -    LazyNeverDestroyed&lt;CSSPrimitiveValue&gt; m_numberValues[maximumCacheableIntegerValue + 1];
&gt; -    LazyNeverDestroyed&lt;CSSPrimitiveValue&gt; m_identifierValues[numCSSValueKeywords];
&gt; +    Vector&lt;Ref&lt;CSSPrimitiveValue&gt;&gt; m_pixelValues;
&gt; +    Vector&lt;Ref&lt;CSSPrimitiveValue&gt;&gt; m_percentValues;
&gt; +    Vector&lt;Ref&lt;CSSPrimitiveValue&gt;&gt; m_numberValues;
&gt; +    Vector&lt;Ref&lt;CSSPrimitiveValue&gt;&gt; m_identifierValues;

You could use std::array since these are fixed sized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592868</commentid>
    <comment_count>3</comment_count>
      <attachid>384165</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-11-22 10:17:05 -0800</bug_when>
    <thetext>Created attachment 384165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592884</commentid>
    <comment_count>4</comment_count>
      <attachid>384169</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-11-22 10:41:22 -0800</bug_when>
    <thetext>Created attachment 384169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592905</commentid>
    <comment_count>5</comment_count>
      <attachid>384169</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-22 11:00:38 -0800</bug_when>
    <thetext>Comment on attachment 384169
Patch

Clearing flags on attachment: 384169

Committed r252785: &lt;https://trac.webkit.org/changeset/252785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592906</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-22 11:00:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592907</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-22 11:01:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/57434158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595220</commentid>
    <comment_count>8</comment_count>
      <attachid>384158</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-03 15:24:54 -0800</bug_when>
    <thetext>Comment on attachment 384158
Patch

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

&gt;&gt; Source/WebCore/css/CSSValuePool.h:101
&gt;&gt; +    Vector&lt;Ref&lt;CSSPrimitiveValue&gt;&gt; m_identifierValues;
&gt; 
&gt; You could use std::array since these are fixed sized.

What happened to using std::array?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595416</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-04 01:24:12 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 384158 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384158&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/CSSValuePool.h:101
&gt; &gt;&gt; +    Vector&lt;Ref&lt;CSSPrimitiveValue&gt;&gt; m_identifierValues;
&gt; &gt; 
&gt; &gt; You could use std::array since these are fixed sized.
&gt; 
&gt; What happened to using std::array?

I went with the previous comment of sticking with a vector and reserving the size, but I could open a bug to change this to use an array if you like?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595795</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-05 07:28:26 -0800</bug_when>
    <thetext>Well, I believe the array will be more efficient, use less memory and code than the Vector.

What’s the argument in favor of the Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595798</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-05 07:37:25 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Well, I believe the array will be more efficient, use less memory and code
&gt; than the Vector.
&gt; 
&gt; What’s the argument in favor of the Vector?

I didn&apos;t choose between the two as such, it was just my initial implementation and given the desire for an array wasn&apos;t strong, I favoured not changing at the risk of lengthening the review process/introducing human error (on my part).

I don&apos;t know about the internal implementation of WTF::Vector or std::array to comment knowledgeably on efficiency, but I&apos;d have thought a vector with explicitly set space and unchecked appends would only be marginally different from using an array, and given this code doesn&apos;t run frequently or repeatedly I didn&apos;t think it was important.

As I said before, I&apos;m happy to open a bug about this and write the patch to switch to array if desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595808</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-05 08:26:43 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #11)
&gt; I don&apos;t know about the internal implementation of WTF::Vector or std::array
&gt; to comment knowledgeably on efficiency

Costs for a Vector beyond the costs for std::array: buffer pointer (8 bytes), capacity (4 bytes), and current size (4 bytes). The buffer is also a separate memory block, so also the overhead associated with a separate malloc/new block (I don&apos;t know this figure: maybe 16 bytes or more).

&gt; given this code doesn&apos;t run frequently or repeatedly I didn&apos;t think it was important.

The issue I would be concerned with is memory usage after the code runs, not how often it runs.

And I agree: it&apos;s not important.

&gt; As I said before, I&apos;m happy to open a bug about this and write the patch to
&gt; switch to array if desired.

I’d prefer it, since you haven’t provided any arguments in favor of Vector other than &quot;I did it that way first and it doesn’t matter&quot;, which isn’t a super-strong one.

But I agree this is not important.

I was surprised you didn’t respond to Antti’s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595810</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-05 08:33:53 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; (In reply to Chris Lord from comment #11)
&gt; &gt; As I said before, I&apos;m happy to open a bug about this and write the patch to
&gt; &gt; switch to array if desired.
&gt; 
&gt; I’d prefer it, since you haven’t provided any arguments in favor of Vector
&gt; other than &quot;I did it that way first and it doesn’t matter&quot;, which isn’t a
&gt; super-strong one.
&gt; 
&gt; But I agree this is not important.
&gt; 
&gt; I was surprised you didn’t respond to Antti’s comment.

I&apos;ve filed bug 204889 for this. I didn&apos;t respond here explicitly as I spoke to Antti on IRC (and this was mentioned, I believe).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595811</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-05 08:35:41 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #13)
&gt; I spoke
&gt; to Antti on IRC (and this was mentioned, I believe).

Oh, sorry! Where was it mentioned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595814</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-05 08:43:27 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #13)
&gt; (In reply to Darin Adler from comment #12)
&gt; &gt; (In reply to Chris Lord from comment #11)
&gt; &gt; &gt; As I said before, I&apos;m happy to open a bug about this and write the patch to
&gt; &gt; &gt; switch to array if desired.
&gt; &gt; 
&gt; &gt; I’d prefer it, since you haven’t provided any arguments in favor of Vector
&gt; &gt; other than &quot;I did it that way first and it doesn’t matter&quot;, which isn’t a
&gt; &gt; super-strong one.
&gt; &gt; 
&gt; &gt; But I agree this is not important.
&gt; &gt; 
&gt; &gt; I was surprised you didn’t respond to Antti’s comment.
&gt; 
&gt; I&apos;ve filed bug 204889 for this. I didn&apos;t respond here explicitly as I spoke
&gt; to Antti on IRC (and this was mentioned, I believe).

(In reply to Darin Adler from comment #14)
&gt; (In reply to Chris Lord from comment #13)
&gt; &gt; I spoke
&gt; &gt; to Antti on IRC (and this was mentioned, I believe).
&gt; 
&gt; Oh, sorry! Where was it mentioned?

I&apos;m wrong, we didn&apos;t explicitly talk about it, but we did look over the final patch (where I used reserve/appendUnchecked as suggested) after that comment was made and correct an error in it, which I suppose along with the r+/cq+ I took as approval.

Relevant log on Friday 22nd November, ~18:35 UTC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595815</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-05 08:46:56 -0800</bug_when>
    <thetext>OK, no worries. I don’t think you did anything wrong.

But look at it from my point of view as an observer. I had no way of knowing you responded to Antti’s comment. Which is why I asked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595820</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-05 08:52:14 -0800</bug_when>
    <thetext>Now looking at doing this again and thinking back on it, I wasn&apos;t immediately sure how to go about constructing the array...(In reply to Darin Adler from comment #16)
&gt; OK, no worries. I don’t think you did anything wrong.
&gt; 
&gt; But look at it from my point of view as an observer. I had no way of knowing
&gt; you responded to Antti’s comment. Which is why I asked.

No problem! I should&apos;ve updated this bug. I&apos;m a bit more used to Mozilla&apos;s bugzilla where the timeline of review is a bit more obvious I suppose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595829</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-05 09:07:45 -0800</bug_when>
    <thetext>&gt; I wasn&apos;t immediately sure how to go about constructing the array.

I think we’d have to use RefPtr, and then assign the values in the constructor. I don’t think we can construct an array of Ref with values produced by a loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595830</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-05 09:10:10 -0800</bug_when>
    <thetext>I set r+/cq+ despite noticing this as I didn&apos;t feel another round was needed for essentially stylistic issue with trade-offs (Ref/RefPtr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595831</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-05 09:11:25 -0800</bug_when>
    <thetext>OK, sounds fine to leave it as is. I guess this change makes the pool take a lot more memory anyway since each object is now in a separate memory block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595836</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-05 09:17:26 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #20)
&gt; OK, sounds fine to leave it as is. I guess this change makes the pool take a
&gt; lot more memory anyway since each object is now in a separate memory block.

I suppose if we added a default constructor that initialised the value in some kind of default, invalid state and exposed methods to set the type of value that could only be called once, we could use an array again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595837</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-05 09:17:44 -0800</bug_when>
    <thetext>A default constructor to CSSPrimitiveValue, I mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595844</commentid>
    <comment_count>23</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-05 09:29:47 -0800</bug_when>
    <thetext>The real progression here would be to turn CSSValue into a value type and eliminate CSSValuePool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606655</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-14 16:07:18 -0800</bug_when>
    <thetext>Note that I&apos;m now looking into this change because of potential Membuster regression. If this turns out true, I&apos;ll craft some way that inlinlely allocates them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618232</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 14:42:49 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #24)
&gt; Note that I&apos;m now looking into this change because of potential Membuster
&gt; regression. If this turns out true, I&apos;ll craft some way that inlinlely
&gt; allocates them.

Yes, looks like this is causing memory regression.
https://bugs.webkit.org/show_bug.cgi?id=207666</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384158</attachid>
            <date>2019-11-22 09:01:56 -0800</date>
            <delta_ts>2019-11-22 10:17:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204520-20191122170155.patch</filename>
            <type>text/plain</type>
            <size>7548</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmExZjg2YWE1MDM1YmJk
ZWYzZmEwOWI1YjViOTY4YzI3NmQ1NWJmZi4uMDYyMzJlNjIwMmNmN2UxM2RiMmM5ODI1MWI5NmJl
ZjBkMDczNTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTExLTIyICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIENTU1ZhbHVlUG9vbCBj
b25zdHJ1Y3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDQ1MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1JldmVydFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU1Vuc2V0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWVQb29sLmg6CisKIDIwMTktMTAtMDQgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSBhbmQgY2FuY2VsQW5pbWF0aW9u
RnJhbWUgc2hvdWxkIGJlIHByZXNlbnQgb24gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKaW5kZXggZmJjMDcwY2Y5YTdlZGVhYjcy
NWRjNDZjNzBmMGI5M2RkOWE4OGZiZi4uZmExYmRkOTVlNWI4ODFhODE0MzEzN2ViMjI4NDUyYjIw
YWMxMTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKQEAgLTI2LDEy
ICsyNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0luaGVyaXRlZFZhbHVl
IGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENTU0lu
aGVyaXRlZFZhbHVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0luaGVyaXRl
ZFZhbHVlKCkpOyB9CisKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTSW5oZXJpdGVkVmFsdWUmKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIExhenlOZXZlckRlc3Ryb3llZDxDU1NJbmhlcml0
ZWRWYWx1ZT47CiAgICAgQ1NTSW5oZXJpdGVkVmFsdWUoKQogICAgICAgICA6IENTU1ZhbHVlKElu
aGVyaXRlZENsYXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NS
ZXZlcnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JldmVydFZhbHVlLmgKaW5kZXgg
MzA1YjQwOTBmZjVmYmM4ZWRmNmJlODkzZGI1MDY1YjVjZjllMzViYi4uYTEyNmNiYmJlMjI3OGI5
ZTUwNzBhODZiZDM1OTAyYjM2ODg5NGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1JldmVydFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JldmVydFZhbHVl
LmgKQEAgLTMxLDEyICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1Jl
dmVydFZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPENTU1JldmVydFZhbHVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1Jl
dmVydFZhbHVlKCkpOyB9CisKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUmV2ZXJ0VmFsdWUmKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIExhenlOZXZlckRlc3Ryb3llZDxDU1NSZXZlcnRW
YWx1ZT47CiAgICAgQ1NTUmV2ZXJ0VmFsdWUoKQogICAgICAgICA6IENTU1ZhbHVlKFJldmVydENs
YXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbnNldFZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5zZXRWYWx1ZS5oCmluZGV4IDJhNDk0ZWQ4ZmQw
OTNkMmM4ODVhZjRiN2Q1YjJkMmFmMjQ4MTNmNWQuLjUzMzA1MThmZTQ5ZTJmNmZhYmE2OTNiOWJi
MGJiOTk1N2E0ZTYxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbnNldFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vuc2V0VmFsdWUuaApAQCAtMzEsMTIg
KzMxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTVW5zZXRWYWx1ZSBmaW5h
bCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NVbnNldFZh
bHVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1Vuc2V0VmFsdWUoKSk7IH0K
KwogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhj
b25zdCBDU1NVbnNldFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgot
ICAgIGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTVW5zZXRWYWx1ZT47CiAgICAgQ1NTVW5z
ZXRWYWx1ZSgpCiAgICAgICAgIDogQ1NTVmFsdWUoVW5zZXRDbGFzcykKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmluZGV4IGZlZWI4ZjE0MGMwNzQzZDIzMGM1MDk2MTg4OGE2
MjU0ODc5Y2ExN2UuLmY4Mjc5NmIyM2M1NTg1MDJjMTdlN2M4ZjhmYzNjNmUwMDVjYzM3MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC0zNSwyOSArMzUsMjggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDU1NWYWx1ZVBvb2wmIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NWYWx1ZVBvb2w+IHBvb2w7CiAgICAgcmV0dXJuIHBvb2w7CiB9CiAKIENTU1ZhbHVlUG9v
bDo6Q1NTVmFsdWVQb29sKCkKKyAgICA6IG1faW5oZXJpdGVkVmFsdWUoQ1NTSW5oZXJpdGVkVmFs
dWU6OmNyZWF0ZSgpKQorICAgICwgbV9pbXBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFs
dWU6OmNyZWF0ZUltcGxpY2l0KCkpCisgICAgLCBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlKENTU0lu
aXRpYWxWYWx1ZTo6Y3JlYXRlRXhwbGljaXQoKSkKKyAgICAsIG1fdW5zZXRWYWx1ZShDU1NVbnNl
dFZhbHVlOjpjcmVhdGUoKSkKKyAgICAsIG1fcmV2ZXJ0VmFsdWUoQ1NTUmV2ZXJ0VmFsdWU6OmNy
ZWF0ZSgpKQorICAgICwgbV90cmFuc3BhcmVudENvbG9yKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KSkpCisgICAgLCBtX3doaXRlQ29sb3IoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShDb2xvcihDb2xvcjo6d2hpdGUpKSkKKyAgICAsIG1fYmxhY2tD
b2xvcihDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKENvbG9yKENvbG9yOjpibGFjaykpKQogewot
ICAgIG1faW5oZXJpdGVkVmFsdWUuY29uc3RydWN0KCk7Ci0gICAgbV9pbXBsaWNpdEluaXRpYWxW
YWx1ZS5jb25zdHJ1Y3QodHJ1ZSk7Ci0gICAgbV9leHBsaWNpdEluaXRpYWxWYWx1ZS5jb25zdHJ1
Y3QoZmFsc2UpOwotICAgIG1fdW5zZXRWYWx1ZS5jb25zdHJ1Y3QoKTsKLSAgICBtX3JldmVydFZh
bHVlLmNvbnN0cnVjdCgpOwotCi0gICAgbV90cmFuc3BhcmVudENvbG9yLmNvbnN0cnVjdChDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBtX3doaXRlQ29sb3IuY29uc3RydWN0KENvbG9y
KENvbG9yOjp3aGl0ZSkpOwotICAgIG1fYmxhY2tDb2xvci5jb25zdHJ1Y3QoQ29sb3IoQ29sb3I6
OmJsYWNrKSk7Ci0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdENTU1ZhbHVlS2V5d29yZDsg
aSA8PSBsYXN0Q1NTVmFsdWVLZXl3b3JkOyArK2kpCi0gICAgICAgIG1faWRlbnRpZmllclZhbHVl
c1tpXS5jb25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oaSkpOworICAgICAgICBtX2lk
ZW50aWZpZXJWYWx1ZXMuYXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVJRD4oaSkpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAobWF4
aW11bUNhY2hlYWJsZUludGVnZXJWYWx1ZSArIDEpOyArK2kpIHsKLSAgICAgICAgbV9waXhlbFZh
bHVlc1tpXS5jb25zdHJ1Y3QoaSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgICAgIG1fcGVy
Y2VudFZhbHVlc1tpXS5jb25zdHJ1Y3QoaSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
LSAgICAgICAgbV9udW1iZXJWYWx1ZXNbaV0uY29uc3RydWN0KGksIENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSKTsKKyAgICAgICAgbV9waXhlbFZhbHVlcy5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKSk7CisgICAgICAgIG1fcGVyY2VudFZhbHVl
cy5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NVbml0VHlwZTo6Q1NTX1BF
UkNFTlRBR0UpKTsKKyAgICAgICAgbV9udW1iZXJWYWx1ZXMuYXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoaSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaAppbmRleCA1ODU3ZTFmNWFlMWZlOTA0Nzg3MDVlNmQyNjBk
YjE3MmE4YzdmMGI1Li4yOThjODI1NGMxNmYwYTVjMzZlMzAxN2Q1M2U4N2E5NmY2M2IxNWRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDYgKzQ5
LDggQEAgZW51bSBjbGFzcyBGcm9tU3lzdGVtRm9udElEIHsgTm8sIFllcyB9OwogY2xhc3MgQ1NT
VmFsdWVQb29sIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBD
U1NWYWx1ZVBvb2woKTsKKwogICAgIHN0YXRpYyBDU1NWYWx1ZVBvb2wmIHNpbmdsZXRvbigpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9t
U3RyaW5nJik7CkBAIC02OSw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYWluKCk7CiAK
IHByaXZhdGU6Ci0gICAgQ1NTVmFsdWVQb29sKCk7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Q29s
b3IsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4+IENvbG9yVmFsdWVDYWNoZTsKICAgICBDb2xv
clZhbHVlQ2FjaGUgbV9jb2xvclZhbHVlQ2FjaGU7CiAKQEAgLTgyLDIyICs4MywyMiBAQCBwcml2
YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8Q1NTVmFsdWVQb29s
PjsKIAotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NJbmhlcml0ZWRWYWx1ZT4gbV9pbmhlcml0
ZWRWYWx1ZTsKLSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTSW5pdGlhbFZhbHVlPiBtX2ltcGxp
Y2l0SW5pdGlhbFZhbHVlOwotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NJbml0aWFsVmFsdWU+
IG1fZXhwbGljaXRJbml0aWFsVmFsdWU7Ci0gICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1Vuc2V0
VmFsdWU+IG1fdW5zZXRWYWx1ZTsKLSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUmV2ZXJ0VmFs
dWU+IG1fcmV2ZXJ0VmFsdWU7CisgICAgUmVmPENTU0luaGVyaXRlZFZhbHVlPiBtX2luaGVyaXRl
ZFZhbHVlOworICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IG1faW1wbGljaXRJbml0aWFsVmFsdWU7
CisgICAgUmVmPENTU0luaXRpYWxWYWx1ZT4gbV9leHBsaWNpdEluaXRpYWxWYWx1ZTsKKyAgICBS
ZWY8Q1NTVW5zZXRWYWx1ZT4gbV91bnNldFZhbHVlOworICAgIFJlZjxDU1NSZXZlcnRWYWx1ZT4g
bV9yZXZlcnRWYWx1ZTsKIAotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRpdmVWYWx1
ZT4gbV90cmFuc3BhcmVudENvbG9yOwotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRp
dmVWYWx1ZT4gbV93aGl0ZUNvbG9yOwotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRp
dmVWYWx1ZT4gbV9ibGFja0NvbG9yOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbV90cmFu
c3BhcmVudENvbG9yOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbV93aGl0ZUNvbG9yOwor
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9ibGFja0NvbG9yOwogCiAgICAgc3RhdGljIGNv
bnN0IGludCBtYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlID0gMjU1OwogCi0gICAgTGF6eU5l
dmVyRGVzdHJveWVkPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3BpeGVsVmFsdWVzW21heGltdW1DYWNo
ZWFibGVJbnRlZ2VyVmFsdWUgKyAxXTsKLSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUHJpbWl0
aXZlVmFsdWU+IG1fcGVyY2VudFZhbHVlc1ttYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlICsg
MV07Ci0gICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1ByaW1pdGl2ZVZhbHVlPiBtX251bWJlclZh
bHVlc1ttYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlICsgMV07Ci0gICAgTGF6eU5ldmVyRGVz
dHJveWVkPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2lkZW50aWZpZXJWYWx1ZXNbbnVtQ1NTVmFsdWVL
ZXl3b3Jkc107CisgICAgVmVjdG9yPFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4+IG1fcGl4ZWxWYWx1
ZXM7CisgICAgVmVjdG9yPFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4+IG1fcGVyY2VudFZhbHVlczsK
KyAgICBWZWN0b3I8UmVmPENTU1ByaW1pdGl2ZVZhbHVlPj4gbV9udW1iZXJWYWx1ZXM7CisgICAg
VmVjdG9yPFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4+IG1faWRlbnRpZmllclZhbHVlczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384165</attachid>
            <date>2019-11-22 10:17:05 -0800</date>
            <delta_ts>2019-11-22 10:41:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204520-20191122181704.patch</filename>
            <type>text/plain</type>
            <size>7867</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NDk2ODkzNmViYmI2
NmY2ZmVlY2Q3ZmY5MGFlMTY3YThhYTJlMi4uNzViZDM1OTUyYTdjOGE0YzRhZGRlY2ZiMjYzNzYx
ZThmZjE3ZjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTExLTIyICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIENTU1ZhbHVlUG9vbCBj
b25zdHJ1Y3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDQ1MjAKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1JldmVydFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU1Vuc2V0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWVQb29sLmg6CisKIDIwMTktMTEtMTkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBz
aG91bGQgd29yayBmb3IgImRpdiwgZGl2OjpiZWZvcmUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhl
cml0ZWRWYWx1ZS5oCmluZGV4IGZiYzA3MGNmOWE3ZWRlYWI3MjVkYzQ2YzcwZjBiOTNkZDlhODhm
YmYuLmZhMWJkZDk1ZTViODgxYTgxNDMxMzdlYjIyODQ1MmIyMGFjMTExY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0yNiwxMiArMjYsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NJbmhlcml0ZWRWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NW
YWx1ZSB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbmhlcml0ZWRWYWx1ZSgpKTsgfQorCiAgICAg
U3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0luaGVyaXRlZFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTSW5oZXJpdGVkVmFsdWU+OwogICAgIENTU0lu
aGVyaXRlZFZhbHVlKCkKICAgICAgICAgOiBDU1NWYWx1ZShJbmhlcml0ZWRDbGFzcykKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0VmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCmluZGV4IDMwNWI0MDkwZmY1ZmJjOGVkZjZi
ZTg5M2RiNTA2NWI1Y2Y5ZTM1YmIuLmExMjZjYmJiZTIyNzhiOWU1MDcwYTg2YmQzNTkwMmIzNjg4
OTRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCkBAIC0zMSwxMiArMzEsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NSZXZlcnRWYWx1ZSBmaW5hbCA6IHB1
YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NSZXZlcnRWYWx1ZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZXZlcnRWYWx1ZSgpKTsgfQorCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0
IENTU1JldmVydFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUmV2ZXJ0VmFsdWU+OwogICAgIENTU1JldmVy
dFZhbHVlKCkKICAgICAgICAgOiBDU1NWYWx1ZShSZXZlcnRDbGFzcykKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5zZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Vuc2V0VmFsdWUuaAppbmRleCAyYTQ5NGVkOGZkMDkzZDJjODg1YWY0YjdkNWIyZDJh
ZjI0ODEzZjVkLi41MzMwNTE4ZmU0OWUyZjZmYWJhNjkzYjliYjBiYjk5NTdhNGU2MTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5zZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NVbnNldFZhbHVlLmgKQEAgLTMxLDEyICszMSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENTU1Vuc2V0VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUg
ewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTVW5zZXRWYWx1ZT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NVbnNldFZhbHVlKCkpOyB9CisKICAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVW5zZXRWYWx1ZSYp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgTGF6eU5ldmVy
RGVzdHJveWVkPENTU1Vuc2V0VmFsdWU+OwogICAgIENTU1Vuc2V0VmFsdWUoKQogICAgICAgICA6
IENTU1ZhbHVlKFVuc2V0Q2xhc3MpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAppbmRleCBmZWViOGYxNDBjMDc0M2QyMzBjNTA5NjE4ODhhNjI1NDg3OWNhMTdlLi4xNTU5ZTQ3
N2FjYjZkNDZiNjlkMWFiOTgzNWI1NjY3M2Q5ZGMyMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVQb29sLmNwcApAQCAtMzUsMjkgKzM1LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NT
VmFsdWVQb29sJiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpCiB7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTVmFsdWVQb29sPiBwb29s
OwogICAgIHJldHVybiBwb29sOwogfQogCiBDU1NWYWx1ZVBvb2w6OkNTU1ZhbHVlUG9vbCgpCisg
ICAgOiBtX2luaGVyaXRlZFZhbHVlKENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKSkKKyAgICAs
IG1faW1wbGljaXRJbml0aWFsVmFsdWUoQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCgp
KQorICAgICwgbV9leHBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUV4
cGxpY2l0KCkpCisgICAgLCBtX3Vuc2V0VmFsdWUoQ1NTVW5zZXRWYWx1ZTo6Y3JlYXRlKCkpCisg
ICAgLCBtX3JldmVydFZhbHVlKENTU1JldmVydFZhbHVlOjpjcmVhdGUoKSkKKyAgICAsIG1fdHJh
bnNwYXJlbnRDb2xvcihDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCkpKQorICAgICwgbV93aGl0ZUNvbG9yKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
Q29sb3IoQ29sb3I6OndoaXRlKSkpCisgICAgLCBtX2JsYWNrQ29sb3IoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShDb2xvcihDb2xvcjo6YmxhY2spKSkKIHsKLSAgICBtX2luaGVyaXRlZFZhbHVl
LmNvbnN0cnVjdCgpOwotICAgIG1faW1wbGljaXRJbml0aWFsVmFsdWUuY29uc3RydWN0KHRydWUp
OwotICAgIG1fZXhwbGljaXRJbml0aWFsVmFsdWUuY29uc3RydWN0KGZhbHNlKTsKLSAgICBtX3Vu
c2V0VmFsdWUuY29uc3RydWN0KCk7Ci0gICAgbV9yZXZlcnRWYWx1ZS5jb25zdHJ1Y3QoKTsKLQot
ICAgIG1fdHJhbnNwYXJlbnRDb2xvci5jb25zdHJ1Y3QoQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
KSk7Ci0gICAgbV93aGl0ZUNvbG9yLmNvbnN0cnVjdChDb2xvcihDb2xvcjo6d2hpdGUpKTsKLSAg
ICBtX2JsYWNrQ29sb3IuY29uc3RydWN0KENvbG9yKENvbG9yOjpibGFjaykpOwotCisgICAgbV9p
ZGVudGlmaWVyVmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGFzdENTU1ZhbHVlS2V5d29y
ZCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RDU1NWYWx1ZUtleXdvcmQ7IGkgPD0gbGFz
dENTU1ZhbHVlS2V5d29yZDsgKytpKQotICAgICAgICBtX2lkZW50aWZpZXJWYWx1ZXNbaV0uY29u
c3RydWN0KHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGkpKTsKKyAgICAgICAgbV9pZGVudGlmaWVy
VmFsdWVzLnVuY2hlY2tlZEFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0YXRpY19j
YXN0PENTU1ZhbHVlSUQ+KGkpKSk7CiAKKyAgICBtX3BpeGVsVmFsdWVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobWF4aW11bUNhY2hlYWJsZUludGVnZXJWYWx1ZSArIDEpOworICAgIG1fcGVyY2Vu
dFZhbHVlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1heGltdW1DYWNoZWFibGVJbnRlZ2VyVmFs
dWUgKyAxKTsKKyAgICBtX251bWJlclZhbHVlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1heGlt
dW1DYWNoZWFibGVJbnRlZ2VyVmFsdWUgKyAxKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgKG1heGltdW1DYWNoZWFibGVJbnRlZ2VyVmFsdWUgKyAxKTsgKytpKSB7Ci0gICAgICAgIG1f
cGl4ZWxWYWx1ZXNbaV0uY29uc3RydWN0KGksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwotICAgICAg
ICBtX3BlcmNlbnRWYWx1ZXNbaV0uY29uc3RydWN0KGksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VO
VEFHRSk7Ci0gICAgICAgIG1fbnVtYmVyVmFsdWVzW2ldLmNvbnN0cnVjdChpLCBDU1NVbml0VHlw
ZTo6Q1NTX05VTUJFUik7CisgICAgICAgIG1fcGl4ZWxWYWx1ZXMudW5jaGVja2VkQXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaSwgQ1NTVW5pdFR5cGU6OkNTU19QWCkpOworICAgICAg
ICBtX3BlcmNlbnRWYWx1ZXMudW5jaGVja2VkQXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoaSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSk7CisgICAgICAgIG1fbnVtYmVyVmFs
dWVzLnVuY2hlY2tlZEFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgK
aW5kZXggNTg1N2UxZjVhZTFmZTkwNDc4NzA1ZTZkMjYwZGIxNzJhOGM3ZjBiNS4uMjk4YzgyNTRj
MTZmMGE1YzM2ZTMwMTdkNTNlODdhOTZmNjNiMTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBv
b2wuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs0OSw4IEBAIGVudW0gY2xhc3MgRnJvbVN5
c3RlbUZvbnRJRCB7IE5vLCBZZXMgfTsKIGNsYXNzIENTU1ZhbHVlUG9vbCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgQ1NTVmFsdWVQb29sKCk7CisKICAgICBz
dGF0aWMgQ1NTVmFsdWVQb29sJiBzaW5nbGV0b24oKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYpOwpAQCAtNjksOCArNzIs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmFpbigpOwogCiBwcml2YXRlOgotICAgIENTU1ZhbHVl
UG9vbCgpOwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPENvbG9yLCBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+PiBDb2xvclZhbHVlQ2FjaGU7CiAgICAgQ29sb3JWYWx1ZUNhY2hlIG1fY29sb3JWYWx1
ZUNhY2hlOwogCkBAIC04MiwyMiArODMsMjIgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFz
cyBXVEY6Ok5ldmVyRGVzdHJveWVkPENTU1ZhbHVlUG9vbD47CiAKLSAgICBMYXp5TmV2ZXJEZXN0
cm95ZWQ8Q1NTSW5oZXJpdGVkVmFsdWU+IG1faW5oZXJpdGVkVmFsdWU7Ci0gICAgTGF6eU5ldmVy
RGVzdHJveWVkPENTU0luaXRpYWxWYWx1ZT4gbV9pbXBsaWNpdEluaXRpYWxWYWx1ZTsKLSAgICBM
YXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTSW5pdGlhbFZhbHVlPiBtX2V4cGxpY2l0SW5pdGlhbFZhbHVl
OwotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NVbnNldFZhbHVlPiBtX3Vuc2V0VmFsdWU7Ci0g
ICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1JldmVydFZhbHVlPiBtX3JldmVydFZhbHVlOworICAg
IFJlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gbV9pbmhlcml0ZWRWYWx1ZTsKKyAgICBSZWY8Q1NTSW5p
dGlhbFZhbHVlPiBtX2ltcGxpY2l0SW5pdGlhbFZhbHVlOworICAgIFJlZjxDU1NJbml0aWFsVmFs
dWU+IG1fZXhwbGljaXRJbml0aWFsVmFsdWU7CisgICAgUmVmPENTU1Vuc2V0VmFsdWU+IG1fdW5z
ZXRWYWx1ZTsKKyAgICBSZWY8Q1NTUmV2ZXJ0VmFsdWU+IG1fcmV2ZXJ0VmFsdWU7CiAKLSAgICBM
YXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fdHJhbnNwYXJlbnRDb2xvcjsK
LSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fd2hpdGVDb2xvcjsK
LSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fYmxhY2tDb2xvcjsK
KyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fdHJhbnNwYXJlbnRDb2xvcjsKKyAgICBSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+IG1fd2hpdGVDb2xvcjsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IG1fYmxhY2tDb2xvcjsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4aW11bUNhY2hlYWJs
ZUludGVnZXJWYWx1ZSA9IDI1NTsKIAotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRp
dmVWYWx1ZT4gbV9waXhlbFZhbHVlc1ttYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlICsgMV07
Ci0gICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3BlcmNlbnRWYWx1
ZXNbbWF4aW11bUNhY2hlYWJsZUludGVnZXJWYWx1ZSArIDFdOwotICAgIExhenlOZXZlckRlc3Ry
b3llZDxDU1NQcmltaXRpdmVWYWx1ZT4gbV9udW1iZXJWYWx1ZXNbbWF4aW11bUNhY2hlYWJsZUlu
dGVnZXJWYWx1ZSArIDFdOwotICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRpdmVWYWx1
ZT4gbV9pZGVudGlmaWVyVmFsdWVzW251bUNTU1ZhbHVlS2V5d29yZHNdOworICAgIFZlY3RvcjxS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+PiBtX3BpeGVsVmFsdWVzOworICAgIFZlY3RvcjxSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+PiBtX3BlcmNlbnRWYWx1ZXM7CisgICAgVmVjdG9yPFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4+IG1fbnVtYmVyVmFsdWVzOworICAgIFZlY3RvcjxSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+PiBtX2lkZW50aWZpZXJWYWx1ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384169</attachid>
            <date>2019-11-22 10:41:22 -0800</date>
            <delta_ts>2019-11-22 11:00:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204520-20191122184121.patch</filename>
            <type>text/plain</type>
            <size>7923</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NDk2ODkzNmViYmI2
NmY2ZmVlY2Q3ZmY5MGFlMTY3YThhYTJlMi4uNzViZDM1OTUyYTdjOGE0YzRhZGRlY2ZiMjYzNzYx
ZThmZjE3ZjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTExLTIyICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIENTU1ZhbHVlUG9vbCBj
b25zdHJ1Y3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDQ1MjAKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1JldmVydFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU1Vuc2V0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWVQb29sLmg6CisKIDIwMTktMTEtMTkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBz
aG91bGQgd29yayBmb3IgImRpdiwgZGl2OjpiZWZvcmUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhl
cml0ZWRWYWx1ZS5oCmluZGV4IGZiYzA3MGNmOWE3ZWRlYWI3MjVkYzQ2YzcwZjBiOTNkZDlhODhm
YmYuLmZhMWJkZDk1ZTViODgxYTgxNDMxMzdlYjIyODQ1MmIyMGFjMTExY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0yNiwxMiArMjYsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NJbmhlcml0ZWRWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NW
YWx1ZSB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbmhlcml0ZWRWYWx1ZSgpKTsgfQorCiAgICAg
U3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0luaGVyaXRlZFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTSW5oZXJpdGVkVmFsdWU+OwogICAgIENTU0lu
aGVyaXRlZFZhbHVlKCkKICAgICAgICAgOiBDU1NWYWx1ZShJbmhlcml0ZWRDbGFzcykKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmV2ZXJ0VmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCmluZGV4IDMwNWI0MDkwZmY1ZmJjOGVkZjZi
ZTg5M2RiNTA2NWI1Y2Y5ZTM1YmIuLmExMjZjYmJiZTIyNzhiOWU1MDcwYTg2YmQzNTkwMmIzNjg4
OTRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZXZlcnRWYWx1ZS5oCkBAIC0zMSwxMiArMzEsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NSZXZlcnRWYWx1ZSBmaW5hbCA6IHB1
YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NSZXZlcnRWYWx1ZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZXZlcnRWYWx1ZSgpKTsgfQorCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0
IENTU1JldmVydFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUmV2ZXJ0VmFsdWU+OwogICAgIENTU1JldmVy
dFZhbHVlKCkKICAgICAgICAgOiBDU1NWYWx1ZShSZXZlcnRDbGFzcykKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5zZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Vuc2V0VmFsdWUuaAppbmRleCAyYTQ5NGVkOGZkMDkzZDJjODg1YWY0YjdkNWIyZDJh
ZjI0ODEzZjVkLi41MzMwNTE4ZmU0OWUyZjZmYWJhNjkzYjliYjBiYjk5NTdhNGU2MTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5zZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NVbnNldFZhbHVlLmgKQEAgLTMxLDEyICszMSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENTU1Vuc2V0VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUg
ewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTVW5zZXRWYWx1ZT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NVbnNldFZhbHVlKCkpOyB9CisKICAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVW5zZXRWYWx1ZSYp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgTGF6eU5ldmVy
RGVzdHJveWVkPENTU1Vuc2V0VmFsdWU+OwogICAgIENTU1Vuc2V0VmFsdWUoKQogICAgICAgICA6
IENTU1ZhbHVlKFVuc2V0Q2xhc3MpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAppbmRleCBmZWViOGYxNDBjMDc0M2QyMzBjNTA5NjE4ODhhNjI1NDg3OWNhMTdlLi4xMjUxMDli
YjcwMjA4YjkwMjZmMWNhNDJiYWZhNDg2ZWZmMTIyMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVQb29sLmNwcApAQCAtMzUsMjkgKzM1LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NT
VmFsdWVQb29sJiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpCiB7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTVmFsdWVQb29sPiBwb29s
OwogICAgIHJldHVybiBwb29sOwogfQogCiBDU1NWYWx1ZVBvb2w6OkNTU1ZhbHVlUG9vbCgpCisg
ICAgOiBtX2luaGVyaXRlZFZhbHVlKENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKSkKKyAgICAs
IG1faW1wbGljaXRJbml0aWFsVmFsdWUoQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCgp
KQorICAgICwgbV9leHBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUV4
cGxpY2l0KCkpCisgICAgLCBtX3Vuc2V0VmFsdWUoQ1NTVW5zZXRWYWx1ZTo6Y3JlYXRlKCkpCisg
ICAgLCBtX3JldmVydFZhbHVlKENTU1JldmVydFZhbHVlOjpjcmVhdGUoKSkKKyAgICAsIG1fdHJh
bnNwYXJlbnRDb2xvcihDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCkpKQorICAgICwgbV93aGl0ZUNvbG9yKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
Q29sb3IoQ29sb3I6OndoaXRlKSkpCisgICAgLCBtX2JsYWNrQ29sb3IoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShDb2xvcihDb2xvcjo6YmxhY2spKSkKIHsKLSAgICBtX2luaGVyaXRlZFZhbHVl
LmNvbnN0cnVjdCgpOwotICAgIG1faW1wbGljaXRJbml0aWFsVmFsdWUuY29uc3RydWN0KHRydWUp
OwotICAgIG1fZXhwbGljaXRJbml0aWFsVmFsdWUuY29uc3RydWN0KGZhbHNlKTsKLSAgICBtX3Vu
c2V0VmFsdWUuY29uc3RydWN0KCk7Ci0gICAgbV9yZXZlcnRWYWx1ZS5jb25zdHJ1Y3QoKTsKLQot
ICAgIG1fdHJhbnNwYXJlbnRDb2xvci5jb25zdHJ1Y3QoQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
KSk7Ci0gICAgbV93aGl0ZUNvbG9yLmNvbnN0cnVjdChDb2xvcihDb2xvcjo6d2hpdGUpKTsKLSAg
ICBtX2JsYWNrQ29sb3IuY29uc3RydWN0KENvbG9yKENvbG9yOjpibGFjaykpOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gZmlyc3RDU1NWYWx1ZUtleXdvcmQ7IGkgPD0gbGFzdENTU1ZhbHVlS2V5
d29yZDsgKytpKQotICAgICAgICBtX2lkZW50aWZpZXJWYWx1ZXNbaV0uY29uc3RydWN0KHN0YXRp
Y19jYXN0PENTU1ZhbHVlSUQ+KGkpKTsKKyAgICBtX2lkZW50aWZpZXJWYWx1ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1DU1NWYWx1ZUtleXdvcmRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtQ1NTVmFsdWVLZXl3b3JkczsgKytpKQorICAgICAgICBtX2lkZW50aWZpZXJW
YWx1ZXMudW5jaGVja2VkQXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVJRD4oaSkpKTsKIAorICAgIG1fcGl4ZWxWYWx1ZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlICsgMSk7CisgICAgbV9wZXJjZW50
VmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWF4aW11bUNhY2hlYWJsZUludGVnZXJWYWx1
ZSArIDEpOworICAgIG1fbnVtYmVyVmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWF4aW11
bUNhY2hlYWJsZUludGVnZXJWYWx1ZSArIDEpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAobWF4aW11bUNhY2hlYWJsZUludGVnZXJWYWx1ZSArIDEpOyArK2kpIHsKLSAgICAgICAgbV9w
aXhlbFZhbHVlc1tpXS5jb25zdHJ1Y3QoaSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgICAg
IG1fcGVyY2VudFZhbHVlc1tpXS5jb25zdHJ1Y3QoaSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5U
QUdFKTsKLSAgICAgICAgbV9udW1iZXJWYWx1ZXNbaV0uY29uc3RydWN0KGksIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgbV9waXhlbFZhbHVlcy51bmNoZWNrZWRBcHBlbmQoQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKSk7CisgICAgICAg
IG1fcGVyY2VudFZhbHVlcy51bmNoZWNrZWRBcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpKTsKKyAgICAgICAgbV9udW1iZXJWYWx1
ZXMudW5jaGVja2VkQXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaSwgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApp
bmRleCA1ODU3ZTFmNWFlMWZlOTA0Nzg3MDVlNmQyNjBkYjE3MmE4YzdmMGI1Li4yOThjODI1NGMx
NmYwYTVjMzZlMzAxN2Q1M2U4N2E5NmY2M2IxNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9v
bC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDYgKzQ5LDggQEAgZW51bSBjbGFzcyBGcm9tU3lz
dGVtRm9udElEIHsgTm8sIFllcyB9OwogY2xhc3MgQ1NTVmFsdWVQb29sIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBDU1NWYWx1ZVBvb2woKTsKKwogICAgIHN0
YXRpYyBDU1NWYWx1ZVBvb2wmIHNpbmdsZXRvbigpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9tU3RyaW5nJik7CkBAIC02OSw4ICs3Miw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYWluKCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTVmFsdWVQ
b29sKCk7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Q29sb3IsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4+IENvbG9yVmFsdWVDYWNoZTsKICAgICBDb2xvclZhbHVlQ2FjaGUgbV9jb2xvclZhbHVl
Q2FjaGU7CiAKQEAgLTgyLDIyICs4MywyMiBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNz
IFdURjo6TmV2ZXJEZXN0cm95ZWQ8Q1NTVmFsdWVQb29sPjsKIAotICAgIExhenlOZXZlckRlc3Ry
b3llZDxDU1NJbmhlcml0ZWRWYWx1ZT4gbV9pbmhlcml0ZWRWYWx1ZTsKLSAgICBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Q1NTSW5pdGlhbFZhbHVlPiBtX2ltcGxpY2l0SW5pdGlhbFZhbHVlOwotICAgIExh
enlOZXZlckRlc3Ryb3llZDxDU1NJbml0aWFsVmFsdWU+IG1fZXhwbGljaXRJbml0aWFsVmFsdWU7
Ci0gICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1Vuc2V0VmFsdWU+IG1fdW5zZXRWYWx1ZTsKLSAg
ICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUmV2ZXJ0VmFsdWU+IG1fcmV2ZXJ0VmFsdWU7CisgICAg
UmVmPENTU0luaGVyaXRlZFZhbHVlPiBtX2luaGVyaXRlZFZhbHVlOworICAgIFJlZjxDU1NJbml0
aWFsVmFsdWU+IG1faW1wbGljaXRJbml0aWFsVmFsdWU7CisgICAgUmVmPENTU0luaXRpYWxWYWx1
ZT4gbV9leHBsaWNpdEluaXRpYWxWYWx1ZTsKKyAgICBSZWY8Q1NTVW5zZXRWYWx1ZT4gbV91bnNl
dFZhbHVlOworICAgIFJlZjxDU1NSZXZlcnRWYWx1ZT4gbV9yZXZlcnRWYWx1ZTsKIAotICAgIExh
enlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRpdmVWYWx1ZT4gbV90cmFuc3BhcmVudENvbG9yOwot
ICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRpdmVWYWx1ZT4gbV93aGl0ZUNvbG9yOwot
ICAgIExhenlOZXZlckRlc3Ryb3llZDxDU1NQcmltaXRpdmVWYWx1ZT4gbV9ibGFja0NvbG9yOwor
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbV90cmFuc3BhcmVudENvbG9yOworICAgIFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gbV93aGl0ZUNvbG9yOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gbV9ibGFja0NvbG9yOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhpbXVtQ2FjaGVhYmxl
SW50ZWdlclZhbHVlID0gMjU1OwogCi0gICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1ByaW1pdGl2
ZVZhbHVlPiBtX3BpeGVsVmFsdWVzW21heGltdW1DYWNoZWFibGVJbnRlZ2VyVmFsdWUgKyAxXTsK
LSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcGVyY2VudFZhbHVl
c1ttYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlICsgMV07Ci0gICAgTGF6eU5ldmVyRGVzdHJv
eWVkPENTU1ByaW1pdGl2ZVZhbHVlPiBtX251bWJlclZhbHVlc1ttYXhpbXVtQ2FjaGVhYmxlSW50
ZWdlclZhbHVlICsgMV07Ci0gICAgTGF6eU5ldmVyRGVzdHJveWVkPENTU1ByaW1pdGl2ZVZhbHVl
PiBtX2lkZW50aWZpZXJWYWx1ZXNbbnVtQ1NTVmFsdWVLZXl3b3Jkc107CisgICAgVmVjdG9yPFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4+IG1fcGl4ZWxWYWx1ZXM7CisgICAgVmVjdG9yPFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4+IG1fcGVyY2VudFZhbHVlczsKKyAgICBWZWN0b3I8UmVmPENTU1ByaW1p
dGl2ZVZhbHVlPj4gbV9udW1iZXJWYWx1ZXM7CisgICAgVmVjdG9yPFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4+IG1faWRlbnRpZmllclZhbHVlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>