<?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>208714</bug_id>
          
          <creation_ts>2020-03-06 08:00:19 -0800</creation_ts>
          <short_desc>Move AudioSession interruption listener code to AudioSession</short_desc>
          <delta_ts>2020-03-12 07:05: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>208922</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626659</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 08:00:19 -0800</bug_when>
    <thetext>GPUProcess should react upon AudioSession interruptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626662</commentid>
    <comment_count>1</comment_count>
      <attachid>392722</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 08:06:36 -0800</bug_when>
    <thetext>Created attachment 392722
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626685</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 08:52:20 -0800</bug_when>
    <thetext>I&apos;m already in the middle of implementing something similar, but that also handles route changes as the like. I&apos;ll post it when I&apos;ve got something compiling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626689</commentid>
    <comment_count>3</comment_count>
      <attachid>392728</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 08:58:01 -0800</bug_when>
    <thetext>Created attachment 392728
WIP: WebCore - MediaSessionHelper

Here&apos;s the approach I&apos;ve been working towards. I plan on subclassing this new helper and XPCing the client callbacks across the process boundary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626692</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 09:07:43 -0800</bug_when>
    <thetext>https://bugs.webkit.org/attachment.cgi?id=392722 is specifically about AudioSession interruptions.

I think it makes sense to have it close to AudioSession with an observer pattern.
This allows the remote session to ping the necessary WebProcesses nicely.

I agree the other ones also need to move, but they seem more related to NowPlaying really and Eric is working on it I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626717</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 09:57:28 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; https://bugs.webkit.org/attachment.cgi?id=392722 is specifically about
&gt; AudioSession interruptions.
&gt; 
&gt; I think it makes sense to have it close to AudioSession with an observer
&gt; pattern.
&gt; This allows the remote session to ping the necessary WebProcesses nicely.
&gt; 
&gt; I agree the other ones also need to move, but they seem more related to
&gt; NowPlaying really and Eric is working on it I think.

That&apos;s fine; I&apos;ll just remove interruption handling from the helper class I&apos;m making.

But I don&apos;t understand why we can&apos;t use the existing RemoteAudioSession/Proxy object rather than dropping all the way to GPUProcess/Proxy.

Rather than add a bunch of interruption code to GPUProcessConnection, it seems like a cleaner approach to just send the interruptions from RemoteAudioSessionManagerProxy -&gt; RemoteAudioSessionProxy  -&gt; XPC -&gt; RemoteAudioSession -&gt; observers; that contains the audio-related code in the correct class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626718</commentid>
    <comment_count>6</comment_count>
      <attachid>392722</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 09:59:53 -0800</bug_when>
    <thetext>Comment on attachment 392722
WIP

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

&gt; Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp:208
&gt; +void RemoteAudioSessionProxyManager::beginAudioSessionInterruption(PlatformMediaSession::InterruptionType type)
&gt; +{
&gt; +    m_process.forAllWebProcessConnections([type](auto&amp; webProcessConnection) {
&gt; +        webProcessConnection.connection().send(Messages::GPUProcessConnection::BeginAudioSessionInterruption { type }, 0);
&gt; +    });
&gt; +}
&gt; +
&gt; +void RemoteAudioSessionProxyManager::endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags flags)
&gt; +{
&gt; +    m_process.forAllWebProcessConnections([flags](auto&amp; webProcessConnection) {
&gt; +        webProcessConnection.connection().send(Messages::GPUProcessConnection::EndAudioSessionInterruption { flags }, 0);
&gt; +    });
&gt; +}

I don&apos;t think this is correct. We should only send interruptions to processes with active AudioSessions.  So I&apos;d use tryToSetActiveForProcess() as an example here and skip sending interruptions to sessions which are not active.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627697</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 02:02:15 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #6)
&gt; Comment on attachment 392722 [details]
&gt; WIP
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392722&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp:208
&gt; &gt; +void RemoteAudioSessionProxyManager::beginAudioSessionInterruption(PlatformMediaSession::InterruptionType type)
&gt; &gt; +{
&gt; &gt; +    m_process.forAllWebProcessConnections([type](auto&amp; webProcessConnection) {
&gt; &gt; +        webProcessConnection.connection().send(Messages::GPUProcessConnection::BeginAudioSessionInterruption { type }, 0);
&gt; &gt; +    });
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void RemoteAudioSessionProxyManager::endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags flags)
&gt; &gt; +{
&gt; &gt; +    m_process.forAllWebProcessConnections([flags](auto&amp; webProcessConnection) {
&gt; &gt; +        webProcessConnection.connection().send(Messages::GPUProcessConnection::EndAudioSessionInterruption { flags }, 0);
&gt; &gt; +    });
&gt; &gt; +}
&gt; 
&gt; I don&apos;t think this is correct. We should only send interruptions to
&gt; processes with active AudioSessions.  So I&apos;d use tryToSetActiveForProcess()
&gt; as an example here and skip sending interruptions to sessions which are not
&gt; active.

Right, that is what I wrote in Source/WebKit/ChangeLog, hence why this is WIP patch :)

Agreed with the idea to go directly through RemoteAudioSession to WebProcess AudioSession proxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627724</commentid>
    <comment_count>8</comment_count>
      <attachid>393024</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 06:43:45 -0700</bug_when>
    <thetext>Created attachment 393024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627725</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 06:46:12 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; Created attachment 393024 [details]
&gt; Patch

Rebased patch on top of newly added MediaSessionHelperClient.

It seems RemoteAudioSessionProxyManager should only have a set of active session proxies. That would somehow mirror what the OS is probably doing (only caring about active Audio Sessions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627731</commentid>
    <comment_count>10</comment_count>
      <attachid>393026</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 07:12:58 -0700</bug_when>
    <thetext>Created attachment 393026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627739</commentid>
    <comment_count>11</comment_count>
      <attachid>393030</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 07:32:26 -0700</bug_when>
    <thetext>Created attachment 393030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627762</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-09 08:10:29 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; Created attachment 393030 [details]
&gt; Patch

New patch looks good.  I wonder if it&apos;s time to make AudioSessionIOS and AudioSessionMac proper subclasses of AudioSession, rather than just &quot;mixins&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627847</commentid>
    <comment_count>13</comment_count>
      <attachid>393030</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 10:39:43 -0700</bug_when>
    <thetext>Comment on attachment 393030
Patch

Will test it tomorrow on iOS.
Putting it under review in the meantime.

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

&gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:117
&gt; +    AudioSession::sharedSession().addInterruptionObserver(*this);

I&apos;ll remove this unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628235</commentid>
    <comment_count>14</comment_count>
      <attachid>393030</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-10 07:39:52 -0700</bug_when>
    <thetext>Comment on attachment 393030
Patch

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

r=me with nits:

&gt; Source/WebCore/platform/audio/AudioSession.h:103
&gt; +    class InterruptionObserver : public CanMakeWeakPtr&lt;InterruptionObserver&gt; {
&gt; +    public:
&gt; +        virtual ~InterruptionObserver() = default;
&gt; +
&gt; +        virtual void beginAudioSessionInterruption(PlatformMediaSession::InterruptionType) = 0;
&gt; +        virtual void endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags) = 0;
&gt; +    };

InterruptionObserver shouldn&apos;t use PlatformMediaSession enums; it should export its own.

&gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:55
&gt; +    // FIXME: We probably want each interested media session to observe audio interruptions directly.
&gt; +    AudioSession::sharedSession().addInterruptionObserver(*this);

I don&apos;t think we need this FIXME. The session manager should be the one which, e.g., decides which session is resumed after an interruption ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628636</commentid>
    <comment_count>15</comment_count>
      <attachid>393241</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-11 07:44:00 -0700</bug_when>
    <thetext>Created attachment 393241
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628643</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-11 07:57:22 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #14)
&gt; Comment on attachment 393030 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393030&amp;action=review
&gt; 
&gt; r=me with nits:
&gt; 
&gt; &gt; Source/WebCore/platform/audio/AudioSession.h:103
&gt; &gt; +    class InterruptionObserver : public CanMakeWeakPtr&lt;InterruptionObserver&gt; {
&gt; &gt; +    public:
&gt; &gt; +        virtual ~InterruptionObserver() = default;
&gt; &gt; +
&gt; &gt; +        virtual void beginAudioSessionInterruption(PlatformMediaSession::InterruptionType) = 0;
&gt; &gt; +        virtual void endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags) = 0;
&gt; &gt; +    };
&gt; 
&gt; InterruptionObserver shouldn&apos;t use PlatformMediaSession enums; it should
&gt; export its own.

Agreed, we do not need PlatformMediaSession::InterruptionType at all here.
Will do as a follow-up.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:55
&gt; &gt; +    // FIXME: We probably want each interested media session to observe audio interruptions directly.
&gt; &gt; +    AudioSession::sharedSession().addInterruptionObserver(*this);
&gt; 
&gt; I don&apos;t think we need this FIXME. The session manager should be the one
&gt; which, e.g., decides which session is resumed after an interruption ends.

I removed it from now.
I&apos;ll dig in further but it seems going through MediaSessionManager is unnecessary at the moment since it basically iterate over all sessions for both beginInterruption/endInterruption.
And it might open up some nice simplification.
In addition, we probably want at some point to have Page-level and not Process-level objects for AudioSession and MediaSessionManager in the WebProcess. Decoupling the two might help doing this transition more easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628658</commentid>
    <comment_count>17</comment_count>
      <attachid>393241</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-11 08:46:59 -0700</bug_when>
    <thetext>Comment on attachment 393241
Patch for landing

Clearing flags on attachment: 393241

Committed r258263: &lt;https://trac.webkit.org/changeset/258263&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628659</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-11 08:47:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628660</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-11 08:47:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/60324277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628692</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-11 09:46:41 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 208922</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629148</commentid>
    <comment_count>21</comment_count>
      <attachid>393367</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-12 06:19:32 -0700</bug_when>
    <thetext>Created attachment 393367
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629167</commentid>
    <comment_count>22</comment_count>
      <attachid>393367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-12 07:05:19 -0700</bug_when>
    <thetext>Comment on attachment 393367
Patch for landing

Clearing flags on attachment: 393367

Committed r258324: &lt;https://trac.webkit.org/changeset/258324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629168</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-12 07:05:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392722</attachid>
            <date>2020-03-06 08:06:36 -0800</date>
            <delta_ts>2020-03-09 06:43:38 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208714-20200306170634.patch</filename>
            <type>text/plain</type>
            <size>23584</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE1ZjkwNmE0ODQyZjU2
ZGM4OTNmNjlmYzVlOTJmMjBkNTM0MDNmZS4uMjg3NjQwYTNmZjBhOGQxYmFmMTU5ODg1ODJkOGU3
ZGIxYzNkNmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBHUFVQcm9jZXNzIHNob3Vs
ZCByZWFjdCB1cG9uIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1
cHRpb24gZGV0ZWN0aW9uIGNvZGUgZnJvbSBNZWRpYVNlc3Npb25NYW5hZ2VySU9TIHRvIEF1ZGlv
U2Vzc2lvbklPUy4KKyAgICAgICAgQWRkIGludGVycnVwdGlvbiBvYnNlcnZlciBjYXBhYmlsaXRp
ZXMgdG8gQXVkaW9TZXNzaW9uIGFuZCBtYWtlIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MgYW4gb2Jz
ZXJ2ZXIgb2YgaXQuCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OmFkZEludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb246OmVuZEludGVycnVwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5t
bToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgaW5pdFdpdGhDYWxs
YmFjazpdKToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgZGVhbGxv
Y10pOgorICAgICAgICAoLVtXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBjbGVhckNhbGxi
YWNrXSk6CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGludGVycnVw
dGlvbjpdKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vz
c2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1
ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjphZGRJ
bnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJl
bW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpl
bmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisKIDIwMjAtMDMtMDYgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPYmplY3RJZGVudGlm
aWVyIHRvIGlkZW50aWZ5IG1lZGlhIHNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwZDM1NGI2OTRhNzRl
MGMxZDE5NzVmYWNkOGI5ZTMxMzYxODIxZDYuLjE1NTllNGMzMjQ0MzhkMzg5Zjc1ZmFlMTAzNGYy
MjMyOGVkMjVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDMtMDYgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEdQVVByb2Nlc3Mgc2hvdWxk
IHJlYWN0IHVwb24gQXVkaW9TZXNzaW9uIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyIGFuIG9ic2VydmVyIGZvciBBdWRpb1Nlc3Npb24gaW50ZXJydXB0aW9ucy4KKyAg
ICAgICAgV2hlbiBiZWluZyBpbnRlcnJ1cHRlZCwgbm90aWZ5IGFsbCBXZWJQcm9jZXNzZXMgYW5k
IHRyaWdnZXIgYmVnaW4vZW5kIGludGVycnVwdGlvbiBtZWNoYW5pc21zLgorICAgICAgICBXZSBz
aG91bGQgcHJvYmFibHkgb25seSBzZW5kIGJlZ2luL2VuZCBpbnRlcnJ1cHRpb24gdG8gdGhlIHBy
b2Nlc3MgKGlkZWFsbHkgdGhlIHBhZ2UpIHRoYXQgd2FzIHBsYXlpbmcgYmVmb3JlIHRoZSBzdXNw
ZW5zaW9uLgorICAgICAgICBMZXQncyBmaXggdGhhdCBpbiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpHUFVQcm9jZXNzOjphdWRpb1Nlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzczo6Zm9yQWxsV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVt
b3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6ZW5kQXVkaW9T
ZXNzaW9uSW50ZXJydXB0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6R1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0w
NiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIE9iamVj
dElkZW50aWZpZXIgdG8gaWRlbnRpZnkgbWVkaWEgc2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGYzNWZlYWJmZTk2NzEyMDhk
NGEzMGI4NjI3OTBiNTEzY2JlZWU3OWEuLjNiN2NlZTg0MjIwZTQ1NjhlMWU0NjllZDBlYTcwNjMx
YjYzODBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmNwcApAQCAtNjMsNiArNjMsMjQgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0
aXZlKGJvb2wgYWN0aXZlKQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgIVBMQVRGT1JNKElP
UykKK3ZvaWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpCit7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCit7Cit9CisKK3ZvaWQgQXVkaW9TZXNz
aW9uOjpiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9u
VHlwZSkKK3sKK30KKwordm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpCit7Cit9CisjZW5kaWYKKwogI2lm
ICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaAppbmRleCBmYTQyMTJmZDA1OWFjYTY0YWM2Y2Q2OTc5MTIzNGY5YTI2NjNjYWY5
Li5lODFlZGY5NzExNWMxODNmMmE4ZmVhNDFjMTNiZmVmYzQwNmEyOGI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtMjcsMTEgKzI3LDEyIEBA
CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKIAorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05Myw2ICs5NCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2
ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2
ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAKKyAgICBjbGFzcyBJbnRlcnJ1cHRpb25PYnNlcnZl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnJ1cHRpb25PYnNlcnZlcj4geworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SW50ZXJydXB0aW9uT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZEludGVycnVwdGlvbkZsYWdzKSA9IDA7CisgICAgfTsKKyAgICB2b2lkIGFkZEludGVycnVw
dGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJik7CisgICAgdm9pZCByZW1vdmVJbnRl
cnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpOworICAgIHZvaWQgYmVnaW5J
bnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOworICAg
IHZvaWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRp
b25GbGFncyk7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCk7CiAKQEAgLTEwNiw2ICsxMTksOSBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9w
cml2YXRlOwogICAgIEhhc2hTZXQ8TXV0ZWRTdGF0ZU9ic2VydmVyKj4gbV9vYnNlcnZlcnM7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtIYXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBt
X2ludGVycnVwdGlvbk9ic2VydmVyczsKKyNlbmRpZgogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxz
ZSB9OyAvLyBVc2VkIG9ubHkgZm9yIHRlc3RpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRleCA4M2QyNDAw
YTFkMGFhNjM4OWMzZGY4OTM2NzEwYTM1ODlhNDQ1ODg4Li44ZDlkNDllODQ4NjY3YzZiYzU5MGVi
MzgzOWZhMWIyMmE1YjdhNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTMyLDExICszMiw3MSBAQAogI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgogCitAaW50ZXJmYWNlIFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVy
IDogTlNPYmplY3QgeworICAgIFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbiogX2NhbGxiYWNrOworfQor
CistIChpZClpbml0V2l0aENhbGxiYWNrOihXZWJDb3JlOjpBdWRpb1Nlc3Npb24qKWNhbGxiYWNr
OworLSAodm9pZCljbGVhckNhbGxiYWNrOworLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViSW50ZXJy
dXB0aW9uT2JzZXJ2ZXJIZWxwZXIKKworLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooV2ViQ29yZTo6
QXVkaW9TZXNzaW9uKiljYWxsYmFjaworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAg
ICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3Rh
bmNlXV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxm
XTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpY2xlYXJDYWxsYmFjaworewor
ICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKworLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJl
dHVybjsKKworICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10g
b2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJ
bnRlZ2VyVmFsdWVdOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRl
cnJ1cHRpb25GbGFncyBmbGFncyA9IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0Zs
YWdzOworCisgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5k
ZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlv
U2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNob3VsZFJlc3VtZSkKKyAgICAgICAgZmxhZ3MgPSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKKworICAgIGNh
bGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IHJldGFpblB0cihzZWxmKSwgdHlwZSwgZmxhZ3NdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8q
IGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrOworICAgICAgICBpZiAoIWNhbGxi
YWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0eXBlID09IEFWQXVkaW9T
ZXNzaW9uSW50ZXJydXB0aW9uVHlwZUJlZ2FuKQorICAgICAgICAgICAgY2FsbGJhY2stPmJlZ2lu
SW50ZXJydXB0aW9uKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1
cHRpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFjay0+ZW5kSW50ZXJydXB0
aW9uKGZsYWdzKTsKKyAgICB9KTsKK30KK0BlbmQKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgIUxPR19ESVNBQkxFRApAQCAtNjEsMTQgKzEyMSwyNSBAQCBzdGF0aWMgY29uc3QgY2hhciog
Y2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogY2xhc3Mg
QXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKKyAgICBleHBsaWNp
dCBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopOworICAgIH5BdWRpb1Nlc3Npb25Q
cml2YXRlKCk7CisKICAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3Zl
cnJpZGU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVl
OworICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcj4gbV9pbnRlcnJ1
cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAKLUF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vz
c2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikKK0F1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vz
c2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKiBzZXNzaW9uKQogICAgIDogbV9jYXRlZ29yeU92ZXJy
aWRlKEF1ZGlvU2Vzc2lvbjo6Tm9uZSkKIHsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBtX2ludGVycnVwdGlvbk9ic2VydmVySGVscGVyID0gYWRvcHROUyhbW1dlYkludGVy
cnVwdGlvbk9ic2VydmVySGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnNlc3Npb25dKTsK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK0F1ZGlvU2Vzc2lvblByaXZhdGU6
On5BdWRpb1Nlc3Npb25Qcml2YXRlKCkKK3sKKyAgICBbbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhl
bHBlciBjbGVhckNhbGxiYWNrXTsKIH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQpA
QCAtMjUyLDYgKzMyMywyOCBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNo
YW5nZSgpCiB7CiB9CiAKK3ZvaWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZl
cihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9pbnRlcnJ1cHRpb25P
YnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKK30KKwordm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUlu
dGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAg
ICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOworfQorCit2b2lkIEF1
ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVy
cnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1
cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uKHR5cGUpOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9i
c2VydmVyLmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihmbGFncyk7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLmgKaW5kZXggNWRmMjBhN2FhMTRjMWM0Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1
MS4uODk3MTRiZTA4ZmM4YWIzNTU4MWZlN2QzYWUyNDc3MjhmMzc1ZWVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSw3ICs0Miw5IEBA
IGV4dGVybiBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlm
aWNhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TIDogcHVibGljIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSB7CitjbGFzcyBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TCisgICAgOiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hCisg
ICAgLCBwdWJsaWMgQXVkaW9TZXNzaW9uOjpJbnRlcnJ1cHRpb25PYnNlcnZlciB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCkBAIC02Niw2ICs2OSw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZO
ZWNlc3NhcnkoKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZv
cm1NZWRpYVNlc3Npb24mLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5hbDsKIAor
ICAgIHZvaWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGlvblR5cGUgdHlwZSkgZmluYWwgeyBiZWdpbkludGVycnVwdGlvbih0eXBl
KTsgfQorICAgIHZvaWQgZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykgZmluYWwgeyBlbmRJbnRlcnJ1cHRp
b24oZmxhZ3MpOyB9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUyI7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQppbmRleCBjZjI1ZmI0ODYwMTc2
ODI1YTc3YWQ4NjI0Y2I0NWJkZjM5ODNlYzhkLi42ZmJmMTljZGNjNjM3YTIxMDdjZjkzZGM2N2Fk
Njk3MjhlNTEzMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtODMsNyArODMsNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MqKWNhbGxiYWNrOwogCiAtICh2b2lkKWNsZWFyQ2FsbGJhY2s7Ci0tICh2
b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CiAtICh2b2lk
KWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKQEAgLTExNCw2ICsxMTMsNyBAQCBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICNpZiBIQVZFKENF
TEVTVElBTCkKICAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGOjpudWxsb3B0KTsKICNl
bmRpZgorICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmFkZEludGVycnVwdGlvbk9i
c2VydmVyKCp0aGlzKTsKIH0KIAogTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1MoKQpAQCAtMTIyLDYgKzEyMiw3IEBAIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICBbbV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxs
YmFja107CiAgICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnJlbW92ZUludGVycnVw
dGlvbk9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpy
ZXNldFJlc3RyaWN0aW9ucygpCkBAIC0yNzUsNyArMjc2LDYgQEAgdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc3Vw
cG9ydHMKICAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2Vu
dGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAg
W2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihpbnRlcnJ1cHRpb246
KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIG9iamVjdDpbUEFM
OjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdXTsKIAogICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKQEAgLTM5MCwzMiArMzkwLDYgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc3VwcG9y
dHMKIH0KICNlbmRpZiAvLyBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1Mp
CiAKLS0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgot
ewotICAgIGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVy
cnVwdGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNVSW50ZWdlciB0eXBlID0gW1tb
bm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb25UeXBlS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07Ci0gICAgUGxhdGZvcm1NZWRpYVNl
c3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok5vRmxhZ3M7Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbnRl
cnJ1cHRpb25dIC0gdHlwZSA9ICVpIiwgKGludCl0eXBlKTsKLQotICAgIGlmICh0eXBlID09IEFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVkICYmIFtbW25vdGlmaWNhdGlvbiB1c2Vy
SW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5XSB1
bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25T
aG91bGRSZXN1bWUpCi0gICAgICAgIGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJl
c3VtZVBsYXlpbmc7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHR5cGUsIGZsYWdzXSgpIG11
dGFibGUgewotICAgICAgICBhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
azsKLSAgICAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVCZWdhbikKLSAgICAg
ICAgICAgIGNhbGxiYWNrLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3lzdGVtSW50ZXJydXB0aW9uKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2st
PmVuZEludGVycnVwdGlvbihmbGFncyk7Ci0KLSAgICB9KTsKLX0KLQogLSAodm9pZClhcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7
CiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5jcHAKaW5kZXggOTZmYTk1MjdjMzg1NWNmOWI0NWE1NTc4M2I4MzM5MzVmNWMw
ZWQ4Yi4uMTI2MGJlZDE3NTg0ZDdmZDhmMzQ2YTNjNTUxYWMxOTI0ODQ5YTVmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtMjI1LDE0ICsyMjUsMjAgQEAgTm93
UGxheWluZ01hbmFnZXImIEdQVVByb2Nlc3M6Om5vd1BsYXlpbmdNYW5hZ2VyKCkKIH0KIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCi1SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXImIEdQVVByb2Nlc3M6OmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKSBjb25z
dAorUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyJiBHUFVQcm9jZXNzOjphdWRpb1Nlc3Np
b25NYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fYXVkaW9TZXNzaW9uTWFuYWdlcikKLSAgICAgICAg
bV9hdWRpb1Nlc3Npb25NYW5hZ2VyID0gV1RGOjptYWtlVW5pcXVlPFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlcj4oKTsKKyAgICAgICAgbV9hdWRpb1Nlc3Npb25NYW5hZ2VyID0gV1RGOjpt
YWtlVW5pcXVlPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcj4oKnRoaXMpOwogICAgIHJl
dHVybiAqbV9hdWRpb1Nlc3Npb25NYW5hZ2VyOwogfQogI2VuZGlmCiAKK3ZvaWQgR1BVUHJvY2Vz
czo6Zm9yQWxsV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKGNvbnN0IEZ1bmN0aW9uPHZvaWQoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYpPiYgY2FsbGJhY2spCit7CisgICAgZm9yIChhdXRvJiBjb25u
ZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCisgICAgICAgIGNhbGxi
YWNrKGNvbm5lY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCmlu
ZGV4IGNkYzA4NGY1MzI4ZWQ0NTcyMjA3NDIzMmM4MTAwNjhkMzJlOGZiZTguLjExNzUwYTczMTRj
OWJiYmE5ZmQwNzE1YTU1YzRhMjk4YjFjMTA0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3MuaApAQCAtNjksMTEgKzY5LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICBSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKSBjb25zdDsKKyAgICBSZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNlbmRp
ZgogCiAgICAgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXImIG5vd1BsYXlpbmdNYW5hZ2VyKCk7
CiAKKyAgICB2b2lkIGZvckFsbFdlYlByb2Nlc3NDb25uZWN0aW9ucyhjb25zdCBGdW5jdGlvbjx2
b2lkKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKT4mKTsKKwogcHJpdmF0ZToKICAgICB2b2lk
IGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFn
ZXIuY3BwCmluZGV4IGIxNmI0ZWYyMTFmMmEzODMwNzA1NGM1MTI2MWI3MTYxZmM3ZDA4ZGIuLjE5
MzRiNWU2YmFjODI4MWE4NzJiNTgwYzc0NTJjZTc4ODMwYmQ3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1hbmFnZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC00MSwxMiArNDMsMTcgQEAgc3Rh
dGljIGJvb2wgY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlU
eXBlIGNhdGVnb3J5KQogICAgIHJldHVybiBjYXRlZ29yeSA9PSBBdWRpb1Nlc3Npb246OkFtYmll
bnRTb3VuZDsKIH0KIAotUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIoKQotICAgIDogbV9zZXNzaW9uKEF1ZGlvU2Vzc2lvbjo6Y3Jl
YXRlKCkpCitSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlcihHUFVQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nl
c3MpCisgICAgLCBtX3Nlc3Npb24oQXVkaW9TZXNzaW9uOjpjcmVhdGUoKSkKIHsKKyAgICBtX3Nl
c3Npb24tPmFkZEludGVycnVwdGlvbk9ic2VydmVyKCp0aGlzKTsKIH0KIAotUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkgPSBk
ZWZhdWx0OworUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyKCkKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZUludGVycnVwdGlvbk9i
c2VydmVyKCp0aGlzKTsKK30KIAogdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6
OmFkZFByb3h5KFdlYWtQdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+JiYgcHJveHkpCiB7CkBA
IC0xODYsNiArMTkzLDIwIEBAIGJvb2wgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp0
cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50CiAKIH0KIAordm9pZCBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAg
bV9wcm9jZXNzLmZvckFsbFdlYlByb2Nlc3NDb25uZWN0aW9ucyhbdHlwZV0oYXV0byYgd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpCZWdpbkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbiB7IHR5cGUgfSwgMCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyOjplbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIG1fcHJv
Y2Vzcy5mb3JBbGxXZWJQcm9jZXNzQ29ubmVjdGlvbnMoW2ZsYWdzXShhdXRvJiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbikgeworICAgICAgICB3ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkVuZEF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvbiB7IGZsYWdzIH0sIDApOworICAgIH0pOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5TWFuYWdlci5oCmluZGV4IGIwMDQ1NTcxMmY1YTg2MDE5OTkzMjM3NTczZTM5
YzI4NGM4ZjZjMjMuLjY1MDA1MjFjZDkyZmNmYTBmYTIxOTQ5YWQ0NGIwMDY1NDVkODg1NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmgKQEAgLTMyLDEzICszMiwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIKLSAgICA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+IHsK
KyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkludGVycnVwdGlvbk9ic2VydmVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIoKTsKKyAgICBleHBsaWNpdCBSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXIoR1BVUHJvY2VzcyYpOwogICAgIH5SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXIoKTsKIAogICAgIHZvaWQgYWRkUHJveHkoV2Vha1B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eT4mJik7CkBAIC01Myw2ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6
QXVkaW9TZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uOyB9CiAKIHBy
aXZhdGU6CisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgZmluYWw7CisgICAgdm9pZCBl
bmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZEludGVycnVwdGlvbkZsYWdzKSBmaW5hbDsKKworICAgIEdQVVByb2Nlc3MmIG1fcHJvY2Vz
czsKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9TZXNzaW9uPiBtX3Nlc3Npb247CiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgV2Vha1B0cjxSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eT4+IG1fcHJveGllczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGVmODI0OTM0MjQ1NTUx
MTI3MDMyMzg2NDc5YjcxNzFjZDI4NWQyZTYuLjY1MTEzZTRhYzUxOTM5NGMzODJkZjg5MWE5YjA2
ZDFkM2NlNzI3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMzUsNiArMTM1LDE2IEBAIHZvaWQgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVSZW1vdGVDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDCiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkucHJvY2Vzc0RpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCh0eXBlLCBhcmd1bWVu
dCA/ICZ2YWx1ZSA6IG51bGxwdHIpOwogfQogCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpi
ZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKQoreworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9uKHR5cGUpOworfQorCit2b2lk
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjplbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQorewor
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmVuZEludGVy
cnVwdGlvbihmbGFncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGYwYzM5NTg4YmMyNGZiZTVkNDc3NGY4YjBl
YTkyZWExNTJmNzNiNzEuLjcwOTM1YmM3ZmEyMWY2MjkzNGE4YjViNjcwYjYwZjk5NzBiMDQwNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKQEAgLTc4LDYgKzc4LDggQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNoU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbW1hbmQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPik7CisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSk7CisgICAgdm9p
ZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Np
b246OkVuZEludGVycnVwdGlvbkZsYWdzKTsKIAogICAgIC8vIFRoZSBjb25uZWN0aW9uIGZyb20g
dGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAxODFmM2Vl
YjYxOTg0ZmYzYzFiNjNmNTdhNGM4ZWM5YmZiYzc4NWM1Li5jZDAwNTA5MTczNThiZGNmNDNlOTM2
ODNlYjczYmZiYWM3ZmUzMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI0LDYg
KzI0LDggQEAKIAogbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gV2FudHNEaXNwYXRj
aE1lc3NhZ2UgewogICAgIERpZFJlY2VpdmVSZW1vdGVDb21tYW5kKGVudW06dWludDhfdCBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gYXJndW1lbnQpCisgICAgQmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRpb25UeXBlIHR5cGUpCisgICAgRW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3Mg
ZmxhZ3MpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392728</attachid>
            <date>2020-03-06 08:58:01 -0800</date>
            <delta_ts>2020-03-09 06:43:41 -0700</delta_ts>
            <desc>WIP: WebCore - MediaSessionHelper</desc>
            <filename>0001-WIP-WebCore.patch</filename>
            <type>text/plain</type>
            <size>58759</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">RnJvbSBlN2U4MTMwOWM2NmY3NjU4MWEyYmQyMWViMTgwMWJkNmUwZDQ2YjNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKZXIgTm9ibGUgPGplci5ub2JsZUBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgNiBNYXIgMjAyMCAwODo1NDo1MSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFdJUDogV2Vi
Q29yZQoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAg
fCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIHwg
ICA2ICsKIC4uLi9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmggICAgICAgICB8ICA5
MyArKysKIC4uLi9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICAgICAgICB8IDU4
NiArKysrKysrKysrKysrKysrKysKIC4uLi9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5oICAgICAgICB8ICAyNSArLQogLi4uL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tICAgICAgIHwgNDI1ICsrLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgNzM3IGluc2Vy
dGlvbnMoKyksIDM5OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGEwOTJkODhmZjguLmRk
MzQ4ZmViZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE3MSw2ICsxNzEsNyBAQCBw
bGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCiBwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2MxMDY5YjA0YmMuLjZkMzAyODY3MDNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
MTUwLDYgKzQxNTAsNyBAQAogCQlDREE1OTU5ODIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxp
dGllc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREE1OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi87IH07
CiAJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyNTE3MEEyNzkw
MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9OwogCQlDREE3OTgyQTE3MEEzRDAw
MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNzaW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RB
OTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODc1QTc1MjQxMUI3OTgw
MEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi87IH07CiAJCUNEQTk4RTBCMTYw
M0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThFMDkxNjAzQ0Q1OTAwRkVBM0IxIC8qIExlZ2FjeUNE
TS5jcHAgKi87IH07CiAJCUNEQUI2RDI5MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xz
SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QjZEMjcxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggKi87IH07CiAJCUNE
QUI2RDJFMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyQzE3QzgxNEVFMDBD
NjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oICovOyB9OwpAQCAtMTM4OTEsNiArMTM4OTIs
OCBAQAogCQlDRDg3MUM2ODFGQjUyQjY5MDBGMEI5NjUgLyogSVNPQm94LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElTT0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEODcxQzY5MUZCNTJCNjkwMEYwQjk2NSAvKiBJU09WVFRDdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPVlRUQ3VlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4NzFDNkExRkI1MkI2QTAwRjBCOTY1IC8qIElTT09y
aWdpbmFsRm9ybWF0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElTT09yaWdpbmFsRm9ybWF0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QTdCQjkxOTc3MzVGRTAwQ0JENjQzIC8qIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEOEE3QkJBMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhB
Q0E4NjFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYyMDksNiArMjYyMTIsOCBA
QAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi8s
CiAJCQkJMDc2MzhBOTcxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
aCAqLywKIAkJCQkwNzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5tbSAqLywKKwkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLmggKi8sCisJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTMzODYyLDYgKzMzODY3LDcgQEAKIAkJCQk1MzhFQzhBNjFGOTkz
RjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURF
NUY4NjUzMUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTQtbW0ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MzhFQzhBNzFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNl
c3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlERTVGODY1NDFGQTJBRjI0MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTU1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4
QTgxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1NS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlERTVGODY1NTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU2LW1tLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjljZDM3YmE2NWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OworCitjbGFzcyBNZWRpYVNlc3Npb25IZWxw
ZXJDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25UeXBlIDogYm9vbCB7IEJlZ2lu
LCBFbmQgfTsKKyAgICBlbnVtIGNsYXNzIFNob3VsZFJlc3VtZSA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUs
IFNob3VsZFJlc3VtZSkgPSAwOworCisgICAgZW51bSBjbGFzcyBTdXNwZW5kZWRVbmRlckxvY2sg
OiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSA9IDA7CisKKyAgICBlbnVt
IGNsYXNzIEhhc0F2YWlsYWJsZVRhcmdldHMgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1
YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFi
bGVUYXJnZXRzKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdCA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ1RvQXV0
b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgPSAw
OworCisgICAgZW51bSBjbGFzcyBTaG91bGRQYXVzZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAg
dmlydHVhbCB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpID0gMDsK
KworICAgIGVudW0gY2xhc3MgU3VwcG9ydHNBaXJQbGF5VmlkZW8gOiBib29sIHsgTm8sIFllcyB9
OworICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWly
UGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOworfTsKKworY2xhc3Mg
TWVkaWFTZXNzaW9uSGVscGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWVkaWFTZXNzaW9uSGVs
cGVyJiBzaGFyZWRIZWxwZXIoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRTaGFyZWRIZWxwZXIoVW5p
cXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4mJik7CisgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9u
SGVscGVyKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBhZGRDbGllbnQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50Jik7CisgICAgdm9pZCByZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50
KSA9IDA7CisKKyAgICBib29sIGlzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlczsgfQorICAgIGJvb2wgaXNFeHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZTsgfQorICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWly
UGxheVZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQ
bGF5VmlkZW87IH0KKyAgICBib29sIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KCkgY29u
c3QgeyByZXR1cm4gbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsgfQorCitwcm90ZWN0
ZWQ6CisgICAgTWVkaWFTZXNzaW9uSGVscGVyKCkgPSBkZWZhdWx0OworCisgICAgV2Vha0hhc2hT
ZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50PiBtX2NsaWVudHM7CisgICAgYm9vbCBtX2lzTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNFeHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FjdGl2ZVZpZGVvUm91
dGVTdXBwb3J0c0FpclBsYXlWaWRlbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0IHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhl
bHBlcklPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTgwOWQ2
NmVjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCkBAIC0wLDAgKzEsNTg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCIK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgIk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1
bi5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CisjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZSb3V0ZURldGVjdG9yLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FW
Rm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVSZWYu
aD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisjaW1wb3J0
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KKworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdl
YlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gPSBA
IldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIjsKK1dFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZp
Y2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIjsK
K1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90
aWZpY2F0aW9uIjsKKworI2lmIEhBVkUoQ0VMRVNUSUFMKQorU09GVF9MSU5LX1BSSVZBVEVfRlJB
TUVXT1JLX09QVElPTkFMKENlbGVzdGlhbCkKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChDZWxl
c3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChD
ZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRl
RnJvbSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWws
IEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWRBdHRyaWJ1dGUsIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRy
b2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAq
KQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9s
bGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlciwgTlNTdHJpbmcgKikK
K1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxl
cl9TZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NP
TlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlv
Um91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb25QYXJhbWV0ZXJfU2hvdWxkUGF1c2UsIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRy
b2xsZXJfUGlja2VkUm91dGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfUm91dGVEZXNjcmlwdGlv
bktleV9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvLCBOU1N0cmluZyAqKQorI2VuZGlmCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBNZWRpYVNlc3Npb25IZWxwZXJpT1M7CisK
K0BpbnRlcmZhY2UgV2ViTWVkaWFTZXNzaW9uSGVscGVyIDogTlNPYmplY3QgeworICAgIE1lZGlh
U2Vzc2lvbkhlbHBlcmlPUyogX2NhbGxiYWNrOworCisjaWYgSEFWRShNRURJQV9QTEFZRVIpICYm
ICFQTEFURk9STShXQVRDSE9TKQorICAgIFJldGFpblB0cjxBVlJvdXRlRGV0ZWN0b3I+IF9yb3V0
ZURldGVjdG9yOworI2VuZGlmCisgICAgYm9vbCBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7Cisg
ICAgYm9vbCBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmc7Cit9CisKKy0gKGlk
KWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhlbHBlcmlPUyopY2FsbGJhY2s7CisKKy0g
KHZvaWQpY2xlYXJDYWxsYmFjazsKKy0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
OworLSAoQk9PTCloYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGU7CisKKyNpZiBIQVZFKE1FRElB
X1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCistICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXM7CistICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKKyNlbmRp
ZgorCitAZW5kCisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUyBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVNlc3Npb25IZWxwZXIgeworcHVibGljOgorICAgIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUygp
OworICAgIH5NZWRpYVNlc3Npb25IZWxwZXJpT1MoKTsKKworICAgIHZvaWQgZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0
aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZSwgTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWUpOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJM
b2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKE1lZGlhU2Vzc2lv
bkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
V2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSgpOworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIHZvaWQgY2FyUGxheVNlcnZlckRpZWQoKTsK
KyAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmKTsKKyAg
ICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJik7CisgICAg
dm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgdXNpbmcgSGFzQXZhaWxhYmxlVGFyZ2V0cyA9IE1lZGlhU2Vzc2lv
bkhlbHBlckNsaWVudDo6SGFzQXZhaWxhYmxlVGFyZ2V0czsKKyAgICB1c2luZyBJbnRlcnJ1cHRp
b25UeXBlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOworICAg
IHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OworICAgIHVzaW5nIFNob3VsZFBhdXNl
ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKKyAgICB1c2luZyBTaG91
bGRSZXN1bWUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZTsKKyAgICB1
c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3Vw
cG9ydHNBaXJQbGF5VmlkZW87CisgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CisKKyAgICB2b2lkIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOworCisgICAgdm9pZCBwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7CisgICAgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcygpIGZpbmFsOworCisgICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4g
bV9vYmpjT2JzZXJ2ZXI7CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgYm9vbCBtX2hhdmVQcmVz
ZW50ZWRBcHBsaWNhdGlvblBJRCB7IGZhbHNlIH07CisjZW5kaWYKK307CisKK3N0YXRpYyBVbmlx
dWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyPiYgc2hhcmVkSGVscGVySW5zdGFuY2UoKQoreworICAg
IE5ldmVyRGVzdHJveWVkPFVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXI+PiBoZWxwZXIgPSBt
YWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxNZWRpYVNlc3Npb25IZWxwZXJpT1M+
KCk7CisgICAgcmV0dXJuIGhlbHBlcjsKK30KKworTWVkaWFTZXNzaW9uSGVscGVyJiBNZWRpYVNl
c3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpCit7CisgICAgcmV0dXJuIHNoYXJlZEhlbHBlcklu
c3RhbmNlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpzZXRTaGFyZWRIZWxwZXIo
VW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4mJiBoZWxwZXIpCit7CisgICAgc2hhcmVkSGVs
cGVySW5zdGFuY2UoKSA9IFdURk1vdmUoaGVscGVyKTsKK30KKworTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpNZWRpYVNlc3Npb25IZWxwZXJpT1MoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIG1fb2JqY09ic2VydmVyID0gYWRvcHROUyhbW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7CisgICAgbV9pc0V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2
YWlsYWJsZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisjaWYgSEFWRShDRUxF
U1RJQUwpCisgICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURjo6bnVsbG9wdCk7CisjZW5k
aWYKK30KKworTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp+TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9vYmpjT2JzZXJ2ZXIg
Y2xlYXJDYWxsYmFja107CisgICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7CisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cHJvdmlk
ZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworI2lmIEhBVkUoQ0VMRVNUSUFM
KQorICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKKworICAgIGlmICgh
Y2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJv
bSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBb
W2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBz
ZXRBdHRyaWJ1dGU6QChwaWQpIGZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhl
cml0QXBwbGljYXRpb25TdGF0ZUZyb20oKSBlcnJvcjomZXJyb3JdOworICAgIGlmIChlcnJvcikK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gc2V0IHVwIFBJRCBwcm94eWluZzogJXMi
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsKKyNlbmRpZgorfQorCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMo
KQoreworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICByZXR1
cm47CisgICAgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyA9IHRydWU7CisKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RhcnRNb25pdG9y
aW5nQWlyUGxheVJvdXRlc107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygp
Cit7CisgICAgaWYgKCFtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICByZXR1
cm47CisgICAgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyA9IGZhbHNlOworCisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fb2JqY09ic2VydmVyIHN0b3BNb25pdG9y
aW5nQWlyUGxheVJvdXRlc107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCisj
aWYgSEFWRShDRUxFU1RJQUwpCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNl
cnZlckRpZWQoKQoreworICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQp
OworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVj
dGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVkKQoreworICAgIGlmIChjYXJQ
bGF5SXNDb25uZWN0ZWQpIHsKKyAgICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0
dHJpYnV0ZSgpKSB7CisgICAgICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldElzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0
ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBs
YXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBib29sVmFsdWVdKTsKK30KKwordm9pZCBNZWRpYVNl
c3Npb25IZWxwZXJpT1M6OnNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wgaXNQ
bGF5aW5nKQoreworICAgIGlmIChpc1BsYXlpbmcgPT0gbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCA9IGlzUGxheWluZzsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKG1f
aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXQ6OlllcyA6IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOworfQorCit2b2lkIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxi
b29sPiYmIHNob3VsZFBhdXNlKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVzZS52
YWx1ZU9yKGZhbHNlKSA/IFNob3VsZFBhdXNlOjpZZXMgOiBTaG91bGRQYXVzZTo6Tm8pOworfQor
Cit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShP
cHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWlyUGxheVZpZGVvKQoreworICAgIG1fYWN0aXZlVmlk
ZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3VwcG9ydHNBaXJQbGF5VmlkZW8udmFsdWVP
cihmYWxzZSk7CisKKyAgICBhdXRvIHBsYXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRp
b1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRdKTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UobV9hY3Rp
dmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8gPyBTdXBwb3J0c0FpclBsYXlWaWRlbzo6
WWVzIDogU3VwcG9ydHNBaXJQbGF5VmlkZW86Ok5vLCBwbGF5YmFja1RhcmdldC5jb3B5UmVmKCkp
OworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZlZEludGVy
cnVwdGlvbihNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGUgdHlwZSwg
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQorewor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQucmVjZWl2
ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKTsKK30KKwordm9pZCBNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVu
ZGVyTG9jayB1bmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCh1bmRlckxvY2sp
OworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21l
SW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwordm9pZCBNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2spCit7CisgICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQodW5kZXJMb2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25I
ZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKK3sKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxl
XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA/IEhhc0F2YWls
YWJsZVRhcmdldHM6OlllcyA6IEhhc0F2YWlsYWJsZVRhcmdldHM6Ok5vKTsKK30KKworQGltcGxl
bWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgorCistIChpZClpbml0V2l0aENhbGxiYWNr
OihNZWRpYVNlc3Npb25IZWxwZXJpT1MqKWNhbGxiYWNrCit7CisgICAgTE9HKE1lZGlhLCAiLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFja10iKTsKKworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2NhbGxiYWNr
ID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25D
bGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6
UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRp
b24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAg
W2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBu
YW1lOldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBs
aWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW2NlbnRl
ciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNp
Z25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOlBBTDo6Z2V0X1VJ
S2l0X1VJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6
bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworI2lmIEhBVkUoQ0VMRVNUSUFM
KQorICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVk
Tm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoY2FyUGxheVNlcnZlckRpZWQ6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxl
cl9TZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIGlm
IChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5v
dGlmaWNhdGlvbigpKQorICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKGNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTopIG5hbWU6Z2V0QVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVj
dDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKSkKKyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOikgbmFtZTpn
ZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlv
bigpIG9iamVjdDpuaWxdOworI2VuZGlmCisKKyAgICAvLyBOb3cgcGxheWluZyB3b24ndCB3b3Jr
IHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxpdmVyeSBvZiByZW1vdGUgY29udHJvbCBldmVudHMu
CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CisgICAg
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBbW1BBTDo6Z2V0VUlBcHBs
aWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIGJlZ2luUmVjZWl2aW5nUmVtb3RlQ29u
dHJvbEV2ZW50c107CisgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICB9KTsK
KworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOworCisjaWYgSEFWRShNRURJ
QV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIGlmICghcHRocmVhZF9tYWluX25w
KCkpIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3JvdXRlRGV0ZWN0b3IgPSBXVEZNb3ZlKF9yb3V0ZURldGVjdG9yKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBMT0coTWVkaWEsICJzYWZlbHlUZWFyRG93biAtIGRpcGF0Y2hlZCB0byBVSSB0
aHJlYWQuIik7CisgICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAg
ICAgICAgIHJvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87Cisg
ICAgICAgICAgICByb3V0ZURldGVjdG9yLmNsZWFyKCk7CisgICAgICAgICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBfcm91dGVE
ZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKKyNlbmRpZgorCisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxm
XTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpY2xlYXJDYWxsYmFjaworewor
ICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNsZWFyQ2FsbGJhY2tdIik7
CisgICAgX2NhbGxiYWNrID0gbmlsOworfQorCistIChCT09MKWhhc1dpcmVsZXNzVGFyZ2V0c0F2
YWlsYWJsZQoreworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0iKTsKKyNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBM
QVRGT1JNKFdBVENIT1MpCisgICAgcmV0dXJuIF9yb3V0ZURldGVjdG9yLmdldCgpLm11bHRpcGxl
Um91dGVzRGV0ZWN0ZWQ7CisjZWxzZQorICAgIHJldHVybiBOTzsKKyNlbmRpZgorfQorCisjaWYg
SEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQorLSAodm9pZClzdGFydE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzCit7CisgICAgaWYgKF9tb25pdG9yaW5nQWlyUGxheVJvdXRl
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzID0gdHJ1
ZTsKKworICAgIGlmIChfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChfcm91dGVEZXRlY3RvcikgeworICAgICAgICBfcm91dGVE
ZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBZRVM7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcgPSB0
cnVlOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRNb25p
dG9yaW5nQWlyUGxheVJvdXRlc10iKTsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hB
c3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgQVNTRVJUKCFwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rvcik7CisK
KyAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgeworICAgICAgICAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcm91
dGVEZXRlY3RvciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlJvdXRlRGV0ZWN0b3JJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yLmdldCgp
LnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IHByb3RlY3RlZFNlbGYtPl9tb25pdG9yaW5nQWlyUGxh
eVJvdXRlczsKKyAgICAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6cHJvdGVjdGVkU2VsZi5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3Iod2ly
ZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KSBuYW1lOkFWUm91dGVEZXRlY3Rvck11bHRp
cGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OnByb3RlY3RlZFNl
bGYtPl9yb3V0ZURldGVjdG9yLmdldCgpXTsKKworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAg
ICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICB9CisKKyAgICAgICAg
cHJvdGVjdGVkU2VsZi0+X3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nID0gZmFs
c2U7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzCit7
CisgICAgaWYgKCFfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWly
UGxheVJvdXRlc10iKTsKKworICAgIF9tb25pdG9yaW5nQWlyUGxheVJvdXRlcyA9IGZhbHNlOwor
ICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IE5POworfQor
I2VuZGlmIC8vIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKworLSAo
dm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAg
dXNpbmcgSW50ZXJydXB0aW9uVHlwZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJy
dXB0aW9uVHlwZTsKKyAgICB1c2luZyBTaG91bGRSZXN1bWUgPSBNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OlNob3VsZFJlc3VtZTsKKworICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNh
dGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlw
ZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworICAgIEludGVycnVwdGlvblR5cGUgaW50ZXJy
dXB0aW9uVHlwZSA9ICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVk
ID8gSW50ZXJydXB0aW9uVHlwZTo6RW5kIDogSW50ZXJydXB0aW9uVHlwZTo6QmVnaW4pOworICAg
IFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUgPSBTaG91bGRSZXN1bWU6Ok5vOworCisgICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAl
aSIsIChpbnQpdHlwZSk7CisKKyAgICBpZiAoaW50ZXJydXB0aW9uVHlwZSA9PSBJbnRlcnJ1cHRp
b25UeXBlOjpFbmQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZB
dWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXSA9
PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNob3VsZFJlc3VtZSkKKyAgICAgICAg
c2hvdWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpZZXM7CisKKyAgICBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZiksIGludGVycnVwdGlvblR5cGUsIHNob3VsZFJlc3VtZV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQorICAgICAgICAg
ICAgY2FsbGJhY2stPnJlY2VpdmVkSW50ZXJydXB0aW9uKGludGVycnVwdGlvblR5cGUsIHNob3Vs
ZFJlc3VtZSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5nIFN1c3Bl
bmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJM
b2NrOworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZF0iKTsKKworICAgIGF1dG8gaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbW1tub3RpZmljYXRp
b24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVkVW5kZXJMb2NrIl0gYm9vbFZh
bHVlXSA/IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzIDogU3VzcGVuZGVkVW5kZXJMb2NrOjpObzsK
KyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSgpIG11dGFibGUg
eworICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2sp
CisgICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlz
U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB9KTsKK30KKworLSAodm9pZClhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVT
RURfUEFSQU0obm90aWZpY2F0aW9uKTsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZV0iKTsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hB
c3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxi
YWNrKQorICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRp
b24pOworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZV0iKTsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQorICAgICAgICAgICAg
Y2FsbGJhY2stPmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAgfSk7Cit9CisK
Ky0gKHZvaWQpd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAg
ICBpZiAoIV9jYWxsYmFjayB8fCAhX21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVz
c1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZV0iKTsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlz
cGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgdXNp
bmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5k
ZWRVbmRlckxvY2s7CisKKyAgICBpZiAoIV9jYWxsYmFjayApCisgICAgICAgIHJldHVybjsKKwor
ICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kXSIpOworCisgICAgYXV0byBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25v
dGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2si
XSBib29sVmFsdWVdID8gU3VzcGVuZGVkVW5kZXJMb2NrOjpZZXMgOiBTdXNwZW5kZWRVbmRlckxv
Y2s6Ok5vOworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRVbmRlckxvY2tdKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKyNpZiBIQVZFKENFTEVT
VElBTCkKKy0gKHZvaWQpY2FyUGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExP
RyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0iKTsK
KyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBjYWxsT25XZWJUaHJlYWRPckRp
c3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZild
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYt
Pl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYXJQbGF5U2VydmVyRGllZCgpOwor
ICAgIH0pOworfQorCistICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAgIGlm
IChub3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25u
ZWN0ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIoKSkgeworICAgICAgICBOU051bWJlciAqbnNDYXJQ
bGF5SXNDb25uZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0
QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRl
cigpXTsKKyAgICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQorICAgICAgICAgICAgY2Fy
UGxheUlzQ29ubmVjdGVkID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07CisgICAg
fQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3Zl
KGNhclBsYXlJc0Nvbm5lY3RlZCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxs
YmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT51
cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxib29s
PiBzaG91bGRQYXVzZTsKKyAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5c3RlbUNv
bnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9T
aG91bGRQYXVzZSgpKSB7CisgICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBhdXNlID0gW25vdGlm
aWNhdGlvbi51c2VySW5mbyB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpXTsK
KyAgICAgICAgaWYgKG5zU2hvdWxkUGF1c2UpCisgICAgICAgICAgICBzaG91bGRQYXVzZSA9IG5z
U2hvdWxkUGF1c2UuYm9vbFZhbHVlOworICAgIH0KKworICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBv
cnRzQWlyUGxheVZpZGVvOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tl
ZFJvdXRlQXR0cmlidXRlKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2Ny
aXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKSkgeworICAgICAgICBOU0RpY3Rp
b25hcnkqIHBpY2tlZFJvdXRlID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJl
ZEFWU3lzdGVtQ29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxl
cl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSgpXTsKKyAgICAgICAgaWYgKFtwaWNrZWRSb3V0ZSBpc0tp
bmRPZkNsYXNzOk5TRGljdGlvbmFyeS5jbGFzc10pIHsKKyAgICAgICAgICAgIE5TTnVtYmVyKiBu
c1N1cHBvcnRzQWlyUGxheVZpZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9yS2V5OmdldEFWU3lz
dGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5Vmlk
ZW8oKV07CisgICAgICAgICAgICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRlbykKKyAgICAgICAg
ICAgICAgICBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8uYm9v
bFZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaG91
bGRQYXVzZSA9IFdURk1vdmUoc2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdU
Rk1vdmUoc3VwcG9ydHNBaXJQbGF5VmlkZW8pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0
byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrLT5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hvdWxkUGF1c2UpKTsK
KyAgICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUo
c3VwcG9ydHNBaXJQbGF5VmlkZW8pKTsKKyAgICAgICAgfQorICAgIH0pOworCit9CisjZW5kaWYg
Ly8gSEFWRShDRUxFU1RJQUwpCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5k
ZXggNWRmMjBhN2FhMTQuLmE1MDZhOWMzMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbmNsdWRlICJNZWRp
YVNlc3Npb25IZWxwZXJJT1MuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
aCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTQxLDE4ICs0MiwxMyBAQCBleHRl
cm4gTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRp
b247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
UyA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EgeworY2xhc3MgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUworICAgIDogcHVibGljIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYQorICAgICwg
cHVibGljIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCi0gICAgdm9pZCBleHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZURpZENoYW5nZSgpOwogICAgIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxh
YmxlKCkgb3ZlcnJpZGU7Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgdm9pZCBjYXJQbGF5U2Vy
dmVyRGllZCgpOwotICAgIHZvaWQgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJv
b2w+JiYpOwotICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29s
PiYmKTsKLSAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4m
Jik7Ci0jZW5kaWYKICAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKIHByaXZhdGU6CkBAIC02NiwxNCArNjIsMjEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2Fy
eSgpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiYsIERlbGF5Q2FsbGluZ1VwZGF0ZU5vd1BsYXlpbmcpIGZpbmFsOwogCisgICAgLy8g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgdm9pZCByZWNlaXZlZEludGVycnVwdGlvbihJ
bnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7CisgICAgdm9p
ZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFs
OworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKSBmaW5hbDsKKyAgICB2
b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBleHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzKSBmaW5h
bDsKKyAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpIGZpbmFs
OworICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRl
bywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIGZpbmFsOworICAgIHZvaWQgaXNQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
KSBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyI7
IH0KICNlbmRpZgogCi0gICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9vYmpj
T2JzZXJ2ZXI7Ci0jaWYgSEFWRShDRUxFU1RJQUwpCiAgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRB
cHBsaWNhdGlvblBJRCB7IGZhbHNlIH07Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KaW5kZXggY2YyNWZiNDg2MDEuLjJlZDdiZWMzYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtMzUsNjcgKzM1LDEwIEBACiAjaW1wb3J0ICJS
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlN5c3RlbU1lbW9yeS5oIgogI2lt
cG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9T
ZXNzaW9uLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZSb3V0ZURldGVjdG9yLmg+Ci0jaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lvcy9DZWxlc3RpYWxTUEkuaD4KLSNpbXBvcnQgPHBh
bC9zcGkvaW9zL1VJS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SQU1TaXplLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+Ci0KLVdFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlm
aWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24i
OwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZE5vdGlmaWNhdGlvbiI7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZU5vdGlmaWNhdGlvbiI7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiI7Ci0KLSNpZiBIQVZFKENFTEVTVElBTCkK
LVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChDZWxlc3RpYWwpCi1TT0ZUX0xJ
TktfQ0xBU1NfT1BUSU9OQUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXIpCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9J
bmhlcml0QXBwbGljYXRpb25TdGF0ZUZyb20sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVj
dGVkQXR0cmlidXRlLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENl
bGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5v
dGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxl
c3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRpb25Q
YXJhbWV0ZXIsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0
aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24s
IE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5
c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVt
Q29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVy
X1Nob3VsZFBhdXNlLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENl
bGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlLCBOU1N0cmlu
ZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250
cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbywgTlNT
dHJpbmcgKikKLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVyZmFj
ZSBXZWJNZWRpYVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7Ci0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUyogX2NhbGxiYWNrOwotCi0jaWYgSEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9S
TShXQVRDSE9TKQotICAgIFJldGFpblB0cjxBVlJvdXRlRGV0ZWN0b3I+IF9yb3V0ZURldGVjdG9y
OwotI2VuZGlmCi0gICAgYm9vbCBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7Ci0gICAgYm9vbCBf
c3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmc7Ci19Ci0KLS0gKGlkKWluaXRXaXRo
Q2FsbGJhY2s6KE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MqKWNhbGxiYWNrOwotCi0tICh2b2lkKWNs
ZWFyQ2FsbGJhY2s7Ci0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb247Ci0tICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFj
dGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tICh2b2lkKWFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLS0gKEJP
T0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlOwotCi0jaWYgSEFWRShNRURJQV9QTEFZRVIp
ICYmICFQTEFURk9STShXQVRDSE9TKQotLSAodm9pZClzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91
dGVzOwotLSAodm9pZClzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7Ci0jZW5kaWYKLQotQGVu
ZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlKCkKQEAg
LTEwNiwyMiArNDksMTIgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcj4gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjcmVhdGUKIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKQogICAgIDogTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX29i
amNPYnNlcnZlciA9IGFkb3B0TlMoW1tXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWxsb2NdIGluaXRX
aXRoQ2FsbGJhY2s6dGhpc10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBy
ZXNldFJlc3RyaWN0aW9ucygpOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgdXBkYXRlQ2Fy
UGxheUlzQ29ubmVjdGVkKFdURjo6bnVsbG9wdCk7Ci0jZW5kaWYKIH0KIAogTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKQogewotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIFttX29iamNPYnNlcnZlciBjbGVhckNhbGxiYWNrXTsKLSAg
ICBtX29iamNPYnNlcnZlciA9IG5pbDsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgaWYgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuaXNNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMoKSkKKyAgICAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIo
KS5zdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6cmVzZXRSZXN0cmljdGlvbnMoKQpAQCAtMTQzLDkgKzc2LDcgQEAgdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCiAKIGJvb2wgTWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkKIHsKLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gW21fb2JqY09ic2VydmVyIGhh
c1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIHJldHVybiBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLmlzRXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKQpAQCAtMTU3LDE0ICs4OCwx
MCBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0
TW9uaXRvcmluZygpCiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXF1aXJlc01v
bml0b3JpbmcgPSAiLCByZXF1aXJlc01vbml0b3JpbmcpOwogCi0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0KICAgICBpZiAocmVxdWlyZXNNb25pdG9yaW5nKQotICAgICAgICBbbV9v
YmpjT2JzZXJ2ZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgICAgIE1lZGlh
U2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKTsKICAgICBlbHNlCi0gICAgICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXNdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBN
ZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0b3BNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMoKTsKICNlbmRpZgogfQogCkBAIC0xNzQsMjEgKzEwMSwxMyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2Fy
eSgpCiAgICAgaWYgKG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEKQogICAgICAgICByZXR1
cm47CiAgICAgbV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQgPSB0cnVlOwotICAgIHByb3Zp
ZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNo
YXJlZEhlbHBlcigpLnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQocHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKCkpOwogI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpCiB7Ci0jaWYgSEFWRShDRUxFU1RJ
QUwpCi0gICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxp
Y2F0aW9uU3RhdGVGcm9tKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOwotICAgIFtbZ2V0QVZTeXN0ZW1Db250cm9sbGVyQ2xhc3MoKSBzaGFyZWRBVlN5c3Rl
bUNvbnRyb2xsZXJdIHNldEF0dHJpYnV0ZTpAKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKSBm
b3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVG
cm9tKCkgZXJyb3I6JmVycm9yXTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIFdURkxvZ0Fsd2F5
cygiRmFpbGVkIHRvIHNldCB1cCBQSUQgcHJveHlpbmc6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24uVVRGOFN0cmluZyk7Ci0jZW5kaWYKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNo
YXJlZEhlbHBlcigpLnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQocHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKCkpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Np
b25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24sIERlbGF5Q2Fs
bGluZ1VwZGF0ZU5vd1BsYXlpbmcgZGVsYXlDYWxsaW5nVXBkYXRlTm93UGxheWluZykKQEAgLTIw
MSw0NSArMTIwLDI1IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxF
bmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvCiAjZW5kaWYKIH0KIAotdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZSgpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGF2ZVRhcmdldHMpCiB7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBib29sIGhhdmVUYXJnZXRz
ID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07CiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBoYXZlVGFyZ2V0cyk7CiAKICAgICBmb3JFYWNoU2Vzc2lv
bihbaGF2ZVRhcmdldHNdIChhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24uZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGF2ZVRhcmdldHMpOworICAgICAgICBz
ZXNzaW9uLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhdmVUYXJnZXRz
ID09IEhhc0F2YWlsYWJsZVRhcmdldHM6Olllcyk7CiAgICAgfSk7Ci0KLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKLSNpZiBIQVZFKENFTEVTVElBTCkKLXZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQoKQordm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9B
dXRvbW90aXZlSGVhZFVuaXQgcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KQogewotICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdU
Rjo6bnVsbG9wdCk7CisgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQocGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0ID09IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6WWVz
KTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25u
ZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJiBjYXJQbGF5SXNDb25uZWN0ZWQpCit2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hv
dWxkUGF1c2UpCiB7Ci0gICAgaWYgKGNhclBsYXlJc0Nvbm5lY3RlZCkgewotICAgICAgICBzZXRJ
c1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdChjYXJQbGF5SXNDb25uZWN0ZWQudmFsdWUoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0cmlidXRlKCkpIHsKLSAgICAgICAgc2V0SXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc2hvdWxkUGF1c2UpOwogCi0gICAgc2V0SXNQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoW1tbZ2V0QVZTeXN0ZW1Db250cm9sbGVyQ2xhc3Mo
KSBzaGFyZWRBVlN5c3RlbUNvbnRyb2xsZXJdIGF0dHJpYnV0ZUZvcktleTpnZXRBVlN5c3RlbUNv
bnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0cmlidXRlKCldIGJvb2xWYWx1ZV0pOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uo
T3B0aW9uYWw8Ym9vbD4mJiBzaG91bGRQYXVzZSkKLXsKLSAgICBpZiAoIXNob3VsZFBhdXNlIHx8
ICFzaG91bGRQYXVzZS52YWx1ZSgpKQorICAgIGlmIChzaG91bGRQYXVzZSAhPSBTaG91bGRQYXVz
ZTo6WWVzKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3JFYWNoU2Vzc2lvbihbXShhdXRvJiBz
ZXNzaW9uKSB7CkBAIC0yNDgsMzEzICsxNDcsNjMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGEK
ICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc3VwcG9ydHNBaXJQbGF5VmlkZW8pCit2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9y
dHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBsYXliYWNrVGFy
Z2V0PiYmIHBsYXliYWNrVGFyZ2V0KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3VwcG9ydHNBaXJQbGF5VmlkZW8pOwogICAgIGF1dG8gbm93UGxheWluZ1Nlc3Npb24gPSBub3dQ
bGF5aW5nRWxpZ2libGVTZXNzaW9uKCk7CiAgICAgaWYgKCFub3dQbGF5aW5nU2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCA9IHN1
cHBvcnRzQWlyUGxheVZpZGVvLnZhbHVlT3IoZmFsc2UpOwotICAgIGF1dG8gcGxheWJhY2tUYXJn
ZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShbUEFMOjpnZXRBVk91dHB1dENv
bnRleHRDbGFzcygpIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dF0pOwotICAg
IG5vd1BsYXlpbmdTZXNzaW9uLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldCk7CisgICAgbm93UGxheWluZ1Nlc3Npb24tPnNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KHN1cHBvcnRzQWlyUGxheVZpZGVvID09IFN1cHBvcnRzQWlyUGxh
eVZpZGVvOjpZZXMpOwogICAgIG5vd1BsYXlpbmdTZXNzaW9uLT5zZXRQbGF5YmFja1RhcmdldChX
VEZNb3ZlKHBsYXliYWNrVGFyZ2V0KSk7CiB9Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi1AaW1wbGVtZW50YXRpb24gV2ViTWVkaWFTZXNzaW9uSGVscGVyCi0KLS0gKGlkKWlu
aXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MqKWNhbGxiYWNrCi17Ci0gICAg
TE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFja10iKTsK
LQotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIF9jYWxsYmFjayA9IGNhbGxiYWNrOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50
ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGludGVycnVwdGlvbjop
IG5hbWU6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OltQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV1dOwotCi0gICAgW2NlbnRl
ciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQ6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9u
IG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJ
QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSAg
ICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpQQUw6Omdl
dF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVj
dDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbFJl
c2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
OikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90
aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6V2Vi
VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
LSNpZiBIQVZFKENFTEVTVElBTCkKLSAgICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9T
ZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlmaWNhdGlvbigpKQotICAgICAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGNhclBsYXlTZXJ2ZXJEaWVkOikgbmFtZTpn
ZXRBVlN5c3RlbUNvbnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSBv
YmplY3Q6bmlsXTsKLSAgICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXND
b25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24oKSkKLSAgICAgICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2U6
KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VO
b3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSAgICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJv
bGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZTopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSNlbmRpZgotCi0gICAgLy8gTm93
IHBsYXlpbmcgd29uJ3Qgd29yayB1bmxlc3Mgd2UgdHVybiBvbiB0aGUgZGVsaXZlcnkgb2YgcmVt
b3RlIGNvbnRyb2wgZXZlbnRzLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF4gewotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgW1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBiZWdp
blJlY2VpdmluZ1JlbW90ZUNvbnRyb2xFdmVudHNdOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgfSk7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KIAotLSAodm9pZClkZWFs
bG9jCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKElu
dGVycnVwdGlvblR5cGUgdHlwZSwgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKIHsKLSAgICBM
T0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwotCi0jaWYgSEFW
RShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotICAgIGlmICghcHRocmVhZF9t
YWluX25wKCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3JvdXRlRGV0ZWN0b3IgPSBXVEZNb3ZlKF9yb3V0ZURldGVjdG9yKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJzYWZlbHlUZWFyRG93biAtIGRpcGF0Y2hlZCB0
byBVSSB0aHJlYWQuIik7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICAgICAgICAgIHJvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0g
Tk87Ci0gICAgICAgICAgICByb3V0ZURldGVjdG9yLmNsZWFyKCk7Ci0gICAgICAgICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIH0pOwotICAgIH0gZWxzZQotICAgICAgICBf
cm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKLSNlbmRpZgot
Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZl
cjpzZWxmXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpY2xlYXJDYWxsYmFj
awotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNsZWFyQ2FsbGJh
Y2tdIik7Ci0gICAgX2NhbGxiYWNrID0gbmlsOwotfQotCi0tIChCT09MKWhhc1dpcmVsZXNzVGFy
Z2V0c0F2YWlsYWJsZQotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0iKTsKLSNpZiBIQVZFKE1FRElBX1BMQVlFUikg
JiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAgcmV0dXJuIF9yb3V0ZURldGVjdG9yLmdldCgpLm11
bHRpcGxlUm91dGVzRGV0ZWN0ZWQ7Ci0jZWxzZQotICAgIHJldHVybiBOTzsKLSNlbmRpZgotfQot
Ci0jaWYgSEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotLSAodm9pZClz
dGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzCi17Ci0gICAgaWYgKF9tb25pdG9yaW5nQWlyUGxh
eVJvdXRlcykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzID0gdHJ1ZTsKKyAgICBh
dXRvIGZsYWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3VtZTo6WWVzID8gUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9G
bGFnczsKIAotICAgIGlmIChfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChfcm91dGVEZXRlY3RvcikgewotICAgICAgICBfcm91
dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBZRVM7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcg
PSB0cnVlOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRN
b25pdG9yaW5nQWlyUGxheVJvdXRlc10iKTsKLQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0
Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKCFwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rvcik7
Ci0KLSAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAgICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5f
cm91dGVEZXRlY3RvciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlJvdXRlRGV0ZWN0b3JJbnN0YW5j
ZSgpIGluaXRdKTsKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yLmdl
dCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IHByb3RlY3RlZFNlbGYtPl9tb25pdG9yaW5nQWly
UGxheVJvdXRlczsKLSAgICAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6cHJvdGVjdGVkU2VsZi5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3Io
d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KSBuYW1lOkFWUm91dGVEZXRlY3Rvck11
bHRpcGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OnByb3RlY3Rl
ZFNlbGYtPl9yb3V0ZURldGVjdG9yLmdldCgpXTsKLQotICAgICAgICAgICAgcHJvdGVjdGVkU2Vs
Zi0+X2NhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwot
ICAgICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICB9Ci0KLSAgICAg
ICAgcHJvdGVjdGVkU2VsZi0+X3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nID0g
ZmFsc2U7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
Ci17Ci0gICAgaWYgKCFfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMpCi0gICAgICAgIHJldHVybjsK
LQotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5n
QWlyUGxheVJvdXRlc10iKTsKLQotICAgIF9tb25pdG9yaW5nQWlyUGxheVJvdXRlcyA9IGZhbHNl
OwotICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IE5POwot
fQotI2VuZGlmIC8vIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLQot
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0g
ICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0
aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3Rp
ZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
blR5cGVLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9G
bGFnczsKLQotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVw
dGlvbl0gLSB0eXBlID0gJWkiLCAoaW50KXR5cGUpOwotCi0gICAgaWYgKHR5cGUgPT0gQVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZv
XSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVuc2ln
bmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNob3Vs
ZFJlc3VtZSkKLSAgICAgICAgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1l
UGxheWluZzsKLQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVh
ZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdHlwZSwgZmxhZ3NdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrOwot
ICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUJlZ2FuKQotICAgICAgICAg
ICAgY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0
ZW1JbnRlcnJ1cHRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjay0+ZW5k
SW50ZXJydXB0aW9uKGZsYWdzKTsKLQotICAgIH0pOwotfQotCi0tICh2b2lkKWFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAg
ICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQotICAgIGlmICghX2NhbGxiYWNrIHx8IF9j
YWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kXSIpOwotCi0gICAgQk9PTCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9
IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRl
ckxvY2siXSBib29sVmFsdWVdOwotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09u
TWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3Rl
Y3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIH0pOwotfQotCi0t
ICh2b2lkKWFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFf
Y2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV0iKTsKLQotICAgIGNhbGxPbldlYlRocmVhZE9y
RGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2Vs
Zi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShu
b3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdu
b3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVd
Iik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChh
dXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNh
bGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotICAgIH0pOworICAgIGlm
ICh0eXBlID09IEludGVycnVwdGlvblR5cGU6OkJlZ2luKQorICAgICAgICBiZWdpbkludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNl
CisgICAgICAgIGVuZEludGVycnVwdGlvbihmbGFncyk7CiB9CiAKLS0gKHZvaWQpd2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChTdXNwZW5kZWRVbmRlckxvY2sgaXNTdXNwZW5kZWRVbmRlckxvY2spCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBpZiAoIV9jYWxsYmFjayB8fCAhX21vbml0b3Jp
bmdBaXJQbGF5Um91dGVzKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZV0iKTsKLQotICAgIGNhbGxPbldl
YlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJv
dGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgfSk7CisgICAgTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRV
bmRlckxvY2sgPT0gU3VzcGVuZGVkVW5kZXJMb2NrOjpZZXMpOwogfQogCi0tICh2b2lkKWFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgor
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgp
CiB7Ci0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucygpKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNTdXNwZW5k
ZWRVbmRlckxvY2sgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlz
U3VzcGVuZGVkVW5kZXJMb2NrIl0gYm9vbFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJlYWRPckRp
c3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiks
IGlzU3VzcGVuZGVkVW5kZXJMb2NrXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2Fs
bGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spOwotICAg
IH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoKTsKIH0KIAotI2lmIEhBVkUoQ0VMRVNUSUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVy
RGllZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
IGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIGlmICghX2NhbGxiYWNrKQorICAgIGlmICh3
aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBM
T0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdIik7
Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JE
aXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxm
LT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+Y2FyUGxheVNlcnZlckRpZWQoKTsK
LSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6
WWVzKTsKIH0KIAotLSAodm9pZCljYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2U6KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxp
Y2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKIHsKLSAgICBpZiAoIV9jYWxsYmFjaykKKyAgICBp
ZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOwotICAgIGlmIChub3RpZmljYXRp
b24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmlj
YXRpb25QYXJhbWV0ZXIoKSkgewotICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5SXNDb25uZWN0
ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250
cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpXTsKLSAgICAg
ICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQotICAgICAgICAgICAgY2FyUGxheUlzQ29ubmVj
dGVkID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07Ci0gICAgfQotCi0gICAgY2Fs
bE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3ZlKGNhclBsYXlJc0Nv
bm5lY3RlZCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3Rl
Y3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT51cGRhdGVDYXJQbGF5
SXNDb25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKLSAgICB9KTsKKyAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7
CiB9CiAKLS0gKHZvaWQpYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc2hv
dWxkUGF1c2U7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9s
bGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb25QYXJhbWV0ZXJfU2hvdWxk
UGF1c2UoKSkgewotICAgICAgICBOU051bWJlciogbnNTaG91bGRQYXVzZSA9IFtub3RpZmljYXRp
b24udXNlckluZm8gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlv
Um91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb25QYXJhbWV0ZXJfU2hvdWxkUGF1c2UoKV07Ci0gICAg
ICAgIGlmIChuc1Nob3VsZFBhdXNlKQotICAgICAgICAgICAgc2hvdWxkUGF1c2UgPSBuc1Nob3Vs
ZFBhdXNlLmJvb2xWYWx1ZTsKLSAgICB9Ci0KLSAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c0Fp
clBsYXlWaWRlbzsKLSAgICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0
ZUF0dHJpYnV0ZSgpICYmIGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUm91dGVEZXNjcmlwdGlv
bktleV9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkpIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5
KiBwaWNrZWRSb3V0ZSA9IFtbZ2V0QVZTeXN0ZW1Db250cm9sbGVyQ2xhc3MoKSBzaGFyZWRBVlN5
c3RlbUNvbnRyb2xsZXJdIGF0dHJpYnV0ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfUGlj
a2VkUm91dGVBdHRyaWJ1dGUoKV07Ci0gICAgICAgIGlmIChbcGlja2VkUm91dGUgaXNLaW5kT2ZD
bGFzczpOU0RpY3Rpb25hcnkuY2xhc3NdKSB7Ci0gICAgICAgICAgICBOU051bWJlciogbnNTdXBw
b3J0c0FpclBsYXlWaWRlbyA9IFtwaWNrZWRSb3V0ZSB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNv
bnRyb2xsZXJfUm91dGVEZXNjcmlwdGlvbktleV9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCld
OwotICAgICAgICAgICAgaWYgKG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8pCi0gICAgICAgICAgICAg
ICAgc3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBuc1N1cHBvcnRzQWlyUGxheVZpZGVvLmJvb2xWYWx1
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3lu
Y09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2hvdWxkUGF1
c2UgPSBXVEZNb3ZlKHNob3VsZFBhdXNlKSwgc3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBXVEZNb3Zl
KHN1cHBvcnRzQWlyUGxheVZpZGVvKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNh
bGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ay0+YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShXVEZNb3ZlKHNob3VsZFBhdXNlKSk7Ci0gICAg
ICAgICAgICBjYWxsYmFjay0+YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShXVEZNb3ZlKHN1cHBv
cnRzQWlyUGxheVZpZGVvKSk7Ci0gICAgICAgIH0KLSAgICB9KTsKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotfQotI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFMKQotQGVuZAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLS0gCjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393024</attachid>
            <date>2020-03-09 06:43:45 -0700</date>
            <delta_ts>2020-03-09 07:12:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208714-20200309144343.patch</filename>
            <type>text/plain</type>
            <size>36384</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzZjdkNjAyYTM5ZTEw
MTQ3NThkNWUzZGI2OGNiOTVhMDRjYmVjZC4uNzc0YjBkZDNkMDUxYzk3NTQ2YzQxMjZmMjE3YmQz
ZjYzYjU5NWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTA5ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lv
biBpbnRlcnJ1cHRpb24gbGlzdGVuZXIgY29kZSB0byBBdWRpb1Nlc3Npb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgQXVkaW9TZXNzaW9uIGlu
dGVycnVwdGlvbiBkZXRlY3Rpb24gY29kZSBmcm9tIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MgaGVs
cGVyIHRvIEF1ZGlvU2Vzc2lvbklPUy4KKyAgICAgICAgQWRkIGludGVycnVwdGlvbiBvYnNlcnZl
ciBjYXBhYmlsaXRpZXMgdG8gQXVkaW9TZXNzaW9uIGFuZCBtYWtlIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MgYW4gb2JzZXJ2ZXIgb2YgaXQuCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb246OmFkZEludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIg
aW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJI
ZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBl
ciBjbGVhckNhbGxiYWNrXSk6CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVs
cGVyIGludGVycnVwdGlvbjpdKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZh
dGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
UHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElESWZOZWNlc3NhcnkpOgorCiAyMDIwLTAzLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2cgZXJyb3IgaW4gY2xlYXJOb3dQbGF5aW5nSW5mby9z
ZXROb3dQbGF5aW5nSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5OTZiMDE4YmVlY2U1YWVhOTMwMTRkYTE2Mjc5
NjlmOTVkYjAzMGNlLi43YWZlOGMzYTA4ZThjYjQ0ZGYzMzkwNThkOGMwNmUzOTljNWI3NTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTAzLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRpb24g
bGlzdGVuZXIgY29kZSB0byBBdWRpb1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
IGFuIG9ic2VydmVyIGZvciBBdWRpb1Nlc3Npb24gaW50ZXJydXB0aW9ucy4KKyAgICAgICAgV2hl
biBiZWluZyBpbnRlcnJ1cHRlZCwgbm90aWZ5IGFsbCBXZWJQcm9jZXNzZXMgYW5kIHRyaWdnZXIg
YmVnaW4vZW5kIGludGVycnVwdGlvbiBtZWNoYW5pc21zLgorICAgICAgICBXZSBvbmx5IHNlbmQg
aW50ZXJydXB0aW9uIHRvIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBpbiBSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXIuCisgICAgICAgIE1pbm9yIHJlZmFjdG9ydGluZyB0byBtb3ZlIG1h
bmFnZXIgcHJveGllcyBmcm9tIGEgbWFwIHRvIGEgd2VhayBoYXNoIHNldC4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6c2V0Q2F0ZWdvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6c2V0UHJlZmVycmVkQnVmZmVyU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Ojp0cnlUb1NldEFj
dGl2ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXI6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6flJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdl
cjo6YWRkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXI6OnJlbW92ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyOjpzZXRDYXRlZ29yeUZvclByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
Ojp0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXI6OmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjplbmRBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXIubWVzc2FnZXMuaW46CisKIDIwMjAtMDMtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3lu
YyBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CmluZGV4IGYzNWZlYWJmZTk2NzEyMDhkNGEzMGI4NjI3OTBiNTEzY2JlZWU3OWEuLjNiN2NlZTg0
MjIwZTQ1NjhlMWU0NjllZDBlYTcwNjMxYjYzODBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNjMsNiArNjMsMjQgQEAgYm9vbCBB
dWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIHJldHVybiB0cnVl
OwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKK3ZvaWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1
cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCit7Cit9CisKK3ZvaWQgQXVkaW9T
ZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYp
Cit7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkKK3sKK30KKwordm9pZCBBdWRpb1Nlc3Npb246
OmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxh
Z3MpCit7Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1ZGlvU2Vz
c2lvblByaXZhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBmYTQyMTJmZDA1OWFjYTY0
YWM2Y2Q2OTc5MTIzNGY5YTI2NjNjYWY5Li5lODFlZGY5NzExNWMxODNmMmE4ZmVhNDFjMTNiZmVm
YzQwNmEyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uaApAQCAtMjcsMTEgKzI3LDEyIEBACiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKIAorI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Myw2ICs5NCwxOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAgICAgdm9p
ZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAKKyAgICBj
bGFzcyBJbnRlcnJ1cHRpb25PYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnJ1
cHRpb25PYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SW50ZXJydXB0
aW9uT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGJlZ2luQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25U
eXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRp
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSA9IDA7CisgICAg
fTsKKyAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVy
Jik7CisgICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNl
cnZlciYpOworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkludGVycnVwdGlvblR5cGUpOworICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyk7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNN
dXRlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCk7
CiAKQEAgLTEwNiw2ICsxMTksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIEhhc2hTZXQ8TXV0ZWRTdGF0ZU9i
c2VydmVyKj4gbV9vYnNlcnZlcnM7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtIYXNoU2V0
PEludGVycnVwdGlvbk9ic2VydmVyPiBtX2ludGVycnVwdGlvbk9ic2VydmVyczsKKyNlbmRpZgog
ICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OyAvLyBVc2VkIG9ubHkgZm9yIHRlc3RpbmcuCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9T
ZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vz
c2lvbklPUy5tbQppbmRleCA4M2QyNDAwYTFkMGFhNjM4OWMzZGY4OTM2NzEwYTM1ODlhNDQ1ODg4
Li44ZDlkNDllODQ4NjY3YzZiYzU5MGViMzgzOWZhMWIyMmE1YjdhNmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAg
LTMyLDExICszMiw3MSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3Vu
ZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBv
cnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitAaW50ZXJmYWNlIFdlYklu
dGVycnVwdGlvbk9ic2VydmVySGVscGVyIDogTlNPYmplY3QgeworICAgIFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbiogX2NhbGxiYWNrOworfQorCistIChpZClpbml0V2l0aENhbGxiYWNrOihXZWJDb3Jl
OjpBdWRpb1Nlc3Npb24qKWNhbGxiYWNrOworLSAodm9pZCljbGVhckNhbGxiYWNrOworLSAodm9p
ZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIKKworLSAoaWQpaW5p
dFdpdGhDYWxsYmFjazooV2ViQ29yZTo6QXVkaW9TZXNzaW9uKiljYWxsYmFjaworeworICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2Nh
bGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0g
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlv
U2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nl
c3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZClkZWFsbG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KHZvaWQpY2xlYXJDYWxsYmFjaworeworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKworLSAodm9p
ZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgaWYg
KCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIE5TVUludGVnZXIgdHlwZSA9IFtb
W25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworICAgIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBv
YmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVuc2lnbmVk
SW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNob3VsZFJl
c3VtZSkKKyAgICAgICAgZmxhZ3MgPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5
UmVzdW1lUGxheWluZzsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFp
blRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdHlwZSwgZmxhZ3NdKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxi
YWNrOworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUJlZ2FuKQorICAg
ICAgICAgICAgY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjYWxsYmFjay0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAgICB9KTsKK30KK0BlbmQKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtNjEsMTQgKzEyMSwy
NSBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdv
cnlUeXBlIGNhdGVnb3J5KQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRp
b1Nlc3Npb24qKTsKKyAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lv
biopOworICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CisKICAgICBBdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25P
YnNlcnZlckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAKLUF1ZGlv
U2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikKK0F1ZGlv
U2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKiBzZXNzaW9u
KQogICAgIDogbV9jYXRlZ29yeU92ZXJyaWRlKEF1ZGlvU2Vzc2lvbjo6Tm9uZSkKIHsKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2ludGVycnVwdGlvbk9ic2VydmVySGVs
cGVyID0gYWRvcHROUyhbW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGFsbG9jXSBpbml0
V2l0aENhbGxiYWNrOnNlc3Npb25dKTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9
CisKK0F1ZGlvU2Vzc2lvblByaXZhdGU6On5BdWRpb1Nlc3Npb25Qcml2YXRlKCkKK3sKKyAgICBb
bV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBjbGVhckNhbGxiYWNrXTsKIH0KIAogQXVkaW9T
ZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQpAQCAtMjUyLDYgKzMyMywyOCBAQCB2b2lkIEF1ZGlvU2Vz
c2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7CiB9CiAKK3ZvaWQgQXVkaW9TZXNzaW9u
OjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIp
Cit7CisgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKK30KKwordm9p
ZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5yZW1vdmUo
b2JzZXJ2ZXIpOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBmb3IgKGF1
dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVy
LmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKHR5cGUpOworfQorCit2b2lkIEF1ZGlvU2Vz
c2lvbjo6ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRp
b25GbGFncyBmbGFncykKK3sKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRp
b25PYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bihmbGFncyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDYzNzJlZDBhZWFiZDkyOTQ1
NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMuLjFhNzUyY2Y3NzhkZmYxZmJkMzE5MTQzNGE4MThlYTUz
OGExMjE0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTM3LDEwICszNyw2IEBAIGNsYXNzIE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVNlc3Np
b25IZWxwZXJDbGllbnQ+CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25UeXBlIDog
Ym9vbCB7IEJlZ2luLCBFbmQgfTsKLSAgICBlbnVtIGNsYXNzIFNob3VsZFJlc3VtZSA6IGJvb2wg
eyBObywgWWVzIH07Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVy
cnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgPSAwOwotCiAgICAgZW51bSBjbGFzcyBTdXNwZW5k
ZWRVbmRlckxvY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
aykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KaW5kZXggZjBlYmJkYzJkMjJlYzZhY2VmNWYzYTlj
ODQxZmYyOGQ1NjUxZjgzMi4uODllZDJhZjU5N2NmNjRkYjZiN2FkMGZiYjIzYzlhMDMzYjE2OGNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCkBAIC03OSw3ICs3OSw2IEBAIGNsYXNzIE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzsKIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUyopY2FsbGJhY2s7CiAKIC0gKHZvaWQpY2xlYXJDYWxsYmFjazsKLS0gKHZvaWQpaW50ZXJy
dXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0g
KHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAgICAgfk1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUygpOwogCiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZSgpOwotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oTWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlLCBNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OlNob3VsZFJlc3VtZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwogICAg
IHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21l
SW5hY3RpdmUoKTsKQEAgLTI3NiwxMiArMjc0LDYgQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJiBzdXBwb3J0c0EK
IH0KICNlbmRpZgogCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cmVjZWl2ZWRJbnRlcnJ1
cHRpb24oTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKLXsKLSAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LnJlY2VpdmVk
SW50ZXJydXB0aW9uKHR5cGUsIHNob3VsZFJlc3VtZSk7Ci19Ci0KIHZvaWQgTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CiAgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBtX2NsaWVudHMpCkBAIC0zMjgsOCArMzIwLDYgQEAgdm9pZCBNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKICAg
ICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50
ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2NlbnRlciBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihpbnRlcnJ1cHRpb246KSBuYW1lOkFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIG9iamVjdDpbUEFMOjpnZXRBVkF1
ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdXTsKLQogICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFt
ZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6
bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CkBAIC00NDMsMjYg
KzQzMyw2IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZURpZENoYW5nZSgpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKFdBVENIT1MpCiAK
LS0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewot
ICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6Oklu
dGVycnVwdGlvblR5cGU7Ci0gICAgdXNpbmcgU2hvdWxkUmVzdW1lID0gTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50OjpTaG91bGRSZXN1bWU7Ci0KLSAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3Rp
ZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
blR5cGVLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBJbnRlcnJ1cHRpb25UeXBlIGlu
dGVycnVwdGlvblR5cGUgPSAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVF
bmRlZCA/IEludGVycnVwdGlvblR5cGU6OkVuZCA6IEludGVycnVwdGlvblR5cGU6OkJlZ2luKTsK
LSAgICBTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpObzsKLQotICAg
IExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbl0gLSB0eXBl
ID0gJWkiLCAoaW50KXR5cGUpOwotCi0gICAgaWYgKGludGVycnVwdGlvblR5cGUgPT0gSW50ZXJy
dXB0aW9uVHlwZTo6RW5kICYmIFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5
OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1
ZV0gPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1bWUpCi0gICAg
ICAgIHNob3VsZFJlc3VtZSA9IFNob3VsZFJlc3VtZTo6WWVzOwotCi0gICAgY2FsbE9uV2ViVGhy
ZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWVdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAg
ICAgICAgIGNhbGxiYWNrLT5yZWNlaXZlZEludGVycnVwdGlvbihpbnRlcnJ1cHRpb25UeXBlLCBz
aG91bGRSZXN1bWUpOwotICAgIH0pOwotfQotCiAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKICAgICB1c2luZyBT
dXNwZW5kZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVu
ZGVyTG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCmluZGV4IDRkYzhmZjNjMTMyYWM1NTk4YjIzOWNj
NGQyMjNlNjFhM2QwMDQzMDQuLmUxOWMzODhiYjkwNDFmYmFjZDgxZjE3ZWUxMmJiYTVjZmU4ZjRi
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaApAQCAtNDQsMTMgKzQ0LDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUwogICAgIDogcHVibGljIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYQotICAgICwgcHVibGljIE1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudCB7CisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgLCBwdWJs
aWMgQXVkaW9TZXNzaW9uOjpJbnRlcnJ1cHRpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCiAgICAgYm9vbCBoYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKICAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICB1c2luZyBXZWFrVmFs
dWVUeXBlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpXZWFrVmFsdWVUeXBlOworICAgIHVz
aW5nIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIApAQCAtNjIs
OCArNjYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSURJZk5lY2Vzc2FyeSgpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFj
ayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYsIERlbGF5Q2FsbGluZ1VwZGF0ZU5vd1BsYXlpbmcpIGZp
bmFsOwogCisgICAgLy8gQXVkaW9TZXNzaW9uOjpJbnRlcnJ1cHRpb25PYnNlcnZlcgorICAgIHZv
aWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Oklu
dGVycnVwdGlvblR5cGUgdHlwZSkgZmluYWwgeyBiZWdpbkludGVycnVwdGlvbih0eXBlKTsgfQor
ICAgIHZvaWQgZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykgZmluYWwgeyBlbmRJbnRlcnJ1cHRpb24oZmxh
Z3MpOyB9CisKICAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQKLSAgICB2b2lkIHJlY2Vp
dmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgZmluYWw7CiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
KSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRl
ZFVuZGVyTG9jaykgZmluYWw7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQppbmRleCA4MGU1YjcwMDQ3ZWZhOTFiZjdi
NzI2MTc3MjYyNjVmNTgxM2NjMzQ2Li4zMDJmZDQzNWJhMWI3NGQyODExNzMwYjM5Y2VjZDIxZDBk
ZDcxZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtNTEsNiArNTEsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmNyZWF0ZQogTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUygpCiAgICAgOiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EoKQogeworICAgIC8vIEZJ
WE1FOiBXZSBwcm9iYWJseSB3YW50IGVhY2ggaW50ZXJlc3RlZCBtZWRpYSBzZXNzaW9uIHRvIG9i
c2VydmUgYXVkaW8gaW50ZXJydXB0aW9ucyBkaXJlY3RseS4KKyAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5hZGRJbnRlcnJ1cHRpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKQEAgLTU4LDYgKzYw
LDcgQEAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKQog
ICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQogICAgICAgICBNZWRpYVNlc3Np
b25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsK
ICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnJlbW92ZUNsaWVudCgqdGhp
cyk7CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlSW50ZXJydXB0aW9u
T2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0
UmVzdHJpY3Rpb25zKCkKQEAgLTExMSw2ICsxMTQsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSgpCiAgICAg
bV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQgPSB0cnVlOwogICAgIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6c2hhcmVkSGVscGVyKCkucHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwcmVz
ZW50aW5nQXBwbGljYXRpb25QSUQoKSk7CiAjZW5kaWYKKyAgICBBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKS5hZGRJbnRlcnJ1cHRpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpCkBA
IC0xNjYsMTkgKzE3MCw2IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwCiAgICAgbm93UGxheWlu
Z1Nlc3Npb24tPnNldFBsYXliYWNrVGFyZ2V0KFdURk1vdmUocGxheWJhY2tUYXJnZXQpKTsKIH0K
IAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbihJbnRl
cnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0gICAgaWYg
KHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8gZmxhZ3MgPSBzaG91bGRSZXN1bWUgPT0gU2hvdWxkUmVzdW1lOjpZZXMgPyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpO
b0ZsYWdzOwotCi0gICAgaWYgKHR5cGUgPT0gSW50ZXJydXB0aW9uVHlwZTo6QmVnaW4pCi0gICAg
ICAgIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1
cHRpb24pOwotICAgIGVsc2UKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKLX0KLQog
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewogICAgIGlmICh3
aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGI4M2MwMTYw
NjNkMzNhMzk0ZWIwODhkMmQ2M2VmYzgzYzI0YzA1MGUuLjZmN2I2ZmIzZGI1NGM1YWIyZGQ2NGYz
MTU3OTZlYzZiYmJhYTIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiB7
CiAgICAgaWYgKG1fYXVkaW9TZXNzaW9uUHJveHkpIHsKLSAgICAgICAgZ3B1UHJvY2VzcygpLmF1
ZGlvU2Vzc2lvbk1hbmFnZXIoKS5yZW1vdmVQcm94eSh3ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsK
KyAgICAgICAgZ3B1UHJvY2VzcygpLmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5yZW1vdmVQcm94eSgq
bV9hdWRpb1Nlc3Npb25Qcm94eSk7CiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBudWxs
cHRyOwogICAgIH0KIH0KQEAgLTI1OCw3ICsyNTgsNyBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQogewogICAg
IGlmICghbV9hdWRpb1Nlc3Npb25Qcm94eSkgewogICAgICAgICBtX2F1ZGlvU2Vzc2lvblByb3h5
ID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk6OmNyZWF0ZSgqdGhpcykubW92ZVRvVW5pcXVlUHRy
KCk7Ci0gICAgICAgIGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkuYWRkUHJveHko
bWFrZVdlYWtQdHIobV9hdWRpb1Nlc3Npb25Qcm94eS5nZXQoKSkpOworICAgICAgICBncHVQcm9j
ZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigpLmFkZFByb3h5KCptX2F1ZGlvU2Vzc2lvblByb3h5
KTsKICAgICB9CiAgICAgcmV0dXJuICptX2F1ZGlvU2Vzc2lvblByb3h5OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKaW5kZXggODY0NThhNTE4N2MxYmFkNWQzNTlhZDg0ZGMxM2Q0ODUxNDAyNDc5OC4u
MWU0ZDdmODQ3OTM4NzVmMDgxOTMyN2JhOWIxZWQ2N2VjYmNmYjBkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkuY3BwCkBAIC03NSwxOCArNzUsMTggQEAgdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6
c2V0Q2F0ZWdvcnkoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2EKIHsKICAg
ICBtX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgICAgbV9yb3V0ZVNoYXJpbmdQb2xpY3kgPSBwb2xp
Y3k7Ci0gICAgYXVkaW9TZXNzaW9uTWFuYWdlcigpLnNldENhdGVnb3J5Rm9yUHJvY2VzcyhtX2dw
dUNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSwgY2F0ZWdvcnksIHBvbGljeSk7Cisg
ICAgYXVkaW9TZXNzaW9uTWFuYWdlcigpLnNldENhdGVnb3J5Rm9yUHJvY2VzcygqdGhpcywgY2F0
ZWdvcnksIHBvbGljeSk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk6OnNldFBy
ZWZlcnJlZEJ1ZmZlclNpemUodWludDY0X3Qgc2l6ZSkKIHsKICAgICBtX3ByZWZlcnJlZEJ1ZmZl
clNpemUgPSBzaXplOwotICAgIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5zZXRQcmVmZXJyZWRCdWZm
ZXJTaXplRm9yUHJvY2VzcyhtX2dwdUNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSwg
c2l6ZSk7CisgICAgYXVkaW9TZXNzaW9uTWFuYWdlcigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemVG
b3JQcm9jZXNzKCp0aGlzLCBzaXplKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eTo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUsIFNldEFjdGl2ZUNvbXBsZXRpb24mJiBjb21w
bGV0aW9uKQogewotICAgIG1fYWN0aXZlID0gYXVkaW9TZXNzaW9uTWFuYWdlcigpLnRyeVRvU2V0
QWN0aXZlRm9yUHJvY2VzcyhtX2dwdUNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSwg
YWN0aXZlKTsKKyAgICBtX2FjdGl2ZSA9IGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS50cnlUb1NldEFj
dGl2ZUZvclByb2Nlc3MoKnRoaXMsIGFjdGl2ZSk7CiAgICAgY29tcGxldGlvbihtX2FjdGl2ZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKaW5kZXggYjE2YjRlZjIxMWYy
YTM4MzA3MDU0YzUxMjYxYjcxNjFmYzdkMDhkYi4uN2ZiNjM1M2U5MzQ3MmZiMWE0YzI3NzdhZmMw
NjFiMmI5NTU0NzNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTI4
LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJ
T04pCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb1Nlc3Npb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KQEAgLTQ0LDQ2ICs0NiwzNiBAQCBzdGF0aWMgYm9vbCBjYXRlZ29yeUNhbk1peFdp
dGhPdGhlcnMoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcigpCiAg
ICAgOiBtX3Nlc3Npb24oQXVkaW9TZXNzaW9uOjpjcmVhdGUoKSkKIHsKKyAgICBtX3Nlc3Npb24t
PmFkZEludGVycnVwdGlvbk9ic2VydmVyKCp0aGlzKTsKIH0KIAotUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkgPSBkZWZhdWx0
OwotCi12b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6YWRkUHJveHkoV2Vha1B0
cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eT4mJiBwcm94eSkKK1JlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlcjo6flJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcigpCiB7Ci0gICAgYXV0
byBpZCA9IHByb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpOwotICAgIEFTU0VSVCghbV9wcm94aWVz
LmNvbnRhaW5zKGlkKSk7Ci0gICAgbV9wcm94aWVzLnNldChpZCwgV1RGTW92ZShwcm94eSkpOwor
ICAgIG1fc2Vzc2lvbi0+cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi12
b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6cmVtb3ZlUHJveHkoY29uc3QgUHJv
Y2Vzc0lkZW50aWZpZXImIGlkKQordm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6
OmFkZFByb3h5KFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBwcm94eSkKIHsKLSAgICBBU1NFUlQo
bV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgbV9wcm94aWVzLnJlbW92ZShpZCk7CisgICAg
QVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMocHJveHkpKTsKKyAgICBtX3Byb3hpZXMuYWRkKHBy
b3h5KTsKIH0KIAotUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkqIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlcjo6Z2V0UHJveHkoY29uc3QgUHJvY2Vzc0lkZW50aWZpZXImIGlkKQordm9pZCBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnJlbW92ZVByb3h5KFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5JiBwcm94eSkKIHsKLSAgICBhdXRvIHJlc3VsdHMgPSBtX3Byb3hpZXMuZmluZChp
ZCk7Ci0gICAgaWYgKHJlc3VsdHMgIT0gbV9wcm94aWVzLmVuZCgpKQotICAgICAgICByZXR1cm4g
cmVzdWx0cy0+dmFsdWUuZ2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKG1f
cHJveGllcy5jb250YWlucyhwcm94eSkpOworICAgIG1fcHJveGllcy5yZW1vdmUocHJveHkpOwog
fQogCi12b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0Q2F0ZWdvcnlGb3JQ
cm9jZXNzKGNvbnN0IFByb2Nlc3NJZGVudGlmaWVyJiBpZCwgQXVkaW9TZXNzaW9uOjpDYXRlZ29y
eVR5cGUgY2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCit2b2lkIFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5JiBwcm94eSwgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnks
IFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgQVNTRVJUKG1fcHJveGllcy5jb250
YWlucyhpZCkpOwotICAgIGF1dG8gcHJveHkgPSBnZXRQcm94eShpZCk7Ci0gICAgaWYgKCFwcm94
eSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHByb3h5LT5jYXRlZ29yeSgpID09IGNhdGVn
b3J5ICYmIHByb3h5LT5yb3V0ZVNoYXJpbmdQb2xpY3koKSA9PSBwb2xpY3kpCisgICAgaWYgKHBy
b3h5LmNhdGVnb3J5KCkgPT0gY2F0ZWdvcnkgJiYgcHJveHkucm91dGVTaGFyaW5nUG9saWN5KCkg
PT0gcG9saWN5KQogICAgICAgICByZXR1cm47CiAKICAgICBIYXNoQ291bnRlZFNldDxBdWRpb1Nl
c3Npb246OkNhdGVnb3J5VHlwZSwgV1RGOjpJbnRIYXNoPEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlU
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZT4+IGNhdGVnb3J5Q291bnRzOwogICAgIEhhc2hDb3VudGVkU2V0PFJvdXRlU2hhcmluZ1BvbGlj
eSwgV1RGOjpJbnRIYXNoPFJvdXRlU2hhcmluZ1BvbGljeT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8Um91dGVTaGFyaW5nUG9saWN5Pj4gcG9saWN5Q291bnRzOwotICAgIGZvciAoYXV0byYg
b3RoZXJQcm94eSA6IG1fcHJveGllcy52YWx1ZXMoKSkgewotICAgICAgICBjYXRlZ29yeUNvdW50
cy5hZGQob3RoZXJQcm94eS0+Y2F0ZWdvcnkoKSk7Ci0gICAgICAgIHBvbGljeUNvdW50cy5hZGQo
b3RoZXJQcm94eS0+cm91dGVTaGFyaW5nUG9saWN5KCkpOworICAgIGZvciAoYXV0byYgb3RoZXJQ
cm94eSA6IG1fcHJveGllcykgeworICAgICAgICBjYXRlZ29yeUNvdW50cy5hZGQob3RoZXJQcm94
eS5jYXRlZ29yeSgpKTsKKyAgICAgICAgcG9saWN5Q291bnRzLmFkZChvdGhlclByb3h5LnJvdXRl
U2hhcmluZ1BvbGljeSgpKTsKICAgICB9CiAKICAgICBpZiAoY2F0ZWdvcnlDb3VudHMuY29udGFp
bnMoQXVkaW9TZXNzaW9uOjpQbGF5QW5kUmVjb3JkKSkKQEAgLTExMywzMCArMTA1LDIzIEBAIHZv
aWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRDYXRlZ29yeUZvclByb2Nlc3Mo
Y29uc3QgUHJvY2Vzc0lkZW50aWZpCiAgICAgbV9zZXNzaW9uLT5zZXRDYXRlZ29yeShjYXRlZ29y
eSwgcG9saWN5KTsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnNl
dFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQcm9jZXNzKGNvbnN0IFByb2Nlc3NJZGVudGlmaWVyJiBp
ZCwgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUpCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHkmIHByb3h5LCBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6ZSkKIHsKLSAgICBm
b3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYg
KCFvdGhlclByb3h5KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChvdGhlclBy
b3h5LT5wcmVmZXJyZWRCdWZmZXJTaXplKCkgPCBwcmVmZXJyZWRCdWZmZXJTaXplKQotICAgICAg
ICAgICAgcHJlZmVycmVkQnVmZmVyU2l6ZSA9IG90aGVyUHJveHktPnByZWZlcnJlZEJ1ZmZlclNp
emUoKTsKKyAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAg
aWYgKG90aGVyUHJveHkucHJlZmVycmVkQnVmZmVyU2l6ZSgpIDwgcHJlZmVycmVkQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIHByZWZlcnJlZEJ1ZmZlclNpemUgPSBvdGhlclByb3h5LnByZWZlcnJl
ZEJ1ZmZlclNpemUoKTsKICAgICB9CiAKICAgICBtX3Nlc3Npb24tPnNldFByZWZlcnJlZEJ1ZmZl
clNpemUocHJlZmVycmVkQnVmZmVyU2l6ZSk7CiB9CiAKLWJvb2wgUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyOjp0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50
aWZpZXImIGlkLCBib29sIGFjdGl2ZSkKK2Jvb2wgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyOjp0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHBy
b3h5LCBib29sIGFjdGl2ZSkKIHsKLSAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7
Ci0gICAgYXV0byBwcm94eSA9IGdldFByb3h5KGlkKTsKLSAgICBpZiAoIXByb3h5KQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhwcm94eSkpOwog
CiAgICAgc2l6ZV90IGFjdGl2ZVByb3h5Q291bnQgeyAwIH07Ci0gICAgZm9yIChhdXRvJiBvdGhl
clByb3h5IDogbV9wcm94aWVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghb3RoZXJQcm94eSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAob3RoZXJQcm94eS0+aXNBY3RpdmUo
KSkKKyAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAgaWYg
KG90aGVyUHJveHkuaXNBY3RpdmUoKSkKICAgICAgICAgICAgICsrYWN0aXZlUHJveHlDb3VudDsK
ICAgICB9CiAKQEAgLTE2MiwyMyArMTQ3LDIxIEBAIGJvb2wgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyOjp0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50CiAg
ICAgLy8gSWYgdGhpcyBwcm94eSBpcyBBbWJpZW50LCBhbmQgdGhlIHNlc3Npb24gaXMgYWxyZWFk
eSBhY3RpdmUsIHRoaXMKICAgICAvLyBwcm94eSB3aWxsIG1peCB3aXRoIHRoZSBhY3RpdmUgcHJv
eGllcy4gTm8tb3AsIGFuZCByZXR1cm4gYWN0aXZhdGlvbgogICAgIC8vIHdhcyBzdWNlc3NmdWwu
Ci0gICAgaWYgKGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhwcm94eS0+Y2F0ZWdvcnkoKSkpCisg
ICAgaWYgKGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhwcm94eS5jYXRlZ29yeSgpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE90aGVy
d2lzZSwgdGhpcyBwcm94eSB3YW50cyB0byBiZWNvbWUgYWN0aXZlLCBidXQgdGhlcmUgYXJlIG90
aGVyCiAgICAgLy8gcHJveGllcyB3aG8gYXJlIGFscmVhZHkgYWN0aXZlLiBXYWxrIG92ZXIgdGhl
IHByb3hpZXMsIGFuZCBpbnRlcnJ1cHQKLSAgICAvLyB0aG9zZSBwcm94aWVzIHdob3NlIGNhdGVv
Z3JpZXMgaW5kaWNhdGUgdGhleSBjYW5ub3QgbWl4IHdpdGggb3RoZXJzLgotICAgIGZvciAoYXV0
byYgb3RoZXJQcm94eSA6IG1fcHJveGllcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoIW90aGVy
UHJveHkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFvdGhlclByb3h5LT5p
c0FjdGl2ZSgpKQorICAgIC8vIHRob3NlIHByb3hpZXMgd2hvc2UgY2F0ZWdvcmllcyBpbmRpY2F0
ZSB0aGV5IGNhbm5vdCBtaXggd2l0aCBvdGhlcnMuCisgICAgZm9yIChhdXRvJiBvdGhlclByb3h5
IDogbV9wcm94aWVzKSB7CisgICAgICAgIGlmICghb3RoZXJQcm94eS5pc0FjdGl2ZSgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVy
cyhvdGhlclByb3h5LT5jYXRlZ29yeSgpKSkKKyAgICAgICAgaWYgKGNhdGVnb3J5Q2FuTWl4V2l0
aE90aGVycyhvdGhlclByb3h5LmNhdGVnb3J5KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgb3RoZXJQcm94eS0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGlvblR5cGU6OlN5c3RlbUludGVycnVwdGlvbik7CisgICAgICAgIG90aGVy
UHJveHkuYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlv
blR5cGU6OlN5c3RlbUludGVycnVwdGlvbik7CiAgICAgfQogI2VuZGlmCiAKQEAgLTE4Niw2ICsx
NjksMjIgQEAgYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0
aXZlRm9yUHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnQKIAogfQogCit2b2lkIFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5TWFuYWdlcjo6YmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBmb3IgKGF1dG8m
IHByb3h5IDogbV9wcm94aWVzKSB7CisgICAgICAgIGlmIChwcm94eS5pc0FjdGl2ZSgpKQorICAg
ICAgICAgICAgcHJveHkuYmVnaW5JbnRlcnJ1cHRpb24odHlwZSk7CisgICAgfQorfQorCit2b2lk
IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6ZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sK
KyAgICBmb3IgKGF1dG8mIHByb3h5IDogbV9wcm94aWVzKSB7CisgICAgICAgIGlmIChwcm94eS5p
c0FjdGl2ZSgpKQorICAgICAgICAgICAgcHJveHkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAg
ICB9Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmgKaW5kZXgg
YjAwNDU1NzEyZjVhODYwMTk5OTMyMzc1NzNlMzljMjg0YzhmNmMyMy4uMGQ5YTBlMzFkYmVlYTc1
OWQ0ODFkMDQ3NzlkNmRhNzRlMWFmY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIu
aApAQCAtMjksMzIgKzI5LDM2IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEdQVVByb2Nlc3M7
CiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTsKIAogY2xhc3MgUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyCi0gICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyPiB7CisgICAgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpJbnRlcnJ1cHRpb25PYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCk7CiAgICAgflJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcigpOwogCi0gICAgdm9pZCBhZGRQcm94eShXZWFrUHRy
PFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5PiYmKTsKLSAgICB2b2lkIHJlbW92ZVByb3h5KGNvbnN0
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJik7Ci0gICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkqIGdldFByb3h5KGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBhZGRQcm94eShSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUHJv
eHkoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmKTsKIAotICAgIHZvaWQgc2V0Q2F0ZWdvcnlGb3JQ
cm9jZXNzKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiwgV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpDYXRlZ29yeVR5cGUsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSk7Ci0gICAg
dm9pZCBzZXRQcmVmZXJyZWRCdWZmZXJTaXplRm9yUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciYsIHNpemVfdCk7CisgICAgdm9pZCBzZXRDYXRlZ29yeUZvclByb2Nlc3Mo
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmLCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5KTsKKyAgICB2b2lkIHNldFByZWZlcnJl
ZEJ1ZmZlclNpemVGb3JQcm9jZXNzKFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Jiwgc2l6ZV90KTsK
IAotICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyJiwgYm9vbCk7CisgICAgYm9vbCB0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3Mo
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmLCBib29sKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogCiBwcml2
YXRlOgorICAgIHZvaWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgZW5k
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpF
bmRJbnRlcnJ1cHRpb25GbGFncykgZmluYWw7CisKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6QXVk
aW9TZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgV2Vha1B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eT4+IG1fcHJveGllczsKKyAgICBX
ZWFrSGFzaFNldDxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eT4gbV9wcm94aWVzOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAppbmRleCA2ZTYwYjQ0ZWUzZDFi
YjY1M2RjY2IxODM5MWY1ZGUzOGUzYTNkOTQ3Li4wMmUyZmM2MjUwY2FhMWZiN2E1ZjNhMGE0MzMz
OTc1ZmViOTc1NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcApA
QCAtNzQsMTEgKzc0LDYgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6cHJv
dmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQogICAgIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6c2hhcmVkSGVscGVyKCkucHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwaWQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpyZWNlaXZlZEludGVy
cnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUp
Ci17Ci0gICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OlJlY2VpdmVkSW50ZXJydXB0aW9uKHR5cGUsIHNob3VsZFJl
c3VtZSksIHsgfSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVk
VW5kZXJMb2NrKQogewogICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkuaAppbmRleCA0YWI1MGYwYjA5NmU4OGViZmZmNzg2NGE4NTM5N2RhMzIwZjIxMWFi
Li42ZTMxOWYwMWFhYmNiNDY0OGU4NWNhYjdlYTcxN2ZiOWE1MWQxYzliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCkBAIC01Miw3ICs1Miw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCk7CiAKICAgICAvLyBNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQKLSAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVy
cnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgZmluYWw7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7CiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKaW5kZXggZmVmNGQ3NWYyOTgwODAzNGYxYTQ5Y2Jj
OWE1YzI5ZDU1MTkxODU5ZC4uNmE5OGVmOGY1NjQzNGI3YTNmZTAzN2Q2NzhmYWFkM2FmNjYyOTkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC03NiwxMiArNzYs
NiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRpbmdBcHBs
aWNhdGlvblBJRChpbnQgcGlkKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RChwaWQpLCB7IH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVjZWl2
ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1bWUgc2hvdWxk
UmVzdW1lKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBj
bGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKTsKLX0KLQogdm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQogewogICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApp
bmRleCBjZDBmMDk4ZDg0ZTc3ODI4MGU1YzJmNDQ0YWQ1YzBkZDEwYmNhODY2Li4xMWY2NTMxZWJk
YTMzZjY5YjY0MzRmM2NhZDU5YjgzMmM1YmE4YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuaApAQCAtNjEsNyArNjEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvdmlkZVBy
ZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMKLSAg
ICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3Vt
ZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRl
ZFVuZGVyTG9jayk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCmluZGV4
IDhlM2M1N2NkZjk2MzU5YzhmMzc4YjU5MTA0NjdhODI3MWM4MWRkMTcuLjliN2Q1Y2RhODgzMjJj
MjI2MjA5NDk4YjM5N2QwMDA3NmVhMWJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDYgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlciBOb3RSZWZDb3VudGVkIHsKLSAgICBSZWNlaXZlZEludGVycnVw
dGlvbihlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkludGVycnVw
dGlvblR5cGUgdHlwZSwgZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjpTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZChlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlN1c3Bl
bmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCiAgICAgQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQoZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpT
dXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQogICAgIEFwcGxpY2F0aW9uV2ls
bEJlY29tZUluYWN0aXZlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393026</attachid>
            <date>2020-03-09 07:12:58 -0700</date>
            <delta_ts>2020-03-09 07:32:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208714-20200309151256.patch</filename>
            <type>text/plain</type>
            <size>37208</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyYzZiNzJmYjY5NThm
ZTk5MThhYjdhNjQ0NWI0ODE1MGYzNmYxOC4uNTI0MGZlNDIxN2I5YWNiMGRiNWYxMzIwZDcwYmZl
YTg3NmEwYjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTA5ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lv
biBpbnRlcnJ1cHRpb24gbGlzdGVuZXIgY29kZSB0byBBdWRpb1Nlc3Npb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgQXVkaW9TZXNzaW9uIGlu
dGVycnVwdGlvbiBkZXRlY3Rpb24gY29kZSBmcm9tIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MgaGVs
cGVyIHRvIEF1ZGlvU2Vzc2lvbklPUy4KKyAgICAgICAgQWRkIGludGVycnVwdGlvbiBvYnNlcnZl
ciBjYXBhYmlsaXRpZXMgdG8gQXVkaW9TZXNzaW9uIGFuZCBtYWtlIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MgYW4gb2JzZXJ2ZXIgb2YgaXQuCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb246OmFkZEludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIg
aW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJI
ZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBl
ciBjbGVhckNhbGxiYWNrXSk6CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVs
cGVyIGludGVycnVwdGlvbjpdKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZh
dGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
UHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElESWZOZWNlc3NhcnkpOgorCiAyMDIwLTAzLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZvciBX
ZWJLaXQgaW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5ZmE3NjRkMzE0ZjU1YzM0ZDBhNzI1N2RmYjdj
ZTdkM2U1MDJjZTQuLjU5MjBkYjlmZGFkZjI5NzhkYzk2ZjU2MjMyODU3YTRlMDc4ZDZiNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDMtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQXVkaW9TZXNzaW9uIGludGVycnVwdGlvbiBs
aXN0ZW5lciBjb2RlIHRvIEF1ZGlvU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIg
YW4gb2JzZXJ2ZXIgZm9yIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRpb25zLgorICAgICAgICBXaGVu
IGJlaW5nIGludGVycnVwdGVkLCBub3RpZnkgYWxsIFdlYlByb2Nlc3NlcyBhbmQgdHJpZ2dlciBi
ZWdpbi9lbmQgaW50ZXJydXB0aW9uIG1lY2hhbmlzbXMuCisgICAgICAgIFdlIG9ubHkgc2VuZCBp
bnRlcnJ1cHRpb24gdG8gc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIGluIFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5TWFuYWdlci4KKyAgICAgICAgTWlub3IgcmVmYWN0b3J0aW5nIHRvIG1vdmUgbWFu
YWdlciBwcm94aWVzIGZyb20gYSBtYXAgdG8gYSB3ZWFrIGhhc2ggc2V0LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRDYXRlZ29yeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk6OnRyeVRvU2V0QWN0
aXZlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlcjo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlcjo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXI6OnNldENhdGVnb3J5Rm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6
OnRyeVRvU2V0QWN0aXZlRm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5TWFuYWdlcjo6YmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OmVuZEF1ZGlvU2Vz
c2lvbkludGVycnVwdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0wOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gQXN5bmNTY3JvbGxpbmc6IHNjcm9sbGluZyB3
aXRoIHRoZSBtb3VzZSB3aGVlbCBvdmVyIHN1Yi1zY3JvbGxhYmxlIGFyZWFzIHNjcm9sbHMgdGhl
IG1haW4gZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uY3BwCmluZGV4IGYzNWZlYWJmZTk2NzEyMDhkNGEzMGI4NjI3OTBiNTEzY2JlZWU3OWEuLjNi
N2NlZTg0MjIwZTQ1NjhlMWU0NjllZDBlYTcwNjMxYjYzODBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNjMsNiArNjMsMjQgQEAg
Ym9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIHJldHVy
biB0cnVlOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKK3ZvaWQgQXVkaW9TZXNzaW9uOjphZGRJ
bnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCit7Cit9CisKK3ZvaWQg
QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNl
cnZlciYpCit7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkKK3sKK30KKwordm9pZCBBdWRpb1Nl
c3Npb246OmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0
aW9uRmxhZ3MpCit7Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1
ZGlvU2Vzc2lvblByaXZhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBmYTQyMTJmZDA1
OWFjYTY0YWM2Y2Q2OTc5MTIzNGY5YTI2NjNjYWY5Li5lODFlZGY5NzExNWMxODNmMmE4ZmVhNDFj
MTNiZmVmYzQwNmEyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaApAQCAtMjcsMTEgKzI3LDEyIEBACiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikK
IAorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Myw2ICs5NCwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAg
ICAgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAK
KyAgICBjbGFzcyBJbnRlcnJ1cHRpb25PYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJ
bnRlcnJ1cHRpb25PYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SW50
ZXJydXB0aW9uT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGJl
Z2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRpb25UeXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRl
cnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSA9IDA7
CisgICAgfTsKKyAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJik7CisgICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpOworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpOworICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyk7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNNdXRlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hh
bmdlKCk7CiAKQEAgLTEwNiw2ICsxMTksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIEhhc2hTZXQ8TXV0ZWRT
dGF0ZU9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtI
YXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBtX2ludGVycnVwdGlvbk9ic2VydmVyczsKKyNl
bmRpZgogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OyAvLyBVc2VkIG9ubHkgZm9yIHRlc3Rp
bmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbQppbmRleCA4M2QyNDAwYTFkMGFhNjM4OWMzZGY4OTM2NzEwYTM1ODlh
NDQ1ODg4Li44ZDlkNDllODQ4NjY3YzZiYzU5MGViMzgzOWZhMWIyMmE1YjdhNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1Mu
bW0KQEAgLTMyLDExICszMiw3MSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNz
aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
ICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitAaW50ZXJmYWNl
IFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIDogTlNPYmplY3QgeworICAgIFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbiogX2NhbGxiYWNrOworfQorCistIChpZClpbml0V2l0aENhbGxiYWNrOihX
ZWJDb3JlOjpBdWRpb1Nlc3Npb24qKWNhbGxiYWNrOworLSAodm9pZCljbGVhckNhbGxiYWNrOwor
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIKKworLSAo
aWQpaW5pdFdpdGhDYWxsYmFjazooV2ViQ29yZTo6QXVkaW9TZXNzaW9uKiljYWxsYmFjaworewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2Vu
dGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAgIFtjZW50ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpB
VkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZB
dWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKHZvaWQpY2xlYXJDYWxsYmFjaworeworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKwor
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7Cisg
ICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIE5TVUludGVnZXIgdHlw
ZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAgaWYgKHR5cGUgPT0gQVZB
dWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJ
bmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVu
c2lnbmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNo
b3VsZFJlc3VtZSkKKyAgICAgICAgZmxhZ3MgPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWF5UmVzdW1lUGxheWluZzsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3lu
Y09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdHlwZSwgZmxh
Z3NdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrOworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUJlZ2Fu
KQorICAgICAgICAgICAgY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjYWxsYmFjay0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAgICB9KTsKK30KK0Bl
bmQKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtNjEsMTQg
KzEyMSwyNSBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXVkaW9TZXNzaW9uUHJpdmF0
ZShBdWRpb1Nlc3Npb24qKTsKKyAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlv
U2Vzc2lvbiopOworICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CisKICAgICBBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CiAgICAgT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1
cHRpb25PYnNlcnZlckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAK
LUF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikK
K0F1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKiBz
ZXNzaW9uKQogICAgIDogbV9jYXRlZ29yeU92ZXJyaWRlKEF1ZGlvU2Vzc2lvbjo6Tm9uZSkKIHsK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2ludGVycnVwdGlvbk9ic2Vy
dmVySGVscGVyID0gYWRvcHROUyhbW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGFsbG9j
XSBpbml0V2l0aENhbGxiYWNrOnNlc3Npb25dKTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCit9CisKK0F1ZGlvU2Vzc2lvblByaXZhdGU6On5BdWRpb1Nlc3Npb25Qcml2YXRlKCkKK3sK
KyAgICBbbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBjbGVhckNhbGxiYWNrXTsKIH0KIAog
QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQpAQCAtMjUyLDYgKzMyMywyOCBAQCB2b2lkIEF1
ZGlvU2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7CiB9CiAKK3ZvaWQgQXVkaW9T
ZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2Jz
ZXJ2ZXIpCit7CisgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKK30K
Kwordm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVw
dGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRp
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9i
c2VydmVyLmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKHR5cGUpOworfQorCit2b2lkIEF1
ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRl
cnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRl
cnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLmVuZEF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvbihmbGFncyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDYzNzJlZDBhZWFi
ZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMuLjFhNzUyY2Y3NzhkZmYxZmJkMzE5MTQzNGE4
MThlYTUzOGExMjE0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTM3LDEwICszNyw2IEBAIGNs
YXNzIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQ+CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25U
eXBlIDogYm9vbCB7IEJlZ2luLCBFbmQgfTsKLSAgICBlbnVtIGNsYXNzIFNob3VsZFJlc3VtZSA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9u
KEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgPSAwOwotCiAgICAgZW51bSBjbGFzcyBT
dXNwZW5kZWRVbmRlckxvY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgdm9pZCBh
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVu
ZGVyTG9jaykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KaW5kZXggZjBlYmJkYzJkMjJlYzZhY2Vm
NWYzYTljODQxZmYyOGQ1NjUxZjgzMi4uZWIyOWQ0M2U5YjQ2OTRmOTJhM2FmMWM1NzFjZTUwMmVj
YjRkNWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCkBAIC03OSw3ICs3OSw2IEBAIGNsYXNzIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUzsKIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lv
bkhlbHBlcmlPUyopY2FsbGJhY2s7CiAKIC0gKHZvaWQpY2xlYXJDYWxsYmFjazsKLS0gKHZvaWQp
aW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAg
ICAgfk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOwogCiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24o
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlLCBNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2sp
OwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxs
QmVjb21lSW5hY3RpdmUoKTsKQEAgLTExMiwxMCArMTEwLDggQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6Okhhc0F2YWlsYWJsZVRhcmdldHM7Ci0gICAgdXNpbmcgSW50ZXJydXB0aW9uVHlwZSA9IE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZTsKICAgICB1c2luZyBQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsKICAgICB1c2luZyBTaG91bGRQYXVzZSA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1c2U7Ci0gICAgdXNpbmcgU2hvdWxkUmVzdW1lID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWU7CiAgICAgdXNpbmcgU3VwcG9y
dHNBaXJQbGF5VmlkZW8gPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1cHBvcnRzQWlyUGxh
eVZpZGVvOwogICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOwogCkBAIC0yNzYsMTIgKzI3Miw2IEBAIHZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFs
PGJvb2w+JiYgc3VwcG9ydHNBCiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJy
dXB0aW9uVHlwZSB0eXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSBz
aG91bGRSZXN1bWUpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAg
ICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0eXBlLCBzaG91bGRSZXN1bWUpOwotfQot
CiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KQogewogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQpAQCAtMzI4LDggKzMxOCw2
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpCiAgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAKICAgICBOU05vdGlm
aWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50
ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBv
YmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07Ci0K
ICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpn
ZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVj
dDpuaWxdOwpAQCAtNDQzLDI2ICs0MzEsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQogfQogI2VuZGlmIC8vICFQ
TEFURk9STShXQVRDSE9TKQogCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KLXsKLSAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOwotICAgIHVzaW5nIFNob3VsZFJlc3Vt
ZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lOwotCi0gICAgTlNVSW50
ZWdlciB0eXBlID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07Ci0gICAg
SW50ZXJydXB0aW9uVHlwZSBpbnRlcnJ1cHRpb25UeXBlID0gKHR5cGUgPT0gQVZBdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgPyBJbnRlcnJ1cHRpb25UeXBlOjpFbmQgOiBJbnRlcnJ1
cHRpb25UeXBlOjpCZWdpbik7Ci0gICAgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSA9IFNob3Vs
ZFJlc3VtZTo6Tm87Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBp
bnRlcnJ1cHRpb25dIC0gdHlwZSA9ICVpIiwgKGludCl0eXBlKTsKLQotICAgIGlmIChpbnRlcnJ1
cHRpb25UeXBlID09IEludGVycnVwdGlvblR5cGU6OkVuZCAmJiBbW1tub3RpZmljYXRpb24gdXNl
ckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleV0g
dW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9u
U2hvdWxkUmVzdW1lKQotICAgICAgICBzaG91bGRSZXN1bWUgPSBTaG91bGRSZXN1bWU6OlllczsK
LQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaW50ZXJydXB0aW9uVHlwZSwgc2hvdWxkUmVzdW1l
XSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxm
LT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+cmVjZWl2ZWRJbnRlcnJ1cHRpb24o
aW50ZXJydXB0aW9uVHlwZSwgc2hvdWxkUmVzdW1lKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClh
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCiB7CiAgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAppbmRleCA0ZGM4
ZmYzYzEzMmFjNTU5OGIyMzljYzRkMjIzZTYxYTNkMDA0MzA0Li4wZjc3ZWJhNmQ5NzhjNjU2YWFl
MjA5YmU5MzMxOTZjZjEwNmMzODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbmNsdWRlICJBdWRpb1Nlc3Np
b24uaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCIKICNpbmNsdWRlICJNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00
NCwxMyArNDUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TCiAgICAgOiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hCi0gICAgLCBw
dWJsaWMgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50IHsKKyAgICAsIHB1YmxpYyBNZWRpYVNlc3Np
b25IZWxwZXJDbGllbnQKKyAgICAsIHB1YmxpYyBBdWRpb1Nlc3Npb246OkludGVycnVwdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7
CiAKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOwogICAg
IHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAorICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6OldlYWtWYWx1ZVR5cGU7CisgICAgdXNpbmcgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50Ojp3
ZWFrUHRyRmFjdG9yeTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOwogCkBAIC02Miw4ICs2NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KCkgZmluYWw7CiAgICAg
dm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiwgRGVsYXlD
YWxsaW5nVXBkYXRlTm93UGxheWluZykgZmluYWw7CiAKKyAgICAvLyBBdWRpb1Nlc3Npb246Oklu
dGVycnVwdGlvbk9ic2VydmVyCisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKSBmaW5hbCB7IGJl
Z2luSW50ZXJydXB0aW9uKHR5cGUpOyB9CisgICAgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKSBm
aW5hbCB7IGVuZEludGVycnVwdGlvbihmbGFncyk7IH0KKwogICAgIC8vIE1lZGlhU2Vzc2lvbkhl
bHBlckNsaWVudAotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlw
ZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOwogICAgIHZvaWQgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CmluZGV4IDgwZTViNzAwNDdlZmE5MWJmN2I3MjYxNzcyNjI2NWY1ODEzY2MzNDYuLjMwMmZkNDM1
YmExYjc0ZDI4MTE3MzBiMzljZWNkMjFkMGRkNzFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CkBAIC01MSw2ICs1MSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYSgpCiB7CisgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgZWFjaCBpbnRl
cmVzdGVkIG1lZGlhIHNlc3Npb24gdG8gb2JzZXJ2ZSBhdWRpbyBpbnRlcnJ1cHRpb25zIGRpcmVj
dGx5LgorICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmFkZEludGVycnVwdGlvbk9i
c2VydmVyKCp0aGlzKTsKIH0KIAogTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1MoKQpAQCAtNTgsNiArNjAsNyBAQCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp+
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpCiAgICAgaWYgKG1faXNNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMpCiAgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RvcE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwogICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVk
SGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNl
c3Npb24oKS5yZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmljdGlvbnMoKQpAQCAtMTExLDYgKzExNCw3
IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRElmTmVjZXNzYXJ5KCkKICAgICBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9
IHRydWU7CiAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRp
ZgorICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmFkZEludGVycnVwdGlvbk9ic2Vy
dmVyKCp0aGlzKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCkKQEAgLTE2NiwxOSArMTcwLDYgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvIHN1cHAKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0UGxheWJhY2tUYXJnZXQoV1RG
TW92ZShwbGF5YmFja1RhcmdldCkpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
OnJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSwgU2hvdWxkUmVzdW1l
IHNob3VsZFJlc3VtZSkKLXsKLSAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBmbGFncyA9IHNob3VsZFJlc3VtZSA9PSBT
aG91bGRSZXN1bWU6OlllcyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
IDogUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vRmxhZ3M7Ci0KLSAgICBpZiAodHlwZSA9PSBJbnRl
cnJ1cHRpb25UeXBlOjpCZWdpbikKLSAgICAgICAgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBlbmRJ
bnRlcnJ1cHRpb24oZmxhZ3MpOwotfQotCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgaXNTdXNwZW5k
ZWRVbmRlckxvY2spCiB7CiAgICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggYmQ3ZDA3ZjBkMzU2OWM5ZjAzYWVlZWE1NjY2MjkyOGYyNmIwMDY5
ZS4uNDhjOTUwOWFhNGViNGVmZDE1NTA0YzJjMDFjYzEyOGQyZDc5Zjc2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIHsKICAgICBpZiAobV9hdWRpb1Nlc3Npb25Qcm94eSkg
ewotICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigpLnJlbW92ZVByb3h5
KHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9TZXNz
aW9uTWFuYWdlcigpLnJlbW92ZVByb3h5KCptX2F1ZGlvU2Vzc2lvblByb3h5KTsKICAgICAgICAg
bV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogfQpAQCAtMjU4LDcgKzI1OCw3
IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjph
dWRpb1Nlc3Npb25Qcm94eSgpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU2Vzc2lvblByb3h5KSB7CiAg
ICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6Y3Jl
YXRlKCp0aGlzKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgZ3B1UHJvY2VzcygpLmF1ZGlv
U2Vzc2lvbk1hbmFnZXIoKS5hZGRQcm94eShtYWtlV2Vha1B0cihtX2F1ZGlvU2Vzc2lvblByb3h5
LmdldCgpKSk7CisgICAgICAgIGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkuYWRk
UHJveHkoKm1fYXVkaW9TZXNzaW9uUHJveHkpOwogICAgIH0KICAgICByZXR1cm4gKm1fYXVkaW9T
ZXNzaW9uUHJveHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAppbmRleCA4NjQ1OGE1MTg3YzFiYWQ1
ZDM1OWFkODRkYzEzZDQ4NTE0MDI0Nzk4Li4xZTRkN2Y4NDc5Mzg3NWYwODE5MzI3YmE5YjFlZDY3
ZWNiY2ZiMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKQEAgLTc1LDE4ICs3NSwxOCBAQCB2b2lk
IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRDYXRlZ29yeShXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZSBjYQogewogICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKICAgICBt
X3JvdXRlU2hhcmluZ1BvbGljeSA9IHBvbGljeTsKLSAgICBhdWRpb1Nlc3Npb25NYW5hZ2VyKCku
c2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpLCBjYXRlZ29yeSwgcG9saWN5KTsKKyAgICBhdWRpb1Nlc3Npb25NYW5hZ2VyKCkuc2V0Q2F0
ZWdvcnlGb3JQcm9jZXNzKCp0aGlzLCBjYXRlZ29yeSwgcG9saWN5KTsKIH0KIAogdm9pZCBSZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eTo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSh1aW50NjRfdCBzaXpl
KQogewogICAgIG1fcHJlZmVycmVkQnVmZmVyU2l6ZSA9IHNpemU7Ci0gICAgYXVkaW9TZXNzaW9u
TWFuYWdlcigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKTsKKyAgICBhdWRpb1Nlc3Npb25NYW5hZ2Vy
KCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoKnRoaXMsIHNpemUpOwogfQogCiB2
b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Ojp0cnlUb1NldEFjdGl2ZShib29sIGFjdGl2ZSwg
U2V0QWN0aXZlQ29tcGxldGlvbiYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9hY3RpdmUgPSBhdWRp
b1Nlc3Npb25NYW5hZ2VyKCkudHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBhY3RpdmUpOworICAgIG1fYWN0aXZlID0gYXVkaW9T
ZXNzaW9uTWFuYWdlcigpLnRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcygqdGhpcywgYWN0aXZlKTsK
ICAgICBjb21wbGV0aW9uKG1fYWN0aXZlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyLmNwcAppbmRleCBiMTZiNGVmMjExZjJhMzgzMDcwNTRjNTEyNjFiNzE2MWZjN2QwOGRiLi43
ZmI2MzUzZTkzNDcyZmIxYTRjMjc3N2FmYzA2MWIyYjk1NTQ3M2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtNDQsNDYgKzQ2LDM2IEBAIHN0
YXRpYyBib29sIGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSBjYXRlZ29yeSkKIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6UmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkKICAgICA6IG1fc2Vzc2lvbihBdWRpb1Nlc3Npb246OmNy
ZWF0ZSgpKQogeworICAgIG1fc2Vzc2lvbi0+YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoKnRoaXMp
OwogfQogCi1SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6On5SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyOjphZGRQcm94eShXZWFrUHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5PiYmIHBy
b3h5KQorUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyKCkKIHsKLSAgICBhdXRvIGlkID0gcHJveHktPnByb2Nlc3NJZGVudGlmaWVy
KCk7Ci0gICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBtX3Byb3hpZXMu
c2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcigqdGhpcyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyOjpyZW1vdmVQcm94eShjb25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQpCit2b2lkIFJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6YWRkUHJveHkoUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkmIHByb3h5KQogewotICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBt
X3Byb3hpZXMucmVtb3ZlKGlkKTsKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhwcm94
eSkpOworICAgIG1fcHJveGllcy5hZGQocHJveHkpOwogfQogCi1SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eSogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpnZXRQcm94eShjb25zdCBQcm9j
ZXNzSWRlbnRpZmllciYgaWQpCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6
cmVtb3ZlUHJveHkoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5KQogewotICAgIGF1dG8g
cmVzdWx0cyA9IG1fcHJveGllcy5maW5kKGlkKTsKLSAgICBpZiAocmVzdWx0cyAhPSBtX3Byb3hp
ZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKHByb3h5KSk7CisgICAg
bV9wcm94aWVzLnJlbW92ZShwcm94eSk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyOjpzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50aWZpZXIm
IGlkLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9s
aWN5IHBvbGljeSkKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRDYXRl
Z29yeUZvclByb2Nlc3MoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5LCBBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGljeSkKIHsK
LSAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgYXV0byBwcm94eSA9IGdl
dFByb3h5KGlkKTsKLSAgICBpZiAoIXByb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
cHJveHktPmNhdGVnb3J5KCkgPT0gY2F0ZWdvcnkgJiYgcHJveHktPnJvdXRlU2hhcmluZ1BvbGlj
eSgpID09IHBvbGljeSkKKyAgICBpZiAocHJveHkuY2F0ZWdvcnkoKSA9PSBjYXRlZ29yeSAmJiBw
cm94eS5yb3V0ZVNoYXJpbmdQb2xpY3koKSA9PSBwb2xpY3kpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEhhc2hDb3VudGVkU2V0PEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBXVEY6OkludEhh
c2g8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPj4gY2F0ZWdvcnlDb3VudHM7CiAgICAgSGFzaENv
dW50ZWRTZXQ8Um91dGVTaGFyaW5nUG9saWN5LCBXVEY6OkludEhhc2g8Um91dGVTaGFyaW5nUG9s
aWN5PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxSb3V0ZVNoYXJpbmdQb2xpY3k+PiBwb2xp
Y3lDb3VudHM7Ci0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzLnZhbHVlcygp
KSB7Ci0gICAgICAgIGNhdGVnb3J5Q291bnRzLmFkZChvdGhlclByb3h5LT5jYXRlZ29yeSgpKTsK
LSAgICAgICAgcG9saWN5Q291bnRzLmFkZChvdGhlclByb3h5LT5yb3V0ZVNoYXJpbmdQb2xpY3ko
KSk7CisgICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzKSB7CisgICAgICAgIGNh
dGVnb3J5Q291bnRzLmFkZChvdGhlclByb3h5LmNhdGVnb3J5KCkpOworICAgICAgICBwb2xpY3lD
b3VudHMuYWRkKG90aGVyUHJveHkucm91dGVTaGFyaW5nUG9saWN5KCkpOwogICAgIH0KIAogICAg
IGlmIChjYXRlZ29yeUNvdW50cy5jb250YWlucyhBdWRpb1Nlc3Npb246OlBsYXlBbmRSZWNvcmQp
KQpAQCAtMTEzLDMwICsxMDUsMjMgQEAgdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFn
ZXI6OnNldENhdGVnb3J5Rm9yUHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnRpZmkKICAgICBtX3Nl
c3Npb24tPnNldENhdGVnb3J5KGNhdGVnb3J5LCBwb2xpY3kpOwogfQogCi12b2lkIFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3Mo
Y29uc3QgUHJvY2Vzc0lkZW50aWZpZXImIGlkLCBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6ZSkK
K3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplRm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgcHJveHksIHNpemVfdCBwcmVm
ZXJyZWRCdWZmZXJTaXplKQogewotICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6IG1fcHJveGll
cy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoIW90aGVyUHJveHkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKG90aGVyUHJveHktPnByZWZlcnJlZEJ1ZmZlclNpemUoKSA8IHBy
ZWZlcnJlZEJ1ZmZlclNpemUpCi0gICAgICAgICAgICBwcmVmZXJyZWRCdWZmZXJTaXplID0gb3Ro
ZXJQcm94eS0+cHJlZmVycmVkQnVmZmVyU2l6ZSgpOworICAgIGZvciAoYXV0byYgb3RoZXJQcm94
eSA6IG1fcHJveGllcykgeworICAgICAgICBpZiAob3RoZXJQcm94eS5wcmVmZXJyZWRCdWZmZXJT
aXplKCkgPCBwcmVmZXJyZWRCdWZmZXJTaXplKQorICAgICAgICAgICAgcHJlZmVycmVkQnVmZmVy
U2l6ZSA9IG90aGVyUHJveHkucHJlZmVycmVkQnVmZmVyU2l6ZSgpOwogICAgIH0KIAogICAgIG1f
c2Vzc2lvbi0+c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShwcmVmZXJyZWRCdWZmZXJTaXplKTsKIH0K
IAotYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9y
UHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQsIGJvb2wgYWN0aXZlKQorYm9vbCBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcyhS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgcHJveHksIGJvb2wgYWN0aXZlKQogewotICAgIEFTU0VS
VChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBhdXRvIHByb3h5ID0gZ2V0UHJveHkoaWQp
OwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKHByb3h5KSk7CiAKICAgICBzaXplX3QgYWN0aXZlUHJveHlDb3VudCB7
IDAgfTsKLSAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKCFvdGhlclByb3h5KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChvdGhlclByb3h5LT5pc0FjdGl2ZSgpKQorICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6
IG1fcHJveGllcykgeworICAgICAgICBpZiAob3RoZXJQcm94eS5pc0FjdGl2ZSgpKQogICAgICAg
ICAgICAgKythY3RpdmVQcm94eUNvdW50OwogICAgIH0KIApAQCAtMTYyLDIzICsxNDcsMjEgQEAg
Ym9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9yUHJv
Y2Vzcyhjb25zdCBQcm9jZXNzSWRlbnQKICAgICAvLyBJZiB0aGlzIHByb3h5IGlzIEFtYmllbnQs
IGFuZCB0aGUgc2Vzc2lvbiBpcyBhbHJlYWR5IGFjdGl2ZSwgdGhpcwogICAgIC8vIHByb3h5IHdp
bGwgbWl4IHdpdGggdGhlIGFjdGl2ZSBwcm94aWVzLiBOby1vcCwgYW5kIHJldHVybiBhY3RpdmF0
aW9uCiAgICAgLy8gd2FzIHN1Y2Vzc2Z1bC4KLSAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3Ro
ZXJzKHByb3h5LT5jYXRlZ29yeSgpKSkKKyAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJz
KHByb3h5LmNhdGVnb3J5KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIHByb3h5IHdhbnRzIHRvIGJlY29t
ZSBhY3RpdmUsIGJ1dCB0aGVyZSBhcmUgb3RoZXIKICAgICAvLyBwcm94aWVzIHdobyBhcmUgYWxy
ZWFkeSBhY3RpdmUuIFdhbGsgb3ZlciB0aGUgcHJveGllcywgYW5kIGludGVycnVwdAotICAgIC8v
IHRob3NlIHByb3hpZXMgd2hvc2UgY2F0ZW9ncmllcyBpbmRpY2F0ZSB0aGV5IGNhbm5vdCBtaXgg
d2l0aCBvdGhlcnMuCi0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzLnZhbHVl
cygpKSB7Ci0gICAgICAgIGlmICghb3RoZXJQcm94eSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIW90aGVyUHJveHktPmlzQWN0aXZlKCkpCisgICAgLy8gdGhvc2UgcHJveGll
cyB3aG9zZSBjYXRlZ29yaWVzIGluZGljYXRlIHRoZXkgY2Fubm90IG1peCB3aXRoIG90aGVycy4K
KyAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAgaWYgKCFv
dGhlclByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKG90aGVyUHJveHktPmNhdGVnb3J5KCkpKQorICAg
ICAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKG90aGVyUHJveHkuY2F0ZWdvcnkoKSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBvdGhlclByb3h5LT5iZWdpbkludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZTo6U3lzdGVtSW50
ZXJydXB0aW9uKTsKKyAgICAgICAgb3RoZXJQcm94eS5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZTo6U3lzdGVtSW50ZXJydXB0aW9uKTsKICAg
ICB9CiAjZW5kaWYKIApAQCAtMTg2LDYgKzE2OSwyMiBAQCBib29sIFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlcjo6dHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKGNvbnN0IFByb2Nlc3NJZGVu
dAogCiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpiZWdpbkF1ZGlv
U2Vzc2lvbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlw
ZSB0eXBlKQoreworICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAg
aWYgKHByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAgICBwcm94eS5iZWdpbkludGVycnVwdGlv
bih0eXBlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
OjplbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZElu
dGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hp
ZXMpIHsKKyAgICAgICAgaWYgKHByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAgICBwcm94eS5l
bmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworICAgIH0KK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXIuaAppbmRleCBiMDA0NTU3MTJmNWE4NjAxOTk5MzIzNzU3M2UzOWMy
ODRjOGY2YzIzLi4wZDlhMGUzMWRiZWVhNzU5ZDQ4MWQwNDc3OWQ2ZGE3NGUxYWZjYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oCkBAIC0yOSwzMiArMjksMzYgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
OwogCiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIKLSAgICA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+IHsKKyAgICA6IHB1
YmxpYyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkludGVycnVwdGlvbk9ic2VydmVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXIoKTsKICAgICB+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCk7CiAK
LSAgICB2b2lkIGFkZFByb3h5KFdlYWtQdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+JiYpOwot
ICAgIHZvaWQgcmVtb3ZlUHJveHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImKTsK
LSAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSogZ2V0UHJveHkoY29uc3QgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5Jik7CisgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYpOwog
Ci0gICAgdm9pZCBzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXImLCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgV2ViQ29yZTo6
Um91dGVTaGFyaW5nUG9saWN5KTsKLSAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQ
cm9jZXNzKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiwgc2l6ZV90KTsKKyAgICB2
b2lkIHNldENhdGVnb3J5Rm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYsIFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3kpOworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHkmLCBzaXplX3QpOwogCi0gICAgYm9vbCB0cnlUb1NldEFjdGl2ZUZvclBy
b2Nlc3MoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImLCBib29sKTsKKyAgICBib29s
IHRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYsIGJvb2wp
OwogCiAgICAgY29uc3QgV2ViQ29yZTo6QXVkaW9TZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbihXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9u
VHlwZSkgZmluYWw7CisgICAgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSBmaW5hbDsKKwog
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpBdWRpb1Nlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBIYXNo
TWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBXZWFrUHRyPFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5Pj4gbV9wcm94aWVzOworICAgIFdlYWtIYXNoU2V0PFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5PiBtX3Byb3hpZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuY3BwCmluZGV4IDZlNjBiNDRlZTNkMWJiNjUzZGNjYjE4MzkxZjVkZTM4ZTNhM2Q5NDcuLjAy
ZTJmYzYyNTBjYWExZmI3YTVmM2EwYTQzMzM5NzVmZWI5NzU0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBAIC03NCwxMSArNzQsNiBAQCB2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGlu
dCBwaWQpCiAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHk6OnJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSwg
U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKLXsKLSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6UmVjZWl2ZWRJ
bnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKSwgeyB9KTsKLX0KLQogdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1
c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCiB7CiAgICAgbV9ncHVDb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spLCB7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCmluZGV4IDRhYjUwZjBiMDk2ZTg4
ZWJmZmY3ODY0YTg1Mzk3ZGEzMjBmMjExYWIuLjZlMzE5ZjAxYWFiY2I0NjQ4ZTg1Y2FiN2VhNzE3
ZmI5YTUxZDFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9p
b3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgKQEAgLTUy
LDcgKzUyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50KTsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudAotICAgIHZvaWQg
cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5h
bDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRl
ckxvY2spIGZpbmFsOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3Vz
cGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAppbmRl
eCBmZWY0ZDc1ZjI5ODA4MDM0ZjFhNDljYmM5YTVjMjlkNTUxOTE4NTlkLi42YTk4ZWY4ZjU2NDM0
YjdhM2ZlMDM3ZDY3OGZhYWQzYWY2NjI5OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlci5jcHAKQEAgLTc2LDEyICs3Niw2IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpQcm92
aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBl
IHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0gICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0eXBl
LCBzaG91bGRSZXN1bWUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRV
bmRlckxvY2spCiB7CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCmluZGV4IGNkMGYwOThkODRlNzc4MjgwZTVjMmY0NDRh
ZDVjMGRkMTBiY2E4NjYuLjExZjY1MzFlYmRhMzNmNjliNjQzNGYzY2FkNTliODMyYzViYThhZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCkBAIC02MSw3ICs2MSw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmlu
YWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50
ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKICAgICB2b2lkIGFwcGxpY2F0
aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIubWVzc2FnZXMuaW4KaW5kZXggOGUzYzU3Y2RmOTYzNTljOGYzNzhiNTkxMDQ2N2E4
MjcxYzgxZGQxNy4uOWI3ZDVjZGE4ODMyMmMyMjYyMDk0OThiMzk3ZDAwMDc2ZWExYmJhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgpAQCAt
MjQsNyArMjQsNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIE5vdFJlZkNvdW50
ZWQgewotICAgIFJlY2VpdmVkSW50ZXJydXB0aW9uKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlLCBlbnVtOmJvb2wgV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCiAg
ICAgQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9j
aykKICAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChlbnVtOmJvb2wgV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRl
ckxvY2spCiAgICAgQXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393030</attachid>
            <date>2020-03-09 07:32:26 -0700</date>
            <delta_ts>2020-03-11 07:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208714-20200309153224.patch</filename>
            <type>text/plain</type>
            <size>37878</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyYzZiNzJmYjY5NThm
ZTk5MThhYjdhNjQ0NWI0ODE1MGYzNmYxOC4uNTI0MGZlNDIxN2I5YWNiMGRiNWYxMzIwZDcwYmZl
YTg3NmEwYjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTA5ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lv
biBpbnRlcnJ1cHRpb24gbGlzdGVuZXIgY29kZSB0byBBdWRpb1Nlc3Npb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgQXVkaW9TZXNzaW9uIGlu
dGVycnVwdGlvbiBkZXRlY3Rpb24gY29kZSBmcm9tIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MgaGVs
cGVyIHRvIEF1ZGlvU2Vzc2lvbklPUy4KKyAgICAgICAgQWRkIGludGVycnVwdGlvbiBvYnNlcnZl
ciBjYXBhYmlsaXRpZXMgdG8gQXVkaW9TZXNzaW9uIGFuZCBtYWtlIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MgYW4gb2JzZXJ2ZXIgb2YgaXQuCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb246OmFkZEludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIg
aW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJI
ZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBl
ciBjbGVhckNhbGxiYWNrXSk6CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVs
cGVyIGludGVycnVwdGlvbjpdKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZh
dGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
UHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElESWZOZWNlc3NhcnkpOgorCiAyMDIwLTAzLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZvciBX
ZWJLaXQgaW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5ZmE3NjRkMzE0ZjU1YzM0ZDBhNzI1N2RmYjdj
ZTdkM2U1MDJjZTQuLjU5MjBkYjlmZGFkZjI5NzhkYzk2ZjU2MjMyODU3YTRlMDc4ZDZiNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDMtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQXVkaW9TZXNzaW9uIGludGVycnVwdGlvbiBs
aXN0ZW5lciBjb2RlIHRvIEF1ZGlvU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIg
YW4gb2JzZXJ2ZXIgZm9yIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRpb25zLgorICAgICAgICBXaGVu
IGJlaW5nIGludGVycnVwdGVkLCBub3RpZnkgYWxsIFdlYlByb2Nlc3NlcyBhbmQgdHJpZ2dlciBi
ZWdpbi9lbmQgaW50ZXJydXB0aW9uIG1lY2hhbmlzbXMuCisgICAgICAgIFdlIG9ubHkgc2VuZCBp
bnRlcnJ1cHRpb24gdG8gc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIGluIFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5TWFuYWdlci4KKyAgICAgICAgTWlub3IgcmVmYWN0b3J0aW5nIHRvIG1vdmUgbWFu
YWdlciBwcm94aWVzIGZyb20gYSBtYXAgdG8gYSB3ZWFrIGhhc2ggc2V0LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRDYXRlZ29yeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk6OnRyeVRvU2V0QWN0
aXZlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlcjo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlcjo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXI6OnNldENhdGVnb3J5Rm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6
OnRyeVRvU2V0QWN0aXZlRm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5TWFuYWdlcjo6YmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OmVuZEF1ZGlvU2Vz
c2lvbkludGVycnVwdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0wOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gQXN5bmNTY3JvbGxpbmc6IHNjcm9sbGluZyB3
aXRoIHRoZSBtb3VzZSB3aGVlbCBvdmVyIHN1Yi1zY3JvbGxhYmxlIGFyZWFzIHNjcm9sbHMgdGhl
IG1haW4gZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uY3BwCmluZGV4IGYzNWZlYWJmZTk2NzEyMDhkNGEzMGI4NjI3OTBiNTEzY2JlZWU3OWEuLjNi
N2NlZTg0MjIwZTQ1NjhlMWU0NjllZDBlYTcwNjMxYjYzODBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNjMsNiArNjMsMjQgQEAg
Ym9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIHJldHVy
biB0cnVlOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKK3ZvaWQgQXVkaW9TZXNzaW9uOjphZGRJ
bnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCit7Cit9CisKK3ZvaWQg
QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNl
cnZlciYpCit7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkKK3sKK30KKwordm9pZCBBdWRpb1Nl
c3Npb246OmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0
aW9uRmxhZ3MpCit7Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1
ZGlvU2Vzc2lvblByaXZhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBmYTQyMTJmZDA1
OWFjYTY0YWM2Y2Q2OTc5MTIzNGY5YTI2NjNjYWY5Li5lODFlZGY5NzExNWMxODNmMmE4ZmVhNDFj
MTNiZmVmYzQwNmEyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaApAQCAtMjcsMTEgKzI3LDEyIEBACiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikK
IAorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Myw2ICs5NCwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAg
ICAgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAK
KyAgICBjbGFzcyBJbnRlcnJ1cHRpb25PYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJ
bnRlcnJ1cHRpb25PYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SW50
ZXJydXB0aW9uT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGJl
Z2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRpb25UeXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRl
cnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSA9IDA7
CisgICAgfTsKKyAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJik7CisgICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpOworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpOworICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyk7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNNdXRlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hh
bmdlKCk7CiAKQEAgLTEwNiw2ICsxMTksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIEhhc2hTZXQ8TXV0ZWRT
dGF0ZU9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYWtI
YXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBtX2ludGVycnVwdGlvbk9ic2VydmVyczsKKyNl
bmRpZgogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OyAvLyBVc2VkIG9ubHkgZm9yIHRlc3Rp
bmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbQppbmRleCA4M2QyNDAwYTFkMGFhNjM4OWMzZGY4OTM2NzEwYTM1ODlh
NDQ1ODg4Li44ZDlkNDllODQ4NjY3YzZiYzU5MGViMzgzOWZhMWIyMmE1YjdhNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1Mu
bW0KQEAgLTMyLDExICszMiw3MSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNz
aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
ICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitAaW50ZXJmYWNl
IFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIDogTlNPYmplY3QgeworICAgIFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbiogX2NhbGxiYWNrOworfQorCistIChpZClpbml0V2l0aENhbGxiYWNrOihX
ZWJDb3JlOjpBdWRpb1Nlc3Npb24qKWNhbGxiYWNrOworLSAodm9pZCljbGVhckNhbGxiYWNrOwor
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIKKworLSAo
aWQpaW5pdFdpdGhDYWxsYmFjazooV2ViQ29yZTo6QXVkaW9TZXNzaW9uKiljYWxsYmFjaworewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2Vu
dGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAgIFtjZW50ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpB
VkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZB
dWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKHZvaWQpY2xlYXJDYWxsYmFjaworeworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKwor
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7Cisg
ICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIE5TVUludGVnZXIgdHlw
ZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAgaWYgKHR5cGUgPT0gQVZB
dWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJ
bmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVu
c2lnbmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNo
b3VsZFJlc3VtZSkKKyAgICAgICAgZmxhZ3MgPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWF5UmVzdW1lUGxheWluZzsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3lu
Y09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdHlwZSwgZmxh
Z3NdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrOworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUJlZ2Fu
KQorICAgICAgICAgICAgY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjYWxsYmFjay0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAgICB9KTsKK30KK0Bl
bmQKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtNjEsMTQg
KzEyMSwyNSBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXVkaW9TZXNzaW9uUHJpdmF0
ZShBdWRpb1Nlc3Npb24qKTsKKyAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlv
U2Vzc2lvbiopOworICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CisKICAgICBBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CiAgICAgT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1
cHRpb25PYnNlcnZlckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAK
LUF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikK
K0F1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKiBz
ZXNzaW9uKQogICAgIDogbV9jYXRlZ29yeU92ZXJyaWRlKEF1ZGlvU2Vzc2lvbjo6Tm9uZSkKIHsK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2ludGVycnVwdGlvbk9ic2Vy
dmVySGVscGVyID0gYWRvcHROUyhbW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGFsbG9j
XSBpbml0V2l0aENhbGxiYWNrOnNlc3Npb25dKTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCit9CisKK0F1ZGlvU2Vzc2lvblByaXZhdGU6On5BdWRpb1Nlc3Npb25Qcml2YXRlKCkKK3sK
KyAgICBbbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBjbGVhckNhbGxiYWNrXTsKIH0KIAog
QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQpAQCAtMjUyLDYgKzMyMywyOCBAQCB2b2lkIEF1
ZGlvU2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7CiB9CiAKK3ZvaWQgQXVkaW9T
ZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2Jz
ZXJ2ZXIpCit7CisgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKK30K
Kwordm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVw
dGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRp
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9i
c2VydmVyLmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKHR5cGUpOworfQorCit2b2lkIEF1
ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRl
cnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRl
cnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLmVuZEF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvbihmbGFncyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDYzNzJlZDBhZWFi
ZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMuLjFhNzUyY2Y3NzhkZmYxZmJkMzE5MTQzNGE4
MThlYTUzOGExMjE0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTM3LDEwICszNyw2IEBAIGNs
YXNzIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQ+CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25U
eXBlIDogYm9vbCB7IEJlZ2luLCBFbmQgfTsKLSAgICBlbnVtIGNsYXNzIFNob3VsZFJlc3VtZSA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9u
KEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgPSAwOwotCiAgICAgZW51bSBjbGFzcyBT
dXNwZW5kZWRVbmRlckxvY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgdm9pZCBh
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVu
ZGVyTG9jaykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KaW5kZXggZjBlYmJkYzJkMjJlYzZhY2Vm
NWYzYTljODQxZmYyOGQ1NjUxZjgzMi4uZWIyOWQ0M2U5YjQ2OTRmOTJhM2FmMWM1NzFjZTUwMmVj
YjRkNWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCkBAIC03OSw3ICs3OSw2IEBAIGNsYXNzIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUzsKIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lv
bkhlbHBlcmlPUyopY2FsbGJhY2s7CiAKIC0gKHZvaWQpY2xlYXJDYWxsYmFjazsKLS0gKHZvaWQp
aW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAg
ICAgfk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOwogCiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24o
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlLCBNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2sp
OwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxs
QmVjb21lSW5hY3RpdmUoKTsKQEAgLTExMiwxMCArMTEwLDggQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6Okhhc0F2YWlsYWJsZVRhcmdldHM7Ci0gICAgdXNpbmcgSW50ZXJydXB0aW9uVHlwZSA9IE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZTsKICAgICB1c2luZyBQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsKICAgICB1c2luZyBTaG91bGRQYXVzZSA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1c2U7Ci0gICAgdXNpbmcgU2hvdWxkUmVzdW1lID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWU7CiAgICAgdXNpbmcgU3VwcG9y
dHNBaXJQbGF5VmlkZW8gPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1cHBvcnRzQWlyUGxh
eVZpZGVvOwogICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOwogCkBAIC0yNzYsMTIgKzI3Miw2IEBAIHZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFs
PGJvb2w+JiYgc3VwcG9ydHNBCiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJy
dXB0aW9uVHlwZSB0eXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSBz
aG91bGRSZXN1bWUpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAg
ICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0eXBlLCBzaG91bGRSZXN1bWUpOwotfQot
CiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KQogewogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQpAQCAtMzI4LDggKzMxOCw2
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpCiAgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAKICAgICBOU05vdGlm
aWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50
ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBv
YmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07Ci0K
ICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpn
ZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVj
dDpuaWxdOwpAQCAtNDQzLDI2ICs0MzEsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQogfQogI2VuZGlmIC8vICFQ
TEFURk9STShXQVRDSE9TKQogCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KLXsKLSAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOwotICAgIHVzaW5nIFNob3VsZFJlc3Vt
ZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lOwotCi0gICAgTlNVSW50
ZWdlciB0eXBlID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07Ci0gICAg
SW50ZXJydXB0aW9uVHlwZSBpbnRlcnJ1cHRpb25UeXBlID0gKHR5cGUgPT0gQVZBdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgPyBJbnRlcnJ1cHRpb25UeXBlOjpFbmQgOiBJbnRlcnJ1
cHRpb25UeXBlOjpCZWdpbik7Ci0gICAgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSA9IFNob3Vs
ZFJlc3VtZTo6Tm87Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBp
bnRlcnJ1cHRpb25dIC0gdHlwZSA9ICVpIiwgKGludCl0eXBlKTsKLQotICAgIGlmIChpbnRlcnJ1
cHRpb25UeXBlID09IEludGVycnVwdGlvblR5cGU6OkVuZCAmJiBbW1tub3RpZmljYXRpb24gdXNl
ckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleV0g
dW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9u
U2hvdWxkUmVzdW1lKQotICAgICAgICBzaG91bGRSZXN1bWUgPSBTaG91bGRSZXN1bWU6OlllczsK
LQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaW50ZXJydXB0aW9uVHlwZSwgc2hvdWxkUmVzdW1l
XSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxm
LT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+cmVjZWl2ZWRJbnRlcnJ1cHRpb24o
aW50ZXJydXB0aW9uVHlwZSwgc2hvdWxkUmVzdW1lKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClh
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCiB7CiAgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAppbmRleCA0ZGM4
ZmYzYzEzMmFjNTU5OGIyMzljYzRkMjIzZTYxYTNkMDA0MzA0Li4wZjc3ZWJhNmQ5NzhjNjU2YWFl
MjA5YmU5MzMxOTZjZjEwNmMzODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbmNsdWRlICJBdWRpb1Nlc3Np
b24uaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCIKICNpbmNsdWRlICJNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00
NCwxMyArNDUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TCiAgICAgOiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hCi0gICAgLCBw
dWJsaWMgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50IHsKKyAgICAsIHB1YmxpYyBNZWRpYVNlc3Np
b25IZWxwZXJDbGllbnQKKyAgICAsIHB1YmxpYyBBdWRpb1Nlc3Npb246OkludGVycnVwdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7
CiAKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOwogICAg
IHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAorICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6OldlYWtWYWx1ZVR5cGU7CisgICAgdXNpbmcgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50Ojp3
ZWFrUHRyRmFjdG9yeTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOwogCkBAIC02Miw4ICs2NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KCkgZmluYWw7CiAgICAg
dm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiwgRGVsYXlD
YWxsaW5nVXBkYXRlTm93UGxheWluZykgZmluYWw7CiAKKyAgICAvLyBBdWRpb1Nlc3Npb246Oklu
dGVycnVwdGlvbk9ic2VydmVyCisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKSBmaW5hbCB7IGJl
Z2luSW50ZXJydXB0aW9uKHR5cGUpOyB9CisgICAgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKSBm
aW5hbCB7IGVuZEludGVycnVwdGlvbihmbGFncyk7IH0KKwogICAgIC8vIE1lZGlhU2Vzc2lvbkhl
bHBlckNsaWVudAotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlw
ZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOwogICAgIHZvaWQgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CmluZGV4IDgwZTViNzAwNDdlZmE5MWJmN2I3MjYxNzcyNjI2NWY1ODEzY2MzNDYuLjMwMmZkNDM1
YmExYjc0ZDI4MTE3MzBiMzljZWNkMjFkMGRkNzFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CkBAIC01MSw2ICs1MSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYSgpCiB7CisgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgZWFjaCBpbnRl
cmVzdGVkIG1lZGlhIHNlc3Npb24gdG8gb2JzZXJ2ZSBhdWRpbyBpbnRlcnJ1cHRpb25zIGRpcmVj
dGx5LgorICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmFkZEludGVycnVwdGlvbk9i
c2VydmVyKCp0aGlzKTsKIH0KIAogTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1MoKQpAQCAtNTgsNiArNjAsNyBAQCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp+
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpCiAgICAgaWYgKG1faXNNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMpCiAgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RvcE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwogICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVk
SGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNl
c3Npb24oKS5yZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmljdGlvbnMoKQpAQCAtMTExLDYgKzExNCw3
IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRElmTmVjZXNzYXJ5KCkKICAgICBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9
IHRydWU7CiAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRp
ZgorICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmFkZEludGVycnVwdGlvbk9ic2Vy
dmVyKCp0aGlzKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCkKQEAgLTE2NiwxOSArMTcwLDYgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvIHN1cHAKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0UGxheWJhY2tUYXJnZXQoV1RG
TW92ZShwbGF5YmFja1RhcmdldCkpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
OnJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSwgU2hvdWxkUmVzdW1l
IHNob3VsZFJlc3VtZSkKLXsKLSAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBmbGFncyA9IHNob3VsZFJlc3VtZSA9PSBT
aG91bGRSZXN1bWU6OlllcyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
IDogUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vRmxhZ3M7Ci0KLSAgICBpZiAodHlwZSA9PSBJbnRl
cnJ1cHRpb25UeXBlOjpCZWdpbikKLSAgICAgICAgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBlbmRJ
bnRlcnJ1cHRpb24oZmxhZ3MpOwotfQotCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgaXNTdXNwZW5k
ZWRVbmRlckxvY2spCiB7CiAgICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggYmQ3ZDA3ZjBkMzU2OWM5ZjAzYWVlZWE1NjY2MjkyOGYyNmIwMDY5
ZS4uNDhjOTUwOWFhNGViNGVmZDE1NTA0YzJjMDFjYzEyOGQyZDc5Zjc2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIHsKICAgICBpZiAobV9hdWRpb1Nlc3Npb25Qcm94eSkg
ewotICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigpLnJlbW92ZVByb3h5
KHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9TZXNz
aW9uTWFuYWdlcigpLnJlbW92ZVByb3h5KCptX2F1ZGlvU2Vzc2lvblByb3h5KTsKICAgICAgICAg
bV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogfQpAQCAtMjU4LDcgKzI1OCw3
IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjph
dWRpb1Nlc3Npb25Qcm94eSgpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU2Vzc2lvblByb3h5KSB7CiAg
ICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6Y3Jl
YXRlKCp0aGlzKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgZ3B1UHJvY2VzcygpLmF1ZGlv
U2Vzc2lvbk1hbmFnZXIoKS5hZGRQcm94eShtYWtlV2Vha1B0cihtX2F1ZGlvU2Vzc2lvblByb3h5
LmdldCgpKSk7CisgICAgICAgIGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkuYWRk
UHJveHkoKm1fYXVkaW9TZXNzaW9uUHJveHkpOwogICAgIH0KICAgICByZXR1cm4gKm1fYXVkaW9T
ZXNzaW9uUHJveHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAppbmRleCA4NjQ1OGE1MTg3YzFiYWQ1
ZDM1OWFkODRkYzEzZDQ4NTE0MDI0Nzk4Li4xZTRkN2Y4NDc5Mzg3NWYwODE5MzI3YmE5YjFlZDY3
ZWNiY2ZiMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKQEAgLTc1LDE4ICs3NSwxOCBAQCB2b2lk
IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRDYXRlZ29yeShXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZSBjYQogewogICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKICAgICBt
X3JvdXRlU2hhcmluZ1BvbGljeSA9IHBvbGljeTsKLSAgICBhdWRpb1Nlc3Npb25NYW5hZ2VyKCku
c2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpLCBjYXRlZ29yeSwgcG9saWN5KTsKKyAgICBhdWRpb1Nlc3Npb25NYW5hZ2VyKCkuc2V0Q2F0
ZWdvcnlGb3JQcm9jZXNzKCp0aGlzLCBjYXRlZ29yeSwgcG9saWN5KTsKIH0KIAogdm9pZCBSZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eTo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSh1aW50NjRfdCBzaXpl
KQogewogICAgIG1fcHJlZmVycmVkQnVmZmVyU2l6ZSA9IHNpemU7Ci0gICAgYXVkaW9TZXNzaW9u
TWFuYWdlcigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKTsKKyAgICBhdWRpb1Nlc3Npb25NYW5hZ2Vy
KCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoKnRoaXMsIHNpemUpOwogfQogCiB2
b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Ojp0cnlUb1NldEFjdGl2ZShib29sIGFjdGl2ZSwg
U2V0QWN0aXZlQ29tcGxldGlvbiYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9hY3RpdmUgPSBhdWRp
b1Nlc3Npb25NYW5hZ2VyKCkudHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBhY3RpdmUpOworICAgIG1fYWN0aXZlID0gYXVkaW9T
ZXNzaW9uTWFuYWdlcigpLnRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcygqdGhpcywgYWN0aXZlKTsK
ICAgICBjb21wbGV0aW9uKG1fYWN0aXZlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyLmNwcAppbmRleCBiMTZiNGVmMjExZjJhMzgzMDcwNTRjNTEyNjFiNzE2MWZjN2QwOGRiLi43
ZmI2MzUzZTkzNDcyZmIxYTRjMjc3N2FmYzA2MWIyYjk1NTQ3M2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtNDQsNDYgKzQ2LDM2IEBAIHN0
YXRpYyBib29sIGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSBjYXRlZ29yeSkKIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6UmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkKICAgICA6IG1fc2Vzc2lvbihBdWRpb1Nlc3Npb246OmNy
ZWF0ZSgpKQogeworICAgIG1fc2Vzc2lvbi0+YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoKnRoaXMp
OwogfQogCi1SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6On5SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyOjphZGRQcm94eShXZWFrUHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5PiYmIHBy
b3h5KQorUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyKCkKIHsKLSAgICBhdXRvIGlkID0gcHJveHktPnByb2Nlc3NJZGVudGlmaWVy
KCk7Ci0gICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBtX3Byb3hpZXMu
c2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcigqdGhpcyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyOjpyZW1vdmVQcm94eShjb25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQpCit2b2lkIFJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6YWRkUHJveHkoUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkmIHByb3h5KQogewotICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBt
X3Byb3hpZXMucmVtb3ZlKGlkKTsKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhwcm94
eSkpOworICAgIG1fcHJveGllcy5hZGQocHJveHkpOwogfQogCi1SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eSogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpnZXRQcm94eShjb25zdCBQcm9j
ZXNzSWRlbnRpZmllciYgaWQpCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6
cmVtb3ZlUHJveHkoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5KQogewotICAgIGF1dG8g
cmVzdWx0cyA9IG1fcHJveGllcy5maW5kKGlkKTsKLSAgICBpZiAocmVzdWx0cyAhPSBtX3Byb3hp
ZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKHByb3h5KSk7CisgICAg
bV9wcm94aWVzLnJlbW92ZShwcm94eSk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyOjpzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50aWZpZXIm
IGlkLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9s
aWN5IHBvbGljeSkKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRDYXRl
Z29yeUZvclByb2Nlc3MoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5LCBBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGljeSkKIHsK
LSAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgYXV0byBwcm94eSA9IGdl
dFByb3h5KGlkKTsKLSAgICBpZiAoIXByb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
cHJveHktPmNhdGVnb3J5KCkgPT0gY2F0ZWdvcnkgJiYgcHJveHktPnJvdXRlU2hhcmluZ1BvbGlj
eSgpID09IHBvbGljeSkKKyAgICBpZiAocHJveHkuY2F0ZWdvcnkoKSA9PSBjYXRlZ29yeSAmJiBw
cm94eS5yb3V0ZVNoYXJpbmdQb2xpY3koKSA9PSBwb2xpY3kpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEhhc2hDb3VudGVkU2V0PEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBXVEY6OkludEhh
c2g8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPj4gY2F0ZWdvcnlDb3VudHM7CiAgICAgSGFzaENv
dW50ZWRTZXQ8Um91dGVTaGFyaW5nUG9saWN5LCBXVEY6OkludEhhc2g8Um91dGVTaGFyaW5nUG9s
aWN5PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxSb3V0ZVNoYXJpbmdQb2xpY3k+PiBwb2xp
Y3lDb3VudHM7Ci0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzLnZhbHVlcygp
KSB7Ci0gICAgICAgIGNhdGVnb3J5Q291bnRzLmFkZChvdGhlclByb3h5LT5jYXRlZ29yeSgpKTsK
LSAgICAgICAgcG9saWN5Q291bnRzLmFkZChvdGhlclByb3h5LT5yb3V0ZVNoYXJpbmdQb2xpY3ko
KSk7CisgICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzKSB7CisgICAgICAgIGNh
dGVnb3J5Q291bnRzLmFkZChvdGhlclByb3h5LmNhdGVnb3J5KCkpOworICAgICAgICBwb2xpY3lD
b3VudHMuYWRkKG90aGVyUHJveHkucm91dGVTaGFyaW5nUG9saWN5KCkpOwogICAgIH0KIAogICAg
IGlmIChjYXRlZ29yeUNvdW50cy5jb250YWlucyhBdWRpb1Nlc3Npb246OlBsYXlBbmRSZWNvcmQp
KQpAQCAtMTEzLDMwICsxMDUsMjMgQEAgdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFn
ZXI6OnNldENhdGVnb3J5Rm9yUHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnRpZmkKICAgICBtX3Nl
c3Npb24tPnNldENhdGVnb3J5KGNhdGVnb3J5LCBwb2xpY3kpOwogfQogCi12b2lkIFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3Mo
Y29uc3QgUHJvY2Vzc0lkZW50aWZpZXImIGlkLCBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6ZSkK
K3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplRm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgcHJveHksIHNpemVfdCBwcmVm
ZXJyZWRCdWZmZXJTaXplKQogewotICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6IG1fcHJveGll
cy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoIW90aGVyUHJveHkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKG90aGVyUHJveHktPnByZWZlcnJlZEJ1ZmZlclNpemUoKSA8IHBy
ZWZlcnJlZEJ1ZmZlclNpemUpCi0gICAgICAgICAgICBwcmVmZXJyZWRCdWZmZXJTaXplID0gb3Ro
ZXJQcm94eS0+cHJlZmVycmVkQnVmZmVyU2l6ZSgpOworICAgIGZvciAoYXV0byYgb3RoZXJQcm94
eSA6IG1fcHJveGllcykgeworICAgICAgICBpZiAob3RoZXJQcm94eS5wcmVmZXJyZWRCdWZmZXJT
aXplKCkgPCBwcmVmZXJyZWRCdWZmZXJTaXplKQorICAgICAgICAgICAgcHJlZmVycmVkQnVmZmVy
U2l6ZSA9IG90aGVyUHJveHkucHJlZmVycmVkQnVmZmVyU2l6ZSgpOwogICAgIH0KIAogICAgIG1f
c2Vzc2lvbi0+c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShwcmVmZXJyZWRCdWZmZXJTaXplKTsKIH0K
IAotYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9y
UHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQsIGJvb2wgYWN0aXZlKQorYm9vbCBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcyhS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgcHJveHksIGJvb2wgYWN0aXZlKQogewotICAgIEFTU0VS
VChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBhdXRvIHByb3h5ID0gZ2V0UHJveHkoaWQp
OwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKHByb3h5KSk7CiAKICAgICBzaXplX3QgYWN0aXZlUHJveHlDb3VudCB7
IDAgfTsKLSAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKCFvdGhlclByb3h5KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChvdGhlclByb3h5LT5pc0FjdGl2ZSgpKQorICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6
IG1fcHJveGllcykgeworICAgICAgICBpZiAob3RoZXJQcm94eS5pc0FjdGl2ZSgpKQogICAgICAg
ICAgICAgKythY3RpdmVQcm94eUNvdW50OwogICAgIH0KIApAQCAtMTYyLDIzICsxNDcsMjEgQEAg
Ym9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9yUHJv
Y2Vzcyhjb25zdCBQcm9jZXNzSWRlbnQKICAgICAvLyBJZiB0aGlzIHByb3h5IGlzIEFtYmllbnQs
IGFuZCB0aGUgc2Vzc2lvbiBpcyBhbHJlYWR5IGFjdGl2ZSwgdGhpcwogICAgIC8vIHByb3h5IHdp
bGwgbWl4IHdpdGggdGhlIGFjdGl2ZSBwcm94aWVzLiBOby1vcCwgYW5kIHJldHVybiBhY3RpdmF0
aW9uCiAgICAgLy8gd2FzIHN1Y2Vzc2Z1bC4KLSAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3Ro
ZXJzKHByb3h5LT5jYXRlZ29yeSgpKSkKKyAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJz
KHByb3h5LmNhdGVnb3J5KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIHByb3h5IHdhbnRzIHRvIGJlY29t
ZSBhY3RpdmUsIGJ1dCB0aGVyZSBhcmUgb3RoZXIKICAgICAvLyBwcm94aWVzIHdobyBhcmUgYWxy
ZWFkeSBhY3RpdmUuIFdhbGsgb3ZlciB0aGUgcHJveGllcywgYW5kIGludGVycnVwdAotICAgIC8v
IHRob3NlIHByb3hpZXMgd2hvc2UgY2F0ZW9ncmllcyBpbmRpY2F0ZSB0aGV5IGNhbm5vdCBtaXgg
d2l0aCBvdGhlcnMuCi0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzLnZhbHVl
cygpKSB7Ci0gICAgICAgIGlmICghb3RoZXJQcm94eSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIW90aGVyUHJveHktPmlzQWN0aXZlKCkpCisgICAgLy8gdGhvc2UgcHJveGll
cyB3aG9zZSBjYXRlZ29yaWVzIGluZGljYXRlIHRoZXkgY2Fubm90IG1peCB3aXRoIG90aGVycy4K
KyAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAgaWYgKCFv
dGhlclByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKG90aGVyUHJveHktPmNhdGVnb3J5KCkpKQorICAg
ICAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKG90aGVyUHJveHkuY2F0ZWdvcnkoKSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBvdGhlclByb3h5LT5iZWdpbkludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZTo6U3lzdGVtSW50
ZXJydXB0aW9uKTsKKyAgICAgICAgb3RoZXJQcm94eS5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZTo6U3lzdGVtSW50ZXJydXB0aW9uKTsKICAg
ICB9CiAjZW5kaWYKIApAQCAtMTg2LDYgKzE2OSwyMiBAQCBib29sIFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlcjo6dHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKGNvbnN0IFByb2Nlc3NJZGVu
dAogCiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpiZWdpbkF1ZGlv
U2Vzc2lvbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlw
ZSB0eXBlKQoreworICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAg
aWYgKHByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAgICBwcm94eS5iZWdpbkludGVycnVwdGlv
bih0eXBlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
OjplbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZElu
dGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hp
ZXMpIHsKKyAgICAgICAgaWYgKHByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAgICBwcm94eS5l
bmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworICAgIH0KK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXIuaAppbmRleCBiMDA0NTU3MTJmNWE4NjAxOTk5MzIzNzU3M2UzOWMy
ODRjOGY2YzIzLi4wZDlhMGUzMWRiZWVhNzU5ZDQ4MWQwNDc3OWQ2ZGE3NGUxYWZjYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oCkBAIC0yOSwzMiArMjksMzYgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
OwogCiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIKLSAgICA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+IHsKKyAgICA6IHB1
YmxpYyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkludGVycnVwdGlvbk9ic2VydmVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXIoKTsKICAgICB+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCk7CiAK
LSAgICB2b2lkIGFkZFByb3h5KFdlYWtQdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+JiYpOwot
ICAgIHZvaWQgcmVtb3ZlUHJveHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImKTsK
LSAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSogZ2V0UHJveHkoY29uc3QgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5Jik7CisgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYpOwog
Ci0gICAgdm9pZCBzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXImLCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgV2ViQ29yZTo6
Um91dGVTaGFyaW5nUG9saWN5KTsKLSAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQ
cm9jZXNzKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiwgc2l6ZV90KTsKKyAgICB2
b2lkIHNldENhdGVnb3J5Rm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYsIFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3kpOworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHkmLCBzaXplX3QpOwogCi0gICAgYm9vbCB0cnlUb1NldEFjdGl2ZUZvclBy
b2Nlc3MoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImLCBib29sKTsKKyAgICBib29s
IHRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYsIGJvb2wp
OwogCiAgICAgY29uc3QgV2ViQ29yZTo6QXVkaW9TZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbihXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9u
VHlwZSkgZmluYWw7CisgICAgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSBmaW5hbDsKKwog
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpBdWRpb1Nlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBIYXNo
TWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBXZWFrUHRyPFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5Pj4gbV9wcm94aWVzOworICAgIFdlYWtIYXNoU2V0PFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5PiBtX3Byb3hpZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuY3BwCmluZGV4IDZlNjBiNDRlZTNkMWJiNjUzZGNjYjE4MzkxZjVkZTM4ZTNhM2Q5NDcuLjAy
ZTJmYzYyNTBjYWExZmI3YTVmM2EwYTQzMzM5NzVmZWI5NzU0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBAIC03NCwxMSArNzQsNiBAQCB2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGlu
dCBwaWQpCiAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHk6OnJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSwg
U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKLXsKLSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6UmVjZWl2ZWRJ
bnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKSwgeyB9KTsKLX0KLQogdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1
c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCiB7CiAgICAgbV9ncHVDb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spLCB7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCmluZGV4IDRhYjUwZjBiMDk2ZTg4
ZWJmZmY3ODY0YTg1Mzk3ZGEzMjBmMjExYWIuLjZlMzE5ZjAxYWFiY2I0NjQ4ZTg1Y2FiN2VhNzE3
ZmI5YTUxZDFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9p
b3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgKQEAgLTUy
LDcgKzUyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50KTsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudAotICAgIHZvaWQg
cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5h
bDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRl
ckxvY2spIGZpbmFsOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3Vz
cGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAppbmRl
eCBmZWY0ZDc1ZjI5ODA4MDM0ZjFhNDljYmM5YTVjMjlkNTUxOTE4NTlkLi42YTk4ZWY4ZjU2NDM0
YjdhM2ZlMDM3ZDY3OGZhYWQzYWY2NjI5OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlci5jcHAKQEAgLTc2LDEyICs3Niw2IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpQcm92
aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBl
IHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0gICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0eXBl
LCBzaG91bGRSZXN1bWUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRV
bmRlckxvY2spCiB7CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCmluZGV4IGNkMGYwOThkODRlNzc4MjgwZTVjMmY0NDRh
ZDVjMGRkMTBiY2E4NjYuLjMzYjY2ZmU2OTJlMzFmMDUwYWNhY2M5ZGMyNmExMTRkNWI2MTgyZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCkBAIC00NCwxMCArNDQsOCBAQCBw
dWJsaWM6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCk7CiAKICAgICB1c2luZyBI
YXNBdmFpbGFibGVUYXJnZXRzID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpI
YXNBdmFpbGFibGVUYXJnZXRzOwotICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBXZWJDb3Jl
OjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CiAgICAgdXNpbmcg
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CiAgICAgdXNpbmcgU2hvdWxkUGF1
c2UgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOwotICAg
IHVzaW5nIFNob3VsZFJlc3VtZSA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U2hvdWxkUmVzdW1lOwogICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gV2ViQ29yZTo6
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKICAgICB1c2lu
ZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlN1c3BlbmRlZFVuZGVyTG9jazsKIApAQCAtNjEsNyArNTksNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpIGZpbmFsOwogCiAgICAgLy8g
TWVzc2FnZXMKLSAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUs
IFNob3VsZFJlc3VtZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQo
U3VzcGVuZGVkVW5kZXJMb2NrKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJ
bmFjdGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3Nh
Z2VzLmluCmluZGV4IDhlM2M1N2NkZjk2MzU5YzhmMzc4YjU5MTA0NjdhODI3MWM4MWRkMTcuLjli
N2Q1Y2RhODgzMjJjMjI2MjA5NDk4YjM5N2QwMDA3NmVhMWJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDYgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBOb3RSZWZDb3VudGVkIHsKLSAgICBSZWNl
aXZlZEludGVycnVwdGlvbihlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OkludGVycnVwdGlvblR5cGUgdHlwZSwgZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjpTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQogICAgIEFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZChlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OlN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCiAgICAgQXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQogICAgIEFw
cGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393241</attachid>
            <date>2020-03-11 07:44:00 -0700</date>
            <delta_ts>2020-03-12 06:19:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208714-20200311154358.patch</filename>
            <type>text/plain</type>
            <size>37384</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY4M2RhY2NhZWU1NTQ4
ZjIwM2Q0ZjQwOWEyM2M2MTVhYWNlYzhiMS4uOGVlYzlhODQ4MzQ4NGIwOGE4YWI0ZmQzYWIxYmNj
OGU1M2Y5MGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTExICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lv
biBpbnRlcnJ1cHRpb24gbGlzdGVuZXIgY29kZSB0byBBdWRpb1Nlc3Npb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1
cHRpb24gZGV0ZWN0aW9uIGNvZGUgZnJvbSBNZWRpYVNlc3Npb25NYW5hZ2VySU9TIGhlbHBlciB0
byBBdWRpb1Nlc3Npb25JT1MuCisgICAgICAgIEFkZCBpbnRlcnJ1cHRpb24gb2JzZXJ2ZXIgY2Fw
YWJpbGl0aWVzIHRvIEF1ZGlvU2Vzc2lvbiBhbmQgbWFrZSBNZWRpYVNlc3Npb25NYW5hZ2VySU9T
IGFuIG9ic2VydmVyIG9mIGl0LgorICAgICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW06CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGluaXRX
aXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVy
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgY2xl
YXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBp
bnRlcnJ1cHRpb246XSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25Qcml2YXRlOjpB
dWRpb1Nlc3Npb25Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZh
dGU6On5BdWRpb1Nlc3Npb25Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGlu
aXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RElmTmVjZXNzYXJ5KToKKwogMjAyMC0wMy0xMSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgRnJhbWVMb2FkZXIgc2hvdWxkIG93biBpdHMgRnJhbWVMb2FkZXJD
bGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggM2M1Y2E4Yjg3ODBiNzJlMjQ5NzMxMWQ3MGI1YzgwNWQzMTI4Mzcz
MS4uZGVmZjAwZGQ4NzBmMjcyYmVlODBhYTNlZTNhODY0NjY1MWU0ZTY4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAyMC0wMy0xMSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSBBdWRpb1Nlc3Npb24gaW50ZXJydXB0aW9uIGxpc3RlbmVyIGNv
ZGUgdG8gQXVkaW9TZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDg3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAg
ICAgICAgTWFrZSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIgYW4gb2JzZXJ2ZXIgZm9y
IEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRpb25zLgorICAgICAgICBXaGVuIGJlaW5nIGludGVycnVw
dGVkLCBub3RpZnkgYWxsIFdlYlByb2Nlc3NlcyBhbmQgdHJpZ2dlciBiZWdpbi9lbmQgaW50ZXJy
dXB0aW9uIG1lY2hhbmlzbXMuCisgICAgICAgIFdlIG9ubHkgc2VuZCBpbnRlcnJ1cHRpb24gdG8g
c2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIGluIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdl
ci4KKyAgICAgICAgTWlub3IgcmVmYWN0b3J0aW5nIHRvIG1vdmUgbWFuYWdlciBwcm94aWVzIGZy
b20gYSBtYXAgdG8gYSB3ZWFrIGhhc2ggc2V0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk6OnRyeVRvU2V0QWN0aXZlKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6UmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjphZGRQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6cmVtb3ZlUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnNl
dENhdGVnb3J5Rm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZl
Rm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlcjo6YmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5p
bjoKKwogMjAyMC0wMy0xMSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRnJhbWVMb2FkZXIgc2hvdWxkIG93biBpdHMgRnJhbWVMb2FkZXJDbGllbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGYzNWZl
YWJmZTk2NzEyMDhkNGEzMGI4NjI3OTBiNTEzY2JlZWU3OWEuLjNiN2NlZTg0MjIwZTQ1NjhlMWU0
NjllZDBlYTcwNjMxYjYzODBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNjMsNiArNjMsMjQgQEAgYm9vbCBBdWRpb1Nlc3Npb246
OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYg
IVBMQVRGT1JNKElPUykKK3ZvaWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZl
cihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCit7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpyZW1v
dmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCit7Cit9CisKK3Zv
aWQgQXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
SW50ZXJydXB0aW9uVHlwZSkKK3sKK30KKwordm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpCit7Cit9Cisj
ZW5kaWYKKwogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBmYTQyMTJmZDA1OWFjYTY0YWM2Y2Q2OTc5MTIz
NGY5YTI2NjNjYWY5Li5mYmQ4Zjk5ODNhYTFkMGI3ZDM2OWM4MmY2NmEzZjJlNTU2NjM1OWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtMjcs
MTEgKzI3LDEyIEBACiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKIAorI2luY2x1ZGUgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05Myw2ICs5NCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNdXRl
ZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVNdXRl
ZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7CiAKKyAgICBjbGFzcyBJbnRlcnJ1
cHRpb25PYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnJ1cHRpb25PYnNlcnZl
cj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SW50ZXJydXB0aW9uT2JzZXJ2ZXIo
KSA9IGRlZmF1bHQ7CisKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgSW50ZXJydXB0
aW9uVHlwZSBhbmQgRW5kSW50ZXJydXB0aW9uRmxhZ3MgaW4gdGhpcyBpbnRlcmZhY2UuCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRl
cnJ1cHRpb25GbGFncykgPSAwOworICAgIH07CisgICAgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNl
cnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpOworICAgIHZvaWQgcmVtb3ZlSW50ZXJydXB0aW9u
T2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImKTsKKyAgICB2b2lkIGJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICB2b2lkIGVu
ZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3Mp
OworCiAgICAgdmlydHVhbCBib29sIGlzTXV0ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpOwogCkBAIC0xMDYsNiArMTIwLDkgQEAgcHJvdGVjdGVk
OgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Vzc2lvblByaXZhdGU+IG1fcHJpdmF0ZTsK
ICAgICBIYXNoU2V0PE11dGVkU3RhdGVPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBXZWFrSGFzaFNldDxJbnRlcnJ1cHRpb25PYnNlcnZlcj4gbV9pbnRlcnJ1
cHRpb25PYnNlcnZlcnM7CisjZW5kaWYKICAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsgLy8g
VXNlZCBvbmx5IGZvciB0ZXN0aW5nLgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggODNkMjQwMGExZDBhYTYz
ODljM2RmODkzNjcxMGEzNTg5YTQ0NTg4OC4uOGQ5ZDQ5ZTg0ODY2N2M2YmM1OTBlYjM4MzlmYTFi
MjJhNWI3YTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0zMiwxMSArMzIsNzEgQEAKICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KIAorQGludGVyZmFjZSBXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA6IE5TT2Jq
ZWN0IHsKKyAgICBXZWJDb3JlOjpBdWRpb1Nlc3Npb24qIF9jYWxsYmFjazsKK30KKworLSAoaWQp
aW5pdFdpdGhDYWxsYmFjazooV2ViQ29yZTo6QXVkaW9TZXNzaW9uKiljYWxsYmFjazsKKy0gKHZv
aWQpY2xlYXJDYWxsYmFjazsKKy0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkludGVycnVwdGlvbk9i
c2VydmVySGVscGVyCisKKy0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbiopY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9jYWxsYmFjayA9IGNhbGxiYWNrOworCisgICAgTlNOb3Rp
ZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGlu
dGVycnVwdGlvbjopIG5hbWU6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24g
b2JqZWN0OltQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV1dOwor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWNsZWFyQ2FsbGJhY2sKK3sKKyAgICBfY2Fs
bGJhY2sgPSBuaWw7Cit9CisKKy0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisK
KyAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZv
cktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXldIHVuc2lnbmVkSW50ZWdlclZh
bHVlXTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9u
RmxhZ3MgZmxhZ3MgPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKKwor
ICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVkICYmIFtb
W25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0gQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1bWUpCisgICAgICAgIGZsYWdzID0gV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7CisKKyAgICBjYWxsT25XZWJU
aHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5Q
dHIoc2VsZiksIHR5cGUsIGZsYWdzXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjazsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvblR5cGVCZWdhbikKKyAgICAgICAgICAgIGNhbGxiYWNrLT5iZWdpbkludGVycnVw
dGlvbihXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPmVuZEludGVycnVwdGlvbihmbGFn
cyk7CisgICAgfSk7Cit9CitAZW5kCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFMT0df
RElTQUJMRUQKQEAgLTYxLDE0ICsxMjEsMjUgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5
TmFtZShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSkKIGNsYXNzIEF1ZGlvU2Vz
c2lvblByaXZhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKik7CisgICAgZXhwbGljaXQgQXVkaW9T
ZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKKyAgICB+QXVkaW9TZXNzaW9uUHJpdmF0ZSgp
OworCiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwog
ICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsKKyAgICBS
ZXRhaW5QdHI8V2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI+IG1faW50ZXJydXB0aW9uT2Jz
ZXJ2ZXJIZWxwZXI7CiB9OwogCi1BdWRpb1Nlc3Npb25Qcml2YXRlOjpBdWRpb1Nlc3Npb25Qcml2
YXRlKEF1ZGlvU2Vzc2lvbiopCitBdWRpb1Nlc3Npb25Qcml2YXRlOjpBdWRpb1Nlc3Npb25Qcml2
YXRlKEF1ZGlvU2Vzc2lvbiogc2Vzc2lvbikKICAgICA6IG1fY2F0ZWdvcnlPdmVycmlkZShBdWRp
b1Nlc3Npb246Ok5vbmUpCiB7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAg
bV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMoW1tXZWJJbnRlcnJ1cHRpb25P
YnNlcnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpzZXNzaW9uXSk7CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitBdWRpb1Nlc3Npb25Qcml2YXRlOjp+QXVkaW9T
ZXNzaW9uUHJpdmF0ZSgpCit7CisgICAgW21faW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgY2xl
YXJDYWxsYmFja107CiB9CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKQEAgLTI1Miw2
ICszMjMsMjggQEAgdm9pZCBBdWRpb1Nlc3Npb246OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQog
ewogfQogCit2b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJy
dXB0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJz
LmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9pbnRl
cnJ1cHRpb25PYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKK30KKwordm9pZCBBdWRpb1Nlc3Np
b246OmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25U
eXBlIHR5cGUpCit7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1faW50ZXJydXB0aW9uT2Jz
ZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5iZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbih0
eXBlKTsKK30KKwordm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgZm9yIChhdXRv
JiBvYnNlcnZlciA6IG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5l
bmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCiB9CiAKICNlbmRpZiAvLyBV
U0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1Mu
aAppbmRleCA2MzcyZWQwYWVhYmQ5Mjk0NTZlYWUxZTQ0NzA1NzU4Y2IwZjkyZjJjLi4xYTc1MmNm
Nzc4ZGZmMWZiZDMxOTE0MzRhODE4ZWE1MzhhMTIxNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCkBA
IC0zNywxMCArMzcsNiBAQCBjbGFzcyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50PgogcHVibGljOgogICAgIHZp
cnR1YWwgfk1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIGVudW0g
Y2xhc3MgSW50ZXJydXB0aW9uVHlwZSA6IGJvb2wgeyBCZWdpbiwgRW5kIH07Ci0gICAgZW51bSBj
bGFzcyBTaG91bGRSZXN1bWUgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpID0gMDsK
LQogICAgIGVudW0gY2xhc3MgU3VzcGVuZGVkVW5kZXJMb2NrIDogYm9vbCB7IE5vLCBZZXMgfTsK
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRl
ZFVuZGVyTG9jaykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4
IDRlOWVmMDc0YTViM2JhNzVkZDI1ZTY3Y2QwZTJkMTcyMGFkMmVhMjguLjk2ZWRmNWU5NmNjNjE2
YmQ4NzY4MWU0ODVhOWQ5MjgwMzhlYjVhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtNzks
NyArNzksNiBAQCBjbGFzcyBNZWRpYVNlc3Npb25IZWxwZXJpT1M7CiAtIChpZClpbml0V2l0aENh
bGxiYWNrOihNZWRpYVNlc3Npb25IZWxwZXJpT1MqKWNhbGxiYWNrOwogCiAtICh2b2lkKWNsZWFy
Q2FsbGJhY2s7Ci0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CiAtICh2b2lkKWFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKQEAgLTk4LDcg
Kzk3LDYgQEAgcHVibGljOgogICAgIH5NZWRpYVNlc3Npb25IZWxwZXJpT1MoKTsKIAogICAgIHZv
aWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHJl
Y2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9u
VHlwZSwgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWUpOwogICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U3VzcGVuZGVkVW5kZXJMb2NrKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrKTsKICAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CkBAIC0xMTIsMTAgKzExMCw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB1c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOwotICAgIHVzaW5nIElu
dGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5
cGU7CiAgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gTWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CiAgICAgdXNpbmcgU2hv
dWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOwotICAgIHVz
aW5nIFNob3VsZFJlc3VtZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1l
OwogICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKICAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sg
PSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKIApAQCAtMjc4
LDEyICsyNzQsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0
ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQQogfQogI2VuZGlmCiAKLXZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbihNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGUgdHlwZSwgTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQotewotICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwg
c2hvdWxkUmVzdW1lKTsKLX0KLQogdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKQEAgLTMzMCw4ICszMjAsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQogICAgIF9jYWxsYmFjayA9IGNhbGxi
YWNrOwogCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGludGVycnVwdGlvbjopIG5hbWU6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OltQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBz
aGFyZWRJbnN0YW5jZV1dOwotCiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KSBuYW1lOlBBTDo6Z2V0
X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uKCkgb2Jq
ZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmU6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVO
b3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKQEAgLTQ0NSwyNiArNDMzLDYgQEAgdm9pZCBNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KCkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oV0FUQ0hPUykKIAotLSAodm9pZClpbnRlcnJ1cHRp
b246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgdXNpbmcgSW50ZXJydXB0
aW9uVHlwZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZTsKLSAg
ICB1c2luZyBTaG91bGRSZXN1bWUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJl
c3VtZTsKLQotICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10g
b2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJ
bnRlZ2VyVmFsdWVdOwotICAgIEludGVycnVwdGlvblR5cGUgaW50ZXJydXB0aW9uVHlwZSA9ICh0
eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVkID8gSW50ZXJydXB0aW9u
VHlwZTo6RW5kIDogSW50ZXJydXB0aW9uVHlwZTo6QmVnaW4pOwotICAgIFNob3VsZFJlc3VtZSBz
aG91bGRSZXN1bWUgPSBTaG91bGRSZXN1bWU6Ok5vOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQpdHlwZSk7
Ci0KLSAgICBpZiAoaW50ZXJydXB0aW9uVHlwZSA9PSBJbnRlcnJ1cHRpb25UeXBlOjpFbmQgJiYg
W1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRl
cnJ1cHRpb25PcHRpb25LZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbk9wdGlvblNob3VsZFJlc3VtZSkKLSAgICAgICAgc2hvdWxkUmVzdW1lID0g
U2hvdWxkUmVzdW1lOjpZZXM7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGludGVycnVwdGlv
blR5cGUsIHNob3VsZFJlc3VtZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxi
YWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPnJl
Y2VpdmVkSW50ZXJydXB0aW9uKGludGVycnVwdGlvblR5cGUsIHNob3VsZFJlc3VtZSk7Ci0gICAg
fSk7Ci19Ci0KIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewogICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVyTG9jayA9
IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmgKaW5kZXggNGRjOGZmM2MxMzJhYzU1OThiMjM5Y2M0ZDIyM2U2MWEzZDAwNDMwNC4u
MGY3N2ViYTZkOTc4YzY1NmFhZTIwOWJlOTMzMTk2Y2YxMDZjMzg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisj
aW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSGVscGVySU9T
LmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtNDQsMTMgKzQ1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUwogICAgIDogcHVibGljIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYQotICAgICwgcHVibGljIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCB7CisgICAg
LCBwdWJsaWMgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgLCBwdWJsaWMgQXVkaW9TZXNz
aW9uOjpJbnRlcnJ1cHRpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUygpOwogCiAgICAgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFi
bGUoKSBvdmVycmlkZTsKICAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIApAQCAtNjIsOCArNjcsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vz
c2FyeSgpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiYsIERlbGF5Q2FsbGluZ1VwZGF0ZU5vd1BsYXlpbmcpIGZpbmFsOwogCisgICAg
Ly8gQXVkaW9TZXNzaW9uOjpJbnRlcnJ1cHRpb25PYnNlcnZlcgorICAgIHZvaWQgYmVnaW5BdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5
cGUgdHlwZSkgZmluYWwgeyBiZWdpbkludGVycnVwdGlvbih0eXBlKTsgfQorICAgIHZvaWQgZW5k
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1
cHRpb25GbGFncyBmbGFncykgZmluYWwgeyBlbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOyB9CisKICAg
ICAvLyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQKLSAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0
aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgZmluYWw7CiAgICAgdm9pZCBhcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykg
ZmluYWw7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5tbQppbmRleCA4MGU1YjcwMDQ3ZWZhOTFiZjdiNzI2MTc3MjYyNjVm
NTgxM2NjMzQ2Li42YzE2MTgzYmEzN2MzNGE4ODBmNzFkMTE5ZWIwOGY1NWU1YzYyNTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtNTEsNiArNTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNy
ZWF0ZQogTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpCiAg
ICAgOiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EoKQogeworICAgIEF1ZGlvU2Vzc2lvbjo6c2hh
cmVkU2Vzc2lvbigpLmFkZEludGVycnVwdGlvbk9ic2VydmVyKCp0aGlzKTsKIH0KIAogTWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKQpAQCAtNTgsNiArNTks
NyBAQCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpCiAg
ICAgaWYgKG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpCiAgICAgICAgIE1lZGlhU2Vzc2lv
bkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwog
ICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlz
KTsKKyAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5yZW1vdmVJbnRlcnJ1cHRpb25P
YnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRS
ZXN0cmljdGlvbnMoKQpAQCAtMTY2LDE5ICsxNjgsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3Vw
cAogICAgIG5vd1BsYXlpbmdTZXNzaW9uLT5zZXRQbGF5YmFja1RhcmdldChXVEZNb3ZlKHBsYXli
YWNrVGFyZ2V0KSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVjZWl2ZWRJ
bnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1bWUgc2hvdWxkUmVz
dW1lKQotewotICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIGZsYWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3Vt
ZTo6WWVzID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKLQotICAgIGlmICh0eXBlID09IEludGVycnVwdGlvblR5
cGU6OkJlZ2luKQotICAgICAgICBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U3lzdGVtSW50ZXJydXB0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGVuZEludGVycnVwdGlv
bihmbGFncyk7Ci19Ci0KIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBpc1N1c3BlbmRlZFVuZGVyTG9j
aykKIHsKICAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCA0YWFiZjdkM2IwM2I3N2Q3YmVhN2Q0N2RhYzNhNzhkYzE4YTAwNmM4Li43YmU0Nzlh
ZTdlMDA2ZTExNWIyMmZjNzQ5OGQyYzVmMzJmZmZlNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNTYs
NyArMTU2LDcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQogewogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIGlmIChtX2F1ZGlv
U2Vzc2lvblByb3h5KSB7Ci0gICAgICAgIGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2Vy
KCkucmVtb3ZlUHJveHkod2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGdwdVByb2Nl
c3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkucmVtb3ZlUHJveHkoKm1fYXVkaW9TZXNzaW9uUHJv
eHkpOwogICAgICAgICBtX2F1ZGlvU2Vzc2lvblByb3h5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5k
aWYKQEAgLTI2Myw3ICsyNjMsNyBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQogewogICAgIGlmICghbV9hdWRp
b1Nlc3Npb25Qcm94eSkgewogICAgICAgICBtX2F1ZGlvU2Vzc2lvblByb3h5ID0gUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHk6OmNyZWF0ZSgqdGhpcykubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgICAg
IGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkuYWRkUHJveHkobWFrZVdlYWtQdHIo
bV9hdWRpb1Nlc3Npb25Qcm94eS5nZXQoKSkpOworICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9T
ZXNzaW9uTWFuYWdlcigpLmFkZFByb3h5KCptX2F1ZGlvU2Vzc2lvblByb3h5KTsKICAgICB9CiAg
ICAgcmV0dXJuICptX2F1ZGlvU2Vzc2lvblByb3h5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKaW5k
ZXggODY0NThhNTE4N2MxYmFkNWQzNTlhZDg0ZGMxM2Q0ODUxNDAyNDc5OC4uMWU0ZDdmODQ3OTM4
NzVmMDgxOTMyN2JhOWIxZWQ2N2VjYmNmYjBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCkBAIC03
NSwxOCArNzUsMTggQEAgdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6c2V0Q2F0ZWdvcnko
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2EKIHsKICAgICBtX2NhdGVnb3J5
ID0gY2F0ZWdvcnk7CiAgICAgbV9yb3V0ZVNoYXJpbmdQb2xpY3kgPSBwb2xpY3k7Ci0gICAgYXVk
aW9TZXNzaW9uTWFuYWdlcigpLnNldENhdGVnb3J5Rm9yUHJvY2VzcyhtX2dwdUNvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSwgY2F0ZWdvcnksIHBvbGljeSk7CisgICAgYXVkaW9TZXNz
aW9uTWFuYWdlcigpLnNldENhdGVnb3J5Rm9yUHJvY2VzcygqdGhpcywgY2F0ZWdvcnksIHBvbGlj
eSk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk6OnNldFByZWZlcnJlZEJ1ZmZl
clNpemUodWludDY0X3Qgc2l6ZSkKIHsKICAgICBtX3ByZWZlcnJlZEJ1ZmZlclNpemUgPSBzaXpl
OwotICAgIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplRm9yUHJv
Y2VzcyhtX2dwdUNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSwgc2l6ZSk7CisgICAg
YXVkaW9TZXNzaW9uTWFuYWdlcigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQcm9jZXNzKCp0
aGlzLCBzaXplKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6dHJ5VG9TZXRB
Y3RpdmUoYm9vbCBhY3RpdmUsIFNldEFjdGl2ZUNvbXBsZXRpb24mJiBjb21wbGV0aW9uKQogewot
ICAgIG1fYWN0aXZlID0gYXVkaW9TZXNzaW9uTWFuYWdlcigpLnRyeVRvU2V0QWN0aXZlRm9yUHJv
Y2VzcyhtX2dwdUNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSwgYWN0aXZlKTsKKyAg
ICBtX2FjdGl2ZSA9IGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS50cnlUb1NldEFjdGl2ZUZvclByb2Nl
c3MoKnRoaXMsIGFjdGl2ZSk7CiAgICAgY29tcGxldGlvbihtX2FjdGl2ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKaW5kZXggYjE2YjRlZjIxMWYyYTM4MzA3MDU0YzUx
MjYxYjcxNjFmYzdkMDhkYi4uN2ZiNjM1M2U5MzQ3MmZiMWE0YzI3NzdhZmMwNjFiMmI5NTU0NzNm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKKyNpbmNs
dWRlICJHUFVQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BdWRpb1Nlc3Npb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KQEAg
LTQ0LDQ2ICs0NiwzNiBAQCBzdGF0aWMgYm9vbCBjYXRlZ29yeUNhbk1peFdpdGhPdGhlcnMoQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcigpCiAgICAgOiBtX3Nlc3Np
b24oQXVkaW9TZXNzaW9uOjpjcmVhdGUoKSkKIHsKKyAgICBtX3Nlc3Npb24tPmFkZEludGVycnVw
dGlvbk9ic2VydmVyKCp0aGlzKTsKIH0KIAotUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
Ojp+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkgPSBkZWZhdWx0OwotCi12b2lkIFJl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6YWRkUHJveHkoV2Vha1B0cjxSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eT4mJiBwcm94eSkKK1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6
flJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcigpCiB7Ci0gICAgYXV0byBpZCA9IHByb3h5
LT5wcm9jZXNzSWRlbnRpZmllcigpOwotICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlk
KSk7Ci0gICAgbV9wcm94aWVzLnNldChpZCwgV1RGTW92ZShwcm94eSkpOworICAgIG1fc2Vzc2lv
bi0+cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi12b2lkIFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6cmVtb3ZlUHJveHkoY29uc3QgUHJvY2Vzc0lkZW50aWZp
ZXImIGlkKQordm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OmFkZFByb3h5KFJl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBwcm94eSkKIHsKLSAgICBBU1NFUlQobV9wcm94aWVzLmNv
bnRhaW5zKGlkKSk7Ci0gICAgbV9wcm94aWVzLnJlbW92ZShpZCk7CisgICAgQVNTRVJUKCFtX3By
b3hpZXMuY29udGFpbnMocHJveHkpKTsKKyAgICBtX3Byb3hpZXMuYWRkKHByb3h5KTsKIH0KIAot
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkqIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6
Z2V0UHJveHkoY29uc3QgUHJvY2Vzc0lkZW50aWZpZXImIGlkKQordm9pZCBSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXI6OnJlbW92ZVByb3h5KFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBw
cm94eSkKIHsKLSAgICBhdXRvIHJlc3VsdHMgPSBtX3Byb3hpZXMuZmluZChpZCk7Ci0gICAgaWYg
KHJlc3VsdHMgIT0gbV9wcm94aWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFs
dWUuZ2V0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKG1fcHJveGllcy5jb250
YWlucyhwcm94eSkpOworICAgIG1fcHJveGllcy5yZW1vdmUocHJveHkpOwogfQogCi12b2lkIFJl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKGNvbnN0
IFByb2Nlc3NJZGVudGlmaWVyJiBpZCwgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdv
cnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlcjo6c2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
JiBwcm94eSwgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnksIFJvdXRlU2hhcmlu
Z1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOwot
ICAgIGF1dG8gcHJveHkgPSBnZXRQcm94eShpZCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKHByb3h5LT5jYXRlZ29yeSgpID09IGNhdGVnb3J5ICYmIHByb3h5
LT5yb3V0ZVNoYXJpbmdQb2xpY3koKSA9PSBwb2xpY3kpCisgICAgaWYgKHByb3h5LmNhdGVnb3J5
KCkgPT0gY2F0ZWdvcnkgJiYgcHJveHkucm91dGVTaGFyaW5nUG9saWN5KCkgPT0gcG9saWN5KQog
ICAgICAgICByZXR1cm47CiAKICAgICBIYXNoQ291bnRlZFNldDxBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSwgV1RGOjpJbnRIYXNoPEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPiwgV1RGOjpT
dHJvbmdFbnVtSGFzaFRyYWl0czxBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZT4+IGNhdGVnb3J5
Q291bnRzOwogICAgIEhhc2hDb3VudGVkU2V0PFJvdXRlU2hhcmluZ1BvbGljeSwgV1RGOjpJbnRI
YXNoPFJvdXRlU2hhcmluZ1BvbGljeT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Um91dGVT
aGFyaW5nUG9saWN5Pj4gcG9saWN5Q291bnRzOwotICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6
IG1fcHJveGllcy52YWx1ZXMoKSkgewotICAgICAgICBjYXRlZ29yeUNvdW50cy5hZGQob3RoZXJQ
cm94eS0+Y2F0ZWdvcnkoKSk7Ci0gICAgICAgIHBvbGljeUNvdW50cy5hZGQob3RoZXJQcm94eS0+
cm91dGVTaGFyaW5nUG9saWN5KCkpOworICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6IG1fcHJv
eGllcykgeworICAgICAgICBjYXRlZ29yeUNvdW50cy5hZGQob3RoZXJQcm94eS5jYXRlZ29yeSgp
KTsKKyAgICAgICAgcG9saWN5Q291bnRzLmFkZChvdGhlclByb3h5LnJvdXRlU2hhcmluZ1BvbGlj
eSgpKTsKICAgICB9CiAKICAgICBpZiAoY2F0ZWdvcnlDb3VudHMuY29udGFpbnMoQXVkaW9TZXNz
aW9uOjpQbGF5QW5kUmVjb3JkKSkKQEAgLTExMywzMCArMTA1LDIzIEBAIHZvaWQgUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgUHJvY2Vz
c0lkZW50aWZpCiAgICAgbV9zZXNzaW9uLT5zZXRDYXRlZ29yeShjYXRlZ29yeSwgcG9saWN5KTsK
IH0KIAotdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnNldFByZWZlcnJlZEJ1
ZmZlclNpemVGb3JQcm9jZXNzKGNvbnN0IFByb2Nlc3NJZGVudGlmaWVyJiBpZCwgc2l6ZV90IHBy
ZWZlcnJlZEJ1ZmZlclNpemUpCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkm
IHByb3h5LCBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6ZSkKIHsKLSAgICBmb3IgKGF1dG8mIG90
aGVyUHJveHkgOiBtX3Byb3hpZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCFvdGhlclByb3h5
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChvdGhlclByb3h5LT5wcmVmZXJy
ZWRCdWZmZXJTaXplKCkgPCBwcmVmZXJyZWRCdWZmZXJTaXplKQotICAgICAgICAgICAgcHJlZmVy
cmVkQnVmZmVyU2l6ZSA9IG90aGVyUHJveHktPnByZWZlcnJlZEJ1ZmZlclNpemUoKTsKKyAgICBm
b3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAgaWYgKG90aGVyUHJv
eHkucHJlZmVycmVkQnVmZmVyU2l6ZSgpIDwgcHJlZmVycmVkQnVmZmVyU2l6ZSkKKyAgICAgICAg
ICAgIHByZWZlcnJlZEJ1ZmZlclNpemUgPSBvdGhlclByb3h5LnByZWZlcnJlZEJ1ZmZlclNpemUo
KTsKICAgICB9CiAKICAgICBtX3Nlc3Npb24tPnNldFByZWZlcnJlZEJ1ZmZlclNpemUocHJlZmVy
cmVkQnVmZmVyU2l6ZSk7CiB9CiAKLWJvb2wgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
Ojp0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50aWZpZXImIGlkLCBi
b29sIGFjdGl2ZSkKK2Jvb2wgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp0cnlUb1Nl
dEFjdGl2ZUZvclByb2Nlc3MoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5LCBib29sIGFj
dGl2ZSkKIHsKLSAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgYXV0byBw
cm94eSA9IGdldFByb3h5KGlkKTsKLSAgICBpZiAoIXByb3h5KQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhwcm94eSkpOwogCiAgICAgc2l6ZV90
IGFjdGl2ZVByb3h5Q291bnQgeyAwIH07Ci0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9w
cm94aWVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghb3RoZXJQcm94eSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAob3RoZXJQcm94eS0+aXNBY3RpdmUoKSkKKyAgICBmb3Ig
KGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAgICAgaWYgKG90aGVyUHJveHku
aXNBY3RpdmUoKSkKICAgICAgICAgICAgICsrYWN0aXZlUHJveHlDb3VudDsKICAgICB9CiAKQEAg
LTE2MiwyMyArMTQ3LDIxIEBAIGJvb2wgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp0
cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50CiAgICAgLy8gSWYgdGhp
cyBwcm94eSBpcyBBbWJpZW50LCBhbmQgdGhlIHNlc3Npb24gaXMgYWxyZWFkeSBhY3RpdmUsIHRo
aXMKICAgICAvLyBwcm94eSB3aWxsIG1peCB3aXRoIHRoZSBhY3RpdmUgcHJveGllcy4gTm8tb3As
IGFuZCByZXR1cm4gYWN0aXZhdGlvbgogICAgIC8vIHdhcyBzdWNlc3NmdWwuCi0gICAgaWYgKGNh
dGVnb3J5Q2FuTWl4V2l0aE90aGVycyhwcm94eS0+Y2F0ZWdvcnkoKSkpCisgICAgaWYgKGNhdGVn
b3J5Q2FuTWl4V2l0aE90aGVycyhwcm94eS5jYXRlZ29yeSgpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE90aGVyd2lzZSwgdGhpcyBw
cm94eSB3YW50cyB0byBiZWNvbWUgYWN0aXZlLCBidXQgdGhlcmUgYXJlIG90aGVyCiAgICAgLy8g
cHJveGllcyB3aG8gYXJlIGFscmVhZHkgYWN0aXZlLiBXYWxrIG92ZXIgdGhlIHByb3hpZXMsIGFu
ZCBpbnRlcnJ1cHQKLSAgICAvLyB0aG9zZSBwcm94aWVzIHdob3NlIGNhdGVvZ3JpZXMgaW5kaWNh
dGUgdGhleSBjYW5ub3QgbWl4IHdpdGggb3RoZXJzLgotICAgIGZvciAoYXV0byYgb3RoZXJQcm94
eSA6IG1fcHJveGllcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoIW90aGVyUHJveHkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFvdGhlclByb3h5LT5pc0FjdGl2ZSgpKQor
ICAgIC8vIHRob3NlIHByb3hpZXMgd2hvc2UgY2F0ZWdvcmllcyBpbmRpY2F0ZSB0aGV5IGNhbm5v
dCBtaXggd2l0aCBvdGhlcnMuCisgICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVz
KSB7CisgICAgICAgIGlmICghb3RoZXJQcm94eS5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhvdGhlclByb3h5
LT5jYXRlZ29yeSgpKSkKKyAgICAgICAgaWYgKGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhvdGhl
clByb3h5LmNhdGVnb3J5KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgb3Ro
ZXJQcm94eS0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVw
dGlvblR5cGU6OlN5c3RlbUludGVycnVwdGlvbik7CisgICAgICAgIG90aGVyUHJveHkuYmVnaW5J
bnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGU6OlN5c3Rl
bUludGVycnVwdGlvbik7CiAgICAgfQogI2VuZGlmCiAKQEAgLTE4Niw2ICsxNjksMjIgQEAgYm9v
bCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9yUHJvY2Vz
cyhjb25zdCBQcm9jZXNzSWRlbnQKIAogfQogCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
TWFuYWdlcjo6YmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBmb3IgKGF1dG8mIHByb3h5IDogbV9w
cm94aWVzKSB7CisgICAgICAgIGlmIChwcm94eS5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgcHJv
eHkuYmVnaW5JbnRlcnJ1cHRpb24odHlwZSk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5TWFuYWdlcjo6ZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBmb3IgKGF1
dG8mIHByb3h5IDogbV9wcm94aWVzKSB7CisgICAgICAgIGlmIChwcm94eS5pc0FjdGl2ZSgpKQor
ICAgICAgICAgICAgcHJveHkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAgICB9Cit9CisKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmgKaW5kZXggYjAwNDU1NzEyZjVh
ODYwMTk5OTMyMzc1NzNlMzljMjg0YzhmNmMyMy4uMGQ5YTBlMzFkYmVlYTc1OWQ0ODFkMDQ3Nzlk
NmRhNzRlMWFmY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuaApAQCAtMjksMzIg
KzI5LDM2IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEdQVVByb2Nlc3M7CiBjbGFzcyBSZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eTsKIAogY2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyCi0gICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyPiB7CisgICAgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpJbnRlcnJ1cHRp
b25PYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCk7CiAgICAgflJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlcigpOwogCi0gICAgdm9pZCBhZGRQcm94eShXZWFrUHRyPFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5PiYmKTsKLSAgICB2b2lkIHJlbW92ZVByb3h5KGNvbnN0IFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyJik7Ci0gICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkqIGdldFByb3h5
KGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRQcm94eShS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHkmKTsKIAotICAgIHZvaWQgc2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKGNvbnN0
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiwgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRl
Z29yeVR5cGUsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSk7Ci0gICAgdm9pZCBzZXRQcmVm
ZXJyZWRCdWZmZXJTaXplRm9yUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciYsIHNpemVfdCk7CisgICAgdm9pZCBzZXRDYXRlZ29yeUZvclByb2Nlc3MoUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHkmLCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgV2ViQ29y
ZTo6Um91dGVTaGFyaW5nUG9saWN5KTsKKyAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemVG
b3JQcm9jZXNzKFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Jiwgc2l6ZV90KTsKIAotICAgIGJvb2wg
dHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
JiwgYm9vbCk7CisgICAgYm9vbCB0cnlUb1NldEFjdGl2ZUZvclByb2Nlc3MoUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHkmLCBib29sKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbiYg
c2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogCiBwcml2YXRlOgorICAgIHZv
aWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgZW5kQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRp
b25GbGFncykgZmluYWw7CisKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9TZXNzaW9uPiBt
X3Nlc3Npb247Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgV2Vha1B0
cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eT4+IG1fcHJveGllczsKKyAgICBXZWFrSGFzaFNldDxS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eT4gbV9wcm94aWVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAppbmRleCA2ZTYwYjQ0ZWUzZDFiYjY1M2RjY2IxODM5
MWY1ZGUzOGUzYTNkOTQ3Li4wMmUyZmM2MjUwY2FhMWZiN2E1ZjNhMGE0MzMzOTc1ZmViOTc1NGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcApAQCAtNzQsMTEgKzc0
LDYgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6cHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQogICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVk
SGVscGVyKCkucHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwaWQpOwogfQogCi12b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpyZWNlaXZlZEludGVycnVwdGlvbihJbnRl
cnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0gICAgbV9n
cHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OlJlY2VpdmVkSW50ZXJydXB0aW9uKHR5cGUsIHNob3VsZFJlc3VtZSksIHsgfSk7
Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQog
ewogICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoc3VzcGVu
ZGVkVW5kZXJMb2NrKSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaApp
bmRleCA0YWI1MGYwYjA5NmU4OGViZmZmNzg2NGE4NTM5N2RhMzIwZjIxMWFiLi42ZTMxOWYwMWFh
YmNiNDY0OGU4NWNhYjdlYTcxN2ZiOWE1MWQxYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5oCkBAIC01Miw3ICs1Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm92aWRl
UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCk7CiAKICAgICAvLyBNZWRpYVNlc3Npb25IZWxw
ZXJDbGllbnQKLSAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUs
IFNob3VsZFJlc3VtZSkgZmluYWw7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7CiAgICAgdm9pZCBhcHBs
aWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlci5jcHAKaW5kZXggZmVmNGQ3NWYyOTgwODAzNGYxYTQ5Y2JjOWE1YzI5ZDU1MTkx
ODU5ZC4uNmE5OGVmOGY1NjQzNGI3YTNmZTAzN2Q2NzhmYWFkM2FmNjYyOTkxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC03NiwxMiArNzYsNiBAQCB2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChp
bnQgcGlkKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwaWQpLCB7IH0p
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVjZWl2ZWRJbnRlcnJ1cHRp
b24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQotewot
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQucmVjZWl2
ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRV
bmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQogewogICAgIGZvciAoYXV0byYgY2xpZW50IDog
bV9jbGllbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAppbmRleCBjZDBmMDk4
ZDg0ZTc3ODI4MGU1YzJmNDQ0YWQ1YzBkZDEwYmNhODY2Li4zM2I2NmZlNjkyZTMxZjA1MGFjYWNj
OWRjMjZhMTE0ZDViNjE4MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApA
QCAtNDQsMTAgKzQ0LDggQEAgcHVibGljOgogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpOwogCiAgICAgdXNpbmcgSGFzQXZhaWxhYmxlVGFyZ2V0cyA9IFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6SGFzQXZhaWxhYmxlVGFyZ2V0czsKLSAgICB1c2luZyBJbnRlcnJ1
cHRpb25UeXBlID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRp
b25UeXBlOwogICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0Owog
ICAgIHVzaW5nIFNob3VsZFBhdXNlID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
OjpTaG91bGRQYXVzZTsKLSAgICB1c2luZyBTaG91bGRSZXN1bWUgPSBXZWJDb3JlOjpNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZTsKICAgICB1c2luZyBTdXBwb3J0c0FpclBs
YXlWaWRlbyA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VwcG9ydHNBaXJQ
bGF5VmlkZW87CiAgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CiAKQEAgLTYxLDcgKzU5LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50
KSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzCi0gICAgdm9pZCByZWNlaXZlZEludGVycnVwdGlv
bihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpOwogICAgIHZvaWQgYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7CiAgICAgdm9pZCBhcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBw
bGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgppbmRleCA4ZTNjNTdjZGY5NjM1OWM4ZjM3OGI1OTEw
NDY3YTgyNzFjODFkZDE3Li45YjdkNWNkYTg4MzIyYzIyNjIwOTQ5OGIzOTdkMDAwNzZlYTFiYmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmlu
CkBAIC0yNCw3ICsyNCw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgTm90UmVm
Q291bnRlZCB7Ci0gICAgUmVjZWl2ZWRJbnRlcnJ1cHRpb24oZW51bTpib29sIFdlYktpdDo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIGVudW06Ym9vbCBX
ZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U2hvdWxkUmVzdW1lIHNob3VsZFJlc3Vt
ZSkKICAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoZW51bTpib29sIFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5k
ZXJMb2NrKQogICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGVudW06Ym9vbCBXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRl
ZFVuZGVyTG9jaykKICAgICBBcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393367</attachid>
            <date>2020-03-12 06:19:32 -0700</date>
            <delta_ts>2020-03-12 07:05:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208714-20200312141931.patch</filename>
            <type>text/plain</type>
            <size>37431</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMxMTY1YTczOWE0YmMz
MTE0MDViNWNhYWFkNjIxZmY5NDM2MjNkOC4uZTE0MDQ2MjYyNzg5N2FjMjI3MzVjNjUxMDQxYmJl
MmZkOWFiZmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTEyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lv
biBpbnRlcnJ1cHRpb24gbGlzdGVuZXIgY29kZSB0byBBdWRpb1Nlc3Npb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBNb3ZlIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1
cHRpb24gZGV0ZWN0aW9uIGNvZGUgZnJvbSBNZWRpYVNlc3Npb25NYW5hZ2VySU9TIGhlbHBlciB0
byBBdWRpb1Nlc3Npb25JT1MuCisgICAgICAgIEFkZCBpbnRlcnJ1cHRpb24gb2JzZXJ2ZXIgY2Fw
YWJpbGl0aWVzIHRvIEF1ZGlvU2Vzc2lvbiBhbmQgbWFrZSBNZWRpYVNlc3Npb25NYW5hZ2VySU9T
IGFuIG9ic2VydmVyIG9mIGl0LgorICAgICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW06CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGluaXRX
aXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVy
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgY2xl
YXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBp
bnRlcnJ1cHRpb246XSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25Qcml2YXRlOjpB
dWRpb1Nlc3Npb25Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZh
dGU6On5BdWRpb1Nlc3Npb25Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGlu
aXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RElmTmVjZXNzYXJ5KToKKwogMjAyMC0wMy0xMiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vIGxvbmdlciB1c2VkIGNvZGUgaW4gTGliV2ViUlRD
TWVkaWFFbmRwb2ludCB0byBoYW5kbGUgcmVtb3RlIHN0cmVhbXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWQ2Mjc5
ZDdiODQxZjc1NjliNzgwNjJiNTQ1YzMxNzY0Y2E3NTBhOS4uMTYwNGY0YzVhOWE4MzZmZDlkZjFj
ZDRlMThkOTQ3MzUyOTZjNGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0wMy0x
MiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBBdWRp
b1Nlc3Npb24gaW50ZXJydXB0aW9uIGxpc3RlbmVyIGNvZGUgdG8gQXVkaW9TZXNzaW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgTWFrZSBSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXIgYW4gb2JzZXJ2ZXIgZm9yIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRp
b25zLgorICAgICAgICBXaGVuIGJlaW5nIGludGVycnVwdGVkLCBub3RpZnkgYWxsIFdlYlByb2Nl
c3NlcyBhbmQgdHJpZ2dlciBiZWdpbi9lbmQgaW50ZXJydXB0aW9uIG1lY2hhbmlzbXMuCisgICAg
ICAgIFdlIG9ubHkgc2VuZCBpbnRlcnJ1cHRpb24gdG8gc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZl
IGluIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci4KKyAgICAgICAgTWlub3IgcmVmYWN0
b3J0aW5nIHRvIG1vdmUgbWFuYWdlciBwcm94aWVzIGZyb20gYSBtYXAgdG8gYSB3ZWFrIGhhc2gg
c2V0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Np
b25Qcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRD
YXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRQ
cmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9u
UHJveHk6OnRyeVRvU2V0QWN0aXZlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyOjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnNldENhdGVnb3J5Rm9yUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9yUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6YmVnaW5BdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXI6OmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0xMSAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVMb2FkZXIgc2hvdWxk
IG93biBpdHMgRnJhbWVMb2FkZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGYzNWZlYWJmZTk2NzEyMDhkNGEzMGI4NjI3OTBi
NTEzY2JlZWU3OWEuLjRkMmFjMjYxODU3M2I2NmFiNjM3NDczOTgyYTFiMzBmYWY5ZjZlNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAt
NjMsNiArNjMsMjQgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0
aXZlKQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCit2
b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2Jz
ZXJ2ZXImKQoreworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2Jz
ZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImKQoreworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6
YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUp
Cit7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKQoreworfQorI2VuZGlmCisKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmgKaW5kZXggZmE0MjEyZmQwNTlhY2E2NGFjNmNkNjk3OTEyMzRmOWEyNjYzY2FmOS4uY2Y5
YTc0NGM3ZGM1YTJkMGQ5NGY2NDVhYTYxNzY1YTk3ODgzNDdlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAj
aWYgVVNFKEFVRElPX1NFU1NJT04pCiAKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
OTMsNiArOTQsMTkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11
dGVkU3RhdGVPYnNlcnZlciopOwogICAgIHZvaWQgcmVtb3ZlTXV0ZWRTdGF0ZU9ic2VydmVyKE11
dGVkU3RhdGVPYnNlcnZlciopOwogCisgICAgY2xhc3MgSW50ZXJydXB0aW9uT2JzZXJ2ZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50ZXJydXB0aW9uT2JzZXJ2ZXI+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgfkludGVycnVwdGlvbk9ic2VydmVyKCkgPSBkZWZhdWx0OworCisg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIEludGVycnVwdGlvblR5cGUgYW5kIEVuZElu
dGVycnVwdGlvbkZsYWdzIGluIHRoaXMgaW50ZXJmYWNlLgorICAgICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVy
cnVwdGlvblR5cGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVuZEF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpID0g
MDsKKyAgICB9OworICAgIHZvaWQgYWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9u
T2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVw
dGlvbk9ic2VydmVyJik7CisgICAgdm9pZCBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSk7CisgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKTsKKwogICAgIHZpcnR1YWwg
Ym9vbCBpc011dGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU11dGVkU3RhdGVD
aGFuZ2UoKTsKIApAQCAtMTA2LDYgKzEyMCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb1Nlc3Npb25Qcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgSGFzaFNldDxNdXRl
ZFN0YXRlT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIFdlYWtIYXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBtX2ludGVycnVwdGlvbk9ic2Vy
dmVyczsKKyNlbmRpZgogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OyAvLyBVc2VkIG9ubHkg
Zm9yIHRlc3RpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRleCA4M2QyNDAwYTFkMGFhNjM4OWMzZGY4OTM2
NzEwYTM1ODlhNDQ1ODg4Li44ZDlkNDllODQ4NjY3YzZiYzU5MGViMzgzOWZhMWIyMmE1YjdhNmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0KQEAgLTMyLDExICszMiw3MSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
QXVkaW9TZXNzaW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitA
aW50ZXJmYWNlIFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIDogTlNPYmplY3QgeworICAg
IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbiogX2NhbGxiYWNrOworfQorCistIChpZClpbml0V2l0aENh
bGxiYWNrOihXZWJDb3JlOjpBdWRpb1Nlc3Npb24qKWNhbGxiYWNrOworLSAodm9pZCljbGVhckNh
bGxiYWNrOworLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxw
ZXIKKworLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooV2ViQ29yZTo6QXVkaW9TZXNzaW9uKiljYWxs
YmFjaworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlmaWNhdGlvbkNl
bnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAg
IFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0aW9u
OikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BB
TDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBbc3VwZXIgZGVh
bGxvY107Cit9CisKKy0gKHZvaWQpY2xlYXJDYWxsYmFjaworeworICAgIF9jYWxsYmFjayA9IG5p
bDsKK30KKworLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIE5TVUlu
dGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworICAg
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFn
cyA9IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAgaWYgKHR5
cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0
aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRp
b25LZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bk9wdGlvblNob3VsZFJlc3VtZSkKKyAgICAgICAgZmxhZ3MgPSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlz
cGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwg
dHlwZSwgZmxhZ3NdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIGNhbGxiYWNrID0gcHJvdGVj
dGVkU2VsZi0+X2NhbGxiYWNrOworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9u
VHlwZUJlZ2FuKQorICAgICAgICAgICAgY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjYWxsYmFjay0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAgICB9
KTsKK30KK0BlbmQKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxPR19ESVNBQkxFRApA
QCAtNjEsMTQgKzEyMSwyNSBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlv
U2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXVkaW9TZXNz
aW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKKyAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2
YXRlKEF1ZGlvU2Vzc2lvbiopOworICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CisKICAgICBB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CiAgICAgT1NPYmpl
Y3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxX
ZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBl
cjsKIH07CiAKLUF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9T
ZXNzaW9uKikKK0F1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9T
ZXNzaW9uKiBzZXNzaW9uKQogICAgIDogbV9jYXRlZ29yeU92ZXJyaWRlKEF1ZGlvU2Vzc2lvbjo6
Tm9uZSkKIHsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2ludGVycnVw
dGlvbk9ic2VydmVySGVscGVyID0gYWRvcHROUyhbW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVs
cGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnNlc3Npb25dKTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK0F1ZGlvU2Vzc2lvblByaXZhdGU6On5BdWRpb1Nlc3Npb25Qcml2
YXRlKCkKK3sKKyAgICBbbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBjbGVhckNhbGxiYWNr
XTsKIH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQpAQCAtMjUyLDYgKzMyMywyOCBA
QCB2b2lkIEF1ZGlvU2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7CiB9CiAKK3Zv
aWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNl
cnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMuYWRkKG9ic2Vy
dmVyKTsKK30KKwordm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVy
KEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2ludGVycnVwdGlvbk9i
c2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5J
bnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkK
K3sKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCisg
ICAgICAgIG9ic2VydmVyLmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKHR5cGUpOworfQor
Cit2b2lkIEF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLmVuZEF1ZGlvU2Vz
c2lvbkludGVycnVwdGlvbihmbGFncyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBVURJT19T
RVNTSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDYz
NzJlZDBhZWFiZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMuLjFhNzUyY2Y3NzhkZmYxZmJk
MzE5MTQzNGE4MThlYTUzOGExMjE0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTM3LDEwICsz
Nyw2IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ+CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBjbGFzcyBJbnRl
cnJ1cHRpb25UeXBlIDogYm9vbCB7IEJlZ2luLCBFbmQgfTsKLSAgICBlbnVtIGNsYXNzIFNob3Vs
ZFJlc3VtZSA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkSW50
ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgPSAwOwotCiAgICAgZW51
bSBjbGFzcyBTdXNwZW5kZWRVbmRlckxvY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZpcnR1
YWwgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1
c3BlbmRlZFVuZGVyTG9jaykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KaW5kZXggNGU5ZWYwNzRh
NWIzYmE3NWRkMjVlNjdjZDBlMmQxNzIwYWQyZWEyOC4uOTZlZGY1ZTk2Y2M2MTZiZDg3NjgxZTQ4
NWE5ZDkyODAzOGViNWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCkBAIC03OSw3ICs3OSw2IEBA
IGNsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzsKIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUyopY2FsbGJhY2s7CiAKIC0gKHZvaWQpY2xlYXJDYWxsYmFjazsK
LS0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0g
KHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwpAQCAtOTgsNyArOTcsNiBAQCBw
dWJsaWM6CiAgICAgfk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOwogCiAgICAgdm9pZCBleHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIHZvaWQgcmVjZWl2ZWRJbnRl
cnJ1cHRpb24oTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlLCBNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRV
bmRlckxvY2spOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKQEAgLTExMiwxMCArMTEwLDggQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6Okhhc0F2YWlsYWJsZVRhcmdldHM7Ci0gICAgdXNpbmcgSW50ZXJydXB0aW9u
VHlwZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZTsKICAgICB1
c2luZyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6OlBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsKICAgICB1c2luZyBTaG91bGRQYXVzZSA9
IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1c2U7Ci0gICAgdXNpbmcgU2hvdWxk
UmVzdW1lID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWU7CiAgICAgdXNp
bmcgU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1cHBv
cnRzQWlyUGxheVZpZGVvOwogICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOwogCkBAIC0yNzgsMTIgKzI3NCw2
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KE9wdGlvbmFsPGJvb2w+JiYgc3VwcG9ydHNBCiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVu
dDo6SW50ZXJydXB0aW9uVHlwZSB0eXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3Vs
ZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0eXBlLCBzaG91bGRSZXN1
bWUpOwotfQotCiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKQogewogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQpAQCAtMzMw
LDggKzMyMCw2IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZSgpCiAgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAKICAg
ICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3Rh
bmNlXV07Ci0KICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsK
ICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5h
bWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlv
bigpIG9iamVjdDpuaWxdOwpAQCAtNDQ1LDI2ICs0MzMsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQogfQogI2Vu
ZGlmIC8vICFQTEFURk9STShXQVRDSE9TKQogCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOwotICAgIHVzaW5nIFNo
b3VsZFJlc3VtZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lOwotCi0g
ICAgTlNVSW50ZWdlciB0eXBlID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JL
ZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1
ZV07Ci0gICAgSW50ZXJydXB0aW9uVHlwZSBpbnRlcnJ1cHRpb25UeXBlID0gKHR5cGUgPT0gQVZB
dWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgPyBJbnRlcnJ1cHRpb25UeXBlOjpFbmQg
OiBJbnRlcnJ1cHRpb25UeXBlOjpCZWdpbik7Ci0gICAgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3Vt
ZSA9IFNob3VsZFJlc3VtZTo6Tm87Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lv
bkhlbHBlciBpbnRlcnJ1cHRpb25dIC0gdHlwZSA9ICVpIiwgKGludCl0eXBlKTsKLQotICAgIGlm
IChpbnRlcnJ1cHRpb25UeXBlID09IEludGVycnVwdGlvblR5cGU6OkVuZCAmJiBbW1tub3RpZmlj
YXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9w
dGlvbktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0
aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQotICAgICAgICBzaG91bGRSZXN1bWUgPSBTaG91bGRSZXN1
bWU6OlllczsKLQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVh
ZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaW50ZXJydXB0aW9uVHlwZSwgc2hv
dWxkUmVzdW1lXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90
ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+cmVjZWl2ZWRJbnRl
cnJ1cHRpb24oaW50ZXJydXB0aW9uVHlwZSwgc2hvdWxkUmVzdW1lKTsKLSAgICB9KTsKLX0KLQog
LSAodm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICop
bm90aWZpY2F0aW9uCiB7CiAgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaApp
bmRleCA0ZGM4ZmYzYzEzMmFjNTU5OGIyMzljYzRkMjIzZTYxYTNkMDA0MzA0Li4wZjc3ZWJhNmQ5
NzhjNjU2YWFlMjA5YmU5MzMxOTZjZjEwNmMzODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbmNsdWRlICJB
dWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCIKICNpbmNs
dWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC00NCwxMyArNDUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TCiAgICAgOiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Ci0gICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50IHsKKyAgICAsIHB1YmxpYyBN
ZWRpYVNlc3Npb25IZWxwZXJDbGllbnQKKyAgICAsIHB1YmxpYyBBdWRpb1Nlc3Npb246OkludGVy
cnVwdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5h
Z2VyaU9TKCk7CiAKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJy
aWRlOwogICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQoKTsKIAorICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6OldlYWtWYWx1ZVR5cGU7CisgICAgdXNpbmcgTWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogCkBAIC02Miw4ICs2NywxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KCkgZmlu
YWw7CiAgICAgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiwgRGVsYXlDYWxsaW5nVXBkYXRlTm93UGxheWluZykgZmluYWw7CiAKKyAgICAvLyBBdWRpb1Nl
c3Npb246OkludGVycnVwdGlvbk9ic2VydmVyCisgICAgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKSBm
aW5hbCB7IGJlZ2luSW50ZXJydXB0aW9uKHR5cGUpOyB9CisgICAgdm9pZCBlbmRBdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdz
IGZsYWdzKSBmaW5hbCB7IGVuZEludGVycnVwdGlvbihmbGFncyk7IH0KKwogICAgIC8vIE1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudAotICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJy
dXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOwogICAgIHZvaWQgYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAg
ICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLm1tCmluZGV4IDgwZTViNzAwNDdlZmE5MWJmN2I3MjYxNzcyNjI2NWY1ODEzY2MzNDYu
LjZjMTYxODNiYTM3YzM0YTg4MGY3MWQxMTllYjA4ZjU1ZTVjNjI1OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLm1tCkBAIC01MSw2ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYSgpCiB7CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkuYWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpCkBAIC01OCw2ICs1OSw3IEBAIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICBpZiAobV9p
c01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcykKICAgICAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpz
aGFyZWRIZWxwZXIoKS5zdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgTWVkaWFT
ZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIEF1
ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKCp0
aGlzKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9u
cygpCkBAIC0xNjYsMTkgKzE2OCw2IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0
aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwCiAgICAgbm93
UGxheWluZ1Nlc3Npb24tPnNldFBsYXliYWNrVGFyZ2V0KFdURk1vdmUocGxheWJhY2tUYXJnZXQp
KTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVwdGlv
bihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0g
ICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gZmxhZ3MgPSBzaG91bGRSZXN1bWUgPT0gU2hvdWxkUmVzdW1lOjpZZXMgPyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyA6IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb0ZsYWdzOwotCi0gICAgaWYgKHR5cGUgPT0gSW50ZXJydXB0aW9uVHlwZTo6QmVnaW4p
Ci0gICAgICAgIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1J
bnRlcnJ1cHRpb24pOwotICAgIGVsc2UKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsK
LX0KLQogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewogICAg
IGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGEy
ZTkzODUyNWI0ZWIxNmE2MzYwODJmZGI3M2Q4ODVjZTgwM2Q4NTkuLmEyZTk4NGU4NTNiZWM2OWNl
OWJlZmRmOGE0NjRjNjVhMWRiZWEzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1OSw3ICsxNTksNyBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpCiB7CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgaWYgKG1fYXVkaW9TZXNzaW9uUHJv
eHkpIHsKLSAgICAgICAgZ3B1UHJvY2VzcygpLmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5yZW1vdmVQ
cm94eSh3ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgZ3B1UHJvY2VzcygpLmF1ZGlv
U2Vzc2lvbk1hbmFnZXIoKS5yZW1vdmVQcm94eSgqbV9hdWRpb1Nlc3Npb25Qcm94eSk7CiAgICAg
ICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgpAQCAtMjY4
LDcgKzI2OCw3IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU2Vzc2lvblBy
b3h5KSB7CiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eTo6Y3JlYXRlKCp0aGlzKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgZ3B1UHJvY2Vz
cygpLmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5hZGRQcm94eShtYWtlV2Vha1B0cihtX2F1ZGlvU2Vz
c2lvblByb3h5LmdldCgpKSk7CisgICAgICAgIGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5h
Z2VyKCkuYWRkUHJveHkoKm1fYXVkaW9TZXNzaW9uUHJveHkpOwogICAgIH0KICAgICByZXR1cm4g
Km1fYXVkaW9TZXNzaW9uUHJveHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAppbmRleCA4NjQ1OGE1
MTg3YzFiYWQ1ZDM1OWFkODRkYzEzZDQ4NTE0MDI0Nzk4Li4xZTRkN2Y4NDc5Mzg3NWYwODE5MzI3
YmE5YjFlZDY3ZWNiY2ZiMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKQEAgLTc1LDE4ICs3NSwx
OCBAQCB2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpzZXRDYXRlZ29yeShXZWJDb3JlOjpB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYQogewogICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29y
eTsKICAgICBtX3JvdXRlU2hhcmluZ1BvbGljeSA9IHBvbGljeTsKLSAgICBhdWRpb1Nlc3Npb25N
YW5hZ2VyKCkuc2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKG1fZ3B1Q29ubmVjdGlvbi53ZWJQcm9jZXNz
SWRlbnRpZmllcigpLCBjYXRlZ29yeSwgcG9saWN5KTsKKyAgICBhdWRpb1Nlc3Npb25NYW5hZ2Vy
KCkuc2V0Q2F0ZWdvcnlGb3JQcm9jZXNzKCp0aGlzLCBjYXRlZ29yeSwgcG9saWN5KTsKIH0KIAog
dm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSh1aW50
NjRfdCBzaXplKQogewogICAgIG1fcHJlZmVycmVkQnVmZmVyU2l6ZSA9IHNpemU7Ci0gICAgYXVk
aW9TZXNzaW9uTWFuYWdlcigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemVGb3JQcm9jZXNzKG1fZ3B1
Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKTsKKyAgICBhdWRpb1Nlc3Np
b25NYW5hZ2VyKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3MoKnRoaXMsIHNpemUp
OwogfQogCiB2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Ojp0cnlUb1NldEFjdGl2ZShib29s
IGFjdGl2ZSwgU2V0QWN0aXZlQ29tcGxldGlvbiYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9hY3Rp
dmUgPSBhdWRpb1Nlc3Npb25NYW5hZ2VyKCkudHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKG1fZ3B1
Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBhY3RpdmUpOworICAgIG1fYWN0aXZl
ID0gYXVkaW9TZXNzaW9uTWFuYWdlcigpLnRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcygqdGhpcywg
YWN0aXZlKTsKICAgICBjb21wbGV0aW9uKG1fYWN0aXZlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyLmNwcAppbmRleCBiMTZiNGVmMjExZjJhMzgzMDcwNTRjNTEyNjFiNzE2MWZj
N2QwOGRiLi43ZmI2MzUzZTkzNDcyZmIxYTRjMjc3N2FmYzA2MWIyYjk1NTQ3M2YwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKIAorI2luY2x1ZGUgIkdQVVBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlv
U2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtNDQsNDYgKzQ2
LDM2IEBAIHN0YXRpYyBib29sIGNhdGVnb3J5Q2FuTWl4V2l0aE90aGVycyhBdWRpb1Nlc3Npb246
OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSkKIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkKICAgICA6IG1fc2Vzc2lvbihBdWRpb1Nl
c3Npb246OmNyZWF0ZSgpKQogeworICAgIG1fc2Vzc2lvbi0+YWRkSW50ZXJydXB0aW9uT2JzZXJ2
ZXIoKnRoaXMpOwogfQogCi1SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6On5SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyOjphZGRQcm94eShXZWFrUHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5PiYmIHByb3h5KQorUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjp+UmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyKCkKIHsKLSAgICBhdXRvIGlkID0gcHJveHktPnByb2Nlc3NJ
ZGVudGlmaWVyKCk7Ci0gICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBt
X3Byb3hpZXMuc2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVJ
bnRlcnJ1cHRpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyOjpyZW1vdmVQcm94eShjb25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQpCit2
b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6YWRkUHJveHkoUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHkmIHByb3h5KQogewotICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQp
KTsKLSAgICBtX3Byb3hpZXMucmVtb3ZlKGlkKTsKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250
YWlucyhwcm94eSkpOworICAgIG1fcHJveGllcy5hZGQocHJveHkpOwogfQogCi1SZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eSogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpnZXRQcm94eShj
b25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQpCit2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
TWFuYWdlcjo6cmVtb3ZlUHJveHkoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5KQogewot
ICAgIGF1dG8gcmVzdWx0cyA9IG1fcHJveGllcy5maW5kKGlkKTsKLSAgICBpZiAocmVzdWx0cyAh
PSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKHByb3h5
KSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShwcm94eSk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgUHJvY2Vzc0lk
ZW50aWZpZXImIGlkLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVT
aGFyaW5nUG9saWN5IHBvbGljeSkKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
OjpzZXRDYXRlZ29yeUZvclByb2Nlc3MoUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIHByb3h5LCBB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBv
bGljeSkKIHsKLSAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgYXV0byBw
cm94eSA9IGdldFByb3h5KGlkKTsKLSAgICBpZiAoIXByb3h5KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAocHJveHktPmNhdGVnb3J5KCkgPT0gY2F0ZWdvcnkgJiYgcHJveHktPnJvdXRlU2hh
cmluZ1BvbGljeSgpID09IHBvbGljeSkKKyAgICBpZiAocHJveHkuY2F0ZWdvcnkoKSA9PSBjYXRl
Z29yeSAmJiBwcm94eS5yb3V0ZVNoYXJpbmdQb2xpY3koKSA9PSBwb2xpY3kpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEhhc2hDb3VudGVkU2V0PEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBX
VEY6OkludEhhc2g8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPj4gY2F0ZWdvcnlDb3VudHM7CiAg
ICAgSGFzaENvdW50ZWRTZXQ8Um91dGVTaGFyaW5nUG9saWN5LCBXVEY6OkludEhhc2g8Um91dGVT
aGFyaW5nUG9saWN5PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxSb3V0ZVNoYXJpbmdQb2xp
Y3k+PiBwb2xpY3lDb3VudHM7Ci0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVz
LnZhbHVlcygpKSB7Ci0gICAgICAgIGNhdGVnb3J5Q291bnRzLmFkZChvdGhlclByb3h5LT5jYXRl
Z29yeSgpKTsKLSAgICAgICAgcG9saWN5Q291bnRzLmFkZChvdGhlclByb3h5LT5yb3V0ZVNoYXJp
bmdQb2xpY3koKSk7CisgICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94aWVzKSB7Cisg
ICAgICAgIGNhdGVnb3J5Q291bnRzLmFkZChvdGhlclByb3h5LmNhdGVnb3J5KCkpOworICAgICAg
ICBwb2xpY3lDb3VudHMuYWRkKG90aGVyUHJveHkucm91dGVTaGFyaW5nUG9saWN5KCkpOwogICAg
IH0KIAogICAgIGlmIChjYXRlZ29yeUNvdW50cy5jb250YWlucyhBdWRpb1Nlc3Npb246OlBsYXlB
bmRSZWNvcmQpKQpAQCAtMTEzLDMwICsxMDUsMjMgQEAgdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXI6OnNldENhdGVnb3J5Rm9yUHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnRpZmkK
ICAgICBtX3Nlc3Npb24tPnNldENhdGVnb3J5KGNhdGVnb3J5LCBwb2xpY3kpOwogfQogCi12b2lk
IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZv
clByb2Nlc3MoY29uc3QgUHJvY2Vzc0lkZW50aWZpZXImIGlkLCBzaXplX3QgcHJlZmVycmVkQnVm
ZmVyU2l6ZSkKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplRm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgcHJveHksIHNp
emVfdCBwcmVmZXJyZWRCdWZmZXJTaXplKQogewotICAgIGZvciAoYXV0byYgb3RoZXJQcm94eSA6
IG1fcHJveGllcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoIW90aGVyUHJveHkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKG90aGVyUHJveHktPnByZWZlcnJlZEJ1ZmZlclNp
emUoKSA8IHByZWZlcnJlZEJ1ZmZlclNpemUpCi0gICAgICAgICAgICBwcmVmZXJyZWRCdWZmZXJT
aXplID0gb3RoZXJQcm94eS0+cHJlZmVycmVkQnVmZmVyU2l6ZSgpOworICAgIGZvciAoYXV0byYg
b3RoZXJQcm94eSA6IG1fcHJveGllcykgeworICAgICAgICBpZiAob3RoZXJQcm94eS5wcmVmZXJy
ZWRCdWZmZXJTaXplKCkgPCBwcmVmZXJyZWRCdWZmZXJTaXplKQorICAgICAgICAgICAgcHJlZmVy
cmVkQnVmZmVyU2l6ZSA9IG90aGVyUHJveHkucHJlZmVycmVkQnVmZmVyU2l6ZSgpOwogICAgIH0K
IAogICAgIG1fc2Vzc2lvbi0+c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShwcmVmZXJyZWRCdWZmZXJT
aXplKTsKIH0KIAotYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0
QWN0aXZlRm9yUHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnRpZmllciYgaWQsIGJvb2wgYWN0aXZl
KQorYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0aXZlRm9y
UHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgcHJveHksIGJvb2wgYWN0aXZlKQogewot
ICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICBhdXRvIHByb3h5ID0gZ2V0
UHJveHkoaWQpOwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBB
U1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKHByb3h5KSk7CiAKICAgICBzaXplX3QgYWN0aXZlUHJv
eHlDb3VudCB7IDAgfTsKLSAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMudmFs
dWVzKCkpIHsKLSAgICAgICAgaWYgKCFvdGhlclByb3h5KQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChvdGhlclByb3h5LT5pc0FjdGl2ZSgpKQorICAgIGZvciAoYXV0byYgb3Ro
ZXJQcm94eSA6IG1fcHJveGllcykgeworICAgICAgICBpZiAob3RoZXJQcm94eS5pc0FjdGl2ZSgp
KQogICAgICAgICAgICAgKythY3RpdmVQcm94eUNvdW50OwogICAgIH0KIApAQCAtMTYyLDIzICsx
NDcsMjEgQEAgYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI6OnRyeVRvU2V0QWN0
aXZlRm9yUHJvY2Vzcyhjb25zdCBQcm9jZXNzSWRlbnQKICAgICAvLyBJZiB0aGlzIHByb3h5IGlz
IEFtYmllbnQsIGFuZCB0aGUgc2Vzc2lvbiBpcyBhbHJlYWR5IGFjdGl2ZSwgdGhpcwogICAgIC8v
IHByb3h5IHdpbGwgbWl4IHdpdGggdGhlIGFjdGl2ZSBwcm94aWVzLiBOby1vcCwgYW5kIHJldHVy
biBhY3RpdmF0aW9uCiAgICAgLy8gd2FzIHN1Y2Vzc2Z1bC4KLSAgICBpZiAoY2F0ZWdvcnlDYW5N
aXhXaXRoT3RoZXJzKHByb3h5LT5jYXRlZ29yeSgpKSkKKyAgICBpZiAoY2F0ZWdvcnlDYW5NaXhX
aXRoT3RoZXJzKHByb3h5LmNhdGVnb3J5KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIHByb3h5IHdhbnRz
IHRvIGJlY29tZSBhY3RpdmUsIGJ1dCB0aGVyZSBhcmUgb3RoZXIKICAgICAvLyBwcm94aWVzIHdo
byBhcmUgYWxyZWFkeSBhY3RpdmUuIFdhbGsgb3ZlciB0aGUgcHJveGllcywgYW5kIGludGVycnVw
dAotICAgIC8vIHRob3NlIHByb3hpZXMgd2hvc2UgY2F0ZW9ncmllcyBpbmRpY2F0ZSB0aGV5IGNh
bm5vdCBtaXggd2l0aCBvdGhlcnMuCi0gICAgZm9yIChhdXRvJiBvdGhlclByb3h5IDogbV9wcm94
aWVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghb3RoZXJQcm94eSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBpZiAoIW90aGVyUHJveHktPmlzQWN0aXZlKCkpCisgICAgLy8gdGhv
c2UgcHJveGllcyB3aG9zZSBjYXRlZ29yaWVzIGluZGljYXRlIHRoZXkgY2Fubm90IG1peCB3aXRo
IG90aGVycy4KKyAgICBmb3IgKGF1dG8mIG90aGVyUHJveHkgOiBtX3Byb3hpZXMpIHsKKyAgICAg
ICAgaWYgKCFvdGhlclByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKG90aGVyUHJveHktPmNhdGVnb3J5
KCkpKQorICAgICAgICBpZiAoY2F0ZWdvcnlDYW5NaXhXaXRoT3RoZXJzKG90aGVyUHJveHkuY2F0
ZWdvcnkoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBvdGhlclByb3h5LT5i
ZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZTo6
U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICAgICAgb3RoZXJQcm94eS5iZWdpbkludGVycnVwdGlv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZTo6U3lzdGVtSW50ZXJydXB0
aW9uKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTg2LDYgKzE2OSwyMiBAQCBib29sIFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlcjo6dHJ5VG9TZXRBY3RpdmVGb3JQcm9jZXNzKGNvbnN0IFBy
b2Nlc3NJZGVudAogCiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOjpi
ZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJy
dXB0aW9uVHlwZSB0eXBlKQoreworICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hpZXMpIHsK
KyAgICAgICAgaWYgKHByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAgICBwcm94eS5iZWdpbklu
dGVycnVwdGlvbih0eXBlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyOjplbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIGZvciAoYXV0byYgcHJveHkg
OiBtX3Byb3hpZXMpIHsKKyAgICAgICAgaWYgKHByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAg
ICBwcm94eS5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworICAgIH0KK30KKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuaAppbmRleCBiMDA0NTU3MTJmNWE4NjAxOTk5MzIz
NzU3M2UzOWMyODRjOGY2YzIzLi4wZDlhMGUzMWRiZWVhNzU5ZDQ4MWQwNDc3OWQ2ZGE3NGUxYWZj
YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oCkBAIC0yOSwzMiArMjksMzYgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIKLSAgICA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+IHsK
KyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkludGVycnVwdGlvbk9ic2VydmVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIoKTsKICAgICB+UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyKCk7CiAKLSAgICB2b2lkIGFkZFByb3h5KFdlYWtQdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHk+JiYpOwotICAgIHZvaWQgcmVtb3ZlUHJveHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXImKTsKLSAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSogZ2V0UHJveHkoY29uc3QgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5Jik7CisgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eSYpOwogCi0gICAgdm9pZCBzZXRDYXRlZ29yeUZvclByb2Nlc3MoY29uc3QgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXImLCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwg
V2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5KTsKLSAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZl
clNpemVGb3JQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiwgc2l6ZV90
KTsKKyAgICB2b2lkIHNldENhdGVnb3J5Rm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eSYsIFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3kpOworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZUZvclByb2Nlc3Mo
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmLCBzaXplX3QpOwogCi0gICAgYm9vbCB0cnlUb1NldEFj
dGl2ZUZvclByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImLCBib29sKTsK
KyAgICBib29sIHRyeVRvU2V0QWN0aXZlRm9yUHJvY2VzcyhSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eSYsIGJvb2wpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6QXVkaW9TZXNzaW9uJiBzZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBiZWdpbkF1
ZGlvU2Vzc2lvbkludGVycnVwdGlvbihXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50
ZXJydXB0aW9uVHlwZSkgZmluYWw7CisgICAgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRp
b24oV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSBm
aW5hbDsKKwogICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpBdWRpb1Nlc3Npb24+IG1fc2Vzc2lvbjsK
LSAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBXZWFrUHRyPFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5Pj4gbV9wcm94aWVzOworICAgIFdlYWtIYXNoU2V0PFJlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5PiBtX3Byb3hpZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCmluZGV4IDZlNjBiNDRlZTNkMWJiNjUzZGNjYjE4MzkxZjVkZTM4ZTNh
M2Q5NDcuLjAyZTJmYzYyNTBjYWExZmI3YTVmM2EwYTQzMzM5NzVmZWI5NzU0YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBAIC03NCwxMSArNzQsNiBAQCB2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElEKGludCBwaWQpCiAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5w
cm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHk6OnJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5
cGUgdHlwZSwgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKLXsKLSAgICBtX2dwdUNvbm5lY3Rp
b24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6
UmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKSwgeyB9KTsKLX0KLQogdm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCiB7CiAgICAgbV9n
cHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChzdXNwZW5kZWRVbmRlckxv
Y2spLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCmluZGV4IDRhYjUw
ZjBiMDk2ZTg4ZWJmZmY3ODY0YTg1Mzk3ZGEzMjBmMjExYWIuLjZlMzE5ZjAxYWFiY2I0NjQ4ZTg1
Y2FiN2VhNzE3ZmI5YTUxZDFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
LmgKQEAgLTUyLDcgKzUyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5n
QXBwbGljYXRpb25QSUQoaW50KTsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudAot
ICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVz
dW1lKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNw
ZW5kZWRVbmRlckxvY2spIGZpbmFsOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2ls
bEJlY29tZUluYWN0aXZlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
LmNwcAppbmRleCBmZWY0ZDc1ZjI5ODA4MDM0ZjFhNDljYmM5YTVjMjlkNTUxOTE4NTlkLi42YTk4
ZWY4ZjU2NDM0YjdhM2ZlMDM3ZDY3OGZhYWQzYWY2NjI5OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5jcHAKQEAgLTc2LDEyICs3Niw2IEBAIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5OjpQcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCksIHsgfSk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1
cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCi17Ci0gICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVw
dGlvbih0eXBlLCBzaG91bGRSZXN1bWUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBz
dXNwZW5kZWRVbmRlckxvY2spCiB7CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCmluZGV4IGNkMGYwOThkODRlNzc4Mjgw
ZTVjMmY0NDRhZDVjMGRkMTBiY2E4NjYuLjMzYjY2ZmU2OTJlMzFmMDUwYWNhY2M5ZGMyNmExMTRk
NWI2MTgyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCkBAIC00NCwxMCAr
NDQsOCBAQCBwdWJsaWM6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCk7CiAKICAg
ICB1c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOwotICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUg
PSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CiAg
ICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gV2ViQ29yZTo6TWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CiAgICAgdXNpbmcg
U2hvdWxkUGF1c2UgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBh
dXNlOwotICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudDo6U2hvdWxkUmVzdW1lOwogICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0g
V2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsK
ICAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxw
ZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKIApAQCAtNjEsNyArNTksNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpIGZpbmFsOwog
CiAgICAgLy8gTWVzc2FnZXMKLSAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVw
dGlvblR5cGUsIFNob3VsZFJlc3VtZSk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldp
bGxCZWNvbWVJbmFjdGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLm1lc3NhZ2VzLmluCmluZGV4IDhlM2M1N2NkZjk2MzU5YzhmMzc4YjU5MTA0NjdhODI3MWM4
MWRkMTcuLjliN2Q1Y2RhODgzMjJjMjI2MjA5NDk4YjM5N2QwMDA3NmVhMWJiYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcg
KzI0LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBOb3RSZWZDb3VudGVkIHsK
LSAgICBSZWNlaXZlZEludGVycnVwdGlvbihlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OkludGVycnVwdGlvblR5cGUgdHlwZSwgZW51bTpib29sIFdlYktpdDo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQogICAgIEFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OlN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCiAg
ICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoZW51bTpib29sIFdlYktpdDo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2Nr
KQogICAgIEFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>