<?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>232422</bug_id>
          
          <creation_ts>2021-10-27 22:38:43 -0700</creation_ts>
          <short_desc>Have RemoteMediaResource use SharedMemory</short_desc>
          <delta_ts>2021-10-29 18:44:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</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=230329</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232424</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232425</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232426</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>achristensen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809573</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-27 22:38:43 -0700</bug_when>
    <thetext>When playing a non-mse media element, the loading gets initiated in the GPU Process and proxied to the WebContent process via a RemoteMediaResource which makes the network process download the data.

The download data gets its way back to the GPU Process where it will be copied and stored in a locally allocated buffer (ultimately a NSData). That memory allocation gets assigned to the GPU Process.
With the low 220MB limits given to the GPU Process it can easily lead to the GPU Process being killed for using too much memory.

The situation is made worse when the server doesn&apos;t support range-request; the RangeResponseGenerator will end up downloading the entire media to be played and keep it in the GPU Process.

Similar to bug 230329; we should use SharedMemory allocated in the WebContent process and pass the data to the GPU process and remove memory allocation and copies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809574</commentid>
    <comment_count>1</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-27 22:39:08 -0700</bug_when>
    <thetext>rdar://84558835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809576</commentid>
    <comment_count>2</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-27 22:41:10 -0700</bug_when>
    <thetext>*** Bug 232163 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809589</commentid>
    <comment_count>3</comment_count>
      <attachid>442679</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-27 23:57:41 -0700</bug_when>
    <thetext>Created attachment 442679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809648</commentid>
    <comment_count>4</comment_count>
      <attachid>442701</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-28 06:42:11 -0700</bug_when>
    <thetext>Created attachment 442701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809791</commentid>
    <comment_count>5</comment_count>
      <attachid>442701</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-28 13:02:01 -0700</bug_when>
    <thetext>Comment on attachment 442701
Patch

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

Needs some polish, but I like the general direction.

&gt; Source/WebCore/platform/SharedBuffer.cpp:470
&gt; +    return SharedBuffer::create({

It&apos;s unclear to me which constructor this is calling.  Could you make this a little more verbose?  Why are there lambdas below?

&gt; Source/WebCore/platform/SharedBuffer.h:272
&gt; +    void trim(size_t);

I think rather than this, it would be nicer to have the stored size (if we can&apos;t remove it) const and make a new SharedBufferDataView that views a new subset of the bytes in the DataSegment.

&gt; Source/WebCore/platform/SharedBuffer.h:278
&gt; +    const size_t m_positionWithinSegment;

const is good.

&gt; Source/WebCore/platform/SharedBuffer.h:279
&gt; +    size_t m_endTrim { 0 };

I don&apos;t think we need to store this in memory in the SharedBufferDataView.  I think we could just give it as a parameter to SharedBufferDataView::createNSData.  Something like createNSData(size_t size = this-&gt;size()).

&gt; Source/WebCore/platform/cocoa/SharedBufferCocoa.mm:44
&gt; +    NSUInteger _endTrim;

I think it would make more sense to store the size rather than endTrim, which is a little less common.  Then we can assert that _position + _size &lt;= _dataSegment.size()

&gt; Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h:56
&gt; +    virtual void dataReceived(PlatformMediaResource&amp; platform, const uint8_t* data, int length) { dataReceived(platform, SharedBuffer::create(data, length)); }

Can we make this parameter a Span&lt;const uint8_t&gt;?  If it&apos;s too invasive, that could be a separate patch.

&gt; Source/WebCore/platform/network/cocoa/RangeResponseGenerator.mm:141
&gt; +            bufferView.trim(bufferView.size() - bytesFromThisViewToDeliver);

This fixes an existing issue where we would sometimes give too much data.  Great!

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:913
&gt; +- (void)resource:(PlatformMediaResource*)resource receivedNSData:(NSData*)nsData length:(int)length

This may as well receive a RetainPtr&lt;NSData&gt;&amp;&amp; to reduce ref churn.
Also, it looks like the length parameter is now redundant.

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:930
&gt; +- (void)resource:(PlatformMediaResource*)resource receivedData:(const WebCore::SharedBufferDataView&amp;)data length:(int)length

length is unused.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.cpp:100
&gt; +    if (!sharedMemory)
&gt; +        return;

log or debug assert?

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:79
&gt; +    if (!sharedMemory)
&gt; +        return;

A debug assert or a log might be in order here.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:82
&gt; +    memcpy(sharedMemoryPtr, data, length);

The data is probably already from a SharedBuffer.  Is there a way we can chase this higher upstream and use that instead of adding another memcpy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809802</commentid>
    <comment_count>6</comment_count>
      <attachid>442701</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-28 13:23:51 -0700</bug_when>
    <thetext>Comment on attachment 442701
Patch

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

&gt;&gt; Source/WebCore/platform/network/cocoa/RangeResponseGenerator.mm:141
&gt;&gt; +            bufferView.trim(bufferView.size() - bytesFromThisViewToDeliver);
&gt; 
&gt; This fixes an existing issue where we would sometimes give too much data.  Great!

I guess this wasn&apos;t an existing issue, but just something that was needed when changing to use SharedBuffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809815</commentid>
    <comment_count>7</comment_count>
      <attachid>442701</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-28 13:47:02 -0700</bug_when>
    <thetext>Comment on attachment 442701
Patch

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

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:470
&gt;&gt; +    return SharedBuffer::create({
&gt; 
&gt; It&apos;s unclear to me which constructor this is calling.  Could you make this a little more verbose?  Why are there lambdas below?

This is the DataSegment::Provider constructor.
I don&apos;t see how this can be made any clearer than that. It&apos;s how the type is defined.

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:272
&gt;&gt; +    void trim(size_t);
&gt; 
&gt; I think rather than this, it would be nicer to have the stored size (if we can&apos;t remove it) const and make a new SharedBufferDataView that views a new subset of the bytes in the DataSegment.

So a  SharedBufferDataView constructor that takes a SharedBufferDataView and a size? What about just having a setSize method instead?

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:279
&gt;&gt; +    size_t m_endTrim { 0 };
&gt; 
&gt; I don&apos;t think we need to store this in memory in the SharedBufferDataView.  I think we could just give it as a parameter to SharedBufferDataView::createNSData.  Something like createNSData(size_t size = this-&gt;size()).

Issue is passing that information to where the actual length is needed.
I had considered this approach, it makes for a much bigger patch.

It makes sense for a view into a memory segment to know the start offset and the length.

Providing the length at creation involves modifying SharedBuffer method, and as used by the range response generator, we don&apos;t know the size we want until after we have retrieved the DataSegment

&gt;&gt; Source/WebCore/platform/cocoa/SharedBufferCocoa.mm:44
&gt;&gt; +    NSUInteger _endTrim;
&gt; 
&gt; I think it would make more sense to store the size rather than endTrim, which is a little less common.  Then we can assert that _position + _size &lt;= _dataSegment.size()

Ok

&gt;&gt; Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h:56
&gt;&gt; +    virtual void dataReceived(PlatformMediaResource&amp; platform, const uint8_t* data, int length) { dataReceived(platform, SharedBuffer::create(data, length)); }
&gt; 
&gt; Can we make this parameter a Span&lt;const uint8_t&gt;?  If it&apos;s too invasive, that could be a separate patch.

As mentioned in Changelog This is tracked in bug 232424.
Need to use SharedBuffer there too

&gt;&gt;&gt; Source/WebCore/platform/network/cocoa/RangeResponseGenerator.mm:141
&gt;&gt;&gt; +            bufferView.trim(bufferView.size() - bytesFromThisViewToDeliver);
&gt;&gt; 
&gt;&gt; This fixes an existing issue where we would sometimes give too much data.  Great!
&gt; 
&gt; I guess this wasn&apos;t an existing issue, but just something that was needed when changing to use SharedBuffers.

It wasn&apos;t an existing issue, we provided the explicit length before and a new buffer was allocated and copied into

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:79
&gt;&gt; +        return;
&gt; 
&gt; A debug assert or a log might be in order here.

This is in Shared more::allocate, there&apos;s a bug about that and is a common pattern

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:82
&gt;&gt; +    memcpy(sharedMemoryPtr, data, length);
&gt; 
&gt; The data is probably already from a SharedBuffer.  Is there a way we can chase this higher upstream and use that instead of adding another memcpy?

This is tracked in bug 232424.

The change would be very invasive, and this is a P1 bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809826</commentid>
    <comment_count>8</comment_count>
      <attachid>442701</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-28 14:10:53 -0700</bug_when>
    <thetext>Comment on attachment 442701
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:470
&gt;&gt;&gt; +    return SharedBuffer::create({
&gt;&gt; 
&gt;&gt; It&apos;s unclear to me which constructor this is calling.  Could you make this a little more verbose?  Why are there lambdas below?
&gt; 
&gt; This is the DataSegment::Provider constructor.
&gt; I don&apos;t see how this can be made any clearer than that. It&apos;s how the type is defined.

return SharedBuffer::create(DataSegment::Provider { ...
I didn&apos;t see the create function that took a Provider because it is far away from the other create functions, and it has been added since I last touched SharedBuffer.

&gt;&gt;&gt; Source/WebCore/platform/SharedBuffer.h:272
&gt;&gt;&gt; +    void trim(size_t);
&gt;&gt; 
&gt;&gt; I think rather than this, it would be nicer to have the stored size (if we can&apos;t remove it) const and make a new SharedBufferDataView that views a new subset of the bytes in the DataSegment.
&gt; 
&gt; So a  SharedBufferDataView constructor that takes a SharedBufferDataView and a size? What about just having a setSize method instead?

Then the size wouldn&apos;t be const.  I think it&apos;s important that a view into a buffer be immutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809863</commentid>
    <comment_count>9</comment_count>
      <attachid>442701</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-28 15:19:08 -0700</bug_when>
    <thetext>Comment on attachment 442701
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/SharedBuffer.h:272
&gt;&gt;&gt;&gt; +    void trim(size_t);
&gt;&gt;&gt; 
&gt;&gt;&gt; I think rather than this, it would be nicer to have the stored size (if we can&apos;t remove it) const and make a new SharedBufferDataView that views a new subset of the bytes in the DataSegment.
&gt;&gt; 
&gt;&gt; So a  SharedBufferDataView constructor that takes a SharedBufferDataView and a size? What about just having a setSize method instead?
&gt; 
&gt; Then the size wouldn&apos;t be const.  I think it&apos;s important that a view into a buffer be immutable.

ok.

&gt;&gt;&gt;&gt; Source/WebCore/platform/network/cocoa/RangeResponseGenerator.mm:141
&gt;&gt;&gt;&gt; +            bufferView.trim(bufferView.size() - bytesFromThisViewToDeliver);
&gt;&gt;&gt; 
&gt;&gt;&gt; This fixes an existing issue where we would sometimes give too much data.  Great!
&gt;&gt; 
&gt;&gt; I guess this wasn&apos;t an existing issue, but just something that was needed when changing to use SharedBuffers.
&gt; 
&gt; It wasn&apos;t an existing issue, we provided the explicit length before and a new buffer was allocated and copied into

Interestingly, I had missed that the length could be different to the one in the DataSegment, and that lead to the earlier failure for LayoutTests/http/tests/security/video-cross-origin-caching.html

I find that quite interesting that it&apos;s the only test that failed.

The trim &amp; co method came in just to cater for that particular use of the SharedBufferDataView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809911</commentid>
    <comment_count>10</comment_count>
      <attachid>442701</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-28 17:12:00 -0700</bug_when>
    <thetext>Comment on attachment 442701
Patch

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

&gt;&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:930
&gt;&gt; +- (void)resource:(PlatformMediaResource*)resource receivedData:(const WebCore::SharedBufferDataView&amp;)data length:(int)length
&gt; 
&gt; length is unused.

hmm that method shouldn&apos;t;&apos;t even be there. Don&apos;t know how it crawled back here.

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:79
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; A debug assert or a log might be in order here.
&gt; 
&gt; This is in Shared more::allocate, there&apos;s a bug about that and is a common pattern

SharedMemory::allocate already has lots of release_log if it fails to allocate or map the content</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809929</commentid>
    <comment_count>11</comment_count>
      <attachid>442771</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-28 18:06:58 -0700</bug_when>
    <thetext>Created attachment 442771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809951</commentid>
    <comment_count>12</comment_count>
      <attachid>442771</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-28 21:13:16 -0700</bug_when>
    <thetext>Comment on attachment 442771
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:474
&gt; +    return SharedBuffer::create(SharedBuffer::DataSegment::Provider {
&gt; +        [=]() { return data; },

I think this no longer keeps the SharedBufferDataView alive in the lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809958</commentid>
    <comment_count>13</comment_count>
      <attachid>442771</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-28 22:12:16 -0700</bug_when>
    <thetext>Comment on attachment 442771
Patch

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

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:474
&gt;&gt; +        [=]() { return data; },
&gt; 
&gt; I think this no longer keeps the SharedBufferDataView alive in the lambda.

You&apos;re right ; it doesn&apos;t. But it keeps a strong reference to the DataSegment instead which achieves the same. SharedBufferDataView isn&apos;t refcounted so it would have copied it instead anyway.

I found that this way it makes the code clearer to read and the implementation simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810015</commentid>
    <comment_count>14</comment_count>
      <attachid>442798</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-29 02:33:15 -0700</bug_when>
    <thetext>Created attachment 442798
Patch

fix style, fix Ref creation in SharedBufferDataView constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810057</commentid>
    <comment_count>15</comment_count>
      <attachid>442798</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-29 07:54:49 -0700</bug_when>
    <thetext>Comment on attachment 442798
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:450
&gt; +    RELEASE_ASSERT(m_positionWithinSegment &lt; m_segment-&gt;size() &amp;&amp; m_size &lt;= m_segment-&gt;size() - m_positionWithinSegment);

These could be two separate assertions.
Also, I think it would be ok if m_positionWithinSegment were equal to m_segment-&gt;size() as long as m_size were zero, which the second assertion would catch.

&gt; Source/WebCore/platform/SharedBuffer.cpp:476
&gt; +    const Ref&lt;SharedBuffer::DataSegment&gt; segment = m_segment;
&gt; +    const size_t size = this-&gt;size();
&gt; +    const uint8_t* data = this-&gt;data();
&gt; +    return SharedBuffer::create(SharedBuffer::DataSegment::Provider {
&gt; +        [=]() { return data; },
&gt; +        [=]() { return size; }
&gt; +    });

The first lambda only captures a size_t, and the second lambda only captures a const uint8_t*.  You need to explicitly capture segment.

&gt; Source/WebCore/platform/cocoa/SharedBufferCocoa.mm:69
&gt; +    RELEASE_ASSERT((!position || position &lt; dataSegment.size()) &amp;&amp; size &lt;= dataSegment.size() - position);

separate assertions
I think the first one could also just be position &lt;= dataSegment.size().  If position is zero, then it is definitely within range.

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.h:144
&gt; +@property (assign, atomic) int64_t countOfBytesReceived;

Wouldn&apos;t the ivar need to be a std::atomic&lt;int64_t&gt; in order for this to be true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810291</commentid>
    <comment_count>16</comment_count>
      <attachid>442798</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-29 15:25:48 -0700</bug_when>
    <thetext>Comment on attachment 442798
Patch

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

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:450
&gt;&gt; +    RELEASE_ASSERT(m_positionWithinSegment &lt; m_segment-&gt;size() &amp;&amp; m_size &lt;= m_segment-&gt;size() - m_positionWithinSegment);
&gt; 
&gt; These could be two separate assertions.
&gt; Also, I think it would be ok if m_positionWithinSegment were equal to m_segment-&gt;size() as long as m_size were zero, which the second assertion would catch.

I do think that having positionWithinSegment == size() is okay, however this is an existing assertion and would prefer not change that.

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:476
&gt;&gt; +    });
&gt; 
&gt; The first lambda only captures a size_t, and the second lambda only captures a const uint8_t*.  You need to explicitly capture segment.

definite brain fart here, thanks for spotting that

&gt;&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.h:144
&gt;&gt; +@property (assign, atomic) int64_t countOfBytesReceived;
&gt; 
&gt; Wouldn&apos;t the ivar need to be a std::atomic&lt;int64_t&gt; in order for this to be true?

my understanding is that the synthesised property will be atomic.
so accessing self.countOfBytesReceived is thread-safe
accessing directly _countOfBytesReceived isn&apos;t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810295</commentid>
    <comment_count>17</comment_count>
      <attachid>442874</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-10-29 15:43:43 -0700</bug_when>
    <thetext>Created attachment 442874
Patch

apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810361</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-29 18:44:16 -0700</bug_when>
    <thetext>Committed r285069 (243711@main): &lt;https://commits.webkit.org/243711@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442874.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442679</attachid>
            <date>2021-10-27 23:57:41 -0700</date>
            <delta_ts>2021-10-28 06:42:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232422-20211028175739.patch</filename>
            <type>text/plain</type>
            <size>29153</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDJjMjQyNTkyMWVk
YWI4MTM5NDk0ZTZlOWU3MmQ0OTQyNDA2OC4uOGFhOTRkOGQ0OWYwZjBiYjA5NGRiN2Q4ZjM1ODk5
ZWM0OTI4YWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTEwLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
cGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxlbWVudCwgdGhlIGRvd25sb2FkIGdldHMgY29udHJv
bGxlZCBieSBhCisgICAgICAgIE1lZGlhUmVzb3VyY2UgaW50byBhIFdlYkNvcmVOU1VSTFNlc3Np
b24gdG8gYmUgdXNlZCBieSB0aGUgbWVkaWEgZnJhbWV3b3JrLgorICAgICAgICBUaGUgZGF0YSBn
b3QgY29waWVkIGF0IGxlYXN0IHRocmVlIHRpbWVzIGFsb25nIHRoZSB3YXkgZHVlIHRvIHRoZQor
ICAgICAgICBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGZyYW1ld29yayBhbmQgdGhlIG5l
ZWQgZm9yIHRocmVhZAorICAgICAgICBzYWZldHkuCisgICAgICAgIFRoZSBzaXR1YXRpb24gd2Fz
IG1hZGUgd29yc2Ugd2hlbiB0aGUgY29udGVudCBzZXJ2ZXIgZGlkbid0IHN1cHBvcnQKKyAgICAg
ICAgcmFuZ2UtcmVxdWVzdDogYXMgYSBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIGlzIHRoZW4gdXNl
ZCBieSB0aGUKKyAgICAgICAgV2ViQ29yZU5TVVJMU2Vzc2lvbiB3aGljaCBkb3dubG9hZHMgdGhl
IGVudGlyZSBtZWRpYSB0byBiZSBwbGF5ZWQgYW5kCisgICAgICAgIGtlZXAgaXQgaW4gbWVtb3J5
LgorCisgICAgICAgIEJ5IG1vZGlmeWluZyB0aGUgdmFyaW91cyBhY3RvcnMgYmV0d2VlbiBhIE1l
ZGlhUmVzb3VyY2UgYW5kIFdlYkNvcmVOU1VSTFNlc3Npb24KKyAgICAgICAgdG8gdXNlIFNoYXJl
ZEJ1ZmZlcnMgOyB3ZSBjYW4gcmVtb3ZlIG1vc3QgY29waWVzIGFuZCBhbGxvY2F0aW9uLgorICAg
ICAgICBUaGlzIGFsc28gY29tcGxldGVseSBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBuZXcgbWVt
b3J5IGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQKKyAgICAgICAgY29waWVzIGJ5IHRoZSBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yIG9iamVjdC4KKworICAgICAgICBXaXRoIFdLMiBhbmQgdGhlIEdQVSBw
cm9jZXNzLCBpdCBhbGxvd3MgZm9yIHRoZSBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkIG9uY2UKKyAg
ICAgICAgYW5kIG9ubHkgYmUgYXNzaWduZWQgdG8gdGhlIGNvbnRlbnQgcHJvY2VzcyBieSB1c2lu
ZyBTaGFyZWRNZW1vcnkgd3JhcHBlZAorICAgICAgICBpbiBhIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGUgZnV0dXJlLCBieSByZWZhY3RvcmluZyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB0byB1c2UgU2hhcmVkQnVmZmVycywKKyAgICAgICAgd2UgY291bGQgcmVtb3ZlIGZ1cnRoZXIg
YWxsb2NhdGlvbi9jb3BpZXMuIFdlIGNvdWxkIGxpa2VseSBnZXQgdGhlIGRhdGEgZnJvbSB0aGUK
KyAgICAgICAgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRvIHRoZSBmaW5hbCBjbGllbnQg
aW4gdGhlIEdQVSBwcm9jZXNzIHdpdGhvdXQKKyAgICAgICAgYSBzaW5nbGUgY29weS4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIuIENvdmVyZWQgYnkgYWxsIHRo
ZSBleGlzdGluZyBtZWRpYSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOiBBZGQgYSBuZXcgQVBJIHVzaW5nCisg
ICAgICAgIGEgU2hhcmVkQnVmZmVyLiBXZSBrZWVwIHRoZSBvbGQgb25lIHRha2luZyBhIHBvaW50
ZXIvc2l6ZSBkdWUgdG8gYSBXZWJLaXQKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyB3
aGljaCBhbGxvd3MgdXMgdG8gc2F2ZSBhbiBpbnRlcm1lZGlhcnkgYWxsb2NhdGlvbi9jb3B5Cisg
ICAgICAgIHdoZW4gdXNlZCB3aXRoIFNoYXJlZE1lbW9yeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKTogVXBkYXRlIHRvIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRl
c0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjp3aWxsU3ludGhlc2l6ZVJhbmdlUmVzcG9uc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDogQ2hhbmdlIHByb3RvdHlwZXMuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3Vy
Y2U6cmVjZWl2ZWROU0RhdGE6bGVuZ3RoOl0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAoLVtXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOmxlbmd0aDpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkUmVk
aXJlY3Q6cmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAyMS0xMC0yMiAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBvIGluIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvVHJhY2tzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMzg4YWQ5YTY2ZDE4ZjBhOWFjNzQwNDc3NzhkOTI0ZjJkODA4MDNmNy4uMGUzMzg0ZjAx
YmExYmExZDI5ZDAyZTQ1YjAxNGMyMTEwMWUyMmUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBA
QAorMjAyMS0xMC0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIEhhdmUgUmVtb3RlTWVkaWFSZXNvdXJjZSB1c2UgU2hhcmVkTWVtb3J5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjIKKyAgICAgICAgcmRh
cjovLzg0NTU4ODM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBwbGF5aW5nIGEgbm9uLW1zZSBtZWRpYSBlbGVtZW50LCB0aGUgbG9hZGluZyBn
ZXRzIGluaXRpYXRlZCBpbiB0aGUKKyAgICAgICAgR1BVIFByb2Nlc3MgYW5kIHByb3hpZWQgdG8g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB2aWEgYSBSZW1vdGVNZWRpYVJlc291cmNlLgorICAgICAg
ICBCeSB1c2luZyBhIFNoYXJlZEJ1ZmZlciBpbiB0aGUgUmVtb3RlTWVkaWFSZXNvdXJjZSB3cmFw
cGluZyBhIFNoYXJlZE1lbW9yeQorICAgICAgICB3ZSBjYW4gYWxsb2NhdGUgdGhlIGJ1ZmZlciBp
biB0aGUgY29udGVudCBwcm9jZXNzIGFuZCBwYXNzIGl0IHRvIHRoZSBHUFUKKyAgICAgICAgcHJv
Y2VzcyB3aXRob3V0IGNvcHkgbm9yIG5ldyBhbGxvY2F0aW9ucy4KKyAgICAgICAgUGxheWluZyBh
IDY5NE1CIG1wNCwgdGhlIEdQVSBtZW1vcnkgdXNhZ2UgZ29lcyBmcm9tIDg2OE1CIHRvIDE0TUIg
b24gYW4KKyAgICAgICAgaVBob25lIHJ1bm5pbmcgaU9TIDE1LgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNlaXZlZCk6IFdyYXAgU2hhcmVkTWVtb3J5IGludG8K
KyAgICAgICAgYSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW46IENoYW5nZSBkYXRhIHR5cGUKKyAg
ICAgICAgZnJvbSBhbiBJUENEYXRhUmVmZXJlbmNlIHRvIGEgU2hhcmVNZW1vcnkncyBoYW5kbGUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVj
ZWl2ZWQpOiBBbGxvY2F0ZSBhIFNoYXJlZE1lbW9yeQorICAgICAgICBhbmQgY29weSB0aGUgZG93
bmxvYWQgZGF0YSBpbnRvIGl0LCBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgR1BVIHByb2Nlc3Mu
CisKIDIwMjEtMTAtMjQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcmVmY291bnQgaW5jcmVhc2Ugd2hlbiBhY2Nlc3Npbmcg
bV9wbGF5ZXIgaW4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGEyOGU2MWMwMmE3MmNhOTM4OWE2ODYzMjViNTQ2ZTMxYzRjMDQ5ODYuLjc0
NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oCkBAIC0yOCw5ICsyOCwxMSBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2lu
Y2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KIApAQCAtNDksNyArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggOGU5MDEwZGM4NjA2YWEwMDY2YjJmN2JkZmFhNjNhNmMzMTViMDg4YS4uYThl
ZTAzMzkzZDc4ZTg2NDg1ZGE1ODU5ZDUwOGNjYmFkZjg3MmJlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDcgKzE1
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsg
fQogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVy
cm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSwxMiArMjExLDEy
IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAg
IG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBzaXplKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOworICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICBtX3BhcmVudC5u
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBhMTQ4ODdmYzc3NWUyYjk3YjY5
ZjljNTk1YWU4MjcwYWFkNzExYzg1Li45MTRiYmU1YTQxNWQzNDllNjg4NGFhMmJiYTVjZTUwYzUz
YjI5ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTXV0ZXguaD4KQEAgLTcxLDcgKzcyLDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1l
dGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTEwOTMsNyArMTA5
NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hv
dWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJL
aXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKQEAgLTExMDMsNyAr
MTEwNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVl
c3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBHU1Rf
TE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51
bWJlciwgbGVuZ3RoKTsKKyAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0
ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgLy8g
Um91Z2ggYmFuZHdpZHRoIGNhbGN1bGF0aW9uLiBXZSBpZ25vcmUgaGVyZSB0aGUgZmlyc3QgZGF0
YSBwYWNrYWdlIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSB0byByZXNldCB0aGUgY291bnRlcnMgd2hl
biB3ZSBpc3N1ZSB0aGUgcmVxdWVzdCBhbmQKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVs
aXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBh
bmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUK
QEAgLTExMjUsOCArMTEyNiwxMCBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdQogCiAgICAgY2hl
Y2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKIAotICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0
QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLCBsZW5ndGgpLCBsZW5ndGgpOwot
ICAgIGdzdF9hZGFwdGVyX3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsKKyAg
ICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgIEdz
dEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChzZWdt
ZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgIGdz
dF9hZGFwdGVyX3B1c2gobWVtYmVycy0+YWRhcHRlci5nZXQoKSwgYnVmZmVyKTsKKyAgICB9KTsK
ICAgICBzdG9wTG9hZGVySWZOZWVkZWQoc3JjLCBtZW1iZXJzKTsKICAgICBtZW1iZXJzLT5yZXNw
b25zZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQppbmRleCBjYzRkYTk3MDNjMzc0OTRmNjU3ZGNmZmJkZjNiZTk3MTlmNDNhMDViLi5iMzJjMTE4
OTYzOWJjYTFhN2I0MDgyOGVjMDNiNWExZTU1YjllMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKIAog
ICAgICAgICAgICAgc2l6ZV90IGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyID0gc3RkOjptaW4o
YnVmZmVyVmlldy5zaXplKCksIHJhbmdlLmVuZCAtIGJ5dGVJbmRleCArIDEpOwogICAgICAgICAg
ICAgYnl0ZUluZGV4ICs9IGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyOwotICAgICAgICAgICAg
W3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6YnVmZmVyVmlldy5kYXRhKCkgbGVu
Z3RoOmJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyXTsKKyAgICAgICAgICAgIFt0YXNrIHJlc291
cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOmJ1ZmZlclZpZXcgbGVuZ3RoOmJ5dGVzRnJvbVRoaXNW
aWV3VG9EZWxpdmVyXTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdl
LmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJp
Y3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBm
aW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTIsNyBA
QCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldCht
X3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIGRhdGEt
PmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5n
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggMDU3NmVkODgxMjQxMDgyMjQ0NzZjYjZiYjc1NThmOTVj
OWM3ODVlNi4uZWQwNWU2ZmZiNDYzODJjZTI2ODdmYjAwNGMyZDgzNzdkMGRhMjhlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTQ5LDYgKzUwLDgg
QEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayA6IGJvb2w7CiB9CkBAIC0xNTUsNyArMTU4LDggQEAgV0VCQ09SRV9FWFBPUlQg
QGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBz
ZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50
Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBj
b21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBsZW5ndGg6
KGludClsZW5ndGg7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3JilkYXRhIGxlbmd0aDooaW50KWxlbmd0aDsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVz
cG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0
aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAt
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGM3Y2E4NDI1ZThiNDQ2YzNl
NjU4Mjk4YzFhZTE0YTE5NDEwZDJmMTUuLmVlNmE1Njc1NGY2NjhiODY5ZTBjMTQ1ZjE0OTkyNTkw
YTczOTJlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQgIlBhcnNlZFJlcXVl
c3RSYW5nZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCisjaW1w
b3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW1w
b3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaD4KQEAgLTYwNyw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
YXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2ln
bmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAq
Lykgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CkBAIC02NTEsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVy
biBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNl
XTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAg
IGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJlc291cmNlOiZy
ZXNvdXJjZSByZWNlaXZlZERhdGE6ZGF0YSBsZW5ndGg6bGVuZ3RoXTsKKyAgICBbbV90YXNrIHJl
c291cmNlOiZyZXNvdXJjZSByZWNlaXZlZERhdGE6V1RGTW92ZShidWZmZXIpXTsKIH0KIAogdm9p
ZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTA5LDEyICs5MTAs
MTAgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBz
aG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAot
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KGNvbnN0IHVpbnQ4X3QqKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoCistICh2b2lkKXJl
c291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkTlNEYXRhOihO
U0RhdGEqKW5zRGF0YSBsZW5ndGg6KGludClsZW5ndGgKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
OmRhdGEgbGVuZ3RoOmxlbmd0aF0pOwotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxmIH07Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxl
Z2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgbGVuZ3RoLCBuc0RhdGFdIHsKKyAgICBbc2VsZi5z
ZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2Vs
ZiB9LCBuc0RhdGEgPSBSZXRhaW5QdHIgeyBuc0RhdGEgfSwgbGVuZ3RoXSB7CiAgICAgICAgIHN0
cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gbGVuZ3RoOwogICAgICAgICBp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAg
ICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNz
aW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpAQCAtOTIyLDYgKzkyMSwxOCBAQCAtICh2
b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0
YTooY29uc3QgdWludDhfdCopZAogICAgIH1dOwogfQogCistICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJilkYXRhCit7CisgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBbc2VsZiByZXNvdXJjZTpyZXNvdXJjZSByZWNlaXZlZE5TRGF0YTpuc0RhdGEu
Z2V0KCkgbGVuZ3RoOmRhdGEtPnNpemUoKV07Cit9CisKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldyYpZGF0YSBsZW5ndGg6KGludClsZW5ndGgKK3sKKyAgICBhdXRv
IG5zRGF0YSA9IGRhdGEuY3JlYXRlTlNEYXRhKCk7CisgICAgW3NlbGYgcmVzb3VyY2U6cmVzb3Vy
Y2UgcmVjZWl2ZWROU0RhdGE6bnNEYXRhLmdldCgpIGxlbmd0aDpkYXRhLnNpemUoKV07Cit9CisK
IC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2
ZWRSZWRpcmVjdDooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooUmVz
b3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNl
KTsKQEAgLTkzMyw3ICs5NDQsNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cgogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxT
ZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAg
ICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJM
U2Vzc2lvbjp0YXNrOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxl
dGlvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJCbG9j
ayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApp
bmRleCA5MDIzNTRhOTkzMWZlZDE1NTllNTRlNDFiMWMwMDU5YWU4NzE4MjM3Li5jNDVlNTI1NWQ2
N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZiNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC05NiwxMCAr
OTYsMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFT
ZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludDY0
X3QgbGVuZ3RoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQt
PmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZTo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmgKaW5kZXggOWI0MDcwMWNmNTMyOTg5NWU0MWI4NDM0ZjAxNWY2OTlkNDBk
MzkwZS4uMzYyM2U4NzQ0OTY4YWFhY2MwOWU2YWQyODU0ZWU3OTExMDFhNTljMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
CkBAIC0yOSwxMCArMjksMTIgQEAKIAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZv
aWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiwgaW50NjRfdCk7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAxM2Yx
NzRlNDkzMTAwMWZlYmFlY2E2YWNjMWRlZDkxZDFlMzE4Y2E0Li4wMWFlYjQyNzk4ZTlhY2IxM2E5
NWQ1MWViY2M2MTNjY2E2OTJjZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTg5
LDEzICs4OSwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhU2VudChS
ZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaQogICAgIHJlc291cmNlLT5kYXRh
U2VudChieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGJ1
ZmZlckhhbmRsZSkKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IG1fcmVtb3RlTWVkaWFSZXNvdXJj
ZXMuZ2V0KGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFk
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6Om1hcChidWZmZXJIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkKKyAgICAgICAgcmV0dXJuOworICAgIHJl
c291cmNlLT5kYXRhUmVjZWl2ZWQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVm
ZmVySGFuZGxlLmRhdGFTaXplKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmgKaW5kZXggYmI0ZjhhZTUxOWUzNDhiYzgyZjljMzYxZGFlMTk4ZDlmZjMyZjkyOS4uMTNi
NzZlODBhNDk4Yzk0NWUxYzQ2ZTkxZmQ4NDc5ODJiNWVkNzQxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1BvbGljeUNoZWNrZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CkBAIC02NSw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGJ1ZmZlckhhbmRs
ZSk7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggYTlhNDVjMjFlNDYxMjYyZmEy
NjRjY2VhODY5ZDgxZmNmZmUxNzc4MC4uZGVkOTgwNTM2NDJhNjhmYmZiYzVlNzQ3NWJmMTZhYjBl
OTc4NDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAt
MjksNyArMjksNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBOb3RS
ZWZDb3VudGVkIHsKICAgICBSZXNwb25zZVJlY2VpdmVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgYm9vbCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKSAtPiAoZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgc2hvdWxkQ29udGludWUpIEFzeW5jCiAgICAg
UmVkaXJlY3RSZWNlaXZlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJldHVy
blJlcXVlc3QpIEFzeW5jCiAgICAgRGF0YVNlbnQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNUb0JlU2VudCkKLSAgICBEYXRhUmVjZWl2ZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBE
YXRhUmVjZWl2ZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGRhdGEpCiAgICAgQWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBMb2FkRmFpbGVkKFdl
YktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBMb2FkRmluaXNoZWQoV2ViS2l0OjpSZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCA3MDhiYjI5Zjhm
NzNkNmVkN2ZjZjY3MzkwYzU4MmMxZmViYWQ1Njk1Li5iNTEzYTI2ODA4ZWFhMThlMzdmNGZkZjA0
YTIzZDI5NjBiMjczYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogCkBAIC03Myw3ICs3NCwxOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIElQQzo6RGF0YVJlZmVyZW5jZShkYXRhLCBs
ZW5ndGgpKSwgMCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlKGxlbmd0aCk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9y
eS0+ZGF0YSgpKTsKKyAgICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBsZW5ndGgpOwor
CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIHNoYXJlZE1lbW9yeS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Cisg
ICAgLy8gVGFrZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBhcyBtZWRp
YS1yZWxhdGVkIG1lbW9yeS4KKyAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9y
eUxlZGdlcjo6TWVkaWEpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkg
fSksIDApOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6YWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442701</attachid>
            <date>2021-10-28 06:42:11 -0700</date>
            <delta_ts>2021-10-28 18:06:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232422-20211029004209.patch</filename>
            <type>text/plain</type>
            <size>36171</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDJjMjQyNTkyMWVk
YWI4MTM5NDk0ZTZlOWU3MmQ0OTQyNDA2OC4uMjg1N2U1MWFlNDc3ZTkzNDcyZDhlMTdkYjk1YTZi
M2FhN2JmOTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTEwLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
cGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxlbWVudCwgdGhlIGRvd25sb2FkIGdldHMgY29udHJv
bGxlZCBieSBhCisgICAgICAgIE1lZGlhUmVzb3VyY2UgaW50byBhIFdlYkNvcmVOU1VSTFNlc3Np
b24gdG8gYmUgdXNlZCBieSB0aGUgbWVkaWEgZnJhbWV3b3JrLgorICAgICAgICBUaGUgZGF0YSBn
b3QgY29waWVkIGF0IGxlYXN0IHRocmVlIHRpbWVzIGFsb25nIHRoZSB3YXkgZHVlIHRvIHRoZQor
ICAgICAgICBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGZyYW1ld29yayBhbmQgdGhlIG5l
ZWQgZm9yIHRocmVhZAorICAgICAgICBzYWZldHkuCisgICAgICAgIFRoZSBzaXR1YXRpb24gd2Fz
IG1hZGUgd29yc2Ugd2hlbiB0aGUgY29udGVudCBzZXJ2ZXIgZGlkbid0IHN1cHBvcnQKKyAgICAg
ICAgcmFuZ2UtcmVxdWVzdDogYXMgYSBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIGlzIHRoZW4gdXNl
ZCBieSB0aGUKKyAgICAgICAgV2ViQ29yZU5TVVJMU2Vzc2lvbiB3aGljaCBkb3dubG9hZHMgdGhl
IGVudGlyZSBtZWRpYSB0byBiZSBwbGF5ZWQgYW5kCisgICAgICAgIGtlZXAgaXQgaW4gbWVtb3J5
LgorCisgICAgICAgIEJ5IG1vZGlmeWluZyB0aGUgdmFyaW91cyBhY3RvcnMgYmV0d2VlbiBhIE1l
ZGlhUmVzb3VyY2UgYW5kIFdlYkNvcmVOU1VSTFNlc3Npb24KKyAgICAgICAgdG8gdXNlIFNoYXJl
ZEJ1ZmZlcnMgOyB3ZSBjYW4gcmVtb3ZlIG1vc3QgY29waWVzIGFuZCBhbGxvY2F0aW9uLgorICAg
ICAgICBUaGlzIGFsc28gY29tcGxldGVseSBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBuZXcgbWVt
b3J5IGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQKKyAgICAgICAgY29waWVzIGJ5IHRoZSBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yIG9iamVjdC4KKworICAgICAgICBXaXRoIFdLMiBhbmQgdGhlIEdQVSBw
cm9jZXNzLCBpdCBhbGxvd3MgZm9yIHRoZSBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkIG9uY2UKKyAg
ICAgICAgYW5kIG9ubHkgYmUgYXNzaWduZWQgdG8gdGhlIGNvbnRlbnQgcHJvY2VzcyBieSB1c2lu
ZyBTaGFyZWRNZW1vcnkgd3JhcHBlZAorICAgICAgICBpbiBhIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGUgZnV0dXJlLCBieSByZWZhY3RvcmluZyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB0byB1c2UgU2hhcmVkQnVmZmVycywKKyAgICAgICAgd2UgY291bGQgcmVtb3ZlIGZ1cnRoZXIg
YWxsb2NhdGlvbi9jb3BpZXMuIFdlIGNvdWxkIGxpa2VseSBnZXQgdGhlIGRhdGEgZnJvbSB0aGUK
KyAgICAgICAgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRvIHRoZSBmaW5hbCBjbGllbnQg
aW4gdGhlIEdQVSBwcm9jZXNzIHdpdGhvdXQKKyAgICAgICAgYSBzaW5nbGUgY29weS4gVGhpcyBp
cyB0cmFja2VkIGluIGJ1ZyAyMzI0MjQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFi
bGUgYmVoYXZpb3VyLiBDb3ZlcmVkIGJ5IGFsbCB0aGUgZXhpc3RpbmcgbWVkaWEgdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyRGF0YVZpZXc6OnRyaW0pOiBBZGQgYWJpbGl0eSB0byB0cmltIGEgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGF2b2lkIGhhdmluZyB0byBjb3B5
IGludG8gYSBuZXcgYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6IENyb3NzIGRlY2xhcmF0aW9ucworICAgICAg
ICBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gYWRkIGEgbmV3IFNoYXJlZEJ1ZmZlciBjb25zdHJ1Y3Rv
ciB0aGF0IHdvdWxkIHRha2UgYQorICAgICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDogQWRkIG5ldyBtZXRob2RzLgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOiBVcGRhdGUgdG8gYWxsb3cgZm9y
IGVuZCB0cmltbWluZworICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgKC1bV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjplbmRUcmltOl0pOgor
ICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBsZW5ndGhdKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVu
dDpwb3NpdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKTogQWRkIGEgbmV3IEFQSSB1c2luZworICAg
ICAgICBhIFNoYXJlZEJ1ZmZlci4gV2Uga2VlcCB0aGUgb2xkIG9uZSB0YWtpbmcgYSBwb2ludGVy
L3NpemUgZHVlIHRvIGEgV2ViS2l0CisgICAgICAgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgd2hp
Y2ggYWxsb3dzIHVzIHRvIHNhdmUgYW4gaW50ZXJtZWRpYXJ5IGFsbG9jYXRpb24vY29weQorICAg
ICAgICB3aGVuIHVzZWQgd2l0aCBTaGFyZWRNZW1vcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6IFVwZGF0ZSB0byB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oOiBDaGFuZ2UgcHJvdG90eXBlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZl
ZFJlZGlyZWN0OnJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisKIDIwMjEtMTAtMjIgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdHlwbyBpbiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM4OGFkOWE2NmQxOGYwYTlhYzc0MDQ3Nzc4ZDkyNGYyZDgwODAzZjcuLjBlMzM4
NGYwMWJhMWJhMWQyOWQwMmU0NWIwMTRjMjExMDFlMjJlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzIgQEAKKzIwMjEtMTAtMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIYXZlIFJlbW90ZU1lZGlhUmVzb3VyY2UgdXNlIFNoYXJlZE1lbW9yeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDIyCisgICAgICAg
IHJkYXI6Ly84NDU1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdoZW4gcGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxlbWVudCwgdGhlIGxvYWRp
bmcgZ2V0cyBpbml0aWF0ZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9jZXNzIGFuZCBwcm94aWVk
IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdmlhIGEgUmVtb3RlTWVkaWFSZXNvdXJjZS4KKyAg
ICAgICAgQnkgdXNpbmcgYSBTaGFyZWRCdWZmZXIgaW4gdGhlIFJlbW90ZU1lZGlhUmVzb3VyY2Ug
d3JhcHBpbmcgYSBTaGFyZWRNZW1vcnkKKyAgICAgICAgd2UgY2FuIGFsbG9jYXRlIHRoZSBidWZm
ZXIgaW4gdGhlIGNvbnRlbnQgcHJvY2VzcyBhbmQgcGFzcyBpdCB0byB0aGUgR1BVCisgICAgICAg
IHByb2Nlc3Mgd2l0aG91dCBjb3B5IG5vciBuZXcgYWxsb2NhdGlvbnMuCisgICAgICAgIFBsYXlp
bmcgYSA2OTRNQiBtcDQsIHRoZSBHUFUgbWVtb3J5IHVzYWdlIGdvZXMgZnJvbSA4NjhNQiB0byAx
NE1CIG9uIGFuCisgICAgICAgIGlQaG9uZSBydW5uaW5nIGlPUyAxNS4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQpOiBXcmFwIFNoYXJlZE1lbW9yeSBp
bnRvCisgICAgICAgIGEgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluOiBDaGFuZ2UgZGF0YSB0eXBl
CisgICAgICAgIGZyb20gYW4gSVBDRGF0YVJlZmVyZW5jZSB0byBhIFNoYXJlTWVtb3J5J3MgaGFu
ZGxlLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0
YVJlY2VpdmVkKTogQWxsb2NhdGUgYSBTaGFyZWRNZW1vcnkKKyAgICAgICAgYW5kIGNvcHkgdGhl
IGRvd25sb2FkIGRhdGEgaW50byBpdCwgYmVmb3JlIHNlbmRpbmcgaXQgdG8gdGhlIEdQVSBwcm9j
ZXNzLgorCiAyMDIxLTEwLTI0ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IHJlZmNvdW50IGluY3JlYXNlIHdoZW4gYWNjZXNz
aW5nIG1fcGxheWVyIGluIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYzQ1MTIzODYxZWZkNDczNGYwOGMxYzBkNWUw
ODE0NDllZjI3ODNjZi4uYzE2ZThhMDE1YWQyYjZkMDQ4YjQxYTk5NmNiYzM1YjgzNTZkOWMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00NTEsNyArNDUx
LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ20KIAogc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZWdtZW50LT5zaXplKCkgLSBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICByZXR1cm4gbV9zZWdtZW50LT5zaXplKCkgLSBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudCAtIG1fZW5kVHJpbTsKIH0KIAogY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdApAQCAtNDU5LDYgKzQ1OSwyNCBAQCBjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK3ZvaWQg
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OnRyaW0oc2l6ZV90IGVuZFRyaW0pCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoZW5kVHJpbSA8PSBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50KTsKKyAgICBtX2VuZFRyaW0gPSBlbmRUcmltOworfQorCitSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgICAgICBbZGF0YVZpZXcgPSAqdGhp
c10oKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGFWaWV3LmRhdGEoKSk7CisgICAgICAgIH0sCisgICAgICAgIFtkYXRhVmlldyA9ICp0aGlzXSgp
IHsKKyAgICAgICAgICAgIHJldHVybiBkYXRhVmlldy5zaXplKCk7CisgICAgICAgIH0KKyAgICB9
KTsKK30KKwogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxs
IHRoZSBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRl
eCA1NTVhZDBmZjgxMjlmOTA4ZTBmYzZiMzEyMzkwNWZmNzU4OTY5Y2ExLi5kMTA4ZGUzZmI1N2Ix
ZGYzMmY1NmNkMjIxMTc5NTMwMWJmNWI5MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaApAQCAtMjEwLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICBEYXRhU2VnbWVudFZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJl
Z2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQogICAgIGJvb2wgaGFzT25lU2VnbWVudCgp
IGNvbnN0OwotICAgIAorCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhp
cyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCkBAIC0yNjksMTEgKzI2OSwxNCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KKyAgICB2b2lkIHRyaW0oc2l6
ZV90KTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7CisgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OworICAgIHNp
emVfdCBtX2VuZFRyaW0geyAwIH07CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fc2VnbWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggZGJkODMyMGQzYzQzMDVhOWJiYjZmYWJmNjM5NGJl
MTI0Y2UwZWNjMi4uOWMyYzk4ZTZjOTVjY2M5OTI2MWIzMDY3ZGM5MDlhZjk4OWY1ODQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KQEAgLTM1LDEyICszNSwxMyBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbjsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBlbmRUcmltOihOU1VJbnRlZ2VyKWVuZFRyaW07CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7CiAgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2Vy
IF9wb3NpdGlvbjsKKyAgICBOU1VJbnRlZ2VyIF9lbmRUcmltOwogfQogCiArICh2b2lkKWluaXRp
YWxpemUKQEAgLTYwLDIwICs2MSwyMSBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjoo
TlNVSW50ZWdlcilwb3NpdGlvbgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIGVuZFRyaW06KE5TVUludGVnZXIpZW5kVHJpbQog
ewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXBvc2l0aW9uIHx8IHBvc2l0aW9uIDwgZGF0YVNlZ21lbnQu
c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgoIXBvc2l0aW9uIHx8IHBvc2l0aW9uIDwgZGF0
YVNlZ21lbnQuc2l6ZSgpKSAmJiBlbmRUcmltIDw9IGRhdGFTZWdtZW50LnNpemUoKSAtIHBvc2l0
aW9uKTsKICAgICBfZGF0YVNlZ21lbnQgPSAmZGF0YVNlZ21lbnQ7CiAgICAgX3Bvc2l0aW9uID0g
cG9zaXRpb247CisgICAgX2VuZFRyaW0gPSBlbmRUcmltOwogICAgIHJldHVybiBzZWxmOwogfQog
CiAtIChOU1VJbnRlZ2VyKWxlbmd0aAogewotICAgIHJldHVybiBfZGF0YVNlZ21lbnQtPnNpemUo
KSAtIF9wb3NpdGlvbjsKKyAgICByZXR1cm4gX2RhdGFTZWdtZW50LT5zaXplKCkgLSBfcG9zaXRp
b24gLSBfZW5kVHJpbTsKIH0KIAogLSAoY29uc3Qgdm9pZCAqKWJ5dGVzCkBAIC0xMjUsMTIgKzEy
NywxMiBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJh
eSgpIGNvbnN0CiAKIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjow
XSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10g
aW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIGVuZFRyaW06MF0pOwogfQogCiBS
ZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9j
XSBpbml0V2l0aERhdGFTZWdtZW50Om1fc2VnbWVudC5nZXQoKSBwb3NpdGlvbjptX3Bvc2l0aW9u
V2l0aGluU2VnbWVudF0pOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZl
ckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6bV9zZWdtZW50LmdldCgpIHBvc2l0aW9u
Om1fcG9zaXRpb25XaXRoaW5TZWdtZW50IGVuZFRyaW06bV9lbmRUcmltXSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggYTI4ZTYx
YzAyYTcyY2E5Mzg5YTY4NjMyNWI1NDZlMzFjNGMwNDk4Ni4uNzQ1OWM1ODU4ZDI0ODdlZjJjNWZk
MzcxNzM5ODZiMzM3MzRlYzI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTI4
LDkgKzI4LDExIEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCkBAIC00OSw3ICs1
MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25n
IGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgdXNlcyBTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
bGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA4ZTkwMTBk
Yzg2MDZhYTAwNjZiMmY3YmRmYWE2M2E2YzMxNWIwODhhLi5hOGVlMDMzOTNkNzhlODY0ODVkYTU4
NTlkNTA4Y2NiYWRmODcyYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNj
ZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBs
b2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwg
eyBsb2FkRmluaXNoZWQoKTsgfQpAQCAtMjExLDEyICsyMTEsMTIgQEAgdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlz
aGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUp
Cit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
c2l6ZSk7CisgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICAgICAgbV9idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCmluZGV4IGExNDg4N2ZjNzc1ZTJiOTdiNjlmOWM1OTVhZTgyNzBhYWQ3MTFj
ODUuLjVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRo
b2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJl
YW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTAzLDEzICsx
MTAzLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVl
c3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBHU1Rf
TE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51
bWJlciwgbGVuZ3RoKTsKLQogICAgIC8vIFJvdWdoIGJhbmR3aWR0aCBjYWxjdWxhdGlvbi4gV2Ug
aWdub3JlIGhlcmUgdGhlIGZpcnN0IGRhdGEgcGFja2FnZSBiZWNhdXNlIHdlIHdvdWxkIGhhdmUg
dG8gcmVzZXQgdGhlIGNvdW50ZXJzIHdoZW4gd2UgaXNzdWUgdGhlIHJlcXVlc3QgYW5kCiAgICAg
Ly8gdGhhdCBmaXJzdCBwYWNrYWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Yg
c2VuZGluZyBvdXQgdGhlIHJlcXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ug
d2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlCiAgICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJl
Y2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0ZXIgdG8gaWdub3JlIGl0LgogICAgIGlmICghc3RkOjpp
c25hbihtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkpIHsKLSAgICAgICAgbWVtYmVycy0+dG90
YWxEb3dubG9hZGVkQnl0ZXMgKz0gbGVuZ3RoOworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25s
b2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0
YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNv
bmRzKCk7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBieXRlcyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3Nl
Y29uZCIsIG1fcmVxdWVzdE51bWJlciwgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRp
bWVTaW5jZVN0YXJ0CiAgICAgICAgICAgICAsIHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90
YWxEb3dubG9hZGVkQnl0ZXMgLyB0aW1lU2luY2VTdGFydCA6IDApOwpAQCAtMTExNywxNiArMTEx
NSwyMCBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdQogICAgICAgICBtZW1iZXJzLT5kb3dubG9h
ZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKICAgICB9CiAKLSAgICBtZW1iZXJzLT5yZWFk
UG9zaXRpb24gKz0gbGVuZ3RoOwotICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVt
YmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOworICAgIGJ1ZmZlci0+Zm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IHNlZ21l
bnQuc2l6ZSgpOworICAgICAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0
ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgIGdzdF9lbGVtZW50
X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVt
ZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Vi
a2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwg
bWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNp
emUsIG51bGxwdHIpKSk7CisgICAgICAgIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiArPSBsZW5ndGg7
CisgICAgICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0
aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3Ro
KTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3Jj
KSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVF9DQVNUKHNyYyksCisgICAgICAg
ICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFk
LXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIs
IEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CiAKLSAgICBHc3RCdWZm
ZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoZGF0YSwgbGVu
Z3RoKSwgbGVuZ3RoKTsKLSAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0
KCksIGJ1ZmZlcik7CisgICAgICAgIGNoZWNrVXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7CisgICAg
ICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1
cChzZWdtZW50LmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICAgICAgZ3N0X2FkYXB0ZXJf
cHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgpLCBidWZmZXIpOworICAgIH0pOwogICAgIHN0b3BM
b2FkZXJJZk5lZWRlZChzcmMsIG1lbWJlcnMpOwogICAgIG1lbWJlcnMtPnJlc3BvbnNlQ29uZGl0
aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGNj
NGRhOTcwM2MzNzQ5NGY2NTdkY2ZmYmRmM2JlOTcxOWY0M2EwNWIuLjhjYmFjMmU1MzA5ZWYwNmE5
ZTkzY2Y4NzFmNjg3MzY5NmJiZTI1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
QEAgLTEzOCw3ICsxMzgsOCBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAg
ICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3
LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5k
ZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNv
dXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpidWZmZXJWaWV3LmRhdGEoKSBsZW5ndGg6Ynl0ZXNG
cm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOworICAgICAgICAgICAgYnVmZmVyVmlldy50cmltKGJ1ZmZl
clZpZXcuc2l6ZSgpIC0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpOworICAgICAgICAgICAg
W3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6YnVmZmVyVmlldy5jcmVhdGVTaGFy
ZWRCdWZmZXIoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5l
bmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNz
Ok5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAtMjQ0LDcgKzI0NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91
cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBkYXRhLT5i
dWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2
ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oCmluZGV4IDA1NzZlZDg4MTI0MTA4MjI0NDc2Y2I2YmI3NTU4Zjk1Yzlj
Nzg1ZTYuLmVkMDVlNmZmYjQ2MzgyY2UyNjg3ZmIwMDRjMmQ4Mzc3ZDBkYTI4ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDx3dGYvSGFzaFNldC5o
PgogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2lt
cG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CkBAIC00OSw2ICs1MCw4IEBA
IGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2sgOiBib29sOwogfQpAQCAtMTU1LDcgKzE1OCw4IEBAIFdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2Vu
dEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoo
dW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2
ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29t
cGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3Vs
ZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNl
OwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IHVpbnQ4X3QqKWRhdGEgbGVuZ3RoOihp
bnQpbGVuZ3RoOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldyYpZGF0YSBsZW5ndGg6KGludClsZW5ndGg7CiAtICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3Bv
bnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjN2NhODQyNWU4YjQ0NmMzZTY1
ODI5OGMxYWUxNGExOTQxMGQyZjE1Li5lZTZhNTY3NTRmNjY4Yjg2OWUwYzE0NWYxNDk5MjU5MGE3
MzkyZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMjksNiArMjksNyBAQAog
I2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0ICJQYXJzZWRSZXF1ZXN0
UmFuZ2UuaCIKICNpbXBvcnQgIlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIgorI2ltcG9y
dCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2ltcG9y
dCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
Lmg+CkBAIC02MDcsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0
YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8p
IG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpA
QCAtNjUxLDEzICs2NTIsMTMgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4g
W21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07
CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBp
ZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fdGFzayByZXNvdXJjZTomcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOmRhdGEgbGVuZ3RoOmxlbmd0aF07CisgICAgW21fdGFzayByZXNv
dXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOldURk1vdmUoYnVmZmVyKV07CiB9CiAKIHZvaWQg
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkwOSwxMiArOTEwLDEw
IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihjb25zdCB1aW50OF90KilkYXRhIGxlbmd0aDooaW50KWxlbmd0aAorLSAodm9pZClyZXNv
dXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZE5TRGF0YTooTlNE
YXRhKiluc0RhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7Ci0gICAgUmV0YWluUHRy
PE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpk
YXRhIGxlbmd0aDpsZW5ndGhdKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdh
dGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIGxlbmd0aCwgbnNEYXRhXSB7CisgICAgW3NlbGYuc2Vz
c2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYg
fSwgbnNEYXRhID0gUmV0YWluUHRyIHsgbnNEYXRhIH0sIGxlbmd0aF0gewogICAgICAgICBzdHJv
bmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGxlbmd0aDsKICAgICAgICAgaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9u
RGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAg
IGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lv
bjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKQEAgLTkyMiw2ICs5MjEsMTggQEAgLSAodm9p
ZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KGNvbnN0IHVpbnQ4X3QqKWQKICAgICB9XTsKIH0KIAorLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpZGF0YQoreworICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgW3NlbGYgcmVzb3VyY2U6cmVzb3VyY2UgcmVjZWl2ZWROU0RhdGE6bnNEYXRhLmdl
dCgpIGxlbmd0aDpkYXRhLT5zaXplKCldOworfQorCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcmKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoCit7CisgICAgYXV0byBu
c0RhdGEgPSBkYXRhLmNyZWF0ZU5TRGF0YSgpOworICAgIFtzZWxmIHJlc291cmNlOnJlc291cmNl
IHJlY2VpdmVkTlNEYXRhOm5zRGF0YS5nZXQoKSBsZW5ndGg6ZGF0YS5zaXplKCldOworfQorCiAt
ICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
UmVkaXJlY3Q6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFJlc291
cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7
CkBAIC05MzMsNyArOTQ0LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXIKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAg
ICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRp
b25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sg
PSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5k
ZXggOTAyMzU0YTk5MzFmZWQxNTU5ZTU0ZTQxYjFjMDA1OWFlODcxODIzNy4uYzQ1ZTUyNTVkNjdi
NTJjN2FlMTA0NDk5ODhjZTAxOTBjN2ZmYjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsMTAgKzk2
LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNT
ZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2Vu
dCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQ2NF90
IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LT5k
YXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCmluZGV4IDliNDA3MDFjZjUzMjk4OTVlNDFiODQzNGYwMTVmNjk5ZDQwZDM5
MGUuLmQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApA
QCAtMjksMTAgKzI5LDEyIEBACiAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lk
IGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29u
c3QgdWludDhfdCosIGludDY0X3QpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5k
ZXggMTNmMTc0ZTQ5MzEwMDFmZWJhZWNhNmFjYzFkZWQ5MWQxZTMxOGNhNC4uMDFhZWI0Mjc5OGU5
YWNiMTNhOTVkNTFlYmNjNjEzY2NhNjkyY2Q1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
CkBAIC04OSwxMyArODksMTYgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0
YVNlbnQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmkKICAgICByZXNvdXJj
ZS0+ZGF0YVNlbnQoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQor
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJiBidWZmZXJIYW5kbGUpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBtX3JlbW90ZU1lZGlh
UmVzb3VyY2VzLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJj
ZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZl
ZChkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjptYXAoYnVmZmVySGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsK
KyAgICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVm
ZmVyKGJ1ZmZlckhhbmRsZS5kYXRhU2l6ZSkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5oCmluZGV4IGJiNGY4YWU1MTllMzQ4YmM4MmY5YzM2MWRhZTE5OGQ5ZmYzMmY5
MjkuLjEzYjc2ZTgwYTQ5OGM5NDVlMWM0NmU5MWZkODQ3OTgyYjVlZDc0MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNjUsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRh
U2VudChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QsIHVpbnQ2NF90KTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBidWZm
ZXJIYW5kbGUpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBsb2FkRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGE5YTQ1YzIxZTQ2
MTI2MmZhMjY0Y2NlYTg2OWQ4MWZjZmZlMTc3ODAuLmRlZDk4MDUzNjQyYTY4ZmJmYmM1ZTc0NzVi
ZjE2YWIwZTk3ODQ3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVzcG9uc2VSZWNlaXZlZChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaykgLT4gKGVudW06Ym9v
bCBXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENvbnRpbnVlKSBBc3lu
YwogICAgIFJlZGlyZWN0UmVjZWl2ZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXR1cm5SZXF1ZXN0KSBBc3luYwogICAgIERhdGFTZW50KFdlYktpdDo6UmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzVG9CZVNlbnQpCi0gICAgRGF0YVJlY2VpdmVkKFdlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEp
CisgICAgRGF0YVJlY2VpdmVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgTG9hZEZh
aWxlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgTG9hZEZpbmlzaGVkKFdlYktpdDo6UmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKaW5kZXggNzA4
YmIyOWY4ZjczZDZlZDdmY2Y2NzM5MGM1ODJjMWZlYmFkNTY5NS4uYjUxM2EyNjgwOGVhYTE4ZTM3
ZjRmZGYwNGEyM2QyOTYwYjI3M2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRN
ZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzMsNyArNzQsMTggQEAgdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmUKIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZl
ZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
ZGF0YSwgbGVuZ3RoKSksIDApOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShsZW5ndGgpOworICAgIGlmICghc2hhcmVkTWVtb3J5KQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIHNoYXJlZE1lbW9yeVB0ciA9IHN0YXRpY19jYXN0PGNoYXIqPihzaGFy
ZWRNZW1vcnktPmRhdGEoKSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeVB0ciwgZGF0YSwgbGVu
Z3RoKTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBzaGFyZWRNZW1v
cnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIC8vIFRha2Ugb3duZXJzaGlwIG9mIHNoYXJlZCBtZW1vcnkgYW5kIG1hcmsgaXQg
YXMgbWVkaWEtcmVsYXRlZCBtZW1vcnkuCisgICAgaGFuZGxlLnRha2VPd25lcnNoaXBPZk1lbW9y
eShNZW1vcnlMZWRnZXI6Ok1lZGlhKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihs
ZW5ndGgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442771</attachid>
            <date>2021-10-28 18:06:58 -0700</date>
            <delta_ts>2021-10-29 02:33:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232422-20211029120657.patch</filename>
            <type>text/plain</type>
            <size>37057</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDJjMjQyNTkyMWVk
YWI4MTM5NDk0ZTZlOWU3MmQ0OTQyNDA2OC4uMDlkMmZiYWJjZTMyNWU4MWIyZWRjNDg5MTc3NDdj
ZWE4ZGQ0MDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTEwLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
cGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxlbWVudCwgdGhlIGRvd25sb2FkIGdldHMgY29udHJv
bGxlZCBieSBhCisgICAgICAgIE1lZGlhUmVzb3VyY2UgaW50byBhIFdlYkNvcmVOU1VSTFNlc3Np
b24gdG8gYmUgdXNlZCBieSB0aGUgbWVkaWEgZnJhbWV3b3JrLgorICAgICAgICBUaGUgZGF0YSBn
b3QgY29waWVkIGF0IGxlYXN0IHRocmVlIHRpbWVzIGFsb25nIHRoZSB3YXkgZHVlIHRvIHRoZQor
ICAgICAgICBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGZyYW1ld29yayBhbmQgdGhlIG5l
ZWQgZm9yIHRocmVhZAorICAgICAgICBzYWZldHkuCisgICAgICAgIFRoZSBzaXR1YXRpb24gd2Fz
IG1hZGUgd29yc2Ugd2hlbiB0aGUgY29udGVudCBzZXJ2ZXIgZGlkbid0IHN1cHBvcnQKKyAgICAg
ICAgcmFuZ2UtcmVxdWVzdDogYXMgYSBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIGlzIHRoZW4gdXNl
ZCBieSB0aGUKKyAgICAgICAgV2ViQ29yZU5TVVJMU2Vzc2lvbiB3aGljaCBkb3dubG9hZHMgdGhl
IGVudGlyZSBtZWRpYSB0byBiZSBwbGF5ZWQgYW5kCisgICAgICAgIGtlZXAgaXQgaW4gbWVtb3J5
LgorCisgICAgICAgIEJ5IG1vZGlmeWluZyB0aGUgdmFyaW91cyBhY3RvcnMgYmV0d2VlbiBhIE1l
ZGlhUmVzb3VyY2UgYW5kIFdlYkNvcmVOU1VSTFNlc3Npb24KKyAgICAgICAgdG8gdXNlIFNoYXJl
ZEJ1ZmZlcnMgOyB3ZSBjYW4gcmVtb3ZlIG1vc3QgY29waWVzIGFuZCBhbGxvY2F0aW9uLgorICAg
ICAgICBUaGlzIGFsc28gY29tcGxldGVseSBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBuZXcgbWVt
b3J5IGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQKKyAgICAgICAgY29waWVzIGJ5IHRoZSBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yIG9iamVjdC4KKworICAgICAgICBXaXRoIFdLMiBhbmQgdGhlIEdQVSBw
cm9jZXNzLCBpdCBhbGxvd3MgZm9yIHRoZSBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkIG9uY2UKKyAg
ICAgICAgYW5kIG9ubHkgYmUgYXNzaWduZWQgdG8gdGhlIGNvbnRlbnQgcHJvY2VzcyBieSB1c2lu
ZyBTaGFyZWRNZW1vcnkgd3JhcHBlZAorICAgICAgICBpbiBhIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGUgZnV0dXJlLCBieSByZWZhY3RvcmluZyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB0byB1c2UgU2hhcmVkQnVmZmVycywKKyAgICAgICAgd2UgY291bGQgcmVtb3ZlIGZ1cnRoZXIg
YWxsb2NhdGlvbi9jb3BpZXMuIFdlIGNvdWxkIGxpa2VseSBnZXQgdGhlIGRhdGEgZnJvbSB0aGUK
KyAgICAgICAgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRvIHRoZSBmaW5hbCBjbGllbnQg
aW4gdGhlIEdQVSBwcm9jZXNzIHdpdGhvdXQKKyAgICAgICAgYSBzaW5nbGUgY29weS4gVGhpcyBp
cyB0cmFja2VkIGluIGJ1ZyAyMzI0MjQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFi
bGUgYmVoYXZpb3VyLiBDb3ZlcmVkIGJ5IGFsbCB0aGUgZXhpc3RpbmcgbWVkaWEgdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyRGF0YVZpZXc6OnRyaW0pOiBBZGQgYWJpbGl0eSB0byB0cmltIGEgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGF2b2lkIGhhdmluZyB0byBjb3B5
IGludG8gYSBuZXcgYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6IENyb3NzIGRlY2xhcmF0aW9ucworICAgICAg
ICBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gYWRkIGEgbmV3IFNoYXJlZEJ1ZmZlciBjb25zdHJ1Y3Rv
ciB0aGF0IHdvdWxkIHRha2UgYQorICAgICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDogQWRkIG5ldyBtZXRob2RzLgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOiBVcGRhdGUgdG8gYWxsb3cgZm9y
IGVuZCB0cmltbWluZworICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgKC1bV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjplbmRUcmltOl0pOgor
ICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBsZW5ndGhdKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVu
dDpwb3NpdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKTogQWRkIGEgbmV3IEFQSSB1c2luZworICAg
ICAgICBhIFNoYXJlZEJ1ZmZlci4gV2Uga2VlcCB0aGUgb2xkIG9uZSB0YWtpbmcgYSBwb2ludGVy
L3NpemUgZHVlIHRvIGEgV2ViS2l0CisgICAgICAgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgd2hp
Y2ggYWxsb3dzIHVzIHRvIHNhdmUgYW4gaW50ZXJtZWRpYXJ5IGFsbG9jYXRpb24vY29weQorICAg
ICAgICB3aGVuIHVzZWQgd2l0aCBTaGFyZWRNZW1vcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6IFVwZGF0ZSB0byB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oOiBDaGFuZ2UgcHJvdG90eXBlcy4KKyAgICAgICAgRmx5LWJ5IGZpeCwg
cHJvcGVydHkgY291bnRPZkJ5dGVzUmVjZWl2ZWQgbmVlZGVkIHRvIGJlIGF0b21pYy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZTpyZWNlaXZlZFJlZGlyZWN0OnJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisK
IDIwMjEtMTAtMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggdHlwbyBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVW
aWRlb1RyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM4OGFkOWE2NmQxOGYwYTlhYzc0MDQ3Nzc4ZDkyNGYy
ZDgwODAzZjcuLjBlMzM4NGYwMWJhMWJhMWQyOWQwMmU0NWIwMTRjMjExMDFlMjJlMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMTAtMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIFJlbW90ZU1lZGlhUmVzb3VyY2UgdXNlIFNoYXJl
ZE1lbW9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxl
bWVudCwgdGhlIGxvYWRpbmcgZ2V0cyBpbml0aWF0ZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9j
ZXNzIGFuZCBwcm94aWVkIHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdmlhIGEgUmVtb3RlTWVk
aWFSZXNvdXJjZS4KKyAgICAgICAgQnkgdXNpbmcgYSBTaGFyZWRCdWZmZXIgaW4gdGhlIFJlbW90
ZU1lZGlhUmVzb3VyY2Ugd3JhcHBpbmcgYSBTaGFyZWRNZW1vcnkKKyAgICAgICAgd2UgY2FuIGFs
bG9jYXRlIHRoZSBidWZmZXIgaW4gdGhlIGNvbnRlbnQgcHJvY2VzcyBhbmQgcGFzcyBpdCB0byB0
aGUgR1BVCisgICAgICAgIHByb2Nlc3Mgd2l0aG91dCBjb3B5IG5vciBuZXcgYWxsb2NhdGlvbnMu
CisgICAgICAgIFBsYXlpbmcgYSA2OTRNQiBtcDQsIHRoZSBHUFUgbWVtb3J5IHVzYWdlIGdvZXMg
ZnJvbSA4NjhNQiB0byAxNE1CIG9uIGFuCisgICAgICAgIGlQaG9uZSBydW5uaW5nIGlPUyAxNS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQpOiBXcmFw
IFNoYXJlZE1lbW9yeSBpbnRvCisgICAgICAgIGEgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluOiBD
aGFuZ2UgZGF0YSB0eXBlCisgICAgICAgIGZyb20gYW4gSVBDRGF0YVJlZmVyZW5jZSB0byBhIFNo
YXJlTWVtb3J5J3MgaGFuZGxlLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKTogQWxsb2NhdGUgYSBTaGFyZWRNZW1vcnkKKyAgICAg
ICAgYW5kIGNvcHkgdGhlIGRvd25sb2FkIGRhdGEgaW50byBpdCwgYmVmb3JlIHNlbmRpbmcgaXQg
dG8gdGhlIEdQVSBwcm9jZXNzLgorCiAyMDIxLTEwLTI0ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IHJlZmNvdW50IGluY3Jl
YXNlIHdoZW4gYWNjZXNzaW5nIG1fcGxheWVyIGluIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYzQ1MTIzODYxZWZk
NDczNGYwOGMxYzBkNWUwODE0NDllZjI3ODNjZi4uNTI0NDk4ZGE2Y2IwYTNjNGIwZTMzYjg3MDg2
NzhmYWIwNDJhZWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC00NDIsMTYgKzQ0MiwyMiBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVE
YXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQpCi0gICAgOiBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhp
blNlZ21lbnQpCi0gICAgLCBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQorICAg
ICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQorICAgICwg
bV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5T
ZWdtZW50KQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50IDwg
bV9zZWdtZW50LT5zaXplKCkgJiYgbV9zaXplIDw9IG1fc2VnbWVudC0+c2l6ZSgpIC0gbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaXplX3QgbmV3
U2l6ZSkKKyAgICA6IFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGFkb3B0UmVmKG90aGVyLm1fc2VnbWVu
dC5nZXQoKSksIG90aGVyLm1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBuZXdTaXplKQogewotICAg
IFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uV2l0aGluU2VnbWVudCA8IG1fc2VnbWVudC0+c2l6ZSgp
KTsKIH0KIAogc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAg
ICByZXR1cm4gbV9zaXplOwogfQogCiBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6ZGF0YSgpIGNvbnN0CkBAIC00NTksNiArNDY1LDE3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRh
KCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Cisg
ICAgY29uc3Qgc2l6ZV90IHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgY29uc3QgdWludDhfdCog
ZGF0YSA9IHRoaXMtPmRhdGEoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbPV0oKSB7IHJldHVy
biBkYXRhOyB9LAorICAgICAgICBbPV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgfSk7Cit9CisK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hh
cmFjdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNTU1YWQw
ZmY4MTI5ZjkwOGUwZmM2YjMxMjM5MDVmZjc1ODk2OWNhMS4uMTQ3NmJjNWI0MDQ2MjQyYTM4M2I5
YWVkY2EzNzMwZjQ1MWIwN2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKQEAgLTIxMCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9
CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KICAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsK
LSAgICAKKwogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMg
Tyhsb2coTikpIHRpbWUuCiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdDsKIApAQCAtMjY1LDE2ICsyNjUsMTkgQEAgaW5saW5lIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QpOworICAgIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXpl
X3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVy
RGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAg
ICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNv
bnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICBjb25zdCBzaXplX3QgbV9z
aXplOwogfTsKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29j
b2EubW0KaW5kZXggZGJkODMyMGQzYzQzMDVhOWJiYjZmYWJmNjM5NGJlMTI0Y2UwZWNjMi4uMGVl
NDcyZWVjMGViMGFhN2Q4Y2U4NGVjNmZjYTJiMjgxNWUyZDk2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDEyICsz
NSwxMyBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2Ug
V2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jilk
YXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbjsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihO
U1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVm
ZmVyRGF0YSB7CiAgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKKyAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQogCiArICh2b2lkKWluaXRpYWxpemUKQEAgLTYwLDIwICs2MSwyMSBA
QCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbgorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoIXBvc2l0aW9u
IHx8IHBvc2l0aW9uIDwgZGF0YVNlZ21lbnQuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgo
IXBvc2l0aW9uIHx8IHBvc2l0aW9uIDwgZGF0YVNlZ21lbnQuc2l6ZSgpKSAmJiBzaXplIDw9IGRh
dGFTZWdtZW50LnNpemUoKSAtIHBvc2l0aW9uKTsKICAgICBfZGF0YVNlZ21lbnQgPSAmZGF0YVNl
Z21lbnQ7CiAgICAgX3Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgX3NpemUgPSBzaXplOwogICAg
IHJldHVybiBzZWxmOwogfQogCiAtIChOU1VJbnRlZ2VyKWxlbmd0aAogewotICAgIHJldHVybiBf
ZGF0YVNlZ21lbnQtPnNpemUoKSAtIF9wb3NpdGlvbjsKKyAgICByZXR1cm4gX3NpemU7CiB9CiAK
IC0gKGNvbnN0IHZvaWQgKilieXRlcwpAQCAtMTI1LDEyICsxMjcsMTIgQEAgUmV0YWluUHRyPE5T
QXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogCiBSZXRhaW5Q
dHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25z
dAogewotICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2Nd
IGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MF0pOworICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6
KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
YWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdt
ZW50Om1fc2VnbWVudC5nZXQoKSBwb3NpdGlvbjptX3Bvc2l0aW9uV2l0aGluU2VnbWVudF0pOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRX
aXRoRGF0YVNlZ21lbnQ6bV9zZWdtZW50LmdldCgpIHBvc2l0aW9uOm1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50IHNpemU6bV9zaXplXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggYTI4ZTYxYzAyYTcyY2E5Mzg5YTY4NjMyNWI1NDZl
MzFjNGMwNDk4Ni4uNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTI4LDkgKzI4LDExIEBACiAjaWYgRU5BQkxF
KFZJREVPKQogCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogCkBAIC00OSw3ICs1MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
ZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCisg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRm
b3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0
Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA4ZTkwMTBkYzg2MDZhYTAwNjZiMmY3YmRmYWE2M2E2
YzMxNWIwODhhLi5hOGVlMDMzOTNkNzhlODY0ODVkYTU4NTlkNTA4Y2NiYWRmODcyYmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7
IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQo
ZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQpAQCAt
MjExLDEyICsyMTEsMTIgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRG
aW5pc2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAgIG1fYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGExNDg4
N2ZjNzc1ZTJiOTdiNjlmOWM1OTVhZTgyNzBhYWQ3MTFjODUuLjVkODZmYjFhZjQ4N2MwMjg5ZTAw
MTI1NTk2NWMzMWRjZGE5NzM0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olll
cyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VC
X1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTAzLDEzICsxMTAzLDExIEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCB1CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVt
YmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhh
dmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKLQogICAgIC8v
IFJvdWdoIGJhbmR3aWR0aCBjYWxjdWxhdGlvbi4gV2UgaWdub3JlIGhlcmUgdGhlIGZpcnN0IGRh
dGEgcGFja2FnZSBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgdG8gcmVzZXQgdGhlIGNvdW50ZXJzIHdo
ZW4gd2UgaXNzdWUgdGhlIHJlcXVlc3QgYW5kCiAgICAgLy8gdGhhdCBmaXJzdCBwYWNrYWdlIGRl
bGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Ygc2VuZGluZyBvdXQgdGhlIHJlcXVlc3Qg
YW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhl
CiAgICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJlY2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0
ZXIgdG8gaWdub3JlIGl0LgogICAgIGlmICghc3RkOjppc25hbihtZW1iZXJzLT5kb3dubG9hZFN0
YXJ0VGltZSkpIHsKLSAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gbGVu
Z3RoOworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNp
emUoKTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAt
IG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CiAgICAgICAgIEdTVF9UUkFD
RV9PQkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBieXRl
cyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3NlY29uZCIsIG1fcmVxdWVzdE51bWJlciwg
bWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0CiAgICAgICAgICAg
ICAsIHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgLyB0aW1l
U2luY2VTdGFydCA6IDApOwpAQCAtMTExNywxNiArMTExNSwyMCBAQCB2b2lkIENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgdQogICAgICAgICBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpu
b3coKTsKICAgICB9CiAKLSAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAg
IEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1l
bWJlcnMtPnNpemUpOworICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IHNlZ21lbnQuc2l6ZSgpOworICAgICAgICBHU1Rf
TE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51
bWJlciwgbGVuZ3RoKTsKIAotICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVO
VF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMp
LAotICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIs
ICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAi
c2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisgICAgICAg
IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgIEFTU0VSVCghbWVtYmVy
cy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwog
Ci0gICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRf
cG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1l
bnQoR1NUX09CSkVDVF9DQVNUKHNyYyksCisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygi
d2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2
NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMt
PnNpemUsIG51bGxwdHIpKSk7CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5l
d1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAoZGF0YSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAgICBnc3Rf
YWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGNo
ZWNrVXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7CisgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0g
Z3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChzZWdtZW50LmRhdGEoKSwgbGVuZ3Ro
KSwgbGVuZ3RoKTsKKyAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1iZXJzLT5hZGFwdGVyLmdl
dCgpLCBidWZmZXIpOworICAgIH0pOwogICAgIHN0b3BMb2FkZXJJZk5lZWRlZChzcmMsIG1lbWJl
cnMpOwogICAgIG1lbWJlcnMtPnJlc3BvbnNlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGNjNGRhOTcwM2MzNzQ5NGY2NTdkY2ZmYmRm
M2JlOTcxOWY0M2EwNWIuLjFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lk
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdl
UmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1Zp
ZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0
ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdU
b0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0
YTpidWZmZXJWaWV3LmRhdGEoKSBsZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOwor
ICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJh
bmdlLmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1l
dHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTIs
NyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdl
dChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIGRh
dGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9y
LT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggMDU3NmVkODgxMjQxMDgyMjQ0NzZjYjZiYjc1NThm
OTVjOWM3ODVlNi4uNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+
CisjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTQ5LDYgKzUw
LDggQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjayA6IGJvb2w7CiB9CkBAIC0xMzgsNyArMTQxLDcgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5
IChjb3B5KSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKIEBwcm9wZXJ0eSAoY29weSkg
TlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzdDsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkp
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlOwotQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVz
UmVjZWl2ZWQ7CitAcHJvcGVydHkgKGFzc2lnbiwgYXRvbWljKSBpbnQ2NF90IGNvdW50T2ZCeXRl
c1JlY2VpdmVkOwogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2VudDsKIEBwcm9wZXJ0
eSBpbnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3BlcnR5IGludDY0X3Qg
Y291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7CkBAIC0xNTUsNyArMTU4LDcgQEAgV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRl
c1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJP
T0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0
YSBsZW5ndGg6KGludClsZW5ndGg7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxh
YmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdp
dGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KaW5kZXggYzdjYTg0MjVlOGI0NDZjM2U2NTgyOThjMWFlMTRhMTk0MTBkMmYx
NS4uZGU5NDVhZTUzNzZhYzk1MDJlMjUxYTkwYmYyZjZkNTJhNTUzMjA5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAj
aW1wb3J0ICJjb25maWcuaCIKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkNhY2hlZFJlc291
cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiUGFyc2VkUmVxdWVzdFJhbmdlLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgog
I2ltcG9ydCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFz
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgpAQCAtNjA3LDcgKzYwOCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBs
b2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1MSwxMyArNjUyLDEzIEBA
IGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3Bv
bnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJl
c291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAg
IHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpk
YXRhIGxlbmd0aDpsZW5ndGhdOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2Vp
dmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJl
c291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC05MDksMTMgKzkxMCwxMiBAQCAtIChCT09MKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCop
ZGF0YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVz
b3VyY2UgPT0gX3Jlc291cmNlKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEgbGVuZ3RoOmxlbmd0aF0pOwot
ICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBz
ZWxmIH07Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2Vs
ZiwgbGVuZ3RoLCBuc0RhdGFdIHsKLSAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0
ZXNSZWNlaXZlZCArPSBsZW5ndGg7CisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJh
dGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0
YSldIHsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7
OwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxl
Z2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQogICAgICAgICAgICAg
W2RhdGFEZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgp
LnNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5nZXQo
KSBkaWRSZWNlaXZlRGF0YTpuc0RhdGEuZ2V0KCldOwpAQCAtOTMzLDcgKzkzMyw3IEBAIC0gKHZv
aWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRp
cmVjdDooY29uc3QgUmVzb3VyCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdh
dGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1Nl
bGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjopXSkgewogICAgICAgICAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckJsb2NrID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1VSTFJlcXVlc3QgKm5ld1Jl
cXVlc3QpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDkwMjM1NGE5OTMxZmVkMTU1OWU1NGU0
MWIxYzAwNTlhZTg3MTgyMzcuLmM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDEwICs5NiwxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1Rv
QmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxC
eXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50NjRfdCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRh
LCBsZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA5YjQwNzAx
Y2Y1MzI5ODk1ZTQxYjg0MzRmMDE1ZjY5OWQ0MGQzOTBlLi5kMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2
OWE0ZDQxOWNkMDUzYmI3OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTI5LDEwICsyOSwxMiBAQAogCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0
X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBpbnQ2NF90KTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IDEzZjE3NGU0OTMxMDAxZmViYWVjYTZh
Y2MxZGVkOTFkMWUzMThjYTQuLjAxYWViNDI3OThlOWFjYjEzYTk1ZDUxZWJjYzYxM2NjYTY5MmNk
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtODksMTMgKzg5LDE2IEBAIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFTZW50KFJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyIGlkZW50aWZpCiAgICAgcmVzb3VyY2UtPmRhdGFTZW50KGJ5dGVzU2VudCwgdG90
YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
ZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI6OmRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgYnVmZmVySGFuZGxlKQogewogICAg
IGF1dG8qIHJlc291cmNlID0gbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWRlbnRpZmllcik7
CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHJlc291cmNlLT5kYXRhUmVjZWl2ZWQoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGJ1ZmZlckhhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGlmICgh
c2hhcmVkTWVtb3J5KQorICAgICAgICByZXR1cm47CisgICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZl
ZChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJIYW5kbGUuZGF0YVNpemUp
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6YWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCBiYjRmOGFl
NTE5ZTM0OGJjODJmOWMzNjFkYWUxOThkOWZmMzJmOTI5Li4xM2I3NmU4MGE0OThjOTQ1ZTFjNDZl
OTFmZDg0Nzk4MmI1ZWQ3NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hlY2tlci5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTY1
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5
Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQoUmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgYnVmZmVySGFuZGxlKTsKICAgICB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChSZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5tZXNzYWdlcy5pbgppbmRleCBhOWE0NWMyMWU0NjEyNjJmYTI2NGNjZWE4NjlkODFmY2ZmZTE3
NzgwLi5kZWQ5ODA1MzY0MmE2OGZiZmJjNWU3NDc1YmYxNmFiMGU5Nzg0NzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIFJl
c3BvbnNlUmVjZWl2ZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIGRpZFBhc3NB
Y2Nlc3NDb250cm9sQ2hlY2spIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayBzaG91bGRDb250aW51ZSkgQXN5bmMKICAgICBSZWRpcmVjdFJlY2VpdmVkKFdl
YktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmV0dXJuUmVxdWVzdCkgQXN5bmMKICAg
ICBEYXRhU2VudChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQotICAg
IERhdGFSZWNlaXZlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIERhdGFSZWNlaXZlZChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgZGF0YSkKICAgICBBY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQogICAgIExvYWRGYWlsZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQogICAgIExvYWRGaW5pc2hlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlUHJveHkuY3BwCmluZGV4IDcwOGJiMjlmOGY3M2Q2ZWQ3ZmNmNjczOTBjNTgy
YzFmZWJhZDU2OTUuLmI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIyNzNiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAK
QEAgLTczLDcgKzc0LDE4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhU2Vu
dChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lCiAKIHZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVj
ZWl2ZWQobV9pZCwgSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0aCkpLCAwKTsKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUobGVuZ3RoKTsKKyAgICBp
ZiAoIXNoYXJlZE1lbW9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzaGFyZWRNZW1v
cnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOworICAgIG1l
bWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0aCk7CisKKyAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBoYW5kbGU7CisgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAvLyBUYWtlIG93bmVyc2hp
cCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5Lgor
ICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Cisg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZSho
YW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442798</attachid>
            <date>2021-10-29 02:33:15 -0700</date>
            <delta_ts>2021-10-29 15:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232422-20211029203314.patch</filename>
            <type>text/plain</type>
            <size>37053</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDJjMjQyNTkyMWVk
YWI4MTM5NDk0ZTZlOWU3MmQ0OTQyNDA2OC4uMDlkMmZiYWJjZTMyNWU4MWIyZWRjNDg5MTc3NDdj
ZWE4ZGQ0MDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTEwLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
cGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxlbWVudCwgdGhlIGRvd25sb2FkIGdldHMgY29udHJv
bGxlZCBieSBhCisgICAgICAgIE1lZGlhUmVzb3VyY2UgaW50byBhIFdlYkNvcmVOU1VSTFNlc3Np
b24gdG8gYmUgdXNlZCBieSB0aGUgbWVkaWEgZnJhbWV3b3JrLgorICAgICAgICBUaGUgZGF0YSBn
b3QgY29waWVkIGF0IGxlYXN0IHRocmVlIHRpbWVzIGFsb25nIHRoZSB3YXkgZHVlIHRvIHRoZQor
ICAgICAgICBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGZyYW1ld29yayBhbmQgdGhlIG5l
ZWQgZm9yIHRocmVhZAorICAgICAgICBzYWZldHkuCisgICAgICAgIFRoZSBzaXR1YXRpb24gd2Fz
IG1hZGUgd29yc2Ugd2hlbiB0aGUgY29udGVudCBzZXJ2ZXIgZGlkbid0IHN1cHBvcnQKKyAgICAg
ICAgcmFuZ2UtcmVxdWVzdDogYXMgYSBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIGlzIHRoZW4gdXNl
ZCBieSB0aGUKKyAgICAgICAgV2ViQ29yZU5TVVJMU2Vzc2lvbiB3aGljaCBkb3dubG9hZHMgdGhl
IGVudGlyZSBtZWRpYSB0byBiZSBwbGF5ZWQgYW5kCisgICAgICAgIGtlZXAgaXQgaW4gbWVtb3J5
LgorCisgICAgICAgIEJ5IG1vZGlmeWluZyB0aGUgdmFyaW91cyBhY3RvcnMgYmV0d2VlbiBhIE1l
ZGlhUmVzb3VyY2UgYW5kIFdlYkNvcmVOU1VSTFNlc3Npb24KKyAgICAgICAgdG8gdXNlIFNoYXJl
ZEJ1ZmZlcnMgOyB3ZSBjYW4gcmVtb3ZlIG1vc3QgY29waWVzIGFuZCBhbGxvY2F0aW9uLgorICAg
ICAgICBUaGlzIGFsc28gY29tcGxldGVseSBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBuZXcgbWVt
b3J5IGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQKKyAgICAgICAgY29waWVzIGJ5IHRoZSBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yIG9iamVjdC4KKworICAgICAgICBXaXRoIFdLMiBhbmQgdGhlIEdQVSBw
cm9jZXNzLCBpdCBhbGxvd3MgZm9yIHRoZSBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkIG9uY2UKKyAg
ICAgICAgYW5kIG9ubHkgYmUgYXNzaWduZWQgdG8gdGhlIGNvbnRlbnQgcHJvY2VzcyBieSB1c2lu
ZyBTaGFyZWRNZW1vcnkgd3JhcHBlZAorICAgICAgICBpbiBhIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGUgZnV0dXJlLCBieSByZWZhY3RvcmluZyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB0byB1c2UgU2hhcmVkQnVmZmVycywKKyAgICAgICAgd2UgY291bGQgcmVtb3ZlIGZ1cnRoZXIg
YWxsb2NhdGlvbi9jb3BpZXMuIFdlIGNvdWxkIGxpa2VseSBnZXQgdGhlIGRhdGEgZnJvbSB0aGUK
KyAgICAgICAgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRvIHRoZSBmaW5hbCBjbGllbnQg
aW4gdGhlIEdQVSBwcm9jZXNzIHdpdGhvdXQKKyAgICAgICAgYSBzaW5nbGUgY29weS4gVGhpcyBp
cyB0cmFja2VkIGluIGJ1ZyAyMzI0MjQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFi
bGUgYmVoYXZpb3VyLiBDb3ZlcmVkIGJ5IGFsbCB0aGUgZXhpc3RpbmcgbWVkaWEgdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyRGF0YVZpZXc6OnRyaW0pOiBBZGQgYWJpbGl0eSB0byB0cmltIGEgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGF2b2lkIGhhdmluZyB0byBjb3B5
IGludG8gYSBuZXcgYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6IENyb3NzIGRlY2xhcmF0aW9ucworICAgICAg
ICBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gYWRkIGEgbmV3IFNoYXJlZEJ1ZmZlciBjb25zdHJ1Y3Rv
ciB0aGF0IHdvdWxkIHRha2UgYQorICAgICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDogQWRkIG5ldyBtZXRob2RzLgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOiBVcGRhdGUgdG8gYWxsb3cgZm9y
IGVuZCB0cmltbWluZworICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgKC1bV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjplbmRUcmltOl0pOgor
ICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBsZW5ndGhdKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVu
dDpwb3NpdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKTogQWRkIGEgbmV3IEFQSSB1c2luZworICAg
ICAgICBhIFNoYXJlZEJ1ZmZlci4gV2Uga2VlcCB0aGUgb2xkIG9uZSB0YWtpbmcgYSBwb2ludGVy
L3NpemUgZHVlIHRvIGEgV2ViS2l0CisgICAgICAgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgd2hp
Y2ggYWxsb3dzIHVzIHRvIHNhdmUgYW4gaW50ZXJtZWRpYXJ5IGFsbG9jYXRpb24vY29weQorICAg
ICAgICB3aGVuIHVzZWQgd2l0aCBTaGFyZWRNZW1vcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6IFVwZGF0ZSB0byB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oOiBDaGFuZ2UgcHJvdG90eXBlcy4KKyAgICAgICAgRmx5LWJ5IGZpeCwg
cHJvcGVydHkgY291bnRPZkJ5dGVzUmVjZWl2ZWQgbmVlZGVkIHRvIGJlIGF0b21pYy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZTpyZWNlaXZlZFJlZGlyZWN0OnJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisK
IDIwMjEtMTAtMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggdHlwbyBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVW
aWRlb1RyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM4OGFkOWE2NmQxOGYwYTlhYzc0MDQ3Nzc4ZDkyNGYy
ZDgwODAzZjcuLjBlMzM4NGYwMWJhMWJhMWQyOWQwMmU0NWIwMTRjMjExMDFlMjJlMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMTAtMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIFJlbW90ZU1lZGlhUmVzb3VyY2UgdXNlIFNoYXJl
ZE1lbW9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxl
bWVudCwgdGhlIGxvYWRpbmcgZ2V0cyBpbml0aWF0ZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9j
ZXNzIGFuZCBwcm94aWVkIHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdmlhIGEgUmVtb3RlTWVk
aWFSZXNvdXJjZS4KKyAgICAgICAgQnkgdXNpbmcgYSBTaGFyZWRCdWZmZXIgaW4gdGhlIFJlbW90
ZU1lZGlhUmVzb3VyY2Ugd3JhcHBpbmcgYSBTaGFyZWRNZW1vcnkKKyAgICAgICAgd2UgY2FuIGFs
bG9jYXRlIHRoZSBidWZmZXIgaW4gdGhlIGNvbnRlbnQgcHJvY2VzcyBhbmQgcGFzcyBpdCB0byB0
aGUgR1BVCisgICAgICAgIHByb2Nlc3Mgd2l0aG91dCBjb3B5IG5vciBuZXcgYWxsb2NhdGlvbnMu
CisgICAgICAgIFBsYXlpbmcgYSA2OTRNQiBtcDQsIHRoZSBHUFUgbWVtb3J5IHVzYWdlIGdvZXMg
ZnJvbSA4NjhNQiB0byAxNE1CIG9uIGFuCisgICAgICAgIGlQaG9uZSBydW5uaW5nIGlPUyAxNS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQpOiBXcmFw
IFNoYXJlZE1lbW9yeSBpbnRvCisgICAgICAgIGEgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluOiBD
aGFuZ2UgZGF0YSB0eXBlCisgICAgICAgIGZyb20gYW4gSVBDRGF0YVJlZmVyZW5jZSB0byBhIFNo
YXJlTWVtb3J5J3MgaGFuZGxlLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKTogQWxsb2NhdGUgYSBTaGFyZWRNZW1vcnkKKyAgICAg
ICAgYW5kIGNvcHkgdGhlIGRvd25sb2FkIGRhdGEgaW50byBpdCwgYmVmb3JlIHNlbmRpbmcgaXQg
dG8gdGhlIEdQVSBwcm9jZXNzLgorCiAyMDIxLTEwLTI0ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IHJlZmNvdW50IGluY3Jl
YXNlIHdoZW4gYWNjZXNzaW5nIG1fcGxheWVyIGluIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYzQ1MTIzODYxZWZk
NDczNGYwOGMxYzBkNWUwODE0NDllZjI3ODNjZi4uNWRkOGZkYTI0NTQyNGFhMWQ2ZTk5YzU3NGRj
YTA4ZTVhZjRjYzVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC00NDIsMTYgKzQ0MiwyMiBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVE
YXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQpCi0gICAgOiBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhp
blNlZ21lbnQpCi0gICAgLCBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKKyAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQorICAg
ICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQorICAgICwg
bV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5T
ZWdtZW50KQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50IDwg
bV9zZWdtZW50LT5zaXplKCkgJiYgbV9zaXplIDw9IG1fc2VnbWVudC0+c2l6ZSgpIC0gbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaXplX3QgbmV3
U2l6ZSkKKyAgICA6IFNoYXJlZEJ1ZmZlckRhdGFWaWV3KG90aGVyLm1fc2VnbWVudC5jb3B5UmVm
KCksIG90aGVyLm1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBuZXdTaXplKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKHBvc2l0aW9uV2l0aGluU2VnbWVudCA8IG1fc2VnbWVudC0+c2l6ZSgpKTsKIH0K
IAogc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9zZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICByZXR1
cm4gbV9zaXplOwogfQogCiBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YSgpIGNvbnN0CkBAIC00NTksNiArNDY1LDE3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgY29u
c3Qgc2l6ZV90IHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgY29uc3QgdWludDhfdCogZGF0YSA9
IHRoaXMtPmRhdGEoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbPV0oKSB7IHJldHVybiBkYXRh
OyB9LAorICAgICAgICBbPV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgfSk7Cit9CisKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAg
Ly8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNTU1YWQwZmY4MTI5
ZjkwOGUwZmM2YjMxMjM5MDVmZjc1ODk2OWNhMS4uMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThk
Y2Q3NzI0N2FkYTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAg
LTIxMCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAg
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuZW5kKCk7IH0KICAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKLSAgICAK
KwogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2co
TikpIHRpbWUuCiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBv
c2l0aW9uKSBjb25zdDsKIApAQCAtMjY1LDE2ICsyNjUsMTkgQEAgaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QpOworICAgIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0
YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7
IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNp
ZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBj
b25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0
IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICBjb25zdCBzaXplX3QgbV9zaXpl
OwogfTsKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KaW5kZXggZGJkODMyMGQzYzQzMDVhOWJiYjZmYWJmNjM5NGJlMTI0Y2UwZWNjMi4uMGY2Yzlj
YWU2YTNkODlkODg2OGMyZWU4NDU4MzhmYTVhODdjMDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDEyICszNSwx
MyBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2Vi
Q29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbjsKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJ
bnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YSB7CiAgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKKyAgICBOU1VJbnRl
Z2VyIF9zaXplOwogfQogCiArICh2b2lkKWluaXRpYWxpemUKQEAgLTYwLDIwICs2MSwyMSBAQCAt
ICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbgorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9u
IHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoIXBvc2l0aW9uIHx8
IHBvc2l0aW9uIDwgZGF0YVNlZ21lbnQuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgoIXBv
c2l0aW9uIHx8IHBvc2l0aW9uIDwgZGF0YVNlZ21lbnQuc2l6ZSgpKSAmJiBzaXplIDw9IGRhdGFT
ZWdtZW50LnNpemUoKSAtIHBvc2l0aW9uKTsKICAgICBfZGF0YVNlZ21lbnQgPSAmZGF0YVNlZ21l
bnQ7CiAgICAgX3Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgX3NpemUgPSBzaXplOwogICAgIHJl
dHVybiBzZWxmOwogfQogCiAtIChOU1VJbnRlZ2VyKWxlbmd0aAogewotICAgIHJldHVybiBfZGF0
YVNlZ21lbnQtPnNpemUoKSAtIF9wb3NpdGlvbjsKKyAgICByZXR1cm4gX3NpemU7CiB9CiAKIC0g
KGNvbnN0IHZvaWQgKilieXRlcwpAQCAtMTI1LDEyICsxMjcsMTIgQEAgUmV0YWluUHRyPE5TQXJy
YXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogCiBSZXRhaW5QdHI8
TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAog
ewotICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGlu
aXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MF0pOworICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRo
aXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRv
cHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50
Om1fc2VnbWVudC5nZXQoKSBwb3NpdGlvbjptX3Bvc2l0aW9uV2l0aGluU2VnbWVudF0pOworICAg
IHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRo
RGF0YVNlZ21lbnQ6bV9zZWdtZW50LmdldCgpIHBvc2l0aW9uOm1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50IHNpemU6c2l6ZSgpXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgKaW5kZXggYTI4ZTYxYzAyYTcyY2E5Mzg5YTY4NjMyNWI1NDZlMzFj
NGMwNDk4Ni4uNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTI4LDkgKzI4LDExIEBACiAjaWYgRU5BQkxFKFZJ
REVPKQogCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogCkBAIC00OSw3ICs1MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1v
dmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCisgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3Jt
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9y
bSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQppbmRleCA4ZTkwMTBkYzg2MDZhYTAwNjZiMmY3YmRmYWE2M2E2YzMx
NWIwODhhLi5hOGVlMDMzOTNkNzhlODY0ODVkYTU4NTlkNTA4Y2NiYWRmODcyYmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBA
IC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxv
YWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJy
b3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQpAQCAtMjEx
LDEyICsyMTEsMTIgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5p
c2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAgIG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChkYXRh
LCBzaXplKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGExNDg4N2Zj
Nzc1ZTJiOTdiNjlmOWM1OTVhZTgyNzBhYWQ3MTFjODUuLjVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1
NTk2NWMzMWRjZGE5NzM0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
dWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQor
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NS
QyhtX3NyYy5nZXQoKSk7CkBAIC0xMTAzLDEzICsxMTAzLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCB1CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUg
JWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKLQogICAgIC8vIFJv
dWdoIGJhbmR3aWR0aCBjYWxjdWxhdGlvbi4gV2UgaWdub3JlIGhlcmUgdGhlIGZpcnN0IGRhdGEg
cGFja2FnZSBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgdG8gcmVzZXQgdGhlIGNvdW50ZXJzIHdoZW4g
d2UgaXNzdWUgdGhlIHJlcXVlc3QgYW5kCiAgICAgLy8gdGhhdCBmaXJzdCBwYWNrYWdlIGRlbGl2
ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Ygc2VuZGluZyBvdXQgdGhlIHJlcXVlc3QgYW5k
IGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlCiAg
ICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJlY2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0ZXIg
dG8gaWdub3JlIGl0LgogICAgIGlmICghc3RkOjppc25hbihtZW1iZXJzLT5kb3dubG9hZFN0YXJ0
VGltZSkpIHsKLSAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gbGVuZ3Ro
OworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUo
KTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIG1l
bWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CiAgICAgICAgIEdTVF9UUkFDRV9P
QkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBieXRlcyBp
biAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3NlY29uZCIsIG1fcmVxdWVzdE51bWJlciwgbWVt
YmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0CiAgICAgICAgICAgICAs
IHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgLyB0aW1lU2lu
Y2VTdGFydCA6IDApOwpAQCAtMTExNywxNiArMTExNSwyMCBAQCB2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgdQogICAgICAgICBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3co
KTsKICAgICB9CiAKLSAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgIEFT
U0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJl
cnMtPnNpemUpOworICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQp
IHsKKyAgICAgICAgaW50IGxlbmd0aCA9IHNlZ21lbnQuc2l6ZSgpOworICAgICAgICBHU1RfTE9H
X09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJl
ciwgbGVuZ3RoKTsKIAotICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9D
QVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAot
ICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJy
ZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6
ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisgICAgICAgIG1l
bWJlcnMtPnJlYWRQb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgIEFTU0VSVCghbWVtYmVycy0+
aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0g
ICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcG9z
dF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQo
R1NUX09CSkVDVF9DQVNUKHNyYyksCisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Vi
a2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwg
bWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNp
emUsIG51bGxwdHIpKSk7CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dy
YXBwZWRGYXN0KGZhc3RNZW1EdXAoZGF0YSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAgICBnc3RfYWRh
cHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGNoZWNr
VXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7CisgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0
QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChzZWdtZW50LmRhdGEoKSwgbGVuZ3RoKSwg
bGVuZ3RoKTsKKyAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgp
LCBidWZmZXIpOworICAgIH0pOwogICAgIHN0b3BMb2FkZXJJZk5lZWRlZChzcmMsIG1lbWJlcnMp
OwogICAgIG1lbWJlcnMtPnJlc3BvbnNlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGNjNGRhOTcwM2MzNzQ5NGY2NTdkY2ZmYmRmM2Jl
OTcxOWY0M2EwNWIuLjFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdU
b0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUlu
ZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0Rl
bGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpi
dWZmZXJWaWV3LmRhdGEoKSBsZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOworICAg
ICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdl
LmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJp
Y3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBm
aW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTIsNyBA
QCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldCht
X3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIGRhdGEt
PmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5n
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggMDU3NmVkODgxMjQxMDgyMjQ0NzZjYjZiYjc1NThmOTVj
OWM3ODVlNi4uNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTQ5LDYgKzUwLDgg
QEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayA6IGJvb2w7CiB9CkBAIC0xMzgsNyArMTQxLDcgQEAgV0VCQ09SRV9FWFBPUlQg
QGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5IChj
b3B5KSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKIEBwcm9wZXJ0eSAoY29weSkgTlNV
UkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzdDsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlOwotQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzUmVj
ZWl2ZWQ7CitAcHJvcGVydHkgKGFzc2lnbiwgYXRvbWljKSBpbnQ2NF90IGNvdW50T2ZCeXRlc1Jl
Y2VpdmVkOwogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2VudDsKIEBwcm9wZXJ0eSBp
bnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3BlcnR5IGludDY0X3QgY291
bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7CkBAIC0xNTUsNyArMTU4LDcgQEAgV0VCQ09SRV9F
WFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1Rv
QmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNw
b25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
cmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBs
ZW5ndGg6KGludClsZW5ndGg7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KaW5kZXggYzdjYTg0MjVlOGI0NDZjM2U2NTgyOThjMWFlMTRhMTk0MTBkMmYxNS4u
Mjk4MjY1N2UxOTI5NDE4MmM0MmUxMjdjOGM3M2RhMjNmYmU4NmFjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1w
b3J0ICJjb25maWcuaCIKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkNhY2hlZFJlc291cmNl
UmVxdWVzdC5oIgogI2ltcG9ydCAiUGFyc2VkUmVxdWVzdFJhbmdlLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2lt
cG9ydCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgpAQCAtNjA3LDcgKzYwOCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
aG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1MSwxMyArNjUyLDEzIEBAIGJv
b2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291
cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpkYXRh
IGxlbmd0aDpsZW5ndGhdOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVk
RGF0YTpXVEZNb3ZlKGJ1ZmZlcildOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC05MDksMTMgKzkxMCwxMiBAQCAtIChCT09MKXJlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0
IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0
YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEgbGVuZ3RoOmxlbmd0aF0pOwotICAg
IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxm
IH07Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwg
bGVuZ3RoLCBuc0RhdGFdIHsKLSAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNS
ZWNlaXZlZCArPSBsZW5ndGg7CisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlv
bjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSld
IHsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
c3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAg
ICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRl
OwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCiAgICAgICAgICAgICBbZGF0
YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vz
c2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRp
ZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CkBAIC05MzMsNyArOTMzLDcgQEAgLSAodm9pZCly
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0
Oihjb25zdCBSZXNvdXIKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4g
ZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5n
ZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVz
dCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggOTAyMzU0YTk5MzFmZWQxNTU5ZTU0ZTQxYjFj
MDA1OWFlODcxODIzNy4uYzQ1ZTUyNTVkNjdiNTJjN2FlMTA0NDk5ODhjZTAxOTBjN2ZmYjUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcApAQCAtOTYsMTAgKzk2LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJj
ZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNl
CiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVz
VG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0
YSkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDliNDA3MDFjZjUz
Mjk4OTVlNDFiODQzNGYwMTVmNjk5ZDQwZDM5MGUuLmQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRk
NDE5Y2QwNTNiYjc5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMjksMTAgKzI5LDEyIEBACiAKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01NSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludDY0X3QpOworICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQg
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggMTNmMTc0ZTQ5MzEwMDFmZWJhZWNhNmFjYzFk
ZWQ5MWQxZTMxOGNhNC4uMDFhZWI0Mjc5OGU5YWNiMTNhOTVkNTFlYmNjNjEzY2NhNjkyY2Q1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC04OSwxMyArODksMTYgQEAgdm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVNlbnQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIgaWRlbnRpZmkKICAgICByZXNvdXJjZS0+ZGF0YVNlbnQoYnl0ZXNTZW50LCB0b3RhbEJ5
dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRh
UmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjo6ZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBidWZmZXJIYW5kbGUpCiB7CiAgICAgYXV0
byogcmVzb3VyY2UgPSBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZGVudGlmaWVyKTsKICAg
ICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZlZChkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoYnVmZmVySGFuZGxlLmhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgaWYgKCFzaGFy
ZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsKKyAgICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKHNo
YXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlckhhbmRsZS5kYXRhU2l6ZSkpOwog
fQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGJiNGY4YWU1MTll
MzQ4YmM4MmY5YzM2MWRhZTE5OGQ5ZmYzMmY5MjkuLjEzYjc2ZTgwYTQ5OGM5NDVlMWM0NmU5MWZk
ODQ3OTgyYjVlZDc0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNjUsNyAr
NjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVj
ayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
ZmllciwgdWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBidWZmZXJIYW5kbGUpOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCmluZGV4IGE5YTQ1YzIxZTQ2MTI2MmZhMjY0Y2NlYTg2OWQ4MWZjZmZlMTc3ODAu
LmRlZDk4MDUzNjQyYTY4ZmJmYmM1ZTc0NzViZjE2YWIwZTk3ODQ3OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMg
LT4gUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVzcG9u
c2VSZWNlaXZlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgZGlkUGFzc0FjY2Vz
c0NvbnRyb2xDaGVjaykgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrIHNob3VsZENvbnRpbnVlKSBBc3luYwogICAgIFJlZGlyZWN0UmVjZWl2ZWQoV2ViS2l0
OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkg
LT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXR1cm5SZXF1ZXN0KSBBc3luYwogICAgIERh
dGFTZW50KFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCi0gICAgRGF0
YVJlY2VpdmVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgRGF0YVJlY2VpdmVkKFdlYktpdDo6UmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBkYXRhKQogICAgIEFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCiAgICAgTG9hZEZhaWxlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAg
ICAgTG9hZEZpbmlzaGVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1ldHJpY3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKaW5kZXggNzA4YmIyOWY4ZjczZDZlZDdmY2Y2NzM5MGM1ODJjMWZl
YmFkNTY5NS4uYjUxM2EyNjgwOGVhYTE4ZTM3ZjRmZGYwNGEyM2QyOTYwYjI3M2IyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAt
NzMsNyArNzQsMTggQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKIAogdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZl
ZChtX2lkLCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgbGVuZ3RoKSksIDApOworICAgIGF1dG8g
c2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOworICAgIGlmICgh
c2hhcmVkTWVtb3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNoYXJlZE1lbW9yeVB0
ciA9IHN0YXRpY19jYXN0PGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSk7CisgICAgbWVtY3B5
KHNoYXJlZE1lbW9yeVB0ciwgZGF0YSwgbGVuZ3RoKTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZTsKKyAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIC8vIFRha2Ugb3duZXJzaGlwIG9m
IHNoYXJlZCBtZW1vcnkgYW5kIG1hcmsgaXQgYXMgbWVkaWEtcmVsYXRlZCBtZW1vcnkuCisgICAg
aGFuZGxlLnRha2VPd25lcnNoaXBPZk1lbW9yeShNZW1vcnlMZWRnZXI6Ok1lZGlhKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpE
YXRhUmVjZWl2ZWQobV9pZCwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRs
ZSksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442874</attachid>
            <date>2021-10-29 15:43:43 -0700</date>
            <delta_ts>2021-10-29 18:44:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232422-20211030094341.patch</filename>
            <type>text/plain</type>
            <size>27088</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDJjMjQyNTkyMWVk
YWI4MTM5NDk0ZTZlOWU3MmQ0OTQyNDA2OC4uMDlkMmZiYWJjZTMyNWU4MWIyZWRjNDg5MTc3NDdj
ZWE4ZGQ0MDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTEwLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDIyCisgICAgICAgIHJkYXI6Ly84NDU1ODgz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
cGxheWluZyBhIG5vbi1tc2UgbWVkaWEgZWxlbWVudCwgdGhlIGRvd25sb2FkIGdldHMgY29udHJv
bGxlZCBieSBhCisgICAgICAgIE1lZGlhUmVzb3VyY2UgaW50byBhIFdlYkNvcmVOU1VSTFNlc3Np
b24gdG8gYmUgdXNlZCBieSB0aGUgbWVkaWEgZnJhbWV3b3JrLgorICAgICAgICBUaGUgZGF0YSBn
b3QgY29waWVkIGF0IGxlYXN0IHRocmVlIHRpbWVzIGFsb25nIHRoZSB3YXkgZHVlIHRvIHRoZQor
ICAgICAgICBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGZyYW1ld29yayBhbmQgdGhlIG5l
ZWQgZm9yIHRocmVhZAorICAgICAgICBzYWZldHkuCisgICAgICAgIFRoZSBzaXR1YXRpb24gd2Fz
IG1hZGUgd29yc2Ugd2hlbiB0aGUgY29udGVudCBzZXJ2ZXIgZGlkbid0IHN1cHBvcnQKKyAgICAg
ICAgcmFuZ2UtcmVxdWVzdDogYXMgYSBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yIGlzIHRoZW4gdXNl
ZCBieSB0aGUKKyAgICAgICAgV2ViQ29yZU5TVVJMU2Vzc2lvbiB3aGljaCBkb3dubG9hZHMgdGhl
IGVudGlyZSBtZWRpYSB0byBiZSBwbGF5ZWQgYW5kCisgICAgICAgIGtlZXAgaXQgaW4gbWVtb3J5
LgorCisgICAgICAgIEJ5IG1vZGlmeWluZyB0aGUgdmFyaW91cyBhY3RvcnMgYmV0d2VlbiBhIE1l
ZGlhUmVzb3VyY2UgYW5kIFdlYkNvcmVOU1VSTFNlc3Npb24KKyAgICAgICAgdG8gdXNlIFNoYXJl
ZEJ1ZmZlcnMgOyB3ZSBjYW4gcmVtb3ZlIG1vc3QgY29waWVzIGFuZCBhbGxvY2F0aW9uLgorICAg
ICAgICBUaGlzIGFsc28gY29tcGxldGVseSBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBuZXcgbWVt
b3J5IGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQKKyAgICAgICAgY29waWVzIGJ5IHRoZSBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yIG9iamVjdC4KKworICAgICAgICBXaXRoIFdLMiBhbmQgdGhlIEdQVSBw
cm9jZXNzLCBpdCBhbGxvd3MgZm9yIHRoZSBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkIG9uY2UKKyAg
ICAgICAgYW5kIG9ubHkgYmUgYXNzaWduZWQgdG8gdGhlIGNvbnRlbnQgcHJvY2VzcyBieSB1c2lu
ZyBTaGFyZWRNZW1vcnkgd3JhcHBlZAorICAgICAgICBpbiBhIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGUgZnV0dXJlLCBieSByZWZhY3RvcmluZyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB0byB1c2UgU2hhcmVkQnVmZmVycywKKyAgICAgICAgd2UgY291bGQgcmVtb3ZlIGZ1cnRoZXIg
YWxsb2NhdGlvbi9jb3BpZXMuIFdlIGNvdWxkIGxpa2VseSBnZXQgdGhlIGRhdGEgZnJvbSB0aGUK
KyAgICAgICAgbmV0d29yayBwcm9jZXNzIGFsbCB0aGUgd2F5IHRvIHRoZSBmaW5hbCBjbGllbnQg
aW4gdGhlIEdQVSBwcm9jZXNzIHdpdGhvdXQKKyAgICAgICAgYSBzaW5nbGUgY29weS4gVGhpcyBp
cyB0cmFja2VkIGluIGJ1ZyAyMzI0MjQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFi
bGUgYmVoYXZpb3VyLiBDb3ZlcmVkIGJ5IGFsbCB0aGUgZXhpc3RpbmcgbWVkaWEgdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyRGF0YVZpZXc6OnRyaW0pOiBBZGQgYWJpbGl0eSB0byB0cmltIGEgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGF2b2lkIGhhdmluZyB0byBjb3B5
IGludG8gYSBuZXcgYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6IENyb3NzIGRlY2xhcmF0aW9ucworICAgICAg
ICBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gYWRkIGEgbmV3IFNoYXJlZEJ1ZmZlciBjb25zdHJ1Y3Rv
ciB0aGF0IHdvdWxkIHRha2UgYQorICAgICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDogQWRkIG5ldyBtZXRob2RzLgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOiBVcGRhdGUgdG8gYWxsb3cgZm9y
IGVuZCB0cmltbWluZworICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgKC1bV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjplbmRUcmltOl0pOgor
ICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBsZW5ndGhdKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVu
dDpwb3NpdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKTogQWRkIGEgbmV3IEFQSSB1c2luZworICAg
ICAgICBhIFNoYXJlZEJ1ZmZlci4gV2Uga2VlcCB0aGUgb2xkIG9uZSB0YWtpbmcgYSBwb2ludGVy
L3NpemUgZHVlIHRvIGEgV2ViS2l0CisgICAgICAgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgd2hp
Y2ggYWxsb3dzIHVzIHRvIHNhdmUgYW4gaW50ZXJtZWRpYXJ5IGFsbG9jYXRpb24vY29weQorICAg
ICAgICB3aGVuIHVzZWQgd2l0aCBTaGFyZWRNZW1vcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6IFVwZGF0ZSB0byB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oOiBDaGFuZ2UgcHJvdG90eXBlcy4KKyAgICAgICAgRmx5LWJ5IGZpeCwg
cHJvcGVydHkgY291bnRPZkJ5dGVzUmVjZWl2ZWQgbmVlZGVkIHRvIGJlIGF0b21pYy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZTpyZWNlaXZlZFJlZGlyZWN0OnJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisK
IDIwMjEtMTAtMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggdHlwbyBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVW
aWRlb1RyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRl
eCBjNDUxMjM4NjFlZmQ0NzM0ZjA4YzFjMGQ1ZTA4MTQ0OWVmMjc4M2NmLi40NzU0MmRhY2FlYjg2
YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKQEAgLTQ0MiwxNiArNDQyLDIzIEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCkKLSAgICA6IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKLSAgICAsIG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
KQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorICAgIDogbV9zZWdtZW50KFdURk1vdmUo
c2VnbWVudCkpCisgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNl
Z21lbnQpCisgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBw
b3NpdGlvbldpdGhpblNlZ21lbnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9wb3NpdGlvbldp
dGhpblNlZ21lbnQgPCBtX3NlZ21lbnQtPnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9z
aXplIDw9IG1fc2VnbWVudC0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQpOworfQor
CitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaXplX3QgbmV3U2l6ZSkKKyAgICA6IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KG90aGVyLm1fc2VnbWVudC5jb3B5UmVmKCksIG90aGVyLm1fcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBuZXdTaXplKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uV2l0aGlu
U2VnbWVudCA8IG1fc2VnbWVudC0+c2l6ZSgpKTsKIH0KIAogc2l6ZV90IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZWdtZW50LT5zaXplKCkgLSBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKyAgICByZXR1cm4gbV9zaXplOwogfQogCiBjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CkBAIC00NTksNiArNDY2
LDE1IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QK
ICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsK
IH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICAgICAgW3NlZ21lbnQs
IGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW3NlZ21lbnQsIHNp
emUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgIH0pOworfQorCiBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFs
bG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDU1NWFkMGZmODEyOWY5MDhl
MGZjNmIzMTIzOTA1ZmY3NTg5NjljYTEuLjM5NTNiMTEyYmIxMTA3NTBhN2NiMTc0M2E4ZGNkNzcy
NDdhZGExYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0yMTAs
NyArMjEwLDcgQEAgcHVibGljOgogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnRzLmVuZCgpOyB9CiAgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7Ci0gICAgCisKICAg
ICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0
aW1lLgogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlv
bikgY29uc3Q7CiAKQEAgLTI2NSwxNiArMjY1LDE5IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKKyAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxv
cHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Cisg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNF
KEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owot
ICAgIFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBzaXpl
X3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CisgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmlu
ZGV4IGRiZDgzMjBkM2M0MzA1YTliYmI2ZmFiZjYzOTRiZTEyNGNlMGVjYzIuLjllZTBjMGI1NWQ3
OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMiArMzUsMTMgQEAK
ICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb247CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEg
ewogICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBf
ZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CisgICAgTlNVSW50ZWdlciBf
c2l6ZTsKIH0KIAogKyAodm9pZClpbml0aWFsaXplCkBAIC02MCwyMCArNjEsMjIgQEAgLSAodm9p
ZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24KKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKCFwb3NpdGlvbiB8fCBwb3Np
dGlvbiA8IGRhdGFTZWdtZW50LnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocG9zaXRpb24g
PD0gZGF0YVNlZ21lbnQuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzaXplIDw9IGRhdGFT
ZWdtZW50LnNpemUoKSAtIHBvc2l0aW9uKTsKICAgICBfZGF0YVNlZ21lbnQgPSAmZGF0YVNlZ21l
bnQ7CiAgICAgX3Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgX3NpemUgPSBzaXplOwogICAgIHJl
dHVybiBzZWxmOwogfQogCiAtIChOU1VJbnRlZ2VyKWxlbmd0aAogewotICAgIHJldHVybiBfZGF0
YVNlZ21lbnQtPnNpemUoKSAtIF9wb3NpdGlvbjsKKyAgICByZXR1cm4gX3NpemU7CiB9CiAKIC0g
KGNvbnN0IHZvaWQgKilieXRlcwpAQCAtMTI1LDEyICsxMjgsMTIgQEAgUmV0YWluUHRyPE5TQXJy
YXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogCiBSZXRhaW5QdHI8
TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAog
ewotICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGlu
aXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MF0pOworICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRo
aXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRv
cHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50
Om1fc2VnbWVudC5nZXQoKSBwb3NpdGlvbjptX3Bvc2l0aW9uV2l0aGluU2VnbWVudF0pOworICAg
IHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRo
RGF0YVNlZ21lbnQ6bV9zZWdtZW50LmdldCgpIHBvc2l0aW9uOm1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50IHNpemU6c2l6ZSgpXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgKaW5kZXggYTI4ZTYxYzAyYTcyY2E5Mzg5YTY4NjMyNWI1NDZlMzFj
NGMwNDk4Ni4uNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTI4LDkgKzI4LDExIEBACiAjaWYgRU5BQkxFKFZJ
REVPKQogCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogCkBAIC00OSw3ICs1MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1v
dmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCisgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3Jt
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9y
bSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQppbmRleCA4ZTkwMTBkYzg2MDZhYTAwNjZiMmY3YmRmYWE2M2E2YzMx
NWIwODhhLi5hOGVlMDMzOTNkNzhlODY0ODVkYTU4NTlkNTA4Y2NiYWRmODcyYmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBA
IC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxv
YWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJy
b3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQpAQCAtMjEx
LDEyICsyMTEsMTIgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5p
c2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAgIG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChkYXRh
LCBzaXplKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGExNDg4N2Zj
Nzc1ZTJiOTdiNjlmOWM1OTVhZTgyNzBhYWQ3MTFjODUuLjVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1
NTk2NWMzMWRjZGE5NzM0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
dWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQor
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NS
QyhtX3NyYy5nZXQoKSk7CkBAIC0xMTAzLDEzICsxMTAzLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCB1CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUg
JWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKLQogICAgIC8vIFJv
dWdoIGJhbmR3aWR0aCBjYWxjdWxhdGlvbi4gV2UgaWdub3JlIGhlcmUgdGhlIGZpcnN0IGRhdGEg
cGFja2FnZSBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgdG8gcmVzZXQgdGhlIGNvdW50ZXJzIHdoZW4g
d2UgaXNzdWUgdGhlIHJlcXVlc3QgYW5kCiAgICAgLy8gdGhhdCBmaXJzdCBwYWNrYWdlIGRlbGl2
ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Ygc2VuZGluZyBvdXQgdGhlIHJlcXVlc3QgYW5k
IGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlCiAg
ICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJlY2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0ZXIg
dG8gaWdub3JlIGl0LgogICAgIGlmICghc3RkOjppc25hbihtZW1iZXJzLT5kb3dubG9hZFN0YXJ0
VGltZSkpIHsKLSAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gbGVuZ3Ro
OworICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUo
KTsKICAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIG1l
bWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CiAgICAgICAgIEdTVF9UUkFDRV9P
QkpFQ1Qoc3JjLCAiUiV1OiBkb3dubG9hZGVkICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBieXRlcyBp
biAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3NlY29uZCIsIG1fcmVxdWVzdE51bWJlciwgbWVt
YmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0CiAgICAgICAgICAgICAs
IHRpbWVTaW5jZVN0YXJ0ID8gbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgLyB0aW1lU2lu
Y2VTdGFydCA6IDApOwpAQCAtMTExNywxNiArMTExNSwyMCBAQCB2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgdQogICAgICAgICBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3co
KTsKICAgICB9CiAKLSAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgIEFT
U0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJl
cnMtPnNpemUpOworICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQp
IHsKKyAgICAgICAgaW50IGxlbmd0aCA9IHNlZ21lbnQuc2l6ZSgpOworICAgICAgICBHU1RfTE9H
X09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJl
ciwgbGVuZ3RoKTsKIAotICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9D
QVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAot
ICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJy
ZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6
ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisgICAgICAgIG1l
bWJlcnMtPnJlYWRQb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgIEFTU0VSVCghbWVtYmVycy0+
aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0g
ICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcG9z
dF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQo
R1NUX09CSkVDVF9DQVNUKHNyYyksCisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Vi
a2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwg
bWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNp
emUsIG51bGxwdHIpKSk7CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dy
YXBwZWRGYXN0KGZhc3RNZW1EdXAoZGF0YSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAgICBnc3RfYWRh
cHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGNoZWNr
VXBkYXRlQmxvY2tzaXplKGxlbmd0aCk7CisgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0
QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChzZWdtZW50LmRhdGEoKSwgbGVuZ3RoKSwg
bGVuZ3RoKTsKKyAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgp
LCBidWZmZXIpOworICAgIH0pOwogICAgIHN0b3BMb2FkZXJJZk5lZWRlZChzcmMsIG1lbWJlcnMp
OwogICAgIG1lbWJlcnMtPnJlc3BvbnNlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGNjNGRhOTcwM2MzNzQ5NGY2NTdkY2ZmYmRmM2Jl
OTcxOWY0M2EwNWIuLjFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdU
b0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUlu
ZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0Rl
bGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpi
dWZmZXJWaWV3LmRhdGEoKSBsZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOworICAg
ICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdl
LmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJp
Y3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBm
aW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTIsNyBA
QCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldCht
X3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIGRhdGEt
PmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5n
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggMDU3NmVkODgxMjQxMDgyMjQ0NzZjYjZiYjc1NThmOTVj
OWM3ODVlNi4uNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTQ5LDYgKzUwLDgg
QEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayA6IGJvb2w7CiB9CkBAIC0xMzgsNyArMTQxLDcgQEAgV0VCQ09SRV9FWFBPUlQg
QGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5IChj
b3B5KSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKIEBwcm9wZXJ0eSAoY29weSkgTlNV
UkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzdDsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlOwotQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzUmVj
ZWl2ZWQ7CitAcHJvcGVydHkgKGFzc2lnbiwgYXRvbWljKSBpbnQ2NF90IGNvdW50T2ZCeXRlc1Jl
Y2VpdmVkOwogQHByb3BlcnR5IGludDY0X3QgY291bnRPZkJ5dGVzU2VudDsKIEBwcm9wZXJ0eSBp
bnQ2NF90IGNvdW50T2ZCeXRlc0V4cGVjdGVkVG9TZW5kOwogQHByb3BlcnR5IGludDY0X3QgY291
bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmU7CkBAIC0xNTUsNyArMTU4LDcgQEAgV0VCQ09SRV9F
WFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1Rv
QmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNw
b25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
cmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBs
ZW5ndGg6KGludClsZW5ndGg7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KaW5kZXggYzdjYTg0MjVlOGI0NDZjM2U2NTgyOThjMWFlMTRhMTk0MTBkMmYxNS4u
Mjk4MjY1N2UxOTI5NDE4MmM0MmUxMjdjOGM3M2RhMjNmYmU4NmFjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1w
b3J0ICJjb25maWcuaCIKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkNhY2hlZFJlc291cmNl
UmVxdWVzdC5oIgogI2ltcG9ydCAiUGFyc2VkUmVxdWVzdFJhbmdlLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2lt
cG9ydCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgpAQCAtNjA3LDcgKzYwOCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
aG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1MSwxMyArNjUyLDEzIEBAIGJv
b2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291
cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpkYXRh
IGxlbmd0aDpsZW5ndGhdOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVk
RGF0YTpXVEZNb3ZlKGJ1ZmZlcildOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC05MDksMTMgKzkxMCwxMiBAQCAtIChCT09MKXJlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0
IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0
YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEgbGVuZ3RoOmxlbmd0aF0pOwotICAg
IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxm
IH07Ci0gICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwg
bGVuZ3RoLCBuc0RhdGFdIHsKLSAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNS
ZWNlaXZlZCArPSBsZW5ndGg7CisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlv
bjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSld
IHsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
c3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAg
ICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRl
OwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCiAgICAgICAgICAgICBbZGF0
YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vz
c2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRp
ZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CkBAIC05MzMsNyArOTMzLDcgQEAgLSAodm9pZCly
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0
Oihjb25zdCBSZXNvdXIKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4g
ZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5n
ZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVz
dCkgbXV0YWJsZSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>