<?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>228161</bug_id>
          
          <creation_ts>2021-07-21 12:46:28 -0700</creation_ts>
          <short_desc>SharedBuffer::takeData() is a bit dangerous</short_desc>
          <delta_ts>2021-12-28 06:55:22 -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>WebCore Misc.</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=228096</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234724</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778507</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 12:46:28 -0700</bug_when>
    <thetext>SharedBuffer::takeData() is a bit dangerous since SharedBuffer is RefCounted and several object may be sharing ownership of the buffer. Having one owner call takeData() in case ownership is shared leads to bugs such as Bug 228096.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778508</commentid>
    <comment_count>1</comment_count>
      <attachid>433948</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 12:51:36 -0700</bug_when>
    <thetext>Created attachment 433948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778512</commentid>
    <comment_count>2</comment_count>
      <attachid>433948</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-21 12:57:06 -0700</bug_when>
    <thetext>Comment on attachment 433948
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:127
&gt; +    Vector&lt;uint8_t&gt; data;

This should use reserveInitialCapacity and uncheckedAppend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778513</commentid>
    <comment_count>3</comment_count>
      <attachid>433948</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-21 12:58:26 -0700</bug_when>
    <thetext>Comment on attachment 433948
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:127
&gt; +    Vector&lt;uint8_t&gt; data;

To make sure we don’t over allocate vector capacity, we could add this:

    data.reserveInitialCapacity(size());

It means we’d iterate the segments twice, but I think that’s better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778514</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-21 12:58:41 -0700</bug_when>
    <thetext>Ah, same comment as Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778515</commentid>
    <comment_count>5</comment_count>
      <attachid>433950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 12:59:49 -0700</bug_when>
    <thetext>Created attachment 433950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778516</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-21 13:01:16 -0700</bug_when>
    <thetext>Might still want to offer a takeData with a RELEASE_ASSERT(buffer.hasOneRef()), because silently copying isn’t so great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778517</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 13:03:00 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Might still want to offer a takeData with a
&gt; RELEASE_ASSERT(buffer.hasOneRef()), because silently copying isn’t so great.

Seems risky to me. Also note that there was no takeData() until I introduced it super recently as an optimization. Getting the optimization sometimes is still better than crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778527</commentid>
    <comment_count>8</comment_count>
      <attachid>433951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 13:24:18 -0700</bug_when>
    <thetext>Created attachment 433951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778547</commentid>
    <comment_count>9</comment_count>
      <attachid>433951</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-21 13:49:52 -0700</bug_when>
    <thetext>Comment on attachment 433951
Patch

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

&gt; Source/WTF/wtf/Vector.h:787
&gt; +    template&lt;typename U&gt; ALWAYS_INLINE void uncheckedAppend(const U* u, size_t size) { uncheckedAppend&lt;FailureAction::Crash&gt;(u, size); }

Do we need this one?  Removing it would encourage Span adoption.

&gt; Source/WebCore/platform/SharedBuffer.h:107
&gt; +    Vector&lt;uint8_t&gt; extractData();

Would it be possible to annotate this with &amp;&amp; after () so we can only call it on r-values?  As it stands now, I think it&apos;s still risky because it will clear the buffer sometimes and sometimes it won&apos;t.  If we make it clear that this can only be called on r-values, we indicate in the code that this SharedBuffer reference shouldn&apos;t be used after this call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778548</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 13:53:55 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 433951 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433951&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Vector.h:787
&gt; &gt; +    template&lt;typename U&gt; ALWAYS_INLINE void uncheckedAppend(const U* u, size_t size) { uncheckedAppend&lt;FailureAction::Crash&gt;(u, size); }
&gt; 
&gt; Do we need this one?  Removing it would encourage Span adoption.
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.h:107
&gt; &gt; +    Vector&lt;uint8_t&gt; extractData();
&gt; 
&gt; Would it be possible to annotate this with &amp;&amp; after () so we can only call
&gt; it on r-values?  As it stands now, I think it&apos;s still risky because it will
&gt; clear the buffer sometimes and sometimes it won&apos;t.  If we make it clear that
&gt; this can only be called on r-values, we indicate in the code that this
&gt; SharedBuffer reference shouldn&apos;t be used after this call.

If we do use &amp;&amp;, then maybe it can simply be an optimized overload of copyData()?

Vector&lt;uint8_t&gt; copyData() const &amp;;
Vector&lt;uint8_t&gt; copyData() &amp;&amp;; // Moves the data out instead of copying when hasOneRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778558</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-21 14:24:54 -0700</bug_when>
    <thetext>I like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778561</commentid>
    <comment_count>12</comment_count>
      <attachid>433958</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 14:41:42 -0700</bug_when>
    <thetext>Created attachment 433958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778563</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 14:44:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Alex Christensen from comment #9)
&gt; &gt; Comment on attachment 433951 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=433951&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/Vector.h:787
&gt; &gt; &gt; +    template&lt;typename U&gt; ALWAYS_INLINE void uncheckedAppend(const U* u, size_t size) { uncheckedAppend&lt;FailureAction::Crash&gt;(u, size); }
&gt; &gt; 
&gt; &gt; Do we need this one?  Removing it would encourage Span adoption.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/SharedBuffer.h:107
&gt; &gt; &gt; +    Vector&lt;uint8_t&gt; extractData();
&gt; &gt; 
&gt; &gt; Would it be possible to annotate this with &amp;&amp; after () so we can only call
&gt; &gt; it on r-values?  As it stands now, I think it&apos;s still risky because it will
&gt; &gt; clear the buffer sometimes and sometimes it won&apos;t.  If we make it clear that
&gt; &gt; this can only be called on r-values, we indicate in the code that this
&gt; &gt; SharedBuffer reference shouldn&apos;t be used after this call.
&gt; 
&gt; If we do use &amp;&amp;, then maybe it can simply be an optimized overload of
&gt; copyData()?
&gt; 
&gt; Vector&lt;uint8_t&gt; copyData() const &amp;;
&gt; Vector&lt;uint8_t&gt; copyData() &amp;&amp;; // Moves the data out instead of copying when
&gt; hasOneRef

I looked in to that but I don&apos;t like that it means I have to keep calling WTFMove() in order the get the optimization.
```
void foo(Ref&lt;SharedBuffer&gt;&amp;&amp; buffer)
{
    auto data = buffer.copyData(); // Doesn&apos;t get the optimization.
    // I have to do this, which is ugly and people are unlikely to do it in practice:
    auto data = WTFMove(buffer).copyData(); 
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778564</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-21 14:45:19 -0700</bug_when>
    <thetext>Please still mark copyData() const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778565</commentid>
    <comment_count>15</comment_count>
      <attachid>433959</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 14:46:17 -0700</bug_when>
    <thetext>Created attachment 433959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778569</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-21 15:03:05 -0700</bug_when>
    <thetext>You could make a static function that does it:
auto vector = SharedBuffer::copyData(WTFMove(buffer));

I think it&apos;s beneficial to have WTFMove because it indicates that buffer shouldn&apos;t be used after this call or it will get undefined behavior.  There are even tools that check for it.  There aren&apos;t tools that check for extractData().  I even think WTFMove(buffer).copyData() is good C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778570</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-21 15:06:06 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #16)
&gt; You could make a static function that does it:
&gt; auto vector = SharedBuffer::copyData(WTFMove(buffer));
&gt; 
&gt; I think it&apos;s beneficial to have WTFMove because it indicates that buffer
&gt; shouldn&apos;t be used after this call or it will get undefined behavior.  There
&gt; are even tools that check for it.  There aren&apos;t tools that check for
&gt; extractData().  I even think WTFMove(buffer).copyData() is good C++.

I feel the name &quot;extraData&quot; conveys you shouldn&apos;t be using the buffer after calling it. I don&apos;t want to over-engineer this thing.

WTFMove(buffer).copyData() may be good C++ but it is not common place in WebKit. We made such optimization for String::isolatedCopy() and look how much the optimization is used in WebKit (even though it could be, in many places).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779141</commentid>
    <comment_count>18</comment_count>
      <attachid>433959</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-23 12:32:13 -0700</bug_when>
    <thetext>Comment on attachment 433959
Patch

Should we do both? Still have the takeData overload for &amp;&amp; but have extractData as syntactic sugar so it’s easier to call correctly. Seems like a way to &quot;dip our toes in the water&quot; of the &amp;&amp; functions and maybe try to make move(x).take the future idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779144</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-23 12:35:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #18)
&gt; Comment on attachment 433959 [details]
&gt; Patch
&gt; 
&gt; Should we do both? Still have the takeData overload for &amp;&amp; but have
&gt; extractData as syntactic sugar so it’s easier to call correctly. Seems like
&gt; a way to &quot;dip our toes in the water&quot; of the &amp;&amp; functions and maybe try to
&gt; make move(x).take the future idiom.

In this proposal, would `takeData() &amp;&amp;` do the exact same thing as extractData()?
- If so, why it is useful?
- If not, I assume because it omits the hasOneRef() check and never copies, then I don&apos;t think this is ever safe. Just because something is an r-value reference doesn&apos;t mean we&apos;re the only ones holding a ref to it. Therefore, we&apos;d be re-introduce the class of bugs I am trying to get rid of with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779182</commentid>
    <comment_count>20</comment_count>
      <attachid>433959</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-23 14:31:52 -0700</bug_when>
    <thetext>Comment on attachment 433959
Patch

Landing as is for now. Will follow-up if needed based on discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779185</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-23 14:45:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; In this proposal, would `takeData() &amp;&amp;` do the exact same thing as
&gt; extractData()?

Yes. They are synonyms with different syntax.

&gt; - If so, why it is useful?

We can use it to experiment with the different syntax and to let the static analysis tools know what is going on so they can give errors for any use after moving out before overwriting. Some day, after experimenting with it, we may decide that we prefer it, and we could perhaps remove extractData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779194</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-23 15:05:12 -0700</bug_when>
    <thetext>Committed r280260 (239926@main): &lt;https://commits.webkit.org/239926@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433959.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779195</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-23 15:06:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/81038029&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433948</attachid>
            <date>2021-07-21 12:51:36 -0700</date>
            <delta_ts>2021-07-21 12:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228161-20210721125135.patch</filename>
            <type>text/plain</type>
            <size>12623</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjM2VkZDEzZWQ1YzU4
ZmZlODQ4ZTczNjY1YzIwM2U2MmY1ZmVjNi4uODkyNzY5MWIwOWZiOGRjOGYxYmE2M2VmNWQ0OTI1
OGI2YmU2ODZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSgpIGlzIGEgYml0IGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpIGlzIGEgYml0IGRhbmdl
cm91cyBzaW5jZSBTaGFyZWRCdWZmZXIgaXMgUmVmQ291bnRlZCBhbmQgc2V2ZXJhbCBvYmplY3Qg
bWF5IGJlIHNoYXJpbmcgb3duZXJzaGlwCisgICAgICAgIG9mIHRoZSBidWZmZXIuIEhhdmluZyBv
bmUgb3duZXIgY2FsbCB0YWtlRGF0YSgpIGluIGNhc2Ugb3duZXJzaGlwIGlzIHNoYXJlZCBsZWFk
cyB0byBidWdzIHN1Y2ggYXMgQnVnIDIyODA5Ni4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBp
c3N1ZSwgSSBtYWRlIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBwcml2YXRlIGFuZCBpbnRyb2R1
Y2VkIGEgbmV3IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKSBtZW1iZXIKKyAgICAgICAgZnVu
Y3Rpb24gd2hpY2ggY2FsbHMgdGFrZURhdGEoKSBvbmx5IGlmIHRoZSBTaGFyZWRCdWZmZXIgaXMg
bm90IHNoYXJlZCAoUmVmQ291bnQgaXMgMSkgYW5kIGZhbGxzIGJhY2sgdG8gY2FsbGluZyBjb3B5
RGF0YSgpCisgICAgICAgIG90aGVyd2lzZS4gSSBhbHNvIG9wdGltaXplZCBjb3B5RGF0YSgpIGEg
Yml0IGJ5IGl0ZXJhdGluZyBvdmVyIHRoZSBzZWdtZW50cyB0byBidWlsZCB0aGUgdmVjdG9yLCBp
bnN0ZWFkIG9mIGNhbGxpbmcgdGhlCisgICAgICAgIHBvdGVudGlhbGx5IHZlcnkgc2xvdyBTaGFy
ZWRCdWZmZXI6OmRhdGEoKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Js
b2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFBdmFpbGFibGVFdmVudCk6CisgICAgICAgICog
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29u
dGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1h
Z2VXaXRoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIxLTA3LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyODAxMjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGNhZTcxMmFkNTRmNzY1MTBmZTdkYjNjOWQxYmRkNTdk
YWY4NWFkOTQuLmZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CkBAIC0zNTEsMTUgKzM1MSw4IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZm
ZXIsIG51bGxwdHIpOwotICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpKQotICAgICAgICBkYXRh
ID0gYnVmZmVyLT50YWtlRGF0YSgpOyAvLyBBdm9pZCBjb3B5aW5nIHRoZSBkYXRhIGluIHRoZSBj
YXNlIHdoZXJlIHRoZSBidWZmZXIgaXNuJ3Qgc2hhcmVkLgotICAgIGVsc2UgewotICAgICAgICBi
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmZGF0YV0oYXV0byYgc3BhbikgewotICAgICAgICAgICAg
ZGF0YS5hcHBlbmQoc3Bhbik7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBhdXRvIGRhdGEgPSBi
dWZmZXItPmV4dHJhY3REYXRhKCk7CiAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBX
VEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDEwNjBl
MmI0YWNhMmFlOWJiMTU5NzlmOWFiMmU4NjViZDk2NDc3MzIuLjBhNDY5YmQwYmQxZjM4ZGNiOTZi
MzlkOGMzMDAwYWY3M2QxMmFiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogCiBzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNy
ZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlIHRpbWVDb2RlKQogewotICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBidWZmZXItPnRha2VEYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250
ZXh0KTsKKyAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVm
ZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAg
ICAgcmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZl
bnQsIEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJs
b2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCmluZGV4IDExYzZhOWI4MzYwMTgyZDJiNzk0OTBiZjA0NWNlZDhlZmEwOTZiZDMuLjU0OWVi
N2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxl
OjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZl
ci0+dGFrZURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6
OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCAzNDU1ZDYzNjUwN2Y0ZjBiOWFjNTE5ZGRlN2JmNjYxNmRkZDk5NWE4Li45ODJhZDA0YmIzMDky
ZTc5MjU3NDg3OGQxMGFlMWM0ZWIwNTY3OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjU2LDcgKzI1Niw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmll
cigpLCBjb250ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJl
cHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9IEhU
TUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZm
ZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgICAgIGlmIChw
cmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpu
dW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZy
YW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1v
dmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZSgmZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgY29udGVu
dFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50
OwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgaWYgKHNo
b3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAgICBhZGRGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9jdW1lbnQsIFdU
Rk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIGVs
c2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChkb2N1
bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9j
dW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwo
ZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCBhYWQ1MWRl
YWU4ZWUwNGRjMzg3MTEwYTllMTFkMmNlZWI1ZTYwMTZlLi42MDQ4NmU3MWFkNTlmZWNjNzE1ZmYw
YTA5YjFjMzU1OGI3YjM0MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0eXBlLAogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBk
b2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpKSwg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUp
KSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4
IGIwZTlmNTIyMmNiNmUwNThlYzVmOTAwZTdhZjgwMmQwMjkwY2MwOTkuLjczMWEzNjg1OWNhYjU4
ODgyZjEzNDJlNTdhODAwOWYzZGYxZDkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRh
Y2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCks
IGJ1ZmZlci0+dGFrZURhdGEoKSwgbWltZVR5cGUpKSk7CisgICAgaG9zdEVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKSk7CiB9CiAKIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWls
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYTYzMWFkMmRh
YzRjMDRlNDdmNTViYTI2Yzk3ZjNlOTVjMWRjM2Y3OC4uNTljMTk5MjYzYmMyMWViNGQ4ZjgyYWUz
N2JiODkxYTU4Y2IyZTk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0xMjIsNiArMTIyLDE1IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQog
CitWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpCit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CisgICAgZm9yRWFjaFNlZ21lbnQoWyZkYXRhXShhdXRvJiBzcGFuKSB7
CisgICAgICAgIGRhdGEuYXBwZW5kKHNwYW4pOworICAgIH0pOworICAgIHJldHVybiBkYXRhOwor
fQorCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYg
KG1fc2VnbWVudHMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCAzZjJhMTQ0N2JkMGNiMTI5NzYzYjQ1YWJlYzZlZmE5YzgwYjY2ODE2Li5mOWE5NGZj
NmMzMTQ1MmM4M2Q3MTFkZjViOWMyOWM4MTBiNzE2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMTAxLDEwICsxMDEsMTAgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRo
ZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCkgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvcHlEYXRhKCk7CiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRz
IGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAgICAvLyBT
aW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhl
IGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNo
YXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKICAgICAvLyBDcmVh
dGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50
cyB0byB0aGF0CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBi
dWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTIyNyw2ICsyMjcsOSBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworCisgICAg
Ly8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRo
YXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIApAQCAtMjM5
LDYgKzI0MiwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitpbmxpbmUgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQoreworICAgIGlmIChoYXNPbmVSZWYoKSkK
KyAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CisgICAgcmV0dXJuIGNvcHlEYXRhKCk7Cit9CisK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAg
ICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwg
c2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDYxNWI1ZTUy
Y2JlMGExNjI5NDcxYWNhNjU2NmJjNDk2ZDZhYjg1ZWQuLjdiODE1M2JkNWY1ODQxNWQ4MmZkNTRm
ZTgyNGJlOTBkMTViNmRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMjA4LDcgKzIwOCw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5l
dHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVu
dC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLCBudWxscHRyKS0+dGFrZURhdGEoKTsKKyAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0
cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
cmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlw
ZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBu
b3JtYWxpemVkQ29udGVudFR5cGUpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433950</attachid>
            <date>2021-07-21 12:59:49 -0700</date>
            <delta_ts>2021-07-21 13:26:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228161-20210721125948.patch</filename>
            <type>text/plain</type>
            <size>12674</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjM2VkZDEzZWQ1YzU4
ZmZlODQ4ZTczNjY1YzIwM2U2MmY1ZmVjNi4uODkyNzY5MWIwOWZiOGRjOGYxYmE2M2VmNWQ0OTI1
OGI2YmU2ODZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSgpIGlzIGEgYml0IGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpIGlzIGEgYml0IGRhbmdl
cm91cyBzaW5jZSBTaGFyZWRCdWZmZXIgaXMgUmVmQ291bnRlZCBhbmQgc2V2ZXJhbCBvYmplY3Qg
bWF5IGJlIHNoYXJpbmcgb3duZXJzaGlwCisgICAgICAgIG9mIHRoZSBidWZmZXIuIEhhdmluZyBv
bmUgb3duZXIgY2FsbCB0YWtlRGF0YSgpIGluIGNhc2Ugb3duZXJzaGlwIGlzIHNoYXJlZCBsZWFk
cyB0byBidWdzIHN1Y2ggYXMgQnVnIDIyODA5Ni4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBp
c3N1ZSwgSSBtYWRlIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBwcml2YXRlIGFuZCBpbnRyb2R1
Y2VkIGEgbmV3IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKSBtZW1iZXIKKyAgICAgICAgZnVu
Y3Rpb24gd2hpY2ggY2FsbHMgdGFrZURhdGEoKSBvbmx5IGlmIHRoZSBTaGFyZWRCdWZmZXIgaXMg
bm90IHNoYXJlZCAoUmVmQ291bnQgaXMgMSkgYW5kIGZhbGxzIGJhY2sgdG8gY2FsbGluZyBjb3B5
RGF0YSgpCisgICAgICAgIG90aGVyd2lzZS4gSSBhbHNvIG9wdGltaXplZCBjb3B5RGF0YSgpIGEg
Yml0IGJ5IGl0ZXJhdGluZyBvdmVyIHRoZSBzZWdtZW50cyB0byBidWlsZCB0aGUgdmVjdG9yLCBp
bnN0ZWFkIG9mIGNhbGxpbmcgdGhlCisgICAgICAgIHBvdGVudGlhbGx5IHZlcnkgc2xvdyBTaGFy
ZWRCdWZmZXI6OmRhdGEoKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Js
b2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFBdmFpbGFibGVFdmVudCk6CisgICAgICAgICog
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29u
dGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1h
Z2VXaXRoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIxLTA3LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyODAxMjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGNhZTcxMmFkNTRmNzY1MTBmZTdkYjNjOWQxYmRkNTdk
YWY4NWFkOTQuLmZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CkBAIC0zNTEsMTUgKzM1MSw4IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZm
ZXIsIG51bGxwdHIpOwotICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpKQotICAgICAgICBkYXRh
ID0gYnVmZmVyLT50YWtlRGF0YSgpOyAvLyBBdm9pZCBjb3B5aW5nIHRoZSBkYXRhIGluIHRoZSBj
YXNlIHdoZXJlIHRoZSBidWZmZXIgaXNuJ3Qgc2hhcmVkLgotICAgIGVsc2UgewotICAgICAgICBi
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmZGF0YV0oYXV0byYgc3BhbikgewotICAgICAgICAgICAg
ZGF0YS5hcHBlbmQoc3Bhbik7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBhdXRvIGRhdGEgPSBi
dWZmZXItPmV4dHJhY3REYXRhKCk7CiAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBX
VEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDEwNjBl
MmI0YWNhMmFlOWJiMTU5NzlmOWFiMmU4NjViZDk2NDc3MzIuLjBhNDY5YmQwYmQxZjM4ZGNiOTZi
MzlkOGMzMDAwYWY3M2QxMmFiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogCiBzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNy
ZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlIHRpbWVDb2RlKQogewotICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBidWZmZXItPnRha2VEYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250
ZXh0KTsKKyAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVm
ZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAg
ICAgcmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZl
bnQsIEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJs
b2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCmluZGV4IDExYzZhOWI4MzYwMTgyZDJiNzk0OTBiZjA0NWNlZDhlZmEwOTZiZDMuLjU0OWVi
N2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxl
OjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZl
ci0+dGFrZURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6
OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCAzNDU1ZDYzNjUwN2Y0ZjBiOWFjNTE5ZGRlN2JmNjYxNmRkZDk5NWE4Li45ODJhZDA0YmIzMDky
ZTc5MjU3NDg3OGQxMGFlMWM0ZWIwNTY3OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjU2LDcgKzI1Niw3
IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0
dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmll
cigpLCBjb250ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJl
cHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9IEhU
TUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZm
ZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgICAgIGlmIChw
cmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpu
dW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZy
YW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1v
dmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZSgmZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgY29udGVu
dFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50
OwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgaWYgKHNo
b3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAgICBhZGRGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9jdW1lbnQsIFdU
Rk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIGVs
c2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChkb2N1
bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9j
dW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwo
ZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUo
JmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCBhYWQ1MWRl
YWU4ZWUwNGRjMzg3MTEwYTllMTFkMmNlZWI1ZTYwMTZlLi42MDQ4NmU3MWFkNTlmZWNjNzE1ZmYw
YTA5YjFjMzU1OGI3YjM0MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0eXBlLAogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBk
b2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpKSwg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUp
KSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4
IGIwZTlmNTIyMmNiNmUwNThlYzVmOTAwZTdhZjgwMmQwMjkwY2MwOTkuLjczMWEzNjg1OWNhYjU4
ODgyZjEzNDJlNTdhODAwOWYzZGYxZDkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRh
Y2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCks
IGJ1ZmZlci0+dGFrZURhdGEoKSwgbWltZVR5cGUpKSk7CisgICAgaG9zdEVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKSk7CiB9CiAKIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWls
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYTYzMWFkMmRh
YzRjMDRlNDdmNTViYTI2Yzk3ZjNlOTVjMWRjM2Y3OC4uMDkyZmY1ZDBhZGVmMTRlOWUyNzkyZWNj
ZmFkOGNkMzgwNmNkZmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0xMjIsNiArMTIyLDE2IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQog
CitWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpCit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7
CisgICAgZm9yRWFjaFNlZ21lbnQoWyZkYXRhXShhdXRvJiBzcGFuKSB7CisgICAgICAgIGRhdGEu
dW5jaGVja2VkQXBwZW5kKHNwYW4pOworICAgIH0pOworICAgIHJldHVybiBkYXRhOworfQorCiBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRl
eCAzZjJhMTQ0N2JkMGNiMTI5NzYzYjQ1YWJlYzZlZmE5YzgwYjY2ODE2Li5mOWE5NGZjNmMzMTQ1
MmM4M2Q3MTFkZjViOWMyOWM4MTBiNzE2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaApAQCAtMTAxLDEwICsxMDEsMTAgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBB
dWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0
aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNv
cHlEYXRhKCkgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCk7CiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8g
YSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJl
ZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAgICAvLyBTaW1pbGFy
IHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEg
aW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCku
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKICAgICAvLyBDcmVhdGVzIGFu
IEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0
aGF0CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJz
IGludG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTIyNyw2ICsyMjcsOSBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworCisgICAgLy8gQ29t
YmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVj
dG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRha2VEYXRhKCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIApAQCAtMjM5LDYgKzI0
MiwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQoreworICAgIGlmIChoYXNPbmVSZWYoKSkKKyAgICAg
ICAgcmV0dXJuIHRha2VEYXRhKCk7CisgICAgcmV0dXJuIGNvcHlEYXRhKCk7Cit9CisKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDYxNWI1ZTUyY2JlMGEx
NjI5NDcxYWNhNjU2NmJjNDk2ZDZhYjg1ZWQuLjdiODE1M2JkNWY1ODQxNWQ4MmZkNTRmZTgyNGJl
OTBkMTViNmRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjA4
LDcgKzIwOCw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9i
KCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQ
cm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIp
Ci0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBu
dWxscHRyKS0+dGFrZURhdGEoKTsKKyAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBu
b3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9u
c2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZh
dWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxp
emVkQ29udGVudFR5cGUpOwogfQo=
</data>
<flag name="commit-queue"
          id="456328"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433951</attachid>
            <date>2021-07-21 13:24:18 -0700</date>
            <delta_ts>2021-07-21 14:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228161-20210721132417.patch</filename>
            <type>text/plain</type>
            <size>16242</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0OTUzZGJiZGM3ZDNjNWVkNmJkZDdk
NTY0YWIwMmUyOTgyOGQ4NzYuLjk3NWViNjFhYjI5YWYyM2M0MzM5OTJjYmI5MzNkMGU3NGIxNjVm
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDctMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkgaXMgYSBiaXQg
ZGFuZ2Vyb3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjgxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgVmVjdG9yOjp1bmNoZWNrZWRBcHBlbmQoKSBvdmVybG9hZCB0aGF0IHRha2VzIGluIGEg
U3Bhbi4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yOjp1
bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjpNYWxsb2M+Ojp1bmNoZWNrZWRBcHBlbmQp
OgorCiAyMDIxLTA3LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODAxMjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjM2VkZDEz
ZWQ1YzU4ZmZlODQ4ZTczNjY1YzIwM2U2MmY1ZmVjNi4uODkyNzY5MWIwOWZiOGRjOGYxYmE2M2Vm
NWQ0OTI1OGI2YmU2ODZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3LTIx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVy
Ojp0YWtlRGF0YSgpIGlzIGEgYml0IGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpIGlzIGEgYml0
IGRhbmdlcm91cyBzaW5jZSBTaGFyZWRCdWZmZXIgaXMgUmVmQ291bnRlZCBhbmQgc2V2ZXJhbCBv
YmplY3QgbWF5IGJlIHNoYXJpbmcgb3duZXJzaGlwCisgICAgICAgIG9mIHRoZSBidWZmZXIuIEhh
dmluZyBvbmUgb3duZXIgY2FsbCB0YWtlRGF0YSgpIGluIGNhc2Ugb3duZXJzaGlwIGlzIHNoYXJl
ZCBsZWFkcyB0byBidWdzIHN1Y2ggYXMgQnVnIDIyODA5Ni4KKworICAgICAgICBUbyBhZGRyZXNz
IHRoZSBpc3N1ZSwgSSBtYWRlIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBwcml2YXRlIGFuZCBp
bnRyb2R1Y2VkIGEgbmV3IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKSBtZW1iZXIKKyAgICAg
ICAgZnVuY3Rpb24gd2hpY2ggY2FsbHMgdGFrZURhdGEoKSBvbmx5IGlmIHRoZSBTaGFyZWRCdWZm
ZXIgaXMgbm90IHNoYXJlZCAoUmVmQ291bnQgaXMgMSkgYW5kIGZhbGxzIGJhY2sgdG8gY2FsbGlu
ZyBjb3B5RGF0YSgpCisgICAgICAgIG90aGVyd2lzZS4gSSBhbHNvIG9wdGltaXplZCBjb3B5RGF0
YSgpIGEgYml0IGJ5IGl0ZXJhdGluZyBvdmVyIHRoZSBzZWdtZW50cyB0byBidWlsZCB0aGUgdmVj
dG9yLCBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlCisgICAgICAgIHBvdGVudGlhbGx5IHZlcnkgc2xv
dyBTaGFyZWRCdWZmZXI6OmRhdGEoKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFBdmFpbGFibGVFdmVudCk6CisgICAg
ICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9ndGsv
V2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVh
ZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIxLTA3
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyODAxMjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3Iu
aCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IDQ4MTg3ZTEzZmVlMmE0YWI3NDY4ZWQ3
ZjZhZThhMTk1OGI5ZDgyMmEuLjFhY2JlNTI4ZDg3ZDkyMTM1NTgxNGFmMmM1N2VlMmRiZWRlMWYz
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5oCkBAIC03ODQsOCArNzg0LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZENvbnN0cnVjdEFuZEFwcGVuZChBcmdzJiYu
Li4pOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lOTElORSB2b2lkIGFwcGVu
ZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQ8RmFpbHVyZUFjdGlvbjo6Q3Jhc2g+
KHUsIHNpemUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lOTElORSB2b2lk
IHVuY2hlY2tlZEFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyB1bmNoZWNrZWRBcHBl
bmQ8RmFpbHVyZUFjdGlvbjo6Q3Jhc2g+KHUsIHNpemUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gQUxXQVlTX0lOTElORSBib29sIHRyeUFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYXBwZW5kPEZhaWx1cmVBY3Rpb246OlJlcG9ydD4odSwgc2l6ZSk7IH0KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFNwYW48Y29u
c3QgVT4gc3BhbikgeyBhcHBlbmQoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgdm9pZCB1bmNoZWNrZWRBcHBlbmQoU3Bh
bjxjb25zdCBVPiBzcGFuKSB7IHVuY2hlY2tlZEFwcGVuZChzcGFuLmRhdGEoKSwgc3Bhbi5zaXpl
KCkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5
cGVuYW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhl
ckNhcGFjaXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJN
YWxsb2M+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHks
IHR5cGVuYW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwg
dHlwZW5hbWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNh
cGFjaXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxs
b2M+JiYpOwogCkBAIC04NTQsNiArODU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPEZh
aWx1cmVBY3Rpb24sIHR5cGVuYW1lIFU+IGJvb2wgYXBwZW5kKFUmJik7CiAgICAgdGVtcGxhdGU8
RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7
CisgICAgdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCB1bmNoZWNrZWRB
cHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgcG9zaXRpb24s
IHR5cGVuYW1lIFUsIHR5cGVuYW1lLi4uIEl0ZW1zPgogICAgIHZvaWQgdW5jaGVja2VkSW5pdGlh
bGl6ZShVJiYgaXRlbSwgSXRlbXMmJi4uLiBpdGVtcykKQEAgLTEyODcsNiArMTI5MCwyNCBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTxGYWlsdXJl
QWN0aW9uIGFjdGlvbiwgdHlwZW5hbWUgVT4KK0FMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnVu
Y2hlY2tlZEFwcGVuZChjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgc3Rh
dGljX2Fzc2VydChhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6Q3Jhc2ggfHwgYWN0aW9uID09IEZh
aWx1cmVBY3Rpb246OlJlcG9ydCk7CisgICAgaWYgKCFkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBBU1NFUlQoc2l6ZSgpIDwgY2FwYWNpdHkoKSk7CisKKyAgICBzaXplX3Qg
bmV3U2l6ZSA9IG1fc2l6ZSArIGRhdGFTaXplOworICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5n
ZVRvKG5ld1NpemUpOworICAgIFQqIGRlc3QgPSBlbmQoKTsKKyAgICBWZWN0b3JDb3BpZXI8c3Rk
Ojppc190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6
YWRkcmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CisgICAgbV9zaXplID0gbmV3U2l6ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwg
dHlwZW5hbWUgTWFsbG9jPgogdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5cGVuYW1l
IFU+CiBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmQoVSYmIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCBjYWU3MTJhZDU0Zjc2NTEwZmU3ZGIzYzlkMWJkZDU3ZGFmODVhZDk0Li5mY2MyMTZhMDFjZGY2
OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzUxLDE1ICszNTEsOCBAQCBS
ZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBpZiAo
YnVmZmVyLT5oYXNPbmVSZWYoKSkKLSAgICAgICAgZGF0YSA9IGJ1ZmZlci0+dGFrZURhdGEoKTsg
Ly8gQXZvaWQgY29weWluZyB0aGUgZGF0YSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIGlz
bid0IHNoYXJlZC4KLSAgICBlbHNlIHsKLSAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChb
JmRhdGFdKGF1dG8mIHNwYW4pIHsKLSAgICAgICAgICAgIGRhdGEuYXBwZW5kKHNwYW4pOwotICAg
ICAgICB9KTsKLSAgICB9CisgICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwog
ICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAxMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJl
ODY1YmQ5NjQ3NzMyLi4wYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFS
ZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMK
IAogc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKLSAgICBh
dXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtlRGF0
YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CisgICAgYXV0byBibG9iID0g
YnVmZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWlt
ZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9iRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6OkluaXQgeyB7
IGZhbHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUgfSwgQmxvYkV2
ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCAxMWM2YTliODM2MDE4
MmQyYjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVj
MjBlNGYyMWJmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCks
IEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpLCBm
aWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwg
QmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSks
IGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzQ1NWQ2MzY1MDdmNGYwYjlhYzUx
OWRkZTdiZjY2MTZkZGQ5OTVhOC4uOTgyYWQwNGJiMzA5MmU3OTI1NzQ4NzhkMTBhZTFjNGViMDU2
NzhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgUmVmPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwg
RG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRlZmF1
bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAoY29u
dGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlw
ZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1
bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLT50YWtlRGF0YSgpLCBjb250ZW50
VHlwZSkpKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgY29udGVu
dFR5cGUpKSk7CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92
ZShhdHRhY2htZW50KSk7CiAgICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAg
ICAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndp
ZHRoKSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAg
ICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3Jl
YXRlKCZkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLT50YWtlRGF0YSgp
LCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0
YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1
dGVzOjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2ht
ZW50KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTY4NSw3ICs2ODUsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoKSkKICAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUF0dGFjaG1lbnQoZnJhbWUsIGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUsIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKICAgICBlbHNlCi0gICAgICAgIGFkZEZyYWdtZW50
KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRh
KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLT5leHRy
YWN0RGF0YSgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKIAogICAgIHJl
dHVybiBmcmFnbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3Rr
L1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggYWFkNTFkZWFlOGVlMDRkYzM4NzExMGE5ZTExZDJj
ZWViNWU2MDE2ZS4uNjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKIHsKICAgICBBU1NF
UlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3Vt
ZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1
bWVudCwgYnVmZmVyLT50YWtlRGF0YSgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3Vt
ZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1
bWVudCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBiMGU5ZjUyMjJjYjZlMDU4ZWM1Zjkw
MGU3YWY4MDJkMDI5MGNjMDk5Li43MzFhMzY4NTljYWI1ODg4MmYxMzQyZTU3YTgwMDlmM2RmMWQ5
MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVu
Y2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBpZiAoIW1p
bWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChtaW1lVHlwZSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZmZXItPnRha2VEYXRhKCksIG1p
bWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1p
bWVUeXBlKSkpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGE2MzFhZDJkYWM0YzA0ZTQ3ZjU1YmEyNmM5N2YzZTk1
YzFkYzNmNzguLjA5MmZmNWQwYWRlZjE0ZTllMjc5MmVjY2ZhZDhjZDM4MDZjZGZlZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTIyLDYgKzEyMiwxNiBA
QCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBt
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKIH0KIAorVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6Y29weURhdGEoKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGRh
dGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOworICAgIGZvckVhY2hTZWdtZW50KFsm
ZGF0YV0oYXV0byYgc3BhbikgeworICAgICAgICBkYXRhLnVuY2hlY2tlZEFwcGVuZChzcGFuKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1
ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggM2YyYTE0NDdiZDBjYjEyOTc2M2I0
NWFiZWM2ZWZhOWM4MGI2NjgxNi4uZjlhOTRmYzZjMzE0NTJjODNkNzExZGY1YjljMjljODEwYjcx
NjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEwMSwxMCAr
MTAxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2Yg
dGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxl
LgogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRh
QXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIHsgcmV0dXJuIHsgZGF0
YSgpLCBzaXplKCkgfTsgfQorICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpOwogCi0gICAg
Ly8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRo
YXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9p
ZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZl
IChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBl
eHRyYWN0RGF0YSgpOwogCiAgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVz
IHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFycmF5QnVmZmVy
IHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCkBA
IC0yMjcsNiArMjI3LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdDsKKworICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMg
aW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUg
U2hhcmVkQnVmZmVyLgorICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIAogICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7CiAKQEAgLTIzOSw2ICsyNDIsMTMgQEAgcHJpdmF0ZToKICNlbmRp
ZgogfTsKIAoraW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRh
KCkKK3sKKyAgICBpZiAoaGFzT25lUmVmKCkpCisgICAgICAgIHJldHVybiB0YWtlRGF0YSgpOwor
ICAgIHJldHVybiBjb3B5RGF0YSgpOworfQorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCA2MTViNWU1MmNiZTBhMTYyOTQ3MWFjYTY1NjZiYzQ5NmQ2YWI4
NWVkLi43YjgxNTNiZDVmNTg0MTVkODJmZDU0ZmU4MjRiZTkwZDE1YjZkYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBSZWY8QmxvYj4g
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklYTUU6IFdlIGp1
c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5n
IGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpl
eGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPnRha2VEYXRhKCk7Cisg
ICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxs
cHRyKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0g
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlw
ZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2gg
bWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433958</attachid>
            <date>2021-07-21 14:41:42 -0700</date>
            <delta_ts>2021-07-21 14:46:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228161-20210721144141.patch</filename>
            <type>text/plain</type>
            <size>16388</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM2OTY3NWFkYmRjNmNlMWUxYTA3MjRj
NGI4YjBlMTQ3MWRkNjRmMzguLjY4ZTU4YTQ2YTk5Y2NjMWQxZWUxZWQwNjUwMTgxZjFiYTAxZGVi
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDctMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkgaXMgYSBiaXQg
ZGFuZ2Vyb3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjgxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgVmVjdG9yOjp1bmNoZWNrZWRBcHBlbmQoKSBvdmVybG9hZCB0aGF0IHRha2VzIGluIGEg
U3Bhbi4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yOjp1
bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjpNYWxsb2M+Ojp1bmNoZWNrZWRBcHBlbmQp
OgorCiAyMDIxLTA3LTIxICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5NTcx
ZDZjZTliNjgzNzU3YjZlMjYxNWFmMTlhYmI4MDZkYzQxMy4uMDdjMjAxZDNjYWJmZjc5ZWZiNWRj
NWRhNzNlMmE1ZmE3YzZjMjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVm
ZmVyOjp0YWtlRGF0YSgpIGlzIGEgYml0IGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpIGlzIGEg
Yml0IGRhbmdlcm91cyBzaW5jZSBTaGFyZWRCdWZmZXIgaXMgUmVmQ291bnRlZCBhbmQgc2V2ZXJh
bCBvYmplY3QgbWF5IGJlIHNoYXJpbmcgb3duZXJzaGlwCisgICAgICAgIG9mIHRoZSBidWZmZXIu
IEhhdmluZyBvbmUgb3duZXIgY2FsbCB0YWtlRGF0YSgpIGluIGNhc2Ugb3duZXJzaGlwIGlzIHNo
YXJlZCBsZWFkcyB0byBidWdzIHN1Y2ggYXMgQnVnIDIyODA5Ni4KKworICAgICAgICBUbyBhZGRy
ZXNzIHRoZSBpc3N1ZSwgSSBtYWRlIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBwcml2YXRlIGFu
ZCBpbnRyb2R1Y2VkIGEgbmV3IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKSBtZW1iZXIKKyAg
ICAgICAgZnVuY3Rpb24gd2hpY2ggY2FsbHMgdGFrZURhdGEoKSBvbmx5IGlmIHRoZSBTaGFyZWRC
dWZmZXIgaXMgbm90IHNoYXJlZCAoUmVmQ291bnQgaXMgMSkgYW5kIGZhbGxzIGJhY2sgdG8gY2Fs
bGluZyBjb3B5RGF0YSgpCisgICAgICAgIG90aGVyd2lzZS4gSSBhbHNvIG9wdGltaXplZCBjb3B5
RGF0YSgpIGEgYml0IGJ5IGl0ZXJhdGluZyBvdmVyIHRoZSBzZWdtZW50cyB0byBidWlsZCB0aGUg
dmVjdG9yLCBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlCisgICAgICAgIHBvdGVudGlhbGx5IHZlcnkg
c2xvdyBTaGFyZWRCdWZmZXI6OmRhdGEoKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFBdmFpbGFibGVFdmVudCk6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9n
dGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5j
bG9zaW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpleHRyYWN0RGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIx
LTA3LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIGxpbmtlZE9uT3JBZnRlciBjaGVjayBmb3IgcjI2OTE2MgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA0
ODE4N2UxM2ZlZTJhNGFiNzQ2OGVkN2Y2YWU4YTE5NThiOWQ4MjJhLi40NzQ5NjcxMjlkYzE2MGQy
ZjEzMjk4ZmZmMDc1NTE1MzIxMDRiZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzg2LDYgKzc4Niw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5k
KGNvbnN0IFUqIHUsIHNpemVfdCBzaXplKSB7IGFwcGVuZDxGYWlsdXJlQWN0aW9uOjpDcmFzaD4o
dSwgc2l6ZSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqIHUsIHNpemVfdCBzaXplKSB7IHJldHVybiBhcHBlbmQ8RmFpbHVy
ZUFjdGlvbjo6UmVwb3J0Pih1LCBzaXplKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFM
V0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoU3Bhbjxjb25zdCBVPiBzcGFuKSB7IGFwcGVuZChzcGFu
LmRhdGEoKSwgc3Bhbi5zaXplKCkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlT
X0lOTElORSB2b2lkIHVuY2hlY2tlZEFwcGVuZChTcGFuPGNvbnN0IFU+IHNwYW4pIHsgdW5jaGVj
a2VkQXBwZW5kPEZhaWx1cmVBY3Rpb246OkNyYXNoPihzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkp
OyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5cGVu
YW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlwZW5h
bWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNh
cGFjaXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxs
b2M+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5
cGVuYW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNhcGFj
aXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxsb2M+
JiYpOwogCkBAIC04NTQsNiArODU1LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPEZhaWx1
cmVBY3Rpb24sIHR5cGVuYW1lIFU+IGJvb2wgYXBwZW5kKFUmJik7CiAgICAgdGVtcGxhdGU8RmFp
bHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7Cisg
ICAgdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCB1bmNoZWNrZWRBcHBl
bmQoY29uc3QgVSosIHNpemVfdCk7CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgcG9zaXRpb24sIHR5
cGVuYW1lIFUsIHR5cGVuYW1lLi4uIEl0ZW1zPgogICAgIHZvaWQgdW5jaGVja2VkSW5pdGlhbGl6
ZShVJiYgaXRlbSwgSXRlbXMmJi4uLiBpdGVtcykKQEAgLTEyODcsNiArMTI4OSwyNCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsbwogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTxGYWlsdXJlQWN0
aW9uIGFjdGlvbiwgdHlwZW5hbWUgVT4KK0FMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnVuY2hl
Y2tlZEFwcGVuZChjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgc3RhdGlj
X2Fzc2VydChhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6Q3Jhc2ggfHwgYWN0aW9uID09IEZhaWx1
cmVBY3Rpb246OlJlcG9ydCk7CisgICAgaWYgKCFkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBBU1NFUlQoc2l6ZSgpIDwgY2FwYWNpdHkoKSk7CisKKyAgICBzaXplX3QgbmV3
U2l6ZSA9IG1fc2l6ZSArIGRhdGFTaXplOworICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG5ld1NpemUpOworICAgIFQqIGRlc3QgPSBlbmQoKTsKKyAgICBWZWN0b3JDb3BpZXI8c3RkOjpp
c190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6YWRk
cmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CisgICAgbV9zaXplID0gbmV3U2l6ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgTWFsbG9jPgogdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5cGVuYW1lIFU+
CiBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmQoVSYmIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBj
YWU3MTJhZDU0Zjc2NTEwZmU3ZGIzYzlkMWJkZDU3ZGFmODVhZDk0Li5mY2MyMTZhMDFjZGY2OTg2
NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzUxLDE1ICszNTEsOCBAQCBSZWY8
QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3Jl
YXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5
cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgYXV0
byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBpZiAoYnVm
ZmVyLT5oYXNPbmVSZWYoKSkKLSAgICAgICAgZGF0YSA9IGJ1ZmZlci0+dGFrZURhdGEoKTsgLy8g
QXZvaWQgY29weWluZyB0aGUgZGF0YSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIGlzbid0
IHNoYXJlZC4KLSAgICBlbHNlIHsKLSAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJmRh
dGFdKGF1dG8mIHNwYW4pIHsKLSAgICAgICAgICAgIGRhdGEuYXBwZW5kKHNwYW4pOwotICAgICAg
ICB9KTsKLSAgICB9CisgICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwogICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlw
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAxMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJlODY1
YmQ5NjQ3NzMyLi4wYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNv
cmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKIAog
c3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKLSAgICBhdXRv
IGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtlRGF0YSgp
LCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CisgICAgYXV0byBibG9iID0gYnVm
ZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5
cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9iRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6OkluaXQgeyB7IGZh
bHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUgfSwgQmxvYkV2ZW50
OjpJc1RydXN0ZWQ6Olllcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCAxMWM2YTliODM2MDE4MmQy
Yjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBl
NGYyMWJmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkK
IAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJs
b2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpLCBmaWxl
bmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxv
Yjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZp
bGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzQ1NWQ2MzY1MDdmNGYwYjlhYzUxOWRk
ZTdiZjY2MTZkZGQ5OTVhOC4uMTBhZGNmYmYxYWFkOGRjMDBjY2NmNDUzMjQ1ZWMyYjcyOTczZmNj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTI1MywxMCArMjUzLDEwIEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBE
b2N1CiAKICAgICBhdXRvIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpOwogICAgIGlmIChzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRh
Y2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1h
Z2VBdHRhY2htZW50TmFtZSwgV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9y
KCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJ
ZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSwgYnVm
ZmVyLmNvcHlSZWYoKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxp
bmVJbWFnZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBp
bWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBp
bWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0
dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1h
Z2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRy
LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVu
dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgIGlt
YWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAg
ICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9t
U3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2OCw3ICsyNjgsNyBA
QCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRh
Y2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENo
aWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdElt
YWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlB
dHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0
ZSgmZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KSwgY29udGVudFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJu
IGZyYWdtZW50OwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAg
ICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAg
ICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9j
dW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkp
OwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFu
ZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNy
ZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1h
Z2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9i
OjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpKSwgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRl
eCBhYWQ1MWRlYWU4ZWUwNGRjMzg3MTEwYTllMTFkMmNlZWI1ZTYwMTZlLi42MDQ4NmU3MWFkNTlm
ZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlLAogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwotICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCks
IHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRh
KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZy
YWdtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCmluZGV4IGIwZTlmNTIyMmNiNmUwNThlYzVmOTAwZTdhZjgwMmQwMjkwY2MwOTkuLjczMWEz
Njg1OWNhYjU4ODgyZjEzNDJlNTdhODAwOWYzZGYxZDkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lk
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5l
SW1hZ2VBdHRhY2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNB
dHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRv
Y3VtZW50KCksIGJ1ZmZlci0+dGFrZURhdGEoKSwgbWltZVR5cGUpKSk7CisgICAgaG9zdEVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRy
LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKSk7CiB9CiAKIHZvaWQgSFRN
TEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYg
dGh1bWJuYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
YTYzMWFkMmRhYzRjMDRlNDdmNTViYTI2Yzk3ZjNlOTVjMWRjM2Y3OC4uMDkyZmY1ZDBhZGVmMTRl
OWUyNzkyZWNjZmFkOGNkMzgwNmNkZmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0xMjIsNiArMTIyLDE2IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0
YSgpOwogfQogCitWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpCit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNpemUoKSk7CisgICAgZm9yRWFjaFNlZ21lbnQoWyZkYXRhXShhdXRvJiBzcGFuKSB7CisgICAg
ICAgIGRhdGEudW5jaGVja2VkQXBwZW5kKHNwYW4pOworICAgIH0pOworICAgIHJldHVybiBkYXRh
OworfQorCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCAzZjJhMTQ0N2JkMGNiMTI5NzYzYjQ1YWJlYzZlZmE5YzgwYjY2ODE2Li5mOWE5
NGZjNmMzMTQ1MmM4M2Q3MTFkZjViOWMyOWM4MTBiNzE2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTAxLDEwICsxMDEsMTAgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNl
IHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvcHlEYXRhKCkgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCk7CiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21l
bnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcg
dGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAgICAv
LyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2Ug
dGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90
IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKICAgICAvLyBD
cmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250
ZW50cyB0byB0aGF0CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRl
ZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTIyNyw2ICsyMjcsOSBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworCisg
ICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5z
IHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIApAQCAt
MjM5LDYgKzI0MiwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitpbmxpbmUgVmVjdG9yPHVp
bnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQoreworICAgIGlmIChoYXNPbmVSZWYo
KSkKKyAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CisgICAgcmV0dXJuIGNvcHlEYXRhKCk7Cit9
CisKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoK
ICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4m
Jiwgc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDYxNWI1
ZTUyY2JlMGExNjI5NDcxYWNhNjU2NmJjNDk2ZDZhYjg1ZWQuLjdiODE1M2JkNWY1ODQxNWQ4MmZk
NTRmZTgyNGJlOTBkMTViNmRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtMjA4LDcgKzIwOCw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9t
IE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmlj
aWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLCBudWxscHRyKS0+dGFrZURhdGEoKTsKKyAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFu
Z2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwogICAg
IFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5
cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1F
VHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJl
dHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEp
LCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433959</attachid>
            <date>2021-07-21 14:46:17 -0700</date>
            <delta_ts>2021-07-23 15:05:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228161-20210721144616.patch</filename>
            <type>text/plain</type>
            <size>16400</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM2OTY3NWFkYmRjNmNlMWUxYTA3MjRj
NGI4YjBlMTQ3MWRkNjRmMzguLjY4ZTU4YTQ2YTk5Y2NjMWQxZWUxZWQwNjUwMTgxZjFiYTAxZGVi
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDctMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkgaXMgYSBiaXQg
ZGFuZ2Vyb3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjgxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgVmVjdG9yOjp1bmNoZWNrZWRBcHBlbmQoKSBvdmVybG9hZCB0aGF0IHRha2VzIGluIGEg
U3Bhbi4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yOjp1
bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjpNYWxsb2M+Ojp1bmNoZWNrZWRBcHBlbmQp
OgorCiAyMDIxLTA3LTIxICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5NTcx
ZDZjZTliNjgzNzU3YjZlMjYxNWFmMTlhYmI4MDZkYzQxMy4uMDdjMjAxZDNjYWJmZjc5ZWZiNWRj
NWRhNzNlMmE1ZmE3YzZjMjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVm
ZmVyOjp0YWtlRGF0YSgpIGlzIGEgYml0IGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpIGlzIGEg
Yml0IGRhbmdlcm91cyBzaW5jZSBTaGFyZWRCdWZmZXIgaXMgUmVmQ291bnRlZCBhbmQgc2V2ZXJh
bCBvYmplY3QgbWF5IGJlIHNoYXJpbmcgb3duZXJzaGlwCisgICAgICAgIG9mIHRoZSBidWZmZXIu
IEhhdmluZyBvbmUgb3duZXIgY2FsbCB0YWtlRGF0YSgpIGluIGNhc2Ugb3duZXJzaGlwIGlzIHNo
YXJlZCBsZWFkcyB0byBidWdzIHN1Y2ggYXMgQnVnIDIyODA5Ni4KKworICAgICAgICBUbyBhZGRy
ZXNzIHRoZSBpc3N1ZSwgSSBtYWRlIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBwcml2YXRlIGFu
ZCBpbnRyb2R1Y2VkIGEgbmV3IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKSBtZW1iZXIKKyAg
ICAgICAgZnVuY3Rpb24gd2hpY2ggY2FsbHMgdGFrZURhdGEoKSBvbmx5IGlmIHRoZSBTaGFyZWRC
dWZmZXIgaXMgbm90IHNoYXJlZCAoUmVmQ291bnQgaXMgMSkgYW5kIGZhbGxzIGJhY2sgdG8gY2Fs
bGluZyBjb3B5RGF0YSgpCisgICAgICAgIG90aGVyd2lzZS4gSSBhbHNvIG9wdGltaXplZCBjb3B5
RGF0YSgpIGEgYml0IGJ5IGl0ZXJhdGluZyBvdmVyIHRoZSBzZWdtZW50cyB0byBidWlsZCB0aGUg
dmVjdG9yLCBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlCisgICAgICAgIHBvdGVudGlhbGx5IHZlcnkg
c2xvdyBTaGFyZWRCdWZmZXI6OmRhdGEoKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFBdmFpbGFibGVFdmVudCk6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9n
dGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5j
bG9zaW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpleHRyYWN0RGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDIx
LTA3LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIGxpbmtlZE9uT3JBZnRlciBjaGVjayBmb3IgcjI2OTE2MgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA0
ODE4N2UxM2ZlZTJhNGFiNzQ2OGVkN2Y2YWU4YTE5NThiOWQ4MjJhLi40NzQ5NjcxMjlkYzE2MGQy
ZjEzMjk4ZmZmMDc1NTE1MzIxMDRiZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzg2LDYgKzc4Niw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5k
KGNvbnN0IFUqIHUsIHNpemVfdCBzaXplKSB7IGFwcGVuZDxGYWlsdXJlQWN0aW9uOjpDcmFzaD4o
dSwgc2l6ZSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqIHUsIHNpemVfdCBzaXplKSB7IHJldHVybiBhcHBlbmQ8RmFpbHVy
ZUFjdGlvbjo6UmVwb3J0Pih1LCBzaXplKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFM
V0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoU3Bhbjxjb25zdCBVPiBzcGFuKSB7IGFwcGVuZChzcGFu
LmRhdGEoKSwgc3Bhbi5zaXplKCkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlT
X0lOTElORSB2b2lkIHVuY2hlY2tlZEFwcGVuZChTcGFuPGNvbnN0IFU+IHNwYW4pIHsgdW5jaGVj
a2VkQXBwZW5kPEZhaWx1cmVBY3Rpb246OkNyYXNoPihzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkp
OyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5cGVu
YW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlwZW5h
bWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNh
cGFjaXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxs
b2M+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5
cGVuYW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNhcGFj
aXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxsb2M+
JiYpOwogCkBAIC04NTQsNiArODU1LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPEZhaWx1
cmVBY3Rpb24sIHR5cGVuYW1lIFU+IGJvb2wgYXBwZW5kKFUmJik7CiAgICAgdGVtcGxhdGU8RmFp
bHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7Cisg
ICAgdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCB1bmNoZWNrZWRBcHBl
bmQoY29uc3QgVSosIHNpemVfdCk7CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgcG9zaXRpb24sIHR5
cGVuYW1lIFUsIHR5cGVuYW1lLi4uIEl0ZW1zPgogICAgIHZvaWQgdW5jaGVja2VkSW5pdGlhbGl6
ZShVJiYgaXRlbSwgSXRlbXMmJi4uLiBpdGVtcykKQEAgLTEyODcsNiArMTI4OSwyNCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsbwogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTxGYWlsdXJlQWN0
aW9uIGFjdGlvbiwgdHlwZW5hbWUgVT4KK0FMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnVuY2hl
Y2tlZEFwcGVuZChjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgc3RhdGlj
X2Fzc2VydChhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6Q3Jhc2ggfHwgYWN0aW9uID09IEZhaWx1
cmVBY3Rpb246OlJlcG9ydCk7CisgICAgaWYgKCFkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBBU1NFUlQoc2l6ZSgpIDwgY2FwYWNpdHkoKSk7CisKKyAgICBzaXplX3QgbmV3
U2l6ZSA9IG1fc2l6ZSArIGRhdGFTaXplOworICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG5ld1NpemUpOworICAgIFQqIGRlc3QgPSBlbmQoKTsKKyAgICBWZWN0b3JDb3BpZXI8c3RkOjpp
c190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6YWRk
cmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CisgICAgbV9zaXplID0gbmV3U2l6ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgTWFsbG9jPgogdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5cGVuYW1lIFU+
CiBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmQoVSYmIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBj
YWU3MTJhZDU0Zjc2NTEwZmU3ZGIzYzlkMWJkZDU3ZGFmODVhZDk0Li5mY2MyMTZhMDFjZGY2OTg2
NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzUxLDE1ICszNTEsOCBAQCBSZWY8
QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3Jl
YXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5
cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgYXV0
byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBpZiAoYnVm
ZmVyLT5oYXNPbmVSZWYoKSkKLSAgICAgICAgZGF0YSA9IGJ1ZmZlci0+dGFrZURhdGEoKTsgLy8g
QXZvaWQgY29weWluZyB0aGUgZGF0YSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIGlzbid0
IHNoYXJlZC4KLSAgICBlbHNlIHsKLSAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJmRh
dGFdKGF1dG8mIHNwYW4pIHsKLSAgICAgICAgICAgIGRhdGEuYXBwZW5kKHNwYW4pOwotICAgICAg
ICB9KTsKLSAgICB9CisgICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwogICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlw
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAxMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJlODY1
YmQ5NjQ3NzMyLi4wYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNv
cmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKIAog
c3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKLSAgICBhdXRv
IGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtlRGF0YSgp
LCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CisgICAgYXV0byBibG9iID0gYnVm
ZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5
cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9iRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6OkluaXQgeyB7IGZh
bHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUgfSwgQmxvYkV2ZW50
OjpJc1RydXN0ZWQ6Olllcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCAxMWM2YTliODM2MDE4MmQy
Yjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBl
NGYyMWJmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkK
IAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJs
b2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpLCBmaWxl
bmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxv
Yjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZp
bGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzQ1NWQ2MzY1MDdmNGYwYjlhYzUxOWRk
ZTdiZjY2MTZkZGQ5OTVhOC4uMTBhZGNmYmYxYWFkOGRjMDBjY2NmNDUzMjQ1ZWMyYjcyOTczZmNj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTI1MywxMCArMjUzLDEwIEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBE
b2N1CiAKICAgICBhdXRvIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpOwogICAgIGlmIChzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRh
Y2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1h
Z2VBdHRhY2htZW50TmFtZSwgV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9y
KCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJ
ZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSwgYnVm
ZmVyLmNvcHlSZWYoKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxp
bmVJbWFnZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBp
bWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBp
bWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0
dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1h
Z2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRy
LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVu
dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgIGlt
YWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAg
ICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9t
U3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2OCw3ICsyNjgsNyBA
QCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRh
Y2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENo
aWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdElt
YWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlB
dHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0
ZSgmZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KSwgY29udGVudFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJu
IGZyYWdtZW50OwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAg
ICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAg
ICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9j
dW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkp
OwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFu
ZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNy
ZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1h
Z2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9i
OjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpKSwgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRl
eCBhYWQ1MWRlYWU4ZWUwNGRjMzg3MTEwYTllMTFkMmNlZWI1ZTYwMTZlLi42MDQ4NmU3MWFkNTlm
ZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlLAogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwotICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCks
IHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRh
KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZy
YWdtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCmluZGV4IGIwZTlmNTIyMmNiNmUwNThlYzVmOTAwZTdhZjgwMmQwMjkwY2MwOTkuLjczMWEz
Njg1OWNhYjU4ODgyZjEzNDJlNTdhODAwOWYzZGYxZDkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lk
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5l
SW1hZ2VBdHRhY2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNB
dHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRv
Y3VtZW50KCksIGJ1ZmZlci0+dGFrZURhdGEoKSwgbWltZVR5cGUpKSk7CisgICAgaG9zdEVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRy
LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKSk7CiB9CiAKIHZvaWQgSFRN
TEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYg
dGh1bWJuYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
YTYzMWFkMmRhYzRjMDRlNDdmNTViYTI2Yzk3ZjNlOTVjMWRjM2Y3OC4uN2Q5MmRlYjU0MjQwNzY2
MjE5MjYwMWIzNzE1YTZmMTJhYWIxYmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0xMjIsNiArMTIyLDE2IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0
YSgpOwogfQogCitWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUoKSk7CisgICAgZm9yRWFjaFNlZ21lbnQoWyZkYXRhXShhdXRvJiBzcGFuKSB7
CisgICAgICAgIGRhdGEudW5jaGVja2VkQXBwZW5kKHNwYW4pOworICAgIH0pOworICAgIHJldHVy
biBkYXRhOworfQorCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7
CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCAzZjJhMTQ0N2JkMGNiMTI5NzYzYjQ1YWJlYzZlZmE5YzgwYjY2ODE2
Li4yMzY5YWFkOGIzNTYzOWUyZWE1YTlhZDE4MjY4NTUzNzk1ZTZiNzcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTAxLDEwICsxMDEsMTAgQEAgcHVibGljOgog
ICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBy
ZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAgICAgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CiAKLSAgICAvLyBDb21iaW5lcyBh
bGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0
ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFu
ZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRC
dWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7
CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRC
dWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJn
aW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTIyNyw2ICsyMjcs
OSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
IGNvbnN0OworCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9y
IGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIu
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKTsKIApAQCAtMjM5LDYgKzI0MiwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitpbmxp
bmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQoreworICAgIGlm
IChoYXNPbmVSZWYoKSkKKyAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CisgICAgcmV0dXJuIGNv
cHlEYXRhKCk7Cit9CisKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IDYxNWI1ZTUyY2JlMGExNjI5NDcxYWNhNjU2NmJjNDk2ZDZhYjg1ZWQuLjdiODE1M2Jk
NWY1ODQxNWQ4MmZkNTRmZTgyNGJlOTBkMTViNmRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0
aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhp
cyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+dGFrZURhdGEoKTsKKyAgICAgICAgZGF0YSA9
IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0
RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxp
emVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8g
cmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3Jy
ZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBX
VEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>