<?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>206152</bug_id>
          
          <creation_ts>2020-01-12 10:37:35 -0800</creation_ts>
          <short_desc>Expose audio tracks for media files in the GPUProcess</short_desc>
          <delta_ts>2020-01-14 08:57:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206237</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605665</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-12 10:37:35 -0800</bug_when>
    <thetext>Expose audio tracks for media files in the GPUProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605666</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-12 10:37:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/58513227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605671</commentid>
    <comment_count>2</comment_count>
      <attachid>387477</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-12 10:52:50 -0800</bug_when>
    <thetext>Created attachment 387477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605682</commentid>
    <comment_count>3</comment_count>
      <attachid>387484</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-12 11:43:04 -0800</bug_when>
    <thetext>Created attachment 387484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605759</commentid>
    <comment_count>4</comment_count>
      <attachid>387484</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 01:09:43 -0800</bug_when>
    <thetext>Comment on attachment 387484
Patch

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

&gt; Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp:36
&gt; +#include &lt;wtf/NeverDestroyed.h&gt;

Last two headers might not be needed.

&gt; Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.h:34
&gt; +#include &lt;wtf/ThreadSafeRefCounted.h&gt;

Probably not needed since it is included in TrackPrivateBase.h

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:367
&gt; +void RemoteMediaPlayerProxy::mediaPlayerDidAddAudioTrack(WebCore::AudioTrackPrivate&amp; track)

#if ENABLE(VIDEO_TRACK)?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:375
&gt; +    m_audioTracks.take(&amp;track);

s/take/remove

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:383
&gt; +            break;

return?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:385
&gt; +        ASSERT_NOT_REACHED();

Moved to the end of the method?

&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:31
&gt; +#include &quot;TrackPrivateRemoteConfiguration.h&quot;

Can probably be removed.

&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:38
&gt; +class AudioTrackPrivateRemote : public WebCore::AudioTrackPrivate {

final?

&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:41
&gt; +    static RefPtr&lt;AudioTrackPrivateRemote&gt; create(MediaPlayerPrivateRemote&amp; player, TrackPrivateRemoteIdentifier idendifier, TrackPrivateRemoteConfiguration&amp;&amp; configuration)

s/RefPtr/Ref

&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:53
&gt; +    int trackIndex() const final { return m_trackIndex; }

Do we need these to be public or can we make them private?

&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:55
&gt; +protected:

private?

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:392
&gt; +    m_audioTracks.add(identifier, track);

We should WTFMove(track) to reduce refcount churn.
We can use the iterator value for the addAudioTrack call.

I am wondering whether we should protect from m_audioTracks to already have identifier as a key. If so, m_player will then have a stale pointer.
Maybe we could use ensure.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:401
&gt; +    if (auto track = m_audioTracks.get(id)) {

s/auto/auto&amp;/

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:323
&gt; +    HashMap&lt;TrackPrivateRemoteIdentifier, RefPtr&lt;AudioTrackPrivateRemote&gt;&gt; m_audioTracks;

s/RefPtr/Ref.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:306
&gt; +void RemoteMediaPlayerManager::addRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&amp;&amp; configuration)

Given the amount of IPC method dedicated to player, we could make MediaPlayerPrivateRemote a message receiver, the key being its identifier.
Then, all this binding code would be removed.
Best be done as a follow-up though.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:308
&gt; +    if (auto player = m_players.get(playerID))

auto is probably refing/unrefing, might be better to use auto&amp;.

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:34
&gt;  #include &quot;SharedBufferDataReference.h&quot;

Could remove this one since code is using DataReference, not SharedBufferDataReference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605872</commentid>
    <comment_count>5</comment_count>
      <attachid>387484</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-13 08:56:54 -0800</bug_when>
    <thetext>Comment on attachment 387484
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp:36
&gt;&gt; +#include &lt;wtf/NeverDestroyed.h&gt;
&gt; 
&gt; Last two headers might not be needed.

Removed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.h:34
&gt;&gt; +#include &lt;wtf/ThreadSafeRefCounted.h&gt;
&gt; 
&gt; Probably not needed since it is included in TrackPrivateBase.h

Removed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:367
&gt;&gt; +void RemoteMediaPlayerProxy::mediaPlayerDidAddAudioTrack(WebCore::AudioTrackPrivate&amp; track)
&gt; 
&gt; #if ENABLE(VIDEO_TRACK)?

I think we&apos;re better off without the compile flag because we always support tracks. If another port decides to use the GPU process and doesn&apos;t support tracks, it can add it as needed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:375
&gt;&gt; +    m_audioTracks.take(&amp;track);
&gt; 
&gt; s/take/remove

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:383
&gt;&gt; +            break;
&gt; 
&gt; return?

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:385
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Moved to the end of the method?

Fixed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:31
&gt;&gt; +#include &quot;TrackPrivateRemoteConfiguration.h&quot;
&gt; 
&gt; Can probably be removed.

Removed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:38
&gt;&gt; +class AudioTrackPrivateRemote : public WebCore::AudioTrackPrivate {
&gt; 
&gt; final?

Added.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:41
&gt;&gt; +    static RefPtr&lt;AudioTrackPrivateRemote&gt; create(MediaPlayerPrivateRemote&amp; player, TrackPrivateRemoteIdentifier idendifier, TrackPrivateRemoteConfiguration&amp;&amp; configuration)
&gt; 
&gt; s/RefPtr/Ref

Changed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:53
&gt;&gt; +    int trackIndex() const final { return m_trackIndex; }
&gt; 
&gt; Do we need these to be public or can we make them private?

Good point, made private.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.h:55
&gt;&gt; +protected:
&gt; 
&gt; private?

Changed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:392
&gt;&gt; +    m_audioTracks.add(identifier, track);
&gt; 
&gt; We should WTFMove(track) to reduce refcount churn.
&gt; We can use the iterator value for the addAudioTrack call.
&gt; 
&gt; I am wondering whether we should protect from m_audioTracks to already have identifier as a key. If so, m_player will then have a stale pointer.
&gt; Maybe we could use ensure.

Changed to WTFMove and add from the iterator.

I changed to return without adding the track if the identifier is already in the map (It should only be possible for this to be called with the same identifier if ObjectIdentifier::generate() returns the same ID twice).

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:323
&gt;&gt; +    HashMap&lt;TrackPrivateRemoteIdentifier, RefPtr&lt;AudioTrackPrivateRemote&gt;&gt; m_audioTracks;
&gt; 
&gt; s/RefPtr/Ref.

Changed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:306
&gt;&gt; +void RemoteMediaPlayerManager::addRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&amp;&amp; configuration)
&gt; 
&gt; Given the amount of IPC method dedicated to player, we could make MediaPlayerPrivateRemote a message receiver, the key being its identifier.
&gt; Then, all this binding code would be removed.
&gt; Best be done as a follow-up though.

Good idea, I&apos;ll do that in another patch.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:308
&gt;&gt; +    if (auto player = m_players.get(playerID))
&gt; 
&gt; auto is probably refing/unrefing, might be better to use auto&amp;.

The map has WeakPtrs.

&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:34
&gt;&gt;  #include &quot;SharedBufferDataReference.h&quot;
&gt; 
&gt; Could remove this one since code is using DataReference, not SharedBufferDataReference

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605874</commentid>
    <comment_count>6</comment_count>
      <attachid>387536</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-13 08:58:21 -0800</bug_when>
    <thetext>Created attachment 387536
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605883</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 09:09:12 -0800</bug_when>
    <thetext>&gt; &gt; auto is probably refing/unrefing, might be better to use auto&amp;.
&gt; 
&gt; The map has WeakPtrs.

This probably triggers ref/unref of a RefPtr&lt;WeakPtrImpl&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605899</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-13 09:27:18 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; &gt; &gt; auto is probably refing/unrefing, might be better to use auto&amp;.
&gt; &gt; 
&gt; &gt; The map has WeakPtrs.
&gt; 
&gt; This probably triggers ref/unref of a RefPtr&lt;WeakPtrImpl&gt;.

Oops, my reply to incomplete. I also meant to say I changed &quot;auto player = ...&quot; to &quot;const auto&amp; player = ...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606053</commentid>
    <comment_count>9</comment_count>
      <attachid>387536</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 14:27:44 -0800</bug_when>
    <thetext>Comment on attachment 387536
Patch for landing

Clearing flags on attachment: 387536

Committed r254454: &lt;https://trac.webkit.org/changeset/254454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606054</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 14:27:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606417</commentid>
    <comment_count>11</comment_count>
      <attachid>387484</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-14 08:57:54 -0800</bug_when>
    <thetext>Comment on attachment 387484
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:306
&gt;&gt;&gt; +void RemoteMediaPlayerManager::addRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&amp;&amp; configuration)
&gt;&gt; 
&gt;&gt; Given the amount of IPC method dedicated to player, we could make MediaPlayerPrivateRemote a message receiver, the key being its identifier.
&gt;&gt; Then, all this binding code would be removed.
&gt;&gt; Best be done as a follow-up though.
&gt; 
&gt; Good idea, I&apos;ll do that in another patch.

I filed 206237</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387477</attachid>
            <date>2020-01-12 10:52:50 -0800</date>
            <delta_ts>2020-01-12 11:43:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206152-20200112105248.patch</filename>
            <type>text/plain</type>
            <size>64790</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFmMTU3OWNhM2E3M2Nj
YjExM2JmMzQ5NjI5NDU3MWY0NTA4ZjQzNi4uZGMzY2FmMzA3ODQ1MjAxN2E3ZGMxNTJmNDU0MDAw
ZGNlNjVkMjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBhdWRp
byB0cmFja3MgZm9yIG1lZGlhIGZpbGVzIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxNTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU4NTEzMjI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdW4tc2tpcHBlZCBleGlzdGluZyB0ZXN0cyB0aGF0
IHBhc3MgYmVjYXVzZSBvZiB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVHJh
Y2tQcml2YXRlQmFzZS5oOgorCiAyMDIwLTAxLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3NlIGZyYW1lIGluZm9ybWF0aW9uIG9u
IF9XS1Jlc291cmNlTG9hZEluZm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWY3NDE3NzA4NDNmZjVjODgxZDZiYTI0
ZDFiYmNiNjgyYjMyN2U5Mi4uZmFhYmZiYzU1NmJmNjIxMTNjNDk2YTAxYzU5MTM3YmM2ZmEzODg5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0wMS0xMiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgYXVkaW8gdHJhY2tzIGZv
ciBtZWRpYSBmaWxlcyBpbiB0aGUgR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
ODUxMzIyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6UmVtb3RlQXVkaW9UcmFja1By
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6d2ls
bFJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6ZW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmlkQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6bGFiZWxDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5OjpsYW5ndWFnZUNo
YW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjphdWRpb1RyYWNrU2V0RW5hYmxlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRp
b1RyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6YXVkaW9UcmFja1NldEVuYWJsZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6
OkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1By
aXZhdGVSZW1vdGU6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1RyYWNrUHJp
dmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkUmVtb3RlQXVkaW9UcmFjayk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVtb3RlQXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3Rl
QXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmVuZ2luZUZhaWxlZFRvTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2hhcmFjdGVyaXN0aWND
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXpl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6YWRk
UmVtb3RlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRT
dGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorCiAyMDIwLTAxLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3NlIGZyYW1lIGluZm9ybWF0aW9u
IG9uIF9XS1Jlc291cmNlTG9hZEluZm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCmluZGV4IDQ3NjkzOTM4MGRmYTZmZTIwNzU5
OGQwODM3ZWMxNjM4N2M5MWY4MGYuLjYyMWJhODZjOGRhZjI5NDdhYzI0OGU4NmYyMDUwZWFkYWQy
YmQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaApAQCAtNzYsNCArNzYsMjEgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZD4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpL
aW5kLAorICAgICAgICBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6QWx0ZXJuYXRp
dmUsCisgICAgICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kOjpEZXNjcmlwdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6Ok1haW4sCisgICAg
ICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kOjpNYWluRGVzYywKKyAgICAgICAg
V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6OlRyYW5zbGF0aW9uLAorICAgICAgICBX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6Q29tbWVudGFyeSwKKyAgICAgICAgV2Vi
Q29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6Ok5vbmUKKyAgICA+OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1YWRmMzg2Mjg0
ODVjNDc3MTNmMTRjNjJiZmQuLjcxNDRhOWQwNWNiOTQ4OGJmZDg0YWI3YTJhMjgwZjUxN2M4Mjc4
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1By
aXZhdGVCYXNlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlKCkgPSAwOwogfTsKIAotY2xhc3MgVHJhY2tQcml2YXRlQmFzZQorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgVHJhY2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRyYWNrUHJpdmF0ZUJhc2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFj
a1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQ2NDNkMjYyMTdmYTYxYWIyYzQ5MjkwZWUyNTQ3MjQ0
OGU3ODdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9U
cmFja1Byb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVtb3RlQXVkaW9U
cmFja1Byb3h5OjpSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYg
cGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAg
OiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX2lkZW50aWZpZXIoaWQpCisgICAgLCBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3RyYWNrUHJpdmF0
ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV90cmFja1ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsK
KyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OkFkZFJlbW90ZUF1ZGlvVHJhY2sobV9wbGF5ZXIuaWRlbmRpZmllcigpLCBt
X2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb24oKSksIDApOworfQorCitUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uOworCisgICAgY29uZmlndXJhdGlvbi0+aWQgPSBtX3RyYWNrUHJp
dmF0ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5s
YWJlbCgpOworICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxh
bmd1YWdlKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRl
LT50cmFja0luZGV4KCk7CisgICAgY29uZmlndXJhdGlvbi0+c3RhcnRUaW1lVmFyaWFuY2UgPSBt
X3RyYWNrUHJpdmF0ZS0+c3RhcnRUaW1lVmFyaWFuY2UoKTsKKyAgICBjb25maWd1cmF0aW9uLT5l
bmFibGVkID0gbV90cmFja1ByaXZhdGUtPmVuYWJsZWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT5r
aW5kID0gbV90cmFja1ByaXZhdGUtPmtpbmQoKTsKKworICAgIHJldHVybiBjb25maWd1cmF0aW9u
LmdldCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbkNo
YW5nZWQoKQoreworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFu
Z2VkKG1fcGxheWVyLmlkZW5kaWZpZXIoKSwgbV9pZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkp
LCAwKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OndpbGxSZW1vdmUoKQorewor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6UmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhtX3BsYXllci5pZGVuZGlmaWVyKCks
IG1faWRlbnRpZmllciksIDApOworfQorCit2b2lkIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6ZW5h
YmxlZENoYW5nZWQoYm9vbCkKK3sKKyAgICBjb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCit2
b2lkIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6aWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKQor
eworICAgIGNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9UcmFj
a1Byb3h5OjpsYWJlbENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpCit7CisgICAgY29uZmlndXJh
dGlvbkNoYW5nZWQoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6Omxhbmd1YWdl
Q2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikKK3sKKyAgICBjb25maWd1cmF0aW9uQ2hhbmdlZCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTYwMDlhNzBmNTVlMjlkYTE5NGQ5YzAyZDI2
MTM3ZGJmNjNmN2VhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb1RyYWNrUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjsKKworY2xh
c3MgUmVtb3RlQXVkaW9UcmFja1Byb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8VHJhY2tQcml2YXRlQmFzZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4K
KyAgICAsIHByaXZhdGUgV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFj
a1ByaXZhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b1RyYWNrUHJveHkocGxheWVyLCBpZCwgV1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRl
KSk7CisgICAgfQorCisgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OworCisgICAgdm9pZCBzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQor
Citwcml2YXRlOgorICAgIFJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclBy
b3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICB+UmVtb3RlQXVkaW9UcmFja1Byb3h5KCkgPSBk
ZWZhdWx0OworCisgICAgLy8gQXVkaW9UcmFja1ByaXZhdGVDbGllbnQKKyAgICB2b2lkIGVuYWJs
ZWRDaGFuZ2VkKGJvb2wpIGZpbmFsOworCisgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNsaWVudAor
ICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGxh
YmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBsYW5ndWFnZUNo
YW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZSgpIGZp
bmFsOworCisgICAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bigpOworICAgIHZvaWQgY29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKworICAgIFJlbW90ZU1lZGlh
UGxheWVyUHJveHkmIG1fcGxheWVyOworICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb247CisgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDc5MzMwOTkwYzM4ZjA2Y2I4NjBj
YzM4ZjUzMWNmMzBlMzBkMmVlZi4uMGZlNDYzNmE3NGE4MmI2NjhlOTA2NjJkNGZhZTg5MDNmZWQ4
ZjRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0zMjMsMTIgKzMyMywx
OCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRTaG91bGREaXNhYmxl
U2xlZXAoTWVkaWFQbGF5ZXJQcml2YXRlUmVtbwogICAgICAgICBwbGF5ZXItPnNldFNob3VsZERp
c2FibGVTbGVlcChkaXNhYmxlKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6c2V0UmF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIGRvdWJsZSByYXRlKQordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0
UmF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgcmF0ZSkK
IHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKICAgICAgICAgcGxh
eWVyLT5zZXRSYXRlKHJhdGUpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjphdWRpb1RyYWNrU2V0RW5hYmxlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHBsYXllcklELCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXllcklE
KSkKKyAgICAgICAgcGxheWVyLT5hdWRpb1RyYWNrU2V0RW5hYmxlZCh0cmFja0lELCBlbmFibGVk
KTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogY29uc3QgTG9nZ2VyJiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgKaW5kZXggZDM3Y2YxOGFhMzI3OTI4YjQxZjJkMGE1ZjNjODBmMzBmZjFlMWYx
ZS4uYmUyYzc0ZGQ0M2E2YzUzODc1MzQzOWU0ZDU5YjkzODJlOTE2NzRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCkBAIC0xMDksNyArMTEwLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsK
ICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNs
ZWVwKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQg
c2V0UmF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGRvdWJs
ZSk7CisgICAgdm9pZCBzZXRSYXRlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIs
IGRvdWJsZSk7CisKKyAgICB2b2lkIGF1ZGlvVHJhY2tTZXRFbmFibGVkKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wp
OwogCiAgICAgSGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4+IG1fcHJveGllczsKICAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjFlMTQyMGJh
OWMxMTA4OTJkOTg4YzU2OWFmMjBlN2VhYzc0YjliMC4uOWYyNWQxYjgyNmQzNjM5NWZmNGE4NTk0
NGVkYzRlYjdmZTFkZTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNjQsNiArNjQsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBBY2NlbGVyYXRlZFJlbmRlcmluZ1N0
YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGJvb2wgY2FuQmVBY2NlbGVyYXRlZCkKICAgICBTZXRTaG91bGREaXNhYmxlU2xlZXAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIGRpc2FibGUpCiAg
ICAgU2V0UmF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGRvdWJsZSByYXRlKQorCisgICAgQXVkaW9UcmFja1NldEVuYWJsZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklELCBXZWJLaXQ6OlRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgYm9vbCBlbmFibGVkKQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcAppbmRleCBhMTQxN2EyOGE2NTBiMGQyZmUxYmM1Y2EzMmNkYmNkMGMwYjlm
NTE3Li5jYWQ0MTE1MTlkZWY1YmNkZmRiMTRhMDJkOWI5ZWRiZjNkZmUzNTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCkBAIC0zNjQsNiArMzY0LDI4IEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKCkKICAgICByZXR1cm4gbV9y
ZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZSYgdHJhY2spCit7CisgICAgbV9hdWRpb1RyYWNrcy5zZXQoJnRyYWNrLCBSZW1vdGVBdWRpb1Ry
YWNrUHJveHk6OmNyZWF0ZSgqdGhpcywgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCksIHRyYWNrKSk7Cit9CisK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1Ry
YWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaykKK3sKKyAgICBBU1NFUlQobV9h
dWRpb1RyYWNrcy5jb250YWlucygmdHJhY2spKTsKKyAgICBtX2F1ZGlvVHJhY2tzLnRha2UoJnRy
YWNrKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdWRpb1RyYWNrU2V0RW5h
YmxlZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcy52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAodHJhY2stPmlkZW50aWZpZXIoKSA9PSB0cmFja0lEKSB7CisgICAgICAgICAgICB0
cmFjay0+c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogLy8gRklYTUU6IFVu
aW1wbGVtZW50ZWQKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZXNv
dXJjZU5vdFN1cHBvcnRlZCgpCiB7CkBAIC00OTIsMTEgKzUxNCw2IEBAIGJvb2wgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIEF0b21T
dHJpbmcqKSBjCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi12b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrUHJpdmF0
ZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRl
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNTA3LDExICs1MjQsNiBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhWaWRlb1Ry
YWNrUHJpdmF0ZSYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFja1By
aXZhdGUmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZj
YzM2NjRjMjQ0ZTMyOGQ2ZGNhZGZhZGMxOTg4MmUzMjYzZmVjMmUuLjA5YjNjNzhhYzBiNGUwZjQ0
ODA0NGFjOTJiYjUxN2U2MTEzNjU0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDMsNiArNDMsMTAg
QEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGU7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKQEAg
LTU1LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
JiYpOwogICAgIH5SZW1vdGVNZWRpYVBsYXllclByb3h5KCk7CiAKKyAgICBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW5kaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CkBAIC04OSw2ICs5NCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29sKTsKICAgICB2b2lkIHNldFJhdGUo
ZG91YmxlKTsKIAorICAgIHZvaWQgYXVkaW9UcmFja1NldEVuYWJsZWQoVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgYm9vbCk7CisKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlPiByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMpOwogICAgIHZvaWQg
cmVtb3ZlUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCkBAIC0xMDcs
NiArMTE0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lZGlhUGxheWVyU2Vla2FibGVUaW1lUmFu
Z2VzQ2hhbmdlZCgpIGZpbmFsOwogICAgIGJvb2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFj
Y2VsZXJhdGVkKCkgZmluYWw7CiAKKyAgICB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFj
ayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5
ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJikgZmluYWw7
CisKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQKICAgICB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VO
b3RTdXBwb3J0ZWQoKSBmaW5hbDsKICAgICB2b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoKSBm
aW5hbDsKQEAgLTE0NywxMCArMTU3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1lZGlhUGxheWVy
U2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgU3RyaW5n
JiBtZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
JikgZmluYWw7CiAgICAgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJikgZmluYWw7CiAgICAgdm9pZCBtZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2soV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmKSBmaW5hbDsKLSAgICB2b2lk
IG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZSYpIGZpbmFsOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpIGZpbmFsOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJE
aWRSZW1vdmVWaWRlb1RyYWNrKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlJikgZmluYWw7CiAK
QEAgLTE4Niw2ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVy
TG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1f
Y29uZmlndXJhdGlvbi5sb2dJZGVudGlmaWVyKTsgfQogI2VuZGlmCiAKKyAgICBIYXNoTWFwPEF1
ZGlvVHJhY2tQcml2YXRlKiwgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4+IG1fYXVkaW9UcmFj
a3M7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOwogICAgIFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjVjNWRmZTYwYzlmMDc3YjkxZjhlNjFjZDU1MTg0NjFh
ZGIwZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgVHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CisgICAgQXRvbVN0cmluZyBpZDsKKyAgICBB
dG9tU3RyaW5nIGxhYmVsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CisgICAgTWVkaWFUaW1l
IHN0YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6ZXJvVGltZSgpIH07CisgICAgaW50IHRy
YWNrSW5kZXg7CisgICAgYm9vbCBlbmFibGVkOworICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpLaW5kIGtpbmQgeyBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6Tm9uZSB9
OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBpZDsKKyAgICAgICAg
ZW5jb2RlciA8PCBsYWJlbDsKKyAgICAgICAgZW5jb2RlciA8PCBsYW5ndWFnZTsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGFydFRpbWVWYXJpYW5jZTsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lu
ZGV4OworICAgICAgICBlbmNvZGVyIDw8IGVuYWJsZWQ7CisgICAgICAgIGVuY29kZXIuZW5jb2Rl
RW51bShraW5kKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZDsK
KyAgICAgICAgZGVjb2RlciA+PiBpZDsKKyAgICAgICAgaWYgKCFpZCkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7
CisgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+
IGxhbmd1YWdlOworICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlOworICAgICAgICBpZiAoIWxh
bmd1YWdlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZhcmlhbmNlOworICAgICAgICBkZWNvZGVyID4+IHN0
YXJ0VGltZVZhcmlhbmNlOworICAgICAgICBpZiAoIXN0YXJ0VGltZVZhcmlhbmNlKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxpbnQ+IHRyYWNr
SW5kZXg7CisgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJbmRleDsKKyAgICAgICAgaWYgKCF0cmFj
a0luZGV4KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxib29sPiBlbmFibGVkOworICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgICAg
IGlmICghZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ+IGtpbmQ7CisgICAg
ICAgIGRlY29kZXIgPj4ga2luZDsKKyAgICAgICAgaWYgKCFraW5kKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1v
dmUoKmlkKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKKyAgICAgICAgICAgIFdURk1v
dmUoKmxhbmd1YWdlKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnN0YXJ0VGltZVZhcmlhbmNlKSwK
KyAgICAgICAgICAgICp0cmFja0luZGV4LAorICAgICAgICAgICAgKmVuYWJsZWQsCisgICAgICAg
ICAgICAqa2luZCwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1RyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlhNTdj
NjIwMDIxYjRlZWZiMzg5ZDUwYmNjOTk1NTUwNzg1ZWI5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggY2VmZjNjMjYwNWExZjg1ZDVkOTkwYTY0YzNmMjgyMDNkMTE1MjMyMC4uN2ZkMzNl
MGVmOWQyZDc2ZjIyNjQwYWIyODQwYTNiZjMzODEzMmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjcsNiArMjI3LDcgQEAgZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFy
ZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyJywKKyAgICAg
ICAgJ1dlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OlRyYW5zYWN0aW9uSUQnLAogICAgICAgICAnV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcics
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFkNDFjMDYwOTI4NDhiZjlhZjM2YjFiNzI2
Li43NjE3YzJlMTdlZGQ0NzgwNGY1ZGY2ODgzMWNjYzMyZDhmODZjMzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Ry
YWNrUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNTEwLDYgKzUxMSw3IEBA
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAK
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nl
c3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmYmRjMjU3NWU0NDgxODVl
NGJjYmM4NDJlNGY3YTU0NDMxM2I0MzkuLjA3OTIzZjg3MTQ3MzdlOWMyODk3YTU1ZDAyYzhjZDRk
YmExZWQ2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA1MSw2ICsyMDUxLDEyIEBACiAJCTAwQjk2NjE4MThFMjVBRTEwMENFMUY4
OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMTc4OUIyM0JBRTI2MTAw
NUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzAxNzg5QzIzQkFFMjYyMDA1RjBGQUEgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTUlN
RVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU3NzIzQzkz
QkI3MDA2ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDcxQkM1NzkyM0M5M0JCOTAwNjgwRDdDIC8qIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQkM1N0IyM0NBNTMyNDAwNjgwRDdDIC8qIFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU3
RDIzQ0E1NkQyMDA2ODBEN0MgLyogVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MUJDNTdFMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVBdWRpb1Ry
YWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdD
IC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb1Ry
YWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyNUVGQUIyMzlBRTM4
NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyNUVGQUQyMzlC
MDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNjksNiArNTE3NSw4IEBACiAJCTA3OTIzMTJGMjM5QjNC
MEMwMDk1OThFMiAvKiBtZWRpYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMDcxQkM1NzkyM0M5M0JCOTAwNjgwRDdDIC8qIEF1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcCAqLywKKwkJCQkwNzFCQzU3NzIzQzkzQkI3MDA2ODBEN0MgLyogQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4
RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDc5MjMxNEUyMzlENUY1
MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKQEAg
LTUxODgsNiArNTE5Niw4IEBACiAJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBtZWRpYSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxQkM1N0Uy
M0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAgKi8sCisJCQkJMDcx
QkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oICovLAogCQkJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtNTIwMiw2ICs1
MjEyLDggQEAKIAkJCQkxREE0MDg5RTIzQTgyNzc4MDA1OEM5NTAgLyogUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIuY3BwICovLAogCQkJCTFEQTQwODk0MjNBODBBM0UwMDU4Qzk1MCAvKiBSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5oICovLAogCQkJCTFEMzJGOEE2MjNBODYwMTkwMEIxRUE2
QSAvKiBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQkwNzFC
QzU3QjIzQ0E1MzI0MDA2ODBEN0MgLyogVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5o
ICovLAorCQkJCTA3MUJDNTdEMjNDQTU2RDIwMDY4MEQ3QyAvKiBUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1lZGlhOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1OGVh
ZDQ3ZGZhMDE5ZWRiNDNiY2Q2MjBlNTI0YTEwNTA3NzYwOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6QXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlJiBwbGF5ZXIsIFRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbmRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBt
X2lkZW5kaWZpZXIoaWRlbmRpZmllcikKK3sKKyAgICB1cGRhdGVDb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjpz
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoZW5hYmxlZCAhPSB0aGlzLT5lbmFi
bGVkKCkpCisgICAgICAgIG1fcGxheWVyLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6QXVkaW9UcmFja1NldEVuYWJsZWQobV9wbGF5ZXIu
aXRlbnRpZmllcigpLCBtX2lkZW5kaWZpZXIsIGVuYWJsZWQpLCAwKTsKKworICAgIEF1ZGlvVHJh
Y2tQcml2YXRlOjpzZXRFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIGlmIChjb25maWd1cmF0aW9uLmlkICE9IG1f
aWQpIHsKKyAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOworICAgICAgICBt
X2lkID0gY29uZmlndXJhdGlvbi5pZDsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkp
CisgICAgICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOworICAgIH0KKworICAgIGlm
IChjb25maWd1cmF0aW9uLmxhYmVsICE9IG1fbGFiZWwpIHsKKyAgICAgICAgYXV0byBjaGFuZ2Vk
ID0gIW1fbGFiZWwuaXNFbXB0eSgpOworICAgICAgICBtX2xhYmVsID0gY29uZmlndXJhdGlvbi5s
YWJlbDsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCisgICAgICAgICAgICBjbGll
bnQoKS0+aWRDaGFuZ2VkKG1fbGFiZWwpOworICAgIH0KKworICAgIGlmIChjb25maWd1cmF0aW9u
Lmxhbmd1YWdlICE9IG1fbGFuZ3VhZ2UpIHsKKyAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1fbGFu
Z3VhZ2UuaXNFbXB0eSgpOworICAgICAgICBtX2xhbmd1YWdlID0gY29uZmlndXJhdGlvbi5sYW5n
dWFnZTsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCisgICAgICAgICAgICBjbGll
bnQoKS0+aWRDaGFuZ2VkKG1fbGFuZ3VhZ2UpOworICAgIH0KKworICAgIG1fdHJhY2tJbmRleCA9
IGNvbmZpZ3VyYXRpb24udHJhY2tJbmRleDsKKyAgICBtX3N0YXJ0VGltZVZhcmlhbmNlID0gY29u
ZmlndXJhdGlvbi5zdGFydFRpbWVWYXJpYW5jZTsKKyAgICBtX2tpbmQgPSBjb25maWd1cmF0aW9u
LmtpbmQ7CisgICAgc2V0RW5hYmxlZChjb25maWd1cmF0aW9uLmVuYWJsZWQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2M3MTI4ODJhZTg0ZWYwOGNlYThjZjY2ZDM3
ZWE5ZmRkYmE2ZjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1RyYWNr
UHJpdmF0ZS5oPgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZSkKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlPiBjcmVhdGUo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlJiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWRlbmRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZp
Z3VyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlKHBsYXllciwgaWRlbmRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkp
OworICAgIH0KKworICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOworCisgICAgdXNpbmcgQXVkaW9UcmFja0tpbmQgPSBXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDsKKyAgICBBdWRpb1RyYWNrS2luZCBraW5kKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9raW5kOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3RyYWNrSW5kZXg7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSYsIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUmIG1fcGxheWVyOworICAgIEF1ZGlvVHJhY2tLaW5kIG1fa2luZCB7IE5vbmUgfTsKKyAgICBB
dG9tU3RyaW5nIG1faWQ7CisgICAgQXRvbVN0cmluZyBtX2xhYmVsOworICAgIEF0b21TdHJpbmcg
bV9sYW5ndWFnZTsKKyAgICBpbnQgbV90cmFja0luZGV4IHsgLTEgfTsKKyAgICBNZWRpYVRpbWUg
bV9zdGFydFRpbWVWYXJpYW5jZSB7IE1lZGlhVGltZTo6emVyb1RpbWUoKSB9OworICAgIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVuZGlmaWVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGNj
OTg1NzMxNDMxMzljMGE1MzUzOTljZGJhYmMyZmEyN2ZhNDk5NjQuLjA4NTQwZTVkYmY2YjNkMmM4
MTIxN2Q5YWNmNDkwODQwY2I5OTBhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgiCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpA
QCAtODYsMTIgKzg3LDExIEBAIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9h
ZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlKQogewotICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1faWQsIHByaXZhdGVN
b2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSksIDApOworICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFy
ZUZvclBsYXliYWNrKG1faWQsIHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwg
cHJlcGFyZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlw
ZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkgewogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJM
JiB1cmwsIGNvCiAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGhhbmRs
ZSk7CiAgICAgfQogCi0gICAgY29ubmVjdGlvbi5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQsIHVybCwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAgICBjb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6TG9hZChtX2lkLCB1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlLCBr
ZXlTeXN0ZW0pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1
cmF0aW9uKSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwogICAgIH0pOwpAQCAtMTI1LDQ5ICsxMjUs
NDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNhbmNlbExvYWQoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6Q2FuY2VsTG9hZChtX2lkKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5jZWxMb2FkKG1faWQpLCAwKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkoKQogewot
ICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZVRvUGxheShtX2lk
KSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpQcmVwYXJlVG9QbGF5KG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnBsYXkoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0g
ZmFsc2U7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5KG1faWQp
LCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OlBsYXkobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGF1c2UoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0gdHJ1ZTsKLSAg
ICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBhdXNlKG1faWQpLCAwKTsKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlBhdXNlKG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiB7Ci0gICAgbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVzZXJ2ZXNQaXRjaChtX2lkLCBwcmVzZXJ2
ZXNQaXRjaCksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlc2VydmVzUGl0Y2gobV9pZCwgcHJlc2VydmVzUGl0
Y2gpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURv
dWJsZShkb3VibGUgdm9sdW1lKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQs
IHZvbHVtZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0
ZWQoYm9vbCBtdXRlZCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OlNldE11dGVkKG1faWQsIG11dGVkKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRNdXRlZChtX2lkLCBtdXRlZCks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZChNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U2V0UHJlbG9hZChtX2lkLCBwcmVsb2FkKSwgMCk7CisgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVs
b2FkKG1faWQsIHByZWxvYWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCBwcml2YXRlTW9kZSkKIHsKLSAgICBtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9p
ZCwgcHJpdmF0ZU1vZGUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9pZCwg
cHJpdmF0ZU1vZGUpLCAwKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0CkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBNZWRpYVRp
bWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgdGltZSkK
IHsKICAgICBtX3NlZWtpbmcgPSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6U2VlayhtX2lkLCB0aW1lKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZWVrKG1faWQsIHRpbWUpLCAw
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9sZXJhbmNl
KGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5j
ZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkKIHsKICAgICBtX3NlZWtpbmcg
PSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2Vla1dpdGhU
b2xlcmFuY2UobV9pZCwgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNl
KSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTZWVrV2l0aFRvbGVyYW5jZShtX2lkLCB0aW1lLCBuZWdhdGl2ZVRvbGVy
YW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpLCAwKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC0zNDEsNDIgKzM0MSw0MiBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkSWdub3JlSW50cmluc2ljU2l6
ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5n
KCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JS
ZW5kZXJpbmcobV9pZCksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwgMCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpTZXRTaXplKG1faWQsIHNpemUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwgc2l6ZSks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShib29s
IHZpc2libGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRW
aXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpc2libGUobV9pZCwgdmlzaWJs
ZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFp
bnRhaW5Bc3BlY3RSYXRpbyhib29sIG1haW50YWluUmF0aW8pCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1faWQs
IG1haW50YWluUmF0aW8pLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8o
bV9pZCwgbWFpbnRhaW5SYXRpbyksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCiB7
Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShtX2lkLCByZWN0KSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSht
X2lkLCByZWN0KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jh
dml0eSBncmF2aXR5KQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShtX2lkLCBncmF2aXR5KSwgMCk7CisgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KG1faWQsIGdyYXZpdHkpLCAwKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkK
IHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVu
ZGVyaW5nU3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1f
aWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVlcChib29s
IGRpc2FibGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRT
aG91bGREaXNhYmxlU2xlZXAobV9pZCwgZGlzYWJsZSksIDApOworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2hvdWxkRGlz
YWJsZVNsZWVwKG1faWQsIGRpc2FibGUpLCAwKTsKIH0KIAogRmxvYXRTaXplIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bmF0dXJhbFNpemUoKSBjb25zdApAQCAtMzg0LDYgKzM4NCwzNCBAQCBG
bG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2FjaGVkU3RhdGUubmF0dXJhbFNpemU7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjphZGRSZW1vdGVBdWRpb1RyYWNrKFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2tzLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKKworICAgIGF1dG8gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6Y3Jl
YXRlKCp0aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX2F1
ZGlvVHJhY2tzLmFkZChpZGVudGlmaWVyLCB0cmFjayk7CisKKyAgICBtX3BsYXllci0+YWRkQXVk
aW9UcmFjaygqdHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVt
b3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQorewor
ICAgIEFTU0VSVChtX2F1ZGlvVHJhY2tzLmNvbnRhaW5zKGlkKSk7CisKKyAgICBpZiAoYXV0byB0
cmFjayA9IG1fYXVkaW9UcmFja3MuZ2V0KGlkKSkgeworICAgICAgICBtX3BsYXllci0+cmVtb3Zl
QXVkaW9UcmFjaygqdHJhY2spOworICAgICAgICBtX2F1ZGlvVHJhY2tzLnJlbW92ZShpZCk7Cisg
ICAgfQorfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3RlQXVkaW9UcmFj
a0NvbmZpZ3VyYXRpb25DaGFuZ2VkKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIEFT
U0VSVChtX2F1ZGlvVHJhY2tzLmNvbnRhaW5zKGlkKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYg
dHJhY2sgPSBtX2F1ZGlvVHJhY2tzLmdldChpZCkpCisgICAgICAgIHRyYWNrLT51cGRhdGVDb25m
aWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCiAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTg0MSw3ICs4NjksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWVzdFJlc291cmNlKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyIHJlbQogICAgIEFTU0VSVCghbV9tZWRpYVJlc291cmNlcy5jb250
YWlucyhyZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcikpOwogICAgIGF1dG8gcmVzb3VyY2Ug
PSBtX21lZGlhUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zKTsKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2Ugb3ducyB0aGUgUGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50Ci0gICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVl
PFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
KSk7CisgICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eT4oY29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyKSk7CiAgICAgbV9tZWRpYVJlc291cmNlcy5hZGQocmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKaW5kZXggNDE5NzVjZjU5NDg5NTA5NGIwNjY0NDRhM2E0ZTEyY2Q0YWQyZmFmZC4uMGUxNDBk
Yjc4OWU5OGFhYjkxOGJlNzQzN2FmNWMwMTExNzEzNDAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJTdGF0
ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+
CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KQEAgLTM5LDYgKzQwLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEF1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlOworc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b247CisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAogICAgIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4KICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKQEAgLTU4LDcgKzYyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2ludmFsaWQgPSB0cnVlOyB9CiAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7
IH0KLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllckl0ZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpdGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlci5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsgfQogCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVD
aGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hh
bmdlZChSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwpAQCAtNzMsNiArNzgsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFz
VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwogICAgIHZv
aWQgc2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplKTsKIAorICAgIHZvaWQgYWRkUmVtb3Rl
QXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZUF1ZGlvVHJhY2tDb25m
aWd1cmF0aW9uQ2hhbmdlZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOworCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2
b2lkIHJlbW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKIApAQCAt
MzExLDYgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBs
YXRmb3JtVGltZVJhbmdlcz4gbV9jYWNoZWRCdWZmZXJlZFRpbWVSYW5nZXM7CiAKICAgICBIYXNo
TWFwPFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlPj4gbV9tZWRpYVJlc291cmNlczsKKyAgICBIYXNoTWFwPFRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZT4+IG1f
YXVkaW9UcmFja3M7CiAKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CiAgICAgZG91YmxlIG1f
cmF0ZSB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA2ZWNiYmVhYmJj
YmMzYTg1MzExMjA4NGUzZjMzNjdmN2M2YzU4NDE5Li4xNmZmMzllYzVkZTdiNDA0ZGQwODdkMjU3
ZjcxMDcxNDFmM2YyY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2MSwxMyAr
MjYxLDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjptdXRlQ2hhbmdlZChNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkCiAgICAgICAgIHBsYXllci0+bXV0ZUNo
YW5nZWQobXV0ZSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0aW1lQ2hh
bmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90
ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
Ojp0aW1lQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1v
dGVNZWRpYVBsYXllclN0YXRlJiYgc3RhdGUpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXll
ciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnRpbWVDaGFuZ2VkKFdURk1v
dmUoc3RhdGUpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmR1cmF0aW9u
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJl
bW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpkdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZCwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmIHN0YXRlKQogewogICAgIGlmIChjb25zdCBhdXRv
JiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKICAgICAgICAgcGxheWVyLT5kdXJhdGlvbkNo
YW5nZWQoV1RGTW92ZShzdGF0ZSkpOwpAQCAtMjg1LDI0ICsyODUsNDIgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OnBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW4KICAgICAgICAgcGxheWVyLT5wbGF5YmFja1N0YXRlQ2hhbmdlZChwYXVzZWQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZW5naW5lRmFpbGVkVG9Mb2Fk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgbG9uZyBwbGF0
Zm9ybUVycm9yQ29kZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjplbmdpbmVGYWls
ZWRUb0xvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgbG9uZyBwbGF0
Zm9ybUVycm9yQ29kZSkKIHsKICAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJz
LmdldChpZCkpCiAgICAgICAgIHBsYXllci0+ZW5naW5lRmFpbGVkVG9Mb2FkKHBsYXRmb3JtRXJy
b3JDb2RlKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3Rlcmlz
dGljQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
Ok1vdmllTG9hZFR5cGUgbG9hZFR5cGUpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1vdmllTG9hZFR5cGUgbG9hZFR5cGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9w
bGF5ZXJzLmdldChpZCkpCiAgICAgICAgIHBsYXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGhh
c0F1ZGlvLCBoYXNWaWRlbywgbG9hZFR5cGUpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6c2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6c2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgV2ViQ29yZTo6RmxvYXRTaXplIG5hdHVyYWxTaXplKQogewogICAgIGlmIChh
dXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnNpemVDaGFu
Z2VkKG5hdHVyYWxTaXplKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmFk
ZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5
ZXJJRCwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoYXV0byBwbGF5
ZXIgPSBtX3BsYXllcnMuZ2V0KHBsYXllcklEKSkKKyAgICAgICAgcGxheWVyLT5hZGRSZW1vdGVB
dWRpb1RyYWNrKHRyYWNrSUQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklELCBUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIHRyYWNrSUQpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChw
bGF5ZXJJRCkpCisgICAgICAgIHBsYXllci0+cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayh0cmFja0lE
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlbW90ZUF1ZGlvVHJhY2tD
b25maWd1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBs
YXllcklELCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIGlmIChhdXRvIHBs
YXllciA9IG1fcGxheWVycy5nZXQocGxheWVySUQpKQorICAgICAgICBwbGF5ZXItPnJlbW90ZUF1
ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZCh0cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlcXVlc3RSZXNvdXJj
ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBv
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQpAQCAtMzI2
LDcgKzM0NCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJl
bmNlcyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYSgpID8gV1RGTW92ZShyZWdpc3RlckVuZ2luZSkgOiBSZW1vdGVNZWRpYVBsYXll
clN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBz
dGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZShN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVBsYXllclN0
YXRlJiYgc3RhdGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkp
CiAgICAgICAgIHBsYXllci0+dXBkYXRlQ2FjaGVkU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUwMjhiNjdkNDlmM2YyNzc5OWVhOGVhY2Q3
MjJkZmViMGI4OS4uYWI5NGRmNzgxZTcyZDJlYTc5NDhiMTRjZDIyNjgyYmQyM2IwOGJhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC00Nyw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOwog
Y2xhc3MgV2ViUHJvY2VzczsKK3N0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
OwogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1
cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC03NywxNiArNzksMTkgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwotICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGRvdWJs
ZSk7Ci0gICAgdm9pZCBtdXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgdGltZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwot
ICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKLSAgICB2b2lkIHJhdGVDaGFu
Z2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgZG91YmxlKTsK
LSAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgYm9vbCk7Ci0gICAgdm9pZCBlbmdpbmVGYWlsZWRUb0xvYWQoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBsb25nKTsKLSAgICB2b2lk
IHVwZGF0ZUNhY2hlZFN0YXRlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKLSAgICB2b2lkIGNoYXJhY3RlcmlzdGlj
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wg
aGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmll
TG9hZFR5cGUpOwotICAgIHZvaWQgc2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFNpemUpOworICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOworICAg
IHZvaWQgbXV0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9v
bCk7CisgICAgdm9pZCB0aW1lQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CisgICAgdm9pZCByYXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBkb3VibGUpOworICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9pZCBlbmdpbmVGYWlsZWRU
b0xvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgbG9uZyk7CisgICAgdm9p
ZCB1cGRhdGVDYWNoZWRTdGF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOworICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOworICAg
IHZvaWQgc2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGFkZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90
ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJh
dGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsK
IAogICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9u
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNl
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggNTRhMDFmOGIzNTIyYTFhMjU2NjFlZWVlZTUyNzkyY2QzNDNkMDEzZS4uMDA4NGFmYzM1
ZDRmN2RkNjI0MTBlMWYyZDQ2NzcxYWUzZTNkNTA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTM3LDYgKzM3LDEwIEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKQogICAgIFNpemVDaGFuZ2Vk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
RmxvYXRTaXplIG5hdHVyYWxTaXplKQogCisgICAgQWRkUmVtb3RlQXVkaW9UcmFjayhXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCisgICAgUmVtb3ZlUmVtb3Rl
QXVkaW9UcmFjayhXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxh
eWVySUQsIFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lEKQorICAg
IFJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFdlYktpdDo6VHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCisKICAgICBSZXF1ZXN0UmVzb3VyY2UoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpM
b2FkT3B0aW9ucyBvcHRpb25zKSAtPiAoKSBBc3luYwogICAgIFJlbW92ZVJlc291cmNlKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggNDZkMTE5
ODc3MmM1MWI4YWQ5MGVmOGExNzEzMjFmZmNlMjkwZmNmOS4uNzk0YzIzOGU5Yjg0MWY4MTc1NDdh
YWEzMDZlY2MwOWM2MTc0YzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAgLTQxLDYgKzQyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgd2VicnRjOjpXZWJLaXRWaWRlb0RlY29kZXIg
Y3JlYXRlVmlkZW9EZWNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkK
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBkNzUxOGYzZDgxNTI4NGRmNGE4M2Y4MmM2NzVlNGFiN2RkZDA4OWM4Li5hMzg0
ZDcyMzRmZWI2MDQ4Y2FiYjRlYzlkMzI5NzdjYTVkYzExM2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjAtMDEtMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRXhwb3NlIGF1ZGlvIHRyYWNrcyBmb3IgbWVkaWEgZmlsZXMgaW4gdGhlIEdQVVBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg1MTMyMjc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDIwLTAxLTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkNvcmVdIEZpeCBjcmFzaCBpbiBtb2R1bGUgbG9hZGVyIGR1ZSB0byBj
aGFuZ2UgaW4gZnJhZ21lbnQgcmVzZXJ2YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGE1MTYzM2ZmYWRiMjQwY2IyN2RiZDFkNjRhNGMzMDBiNTA4ZDFl
ZWUuLjcyMGU2ZTM2MWMyZWExZTRiOTA4ZjBlMDkwNTcwMWM5YmFhOWVmYTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjE4LDYgKzIxOCw4IEBAIG1lZGlh
L3Jlc3RyaWN0ZWQtYXVkaW8tcGxheWJhY2std2l0aC1kb2N1bWVudC1nZXN0dXJlLmh0bWwgWyBQ
YXNzIF0KIG1lZGlhL3Jlc3RyaWN0ZWQtYXVkaW8tcGxheWJhY2std2l0aC1tdWx0aXBsZS1zZXR0
aW1lb3V0cy5odG1sIFsgUGFzcyBdCiBtZWRpYS92aWRlby1jb250cm9scy12aXNpYmxlLWF1ZGlv
LW9ubHkuaHRtbCBbIFBhc3MgXQogbWVkaWEvdmlkZW8tcGxheS1hdWRpby1yZXF1aXJlLXVzZXIt
Z2VzdHVyZS5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay9hdWRpby10cmFjay5odG1sIFsgUGFz
cyBdCittZWRpYS9hdWRpby10cmFjay1hZGQtcmVtb3ZlLmh0bWwgWyBQYXNzIF0KIAogYWNjZXNz
aWJpbGl0eS9tZWRpYS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KIGZhc3QvYmxvY2svZmxvYXQvbGlz
dC1tYXJrZXItaXMtZmxvYXQtY3Jhc2guaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387484</attachid>
            <date>2020-01-12 11:43:04 -0800</date>
            <delta_ts>2020-01-13 08:58:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206152-20200112114303.patch</filename>
            <type>text/plain</type>
            <size>65377</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFmMTU3OWNhM2E3M2Nj
YjExM2JmMzQ5NjI5NDU3MWY0NTA4ZjQzNi4uZGMzY2FmMzA3ODQ1MjAxN2E3ZGMxNTJmNDU0MDAw
ZGNlNjVkMjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBhdWRp
byB0cmFja3MgZm9yIG1lZGlhIGZpbGVzIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxNTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU4NTEzMjI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdW4tc2tpcHBlZCBleGlzdGluZyB0ZXN0cyB0aGF0
IHBhc3MgYmVjYXVzZSBvZiB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVHJh
Y2tQcml2YXRlQmFzZS5oOgorCiAyMDIwLTAxLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3NlIGZyYW1lIGluZm9ybWF0aW9uIG9u
IF9XS1Jlc291cmNlTG9hZEluZm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWY3NDE3NzA4NDNmZjVjODgxZDZiYTI0
ZDFiYmNiNjgyYjMyN2U5Mi4uZmFhYmZiYzU1NmJmNjIxMTNjNDk2YTAxYzU5MTM3YmM2ZmEzODg5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0wMS0xMiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgYXVkaW8gdHJhY2tzIGZv
ciBtZWRpYSBmaWxlcyBpbiB0aGUgR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
ODUxMzIyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6UmVtb3RlQXVkaW9UcmFja1By
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6d2ls
bFJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6ZW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmlkQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6bGFiZWxDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5OjpsYW5ndWFnZUNo
YW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjphdWRpb1RyYWNrU2V0RW5hYmxlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRp
b1RyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6YXVkaW9UcmFja1NldEVuYWJsZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6
OkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1By
aXZhdGVSZW1vdGU6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1RyYWNrUHJp
dmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkUmVtb3RlQXVkaW9UcmFjayk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVtb3RlQXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3Rl
QXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmVuZ2luZUZhaWxlZFRvTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2hhcmFjdGVyaXN0aWND
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXpl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6YWRk
UmVtb3RlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRT
dGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorCiAyMDIwLTAxLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3NlIGZyYW1lIGluZm9ybWF0aW9u
IG9uIF9XS1Jlc291cmNlTG9hZEluZm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCmluZGV4IDQ3NjkzOTM4MGRmYTZmZTIwNzU5
OGQwODM3ZWMxNjM4N2M5MWY4MGYuLjYyMWJhODZjOGRhZjI5NDdhYzI0OGU4NmYyMDUwZWFkYWQy
YmQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaApAQCAtNzYsNCArNzYsMjEgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZD4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpL
aW5kLAorICAgICAgICBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6QWx0ZXJuYXRp
dmUsCisgICAgICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kOjpEZXNjcmlwdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6Ok1haW4sCisgICAg
ICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kOjpNYWluRGVzYywKKyAgICAgICAg
V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6OlRyYW5zbGF0aW9uLAorICAgICAgICBX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6Q29tbWVudGFyeSwKKyAgICAgICAgV2Vi
Q29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6Ok5vbmUKKyAgICA+OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1YWRmMzg2Mjg0
ODVjNDc3MTNmMTRjNjJiZmQuLjcxNDRhOWQwNWNiOTQ4OGJmZDg0YWI3YTJhMjgwZjUxN2M4Mjc4
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1By
aXZhdGVCYXNlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlKCkgPSAwOwogfTsKIAotY2xhc3MgVHJhY2tQcml2YXRlQmFzZQorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgVHJhY2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRyYWNrUHJpdmF0ZUJhc2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFj
a1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQ2NDNkMjYyMTdmYTYxYWIyYzQ5MjkwZWUyNTQ3MjQ0
OGU3ODdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9U
cmFja1Byb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVtb3RlQXVkaW9U
cmFja1Byb3h5OjpSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYg
cGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAg
OiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX2lkZW50aWZpZXIoaWQpCisgICAgLCBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3RyYWNrUHJpdmF0
ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV90cmFja1ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsK
KyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OkFkZFJlbW90ZUF1ZGlvVHJhY2sobV9wbGF5ZXIuaWRlbmRpZmllcigpLCBt
X2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb24oKSksIDApOworfQorCitUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uOworCisgICAgY29uZmlndXJhdGlvbi0+aWQgPSBtX3RyYWNrUHJp
dmF0ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5s
YWJlbCgpOworICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxh
bmd1YWdlKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRl
LT50cmFja0luZGV4KCk7CisgICAgY29uZmlndXJhdGlvbi0+c3RhcnRUaW1lVmFyaWFuY2UgPSBt
X3RyYWNrUHJpdmF0ZS0+c3RhcnRUaW1lVmFyaWFuY2UoKTsKKyAgICBjb25maWd1cmF0aW9uLT5l
bmFibGVkID0gbV90cmFja1ByaXZhdGUtPmVuYWJsZWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT5r
aW5kID0gbV90cmFja1ByaXZhdGUtPmtpbmQoKTsKKworICAgIHJldHVybiBjb25maWd1cmF0aW9u
LmdldCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbkNo
YW5nZWQoKQoreworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFu
Z2VkKG1fcGxheWVyLmlkZW5kaWZpZXIoKSwgbV9pZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkp
LCAwKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OndpbGxSZW1vdmUoKQorewor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6UmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhtX3BsYXllci5pZGVuZGlmaWVyKCks
IG1faWRlbnRpZmllciksIDApOworfQorCit2b2lkIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6ZW5h
YmxlZENoYW5nZWQoYm9vbCkKK3sKKyAgICBjb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCit2
b2lkIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6aWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKQor
eworICAgIGNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9UcmFj
a1Byb3h5OjpsYWJlbENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpCit7CisgICAgY29uZmlndXJh
dGlvbkNoYW5nZWQoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6Omxhbmd1YWdl
Q2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikKK3sKKyAgICBjb25maWd1cmF0aW9uQ2hhbmdlZCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTYwMDlhNzBmNTVlMjlkYTE5NGQ5YzAyZDI2
MTM3ZGJmNjNmN2VhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb1RyYWNrUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjsKKworY2xh
c3MgUmVtb3RlQXVkaW9UcmFja1Byb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8VHJhY2tQcml2YXRlQmFzZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4K
KyAgICAsIHByaXZhdGUgV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFj
a1ByaXZhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b1RyYWNrUHJveHkocGxheWVyLCBpZCwgV1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRl
KSk7CisgICAgfQorCisgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OworCisgICAgdm9pZCBzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQor
Citwcml2YXRlOgorICAgIFJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclBy
b3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICB+UmVtb3RlQXVkaW9UcmFja1Byb3h5KCkgPSBk
ZWZhdWx0OworCisgICAgLy8gQXVkaW9UcmFja1ByaXZhdGVDbGllbnQKKyAgICB2b2lkIGVuYWJs
ZWRDaGFuZ2VkKGJvb2wpIGZpbmFsOworCisgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNsaWVudAor
ICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGxh
YmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBsYW5ndWFnZUNo
YW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZSgpIGZp
bmFsOworCisgICAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bigpOworICAgIHZvaWQgY29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKworICAgIFJlbW90ZU1lZGlh
UGxheWVyUHJveHkmIG1fcGxheWVyOworICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb247CisgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDc5MzMwOTkwYzM4ZjA2Y2I4NjBj
YzM4ZjUzMWNmMzBlMzBkMmVlZi4uMGZlNDYzNmE3NGE4MmI2NjhlOTA2NjJkNGZhZTg5MDNmZWQ4
ZjRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0zMjMsMTIgKzMyMywx
OCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRTaG91bGREaXNhYmxl
U2xlZXAoTWVkaWFQbGF5ZXJQcml2YXRlUmVtbwogICAgICAgICBwbGF5ZXItPnNldFNob3VsZERp
c2FibGVTbGVlcChkaXNhYmxlKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6c2V0UmF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIGRvdWJsZSByYXRlKQordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0
UmF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgcmF0ZSkK
IHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKICAgICAgICAgcGxh
eWVyLT5zZXRSYXRlKHJhdGUpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjphdWRpb1RyYWNrU2V0RW5hYmxlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHBsYXllcklELCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXllcklE
KSkKKyAgICAgICAgcGxheWVyLT5hdWRpb1RyYWNrU2V0RW5hYmxlZCh0cmFja0lELCBlbmFibGVk
KTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogY29uc3QgTG9nZ2VyJiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgKaW5kZXggZDM3Y2YxOGFhMzI3OTI4YjQxZjJkMGE1ZjNjODBmMzBmZjFlMWYx
ZS4uYmUyYzc0ZGQ0M2E2YzUzODc1MzQzOWU0ZDU5YjkzODJlOTE2NzRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCkBAIC0xMDksNyArMTEwLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsK
ICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNs
ZWVwKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQg
c2V0UmF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGRvdWJs
ZSk7CisgICAgdm9pZCBzZXRSYXRlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIs
IGRvdWJsZSk7CisKKyAgICB2b2lkIGF1ZGlvVHJhY2tTZXRFbmFibGVkKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wp
OwogCiAgICAgSGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4+IG1fcHJveGllczsKICAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjFlMTQyMGJh
OWMxMTA4OTJkOTg4YzU2OWFmMjBlN2VhYzc0YjliMC4uOWYyNWQxYjgyNmQzNjM5NWZmNGE4NTk0
NGVkYzRlYjdmZTFkZTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNjQsNiArNjQsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBBY2NlbGVyYXRlZFJlbmRlcmluZ1N0
YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGJvb2wgY2FuQmVBY2NlbGVyYXRlZCkKICAgICBTZXRTaG91bGREaXNhYmxlU2xlZXAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIGRpc2FibGUpCiAg
ICAgU2V0UmF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGRvdWJsZSByYXRlKQorCisgICAgQXVkaW9UcmFja1NldEVuYWJsZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklELCBXZWJLaXQ6OlRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgYm9vbCBlbmFibGVkKQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcAppbmRleCBhMTQxN2EyOGE2NTBiMGQyZmUxYmM1Y2EzMmNkYmNkMGMwYjlm
NTE3Li5jYWQ0MTE1MTlkZWY1YmNkZmRiMTRhMDJkOWI5ZWRiZjNkZmUzNTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCkBAIC0zNjQsNiArMzY0LDI4IEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKCkKICAgICByZXR1cm4gbV9y
ZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZSYgdHJhY2spCit7CisgICAgbV9hdWRpb1RyYWNrcy5zZXQoJnRyYWNrLCBSZW1vdGVBdWRpb1Ry
YWNrUHJveHk6OmNyZWF0ZSgqdGhpcywgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCksIHRyYWNrKSk7Cit9CisK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1Ry
YWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaykKK3sKKyAgICBBU1NFUlQobV9h
dWRpb1RyYWNrcy5jb250YWlucygmdHJhY2spKTsKKyAgICBtX2F1ZGlvVHJhY2tzLnRha2UoJnRy
YWNrKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdWRpb1RyYWNrU2V0RW5h
YmxlZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcy52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAodHJhY2stPmlkZW50aWZpZXIoKSA9PSB0cmFja0lEKSB7CisgICAgICAgICAgICB0
cmFjay0+c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogLy8gRklYTUU6IFVu
aW1wbGVtZW50ZWQKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZXNv
dXJjZU5vdFN1cHBvcnRlZCgpCiB7CkBAIC00OTIsMTEgKzUxNCw2IEBAIGJvb2wgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIEF0b21T
dHJpbmcqKSBjCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi12b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrUHJpdmF0
ZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRl
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNTA3LDExICs1MjQsNiBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhWaWRlb1Ry
YWNrUHJpdmF0ZSYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFja1By
aXZhdGUmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZj
YzM2NjRjMjQ0ZTMyOGQ2ZGNhZGZhZGMxOTg4MmUzMjYzZmVjMmUuLjA5YjNjNzhhYzBiNGUwZjQ0
ODA0NGFjOTJiYjUxN2U2MTEzNjU0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDMsNiArNDMsMTAg
QEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGU7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKQEAg
LTU1LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
JiYpOwogICAgIH5SZW1vdGVNZWRpYVBsYXllclByb3h5KCk7CiAKKyAgICBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW5kaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CkBAIC04OSw2ICs5NCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29sKTsKICAgICB2b2lkIHNldFJhdGUo
ZG91YmxlKTsKIAorICAgIHZvaWQgYXVkaW9UcmFja1NldEVuYWJsZWQoVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgYm9vbCk7CisKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlPiByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMpOwogICAgIHZvaWQg
cmVtb3ZlUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCkBAIC0xMDcs
NiArMTE0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lZGlhUGxheWVyU2Vla2FibGVUaW1lUmFu
Z2VzQ2hhbmdlZCgpIGZpbmFsOwogICAgIGJvb2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFj
Y2VsZXJhdGVkKCkgZmluYWw7CiAKKyAgICB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFj
ayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5
ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJikgZmluYWw7
CisKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQKICAgICB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VO
b3RTdXBwb3J0ZWQoKSBmaW5hbDsKICAgICB2b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoKSBm
aW5hbDsKQEAgLTE0NywxMCArMTU3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1lZGlhUGxheWVy
U2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgU3RyaW5n
JiBtZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
JikgZmluYWw7CiAgICAgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJikgZmluYWw7CiAgICAgdm9pZCBtZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2soV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmKSBmaW5hbDsKLSAgICB2b2lk
IG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZSYpIGZpbmFsOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpIGZpbmFsOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJE
aWRSZW1vdmVWaWRlb1RyYWNrKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlJikgZmluYWw7CiAK
QEAgLTE4Niw2ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVy
TG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1f
Y29uZmlndXJhdGlvbi5sb2dJZGVudGlmaWVyKTsgfQogI2VuZGlmCiAKKyAgICBIYXNoTWFwPEF1
ZGlvVHJhY2tQcml2YXRlKiwgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4+IG1fYXVkaW9UcmFj
a3M7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOwogICAgIFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjVjNWRmZTYwYzlmMDc3YjkxZjhlNjFjZDU1MTg0NjFh
ZGIwZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgVHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CisgICAgQXRvbVN0cmluZyBpZDsKKyAgICBB
dG9tU3RyaW5nIGxhYmVsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CisgICAgTWVkaWFUaW1l
IHN0YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6ZXJvVGltZSgpIH07CisgICAgaW50IHRy
YWNrSW5kZXg7CisgICAgYm9vbCBlbmFibGVkOworICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpLaW5kIGtpbmQgeyBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6Tm9uZSB9
OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBpZDsKKyAgICAgICAg
ZW5jb2RlciA8PCBsYWJlbDsKKyAgICAgICAgZW5jb2RlciA8PCBsYW5ndWFnZTsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGFydFRpbWVWYXJpYW5jZTsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lu
ZGV4OworICAgICAgICBlbmNvZGVyIDw8IGVuYWJsZWQ7CisgICAgICAgIGVuY29kZXIuZW5jb2Rl
RW51bShraW5kKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZDsK
KyAgICAgICAgZGVjb2RlciA+PiBpZDsKKyAgICAgICAgaWYgKCFpZCkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7
CisgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+
IGxhbmd1YWdlOworICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlOworICAgICAgICBpZiAoIWxh
bmd1YWdlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZhcmlhbmNlOworICAgICAgICBkZWNvZGVyID4+IHN0
YXJ0VGltZVZhcmlhbmNlOworICAgICAgICBpZiAoIXN0YXJ0VGltZVZhcmlhbmNlKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxpbnQ+IHRyYWNr
SW5kZXg7CisgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJbmRleDsKKyAgICAgICAgaWYgKCF0cmFj
a0luZGV4KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxib29sPiBlbmFibGVkOworICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgICAg
IGlmICghZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ+IGtpbmQ7CisgICAg
ICAgIGRlY29kZXIgPj4ga2luZDsKKyAgICAgICAgaWYgKCFraW5kKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1v
dmUoKmlkKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKKyAgICAgICAgICAgIFdURk1v
dmUoKmxhbmd1YWdlKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnN0YXJ0VGltZVZhcmlhbmNlKSwK
KyAgICAgICAgICAgICp0cmFja0luZGV4LAorICAgICAgICAgICAgKmVuYWJsZWQsCisgICAgICAg
ICAgICAqa2luZCwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1RyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlhNTdj
NjIwMDIxYjRlZWZiMzg5ZDUwYmNjOTk1NTUwNzg1ZWI5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggY2VmZjNjMjYwNWExZjg1ZDVkOTkwYTY0YzNmMjgyMDNkMTE1MjMyMC4uN2ZkMzNl
MGVmOWQyZDc2ZjIyNjQwYWIyODQwYTNiZjMzODEzMmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjcsNiArMjI3LDcgQEAgZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFy
ZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyJywKKyAgICAg
ICAgJ1dlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OlRyYW5zYWN0aW9uSUQnLAogICAgICAgICAnV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcics
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFkNDFjMDYwOTI4NDhiZjlhZjM2YjFiNzI2
Li43NjE3YzJlMTdlZGQ0NzgwNGY1ZGY2ODgzMWNjYzMyZDhmODZjMzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Ry
YWNrUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNTEwLDYgKzUxMSw3IEBA
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAK
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nl
c3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmYmRjMjU3NWU0NDgxODVl
NGJjYmM4NDJlNGY3YTU0NDMxM2I0MzkuLjA3OTIzZjg3MTQ3MzdlOWMyODk3YTU1ZDAyYzhjZDRk
YmExZWQ2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA1MSw2ICsyMDUxLDEyIEBACiAJCTAwQjk2NjE4MThFMjVBRTEwMENFMUY4
OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMTc4OUIyM0JBRTI2MTAw
NUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzAxNzg5QzIzQkFFMjYyMDA1RjBGQUEgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTUlN
RVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU3NzIzQzkz
QkI3MDA2ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDcxQkM1NzkyM0M5M0JCOTAwNjgwRDdDIC8qIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQkM1N0IyM0NBNTMyNDAwNjgwRDdDIC8qIFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU3
RDIzQ0E1NkQyMDA2ODBEN0MgLyogVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MUJDNTdFMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVBdWRpb1Ry
YWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdD
IC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb1Ry
YWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyNUVGQUIyMzlBRTM4
NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyNUVGQUQyMzlC
MDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNjksNiArNTE3NSw4IEBACiAJCTA3OTIzMTJGMjM5QjNC
MEMwMDk1OThFMiAvKiBtZWRpYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMDcxQkM1NzkyM0M5M0JCOTAwNjgwRDdDIC8qIEF1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcCAqLywKKwkJCQkwNzFCQzU3NzIzQzkzQkI3MDA2ODBEN0MgLyogQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4
RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDc5MjMxNEUyMzlENUY1
MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKQEAg
LTUxODgsNiArNTE5Niw4IEBACiAJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBtZWRpYSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxQkM1N0Uy
M0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAgKi8sCisJCQkJMDcx
QkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oICovLAogCQkJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtNTIwMiw2ICs1
MjEyLDggQEAKIAkJCQkxREE0MDg5RTIzQTgyNzc4MDA1OEM5NTAgLyogUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIuY3BwICovLAogCQkJCTFEQTQwODk0MjNBODBBM0UwMDU4Qzk1MCAvKiBSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5oICovLAogCQkJCTFEMzJGOEE2MjNBODYwMTkwMEIxRUE2
QSAvKiBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQkwNzFC
QzU3QjIzQ0E1MzI0MDA2ODBEN0MgLyogVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5o
ICovLAorCQkJCTA3MUJDNTdEMjNDQTU2RDIwMDY4MEQ3QyAvKiBUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1lZGlhOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1OGVh
ZDQ3ZGZhMDE5ZWRiNDNiY2Q2MjBlNTI0YTEwNTA3NzYwOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6QXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlJiBwbGF5ZXIsIFRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbmRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBt
X2lkZW5kaWZpZXIoaWRlbmRpZmllcikKK3sKKyAgICB1cGRhdGVDb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjpz
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoZW5hYmxlZCAhPSB0aGlzLT5lbmFi
bGVkKCkpCisgICAgICAgIG1fcGxheWVyLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6QXVkaW9UcmFja1NldEVuYWJsZWQobV9wbGF5ZXIu
aXRlbnRpZmllcigpLCBtX2lkZW5kaWZpZXIsIGVuYWJsZWQpLCAwKTsKKworICAgIEF1ZGlvVHJh
Y2tQcml2YXRlOjpzZXRFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIGlmIChjb25maWd1cmF0aW9uLmlkICE9IG1f
aWQpIHsKKyAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOworICAgICAgICBt
X2lkID0gY29uZmlndXJhdGlvbi5pZDsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkp
CisgICAgICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOworICAgIH0KKworICAgIGlm
IChjb25maWd1cmF0aW9uLmxhYmVsICE9IG1fbGFiZWwpIHsKKyAgICAgICAgYXV0byBjaGFuZ2Vk
ID0gIW1fbGFiZWwuaXNFbXB0eSgpOworICAgICAgICBtX2xhYmVsID0gY29uZmlndXJhdGlvbi5s
YWJlbDsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCisgICAgICAgICAgICBjbGll
bnQoKS0+aWRDaGFuZ2VkKG1fbGFiZWwpOworICAgIH0KKworICAgIGlmIChjb25maWd1cmF0aW9u
Lmxhbmd1YWdlICE9IG1fbGFuZ3VhZ2UpIHsKKyAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1fbGFu
Z3VhZ2UuaXNFbXB0eSgpOworICAgICAgICBtX2xhbmd1YWdlID0gY29uZmlndXJhdGlvbi5sYW5n
dWFnZTsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCisgICAgICAgICAgICBjbGll
bnQoKS0+aWRDaGFuZ2VkKG1fbGFuZ3VhZ2UpOworICAgIH0KKworICAgIG1fdHJhY2tJbmRleCA9
IGNvbmZpZ3VyYXRpb24udHJhY2tJbmRleDsKKyAgICBtX3N0YXJ0VGltZVZhcmlhbmNlID0gY29u
ZmlndXJhdGlvbi5zdGFydFRpbWVWYXJpYW5jZTsKKyAgICBtX2tpbmQgPSBjb25maWd1cmF0aW9u
LmtpbmQ7CisgICAgc2V0RW5hYmxlZChjb25maWd1cmF0aW9uLmVuYWJsZWQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjlmZjFhNjQxYjY1ZTExNTc1Mzc5YmZjMTFi
M2U1M2QxOTRmMjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb1RyYWNrUHJpdmF0ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZSkKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlPiBjcmVhdGUo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlJiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWRlbmRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZp
Z3VyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlKHBsYXllciwgaWRlbmRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkp
OworICAgIH0KKworICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOworCisgICAgdXNpbmcgQXVkaW9UcmFja0tpbmQgPSBXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDsKKyAgICBBdWRpb1RyYWNrS2luZCBraW5kKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9raW5kOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3RyYWNrSW5kZXg7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSYsIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUmIG1fcGxheWVyOworICAgIEF1ZGlvVHJhY2tLaW5kIG1fa2luZCB7IE5vbmUgfTsKKyAgICBB
dG9tU3RyaW5nIG1faWQ7CisgICAgQXRvbVN0cmluZyBtX2xhYmVsOworICAgIEF0b21TdHJpbmcg
bV9sYW5ndWFnZTsKKyAgICBpbnQgbV90cmFja0luZGV4IHsgLTEgfTsKKyAgICBNZWRpYVRpbWUg
bV9zdGFydFRpbWVWYXJpYW5jZSB7IE1lZGlhVGltZTo6emVyb1RpbWUoKSB9OworICAgIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVuZGlmaWVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGNj
OTg1NzMxNDMxMzljMGE1MzUzOTljZGJhYmMyZmEyN2ZhNDk5NjQuLjA4NTQwZTVkYmY2YjNkMmM4
MTIxN2Q5YWNmNDkwODQwY2I5OTBhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgiCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpA
QCAtODYsMTIgKzg3LDExIEBAIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9h
ZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlKQogewotICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1faWQsIHByaXZhdGVN
b2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSksIDApOworICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFy
ZUZvclBsYXliYWNrKG1faWQsIHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwg
cHJlcGFyZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlw
ZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkgewogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJM
JiB1cmwsIGNvCiAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGhhbmRs
ZSk7CiAgICAgfQogCi0gICAgY29ubmVjdGlvbi5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQsIHVybCwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAgICBjb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6TG9hZChtX2lkLCB1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlLCBr
ZXlTeXN0ZW0pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1
cmF0aW9uKSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwogICAgIH0pOwpAQCAtMTI1LDQ5ICsxMjUs
NDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNhbmNlbExvYWQoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6Q2FuY2VsTG9hZChtX2lkKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5jZWxMb2FkKG1faWQpLCAwKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkoKQogewot
ICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZVRvUGxheShtX2lk
KSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpQcmVwYXJlVG9QbGF5KG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnBsYXkoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0g
ZmFsc2U7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5KG1faWQp
LCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OlBsYXkobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGF1c2UoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0gdHJ1ZTsKLSAg
ICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBhdXNlKG1faWQpLCAwKTsKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlBhdXNlKG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiB7Ci0gICAgbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVzZXJ2ZXNQaXRjaChtX2lkLCBwcmVzZXJ2
ZXNQaXRjaCksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlc2VydmVzUGl0Y2gobV9pZCwgcHJlc2VydmVzUGl0
Y2gpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURv
dWJsZShkb3VibGUgdm9sdW1lKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQs
IHZvbHVtZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0
ZWQoYm9vbCBtdXRlZCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OlNldE11dGVkKG1faWQsIG11dGVkKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRNdXRlZChtX2lkLCBtdXRlZCks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZChNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U2V0UHJlbG9hZChtX2lkLCBwcmVsb2FkKSwgMCk7CisgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVs
b2FkKG1faWQsIHByZWxvYWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCBwcml2YXRlTW9kZSkKIHsKLSAgICBtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9p
ZCwgcHJpdmF0ZU1vZGUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9pZCwg
cHJpdmF0ZU1vZGUpLCAwKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0CkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBNZWRpYVRp
bWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgdGltZSkK
IHsKICAgICBtX3NlZWtpbmcgPSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6U2VlayhtX2lkLCB0aW1lKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZWVrKG1faWQsIHRpbWUpLCAw
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9sZXJhbmNl
KGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5j
ZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkKIHsKICAgICBtX3NlZWtpbmcg
PSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2Vla1dpdGhU
b2xlcmFuY2UobV9pZCwgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNl
KSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTZWVrV2l0aFRvbGVyYW5jZShtX2lkLCB0aW1lLCBuZWdhdGl2ZVRvbGVy
YW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpLCAwKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC0zNDEsNDIgKzM0MSw0MiBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkSWdub3JlSW50cmluc2ljU2l6
ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5n
KCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JS
ZW5kZXJpbmcobV9pZCksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwgMCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpTZXRTaXplKG1faWQsIHNpemUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwgc2l6ZSks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShib29s
IHZpc2libGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRW
aXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpc2libGUobV9pZCwgdmlzaWJs
ZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFp
bnRhaW5Bc3BlY3RSYXRpbyhib29sIG1haW50YWluUmF0aW8pCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1faWQs
IG1haW50YWluUmF0aW8pLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8o
bV9pZCwgbWFpbnRhaW5SYXRpbyksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCiB7
Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShtX2lkLCByZWN0KSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSht
X2lkLCByZWN0KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jh
dml0eSBncmF2aXR5KQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShtX2lkLCBncmF2aXR5KSwgMCk7CisgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KG1faWQsIGdyYXZpdHkpLCAwKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkK
IHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVu
ZGVyaW5nU3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1f
aWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVlcChib29s
IGRpc2FibGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRT
aG91bGREaXNhYmxlU2xlZXAobV9pZCwgZGlzYWJsZSksIDApOworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2hvdWxkRGlz
YWJsZVNsZWVwKG1faWQsIGRpc2FibGUpLCAwKTsKIH0KIAogRmxvYXRTaXplIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bmF0dXJhbFNpemUoKSBjb25zdApAQCAtMzg0LDYgKzM4NCwzNCBAQCBG
bG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2FjaGVkU3RhdGUubmF0dXJhbFNpemU7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjphZGRSZW1vdGVBdWRpb1RyYWNrKFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2tzLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKKworICAgIGF1dG8gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6Y3Jl
YXRlKCp0aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX2F1
ZGlvVHJhY2tzLmFkZChpZGVudGlmaWVyLCB0cmFjayk7CisKKyAgICBtX3BsYXllci0+YWRkQXVk
aW9UcmFjaygqdHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVt
b3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQorewor
ICAgIEFTU0VSVChtX2F1ZGlvVHJhY2tzLmNvbnRhaW5zKGlkKSk7CisKKyAgICBpZiAoYXV0byB0
cmFjayA9IG1fYXVkaW9UcmFja3MuZ2V0KGlkKSkgeworICAgICAgICBtX3BsYXllci0+cmVtb3Zl
QXVkaW9UcmFjaygqdHJhY2spOworICAgICAgICBtX2F1ZGlvVHJhY2tzLnJlbW92ZShpZCk7Cisg
ICAgfQorfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3RlQXVkaW9UcmFj
a0NvbmZpZ3VyYXRpb25DaGFuZ2VkKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIEFT
U0VSVChtX2F1ZGlvVHJhY2tzLmNvbnRhaW5zKGlkKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYg
dHJhY2sgPSBtX2F1ZGlvVHJhY2tzLmdldChpZCkpCisgICAgICAgIHRyYWNrLT51cGRhdGVDb25m
aWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCiAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTg0MSw3ICs4NjksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWVzdFJlc291cmNlKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyIHJlbQogICAgIEFTU0VSVCghbV9tZWRpYVJlc291cmNlcy5jb250
YWlucyhyZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcikpOwogICAgIGF1dG8gcmVzb3VyY2Ug
PSBtX21lZGlhUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zKTsKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2Ugb3ducyB0aGUgUGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50Ci0gICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVl
PFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
KSk7CisgICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eT4oY29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyKSk7CiAgICAgbV9tZWRpYVJlc291cmNlcy5hZGQocmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKaW5kZXggNDE5NzVjZjU5NDg5NTA5NGIwNjY0NDRhM2E0ZTEyY2Q0YWQyZmFmZC4uMGUxNDBk
Yjc4OWU5OGFhYjkxOGJlNzQzN2FmNWMwMTExNzEzNDAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJTdGF0
ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+
CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KQEAgLTM5LDYgKzQwLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEF1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlOworc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b247CisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAogICAgIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4KICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKQEAgLTU4LDcgKzYyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2ludmFsaWQgPSB0cnVlOyB9CiAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7
IH0KLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllckl0ZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpdGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlci5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsgfQogCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVD
aGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hh
bmdlZChSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwpAQCAtNzMsNiArNzgsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFz
VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwogICAgIHZv
aWQgc2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplKTsKIAorICAgIHZvaWQgYWRkUmVtb3Rl
QXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZUF1ZGlvVHJhY2tDb25m
aWd1cmF0aW9uQ2hhbmdlZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOworCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2
b2lkIHJlbW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKIApAQCAt
MzExLDYgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBs
YXRmb3JtVGltZVJhbmdlcz4gbV9jYWNoZWRCdWZmZXJlZFRpbWVSYW5nZXM7CiAKICAgICBIYXNo
TWFwPFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlPj4gbV9tZWRpYVJlc291cmNlczsKKyAgICBIYXNoTWFwPFRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZT4+IG1f
YXVkaW9UcmFja3M7CiAKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CiAgICAgZG91YmxlIG1f
cmF0ZSB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA2ZWNiYmVhYmJj
YmMzYTg1MzExMjA4NGUzZjMzNjdmN2M2YzU4NDE5Li4xNmZmMzllYzVkZTdiNDA0ZGQwODdkMjU3
ZjcxMDcxNDFmM2YyY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2MSwxMyAr
MjYxLDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjptdXRlQ2hhbmdlZChNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkCiAgICAgICAgIHBsYXllci0+bXV0ZUNo
YW5nZWQobXV0ZSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0aW1lQ2hh
bmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90
ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
Ojp0aW1lQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1v
dGVNZWRpYVBsYXllclN0YXRlJiYgc3RhdGUpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXll
ciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnRpbWVDaGFuZ2VkKFdURk1v
dmUoc3RhdGUpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmR1cmF0aW9u
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJl
bW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpkdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZCwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmIHN0YXRlKQogewogICAgIGlmIChjb25zdCBhdXRv
JiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKICAgICAgICAgcGxheWVyLT5kdXJhdGlvbkNo
YW5nZWQoV1RGTW92ZShzdGF0ZSkpOwpAQCAtMjg1LDI0ICsyODUsNDIgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OnBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW4KICAgICAgICAgcGxheWVyLT5wbGF5YmFja1N0YXRlQ2hhbmdlZChwYXVzZWQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZW5naW5lRmFpbGVkVG9Mb2Fk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgbG9uZyBwbGF0
Zm9ybUVycm9yQ29kZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjplbmdpbmVGYWls
ZWRUb0xvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgbG9uZyBwbGF0
Zm9ybUVycm9yQ29kZSkKIHsKICAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJz
LmdldChpZCkpCiAgICAgICAgIHBsYXllci0+ZW5naW5lRmFpbGVkVG9Mb2FkKHBsYXRmb3JtRXJy
b3JDb2RlKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3Rlcmlz
dGljQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
Ok1vdmllTG9hZFR5cGUgbG9hZFR5cGUpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1vdmllTG9hZFR5cGUgbG9hZFR5cGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9w
bGF5ZXJzLmdldChpZCkpCiAgICAgICAgIHBsYXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGhh
c0F1ZGlvLCBoYXNWaWRlbywgbG9hZFR5cGUpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6c2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6c2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgV2ViQ29yZTo6RmxvYXRTaXplIG5hdHVyYWxTaXplKQogewogICAgIGlmIChh
dXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnNpemVDaGFu
Z2VkKG5hdHVyYWxTaXplKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmFk
ZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5
ZXJJRCwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoYXV0byBwbGF5
ZXIgPSBtX3BsYXllcnMuZ2V0KHBsYXllcklEKSkKKyAgICAgICAgcGxheWVyLT5hZGRSZW1vdGVB
dWRpb1RyYWNrKHRyYWNrSUQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklELCBUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIHRyYWNrSUQpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChw
bGF5ZXJJRCkpCisgICAgICAgIHBsYXllci0+cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayh0cmFja0lE
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlbW90ZUF1ZGlvVHJhY2tD
b25maWd1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBs
YXllcklELCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIGlmIChhdXRvIHBs
YXllciA9IG1fcGxheWVycy5nZXQocGxheWVySUQpKQorICAgICAgICBwbGF5ZXItPnJlbW90ZUF1
ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZCh0cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlcXVlc3RSZXNvdXJj
ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBv
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQpAQCAtMzI2
LDcgKzM0NCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJl
bmNlcyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYSgpID8gV1RGTW92ZShyZWdpc3RlckVuZ2luZSkgOiBSZW1vdGVNZWRpYVBsYXll
clN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBz
dGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZShN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVBsYXllclN0
YXRlJiYgc3RhdGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkp
CiAgICAgICAgIHBsYXllci0+dXBkYXRlQ2FjaGVkU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUwMjhiNjdkNDlmM2YyNzc5OWVhOGVhY2Q3
MjJkZmViMGI4OS4uYWI5NGRmNzgxZTcyZDJlYTc5NDhiMTRjZDIyNjgyYmQyM2IwOGJhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC00Nyw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOwog
Y2xhc3MgV2ViUHJvY2VzczsKK3N0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
OwogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1
cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC03NywxNiArNzksMTkgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwotICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGRvdWJs
ZSk7Ci0gICAgdm9pZCBtdXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgdGltZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwot
ICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKLSAgICB2b2lkIHJhdGVDaGFu
Z2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgZG91YmxlKTsK
LSAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgYm9vbCk7Ci0gICAgdm9pZCBlbmdpbmVGYWlsZWRUb0xvYWQoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBsb25nKTsKLSAgICB2b2lk
IHVwZGF0ZUNhY2hlZFN0YXRlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKLSAgICB2b2lkIGNoYXJhY3RlcmlzdGlj
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wg
aGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmll
TG9hZFR5cGUpOwotICAgIHZvaWQgc2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFNpemUpOworICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOworICAg
IHZvaWQgbXV0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9v
bCk7CisgICAgdm9pZCB0aW1lQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CisgICAgdm9pZCByYXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBkb3VibGUpOworICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9pZCBlbmdpbmVGYWlsZWRU
b0xvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgbG9uZyk7CisgICAgdm9p
ZCB1cGRhdGVDYWNoZWRTdGF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOworICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOworICAg
IHZvaWQgc2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGFkZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90
ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJh
dGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsK
IAogICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9u
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNl
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggNTRhMDFmOGIzNTIyYTFhMjU2NjFlZWVlZTUyNzkyY2QzNDNkMDEzZS4uMDA4NGFmYzM1
ZDRmN2RkNjI0MTBlMWYyZDQ2NzcxYWUzZTNkNTA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTM3LDYgKzM3LDEwIEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKQogICAgIFNpemVDaGFuZ2Vk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
RmxvYXRTaXplIG5hdHVyYWxTaXplKQogCisgICAgQWRkUmVtb3RlQXVkaW9UcmFjayhXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCisgICAgUmVtb3ZlUmVtb3Rl
QXVkaW9UcmFjayhXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxh
eWVySUQsIFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lEKQorICAg
IFJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFdlYktpdDo6VHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCisKICAgICBSZXF1ZXN0UmVzb3VyY2UoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpM
b2FkT3B0aW9ucyBvcHRpb25zKSAtPiAoKSBBc3luYwogICAgIFJlbW92ZVJlc291cmNlKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggNDZkMTE5
ODc3MmM1MWI4YWQ5MGVmOGExNzEzMjFmZmNlMjkwZmNmOS4uNzk0YzIzOGU5Yjg0MWY4MTc1NDdh
YWEzMDZlY2MwOWM2MTc0YzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAgLTQxLDYgKzQyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgd2VicnRjOjpXZWJLaXRWaWRlb0RlY29kZXIg
Y3JlYXRlVmlkZW9EZWNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDkzZDNh
MjQyNjM5NzBlMDZjYTAyODAzMWI1NGMwYWExNDA2Yjk4MzEuLjA3YjE2N2UwZWVlZTc2ODg3NWIw
MzlkZmE1OWY1ZmQxM2M3NTRlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShRVUlDS19MT09LKQogCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ3NTE4ZjNkODE1Mjg0ZGY0YTgzZjgyYzY3NWU0
YWI3ZGRkMDg5YzguLmEzODRkNzIzNGZlYjYwNDhjYWJiNGVjOWQzMjk3N2NhNWRjMTEzZmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0xMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgYXVkaW8gdHJhY2tzIGZvciBtZWRpYSBm
aWxlcyBpbiB0aGUgR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2MTUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODUxMzIyNz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDEtMTAgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQ29yZV0gRml4IGNyYXNoIGluIG1vZHVs
ZSBsb2FkZXIgZHVlIHRvIGNoYW5nZSBpbiBmcmFnbWVudCByZXNlcnZhdGlvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTUxNjMzZmZhZGIyNDBjYjI3ZGJk
MWQ2NGE0YzMwMGI1MDhkMWVlZS4uNzIwZTZlMzYxYzJlYTFlNGI5MDhmMGUwOTA1NzAxYzliYWE5
ZWZhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMTgs
NiArMjE4LDggQEAgbWVkaWEvcmVzdHJpY3RlZC1hdWRpby1wbGF5YmFjay13aXRoLWRvY3VtZW50
LWdlc3R1cmUuaHRtbCBbIFBhc3MgXQogbWVkaWEvcmVzdHJpY3RlZC1hdWRpby1wbGF5YmFjay13
aXRoLW11bHRpcGxlLXNldHRpbWVvdXRzLmh0bWwgWyBQYXNzIF0KIG1lZGlhL3ZpZGVvLWNvbnRy
b2xzLXZpc2libGUtYXVkaW8tb25seS5odG1sIFsgUGFzcyBdCiBtZWRpYS92aWRlby1wbGF5LWF1
ZGlvLXJlcXVpcmUtdXNlci1nZXN0dXJlLmh0bWwgWyBQYXNzIF0KK21lZGlhL3RyYWNrL2F1ZGlv
LXRyYWNrLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXRyYWNrLWFkZC1yZW1vdmUuaHRtbCBb
IFBhc3MgXQogCiBhY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQuaHRtbCBbIFNraXAgXQogZmFz
dC9ibG9jay9mbG9hdC9saXN0LW1hcmtlci1pcy1mbG9hdC1jcmFzaC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387536</attachid>
            <date>2020-01-13 08:58:21 -0800</date>
            <delta_ts>2020-01-13 14:27:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206152-20200113085820.patch</filename>
            <type>text/plain</type>
            <size>65393</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg2MmMxMDkwMTQ2Y2Fh
NGQ1OGU0ZWJiNmMzODUyZTgzYjE0NWM3Zi4uMmFlOTU5MjhlMjhkMDZmZWY2MmFjNzBjMjA4ZWE3
YjAxZDNhYTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBhdWRp
byB0cmFja3MgZm9yIG1lZGlhIGZpbGVzIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxNTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU4NTEzMjI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IHlvdWVubiBmYWJsZXQu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1bi1za2lwcGVkIGV4aXN0aW5nIHRlc3RzIHRoYXQg
cGFzcyBiZWNhdXNlIG9mIHRoaXMgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQXVkaW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFj
a1ByaXZhdGVCYXNlLmg6CisKIDIwMjAtMDEtMTMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgTEZDIGludGVncmF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDIzNDRkYjRjMGViODNjYzYzODRlNmVmMWQyN2ZhMjAxZDYxNDcyN2Iu
LmIzY2FhZmI5ZDdlOGUxNTJlOTMyNzBhYjcxNWIxNTBlY2NlZjI3NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjMgQEAKKzIwMjAtMDEtMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGF1ZGlvIHRyYWNrcyBmb3IgbWVkaWEgZmlsZXMgaW4g
dGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjE1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg1MTMyMjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgeW91ZW5uIGZhYmxldC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvVHJhY2tQcm94eTo6UmVtb3RlQXVkaW9UcmFja1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6d2lsbFJlbW92ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6ZW5hYmxlZENoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmlkQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5OjpsYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0UmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjphdWRpb1Ry
YWNrU2V0RW5hYmxlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRp
b1RyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YXVkaW9U
cmFja1NldEVuYWJsZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OkF1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnNldEVu
YWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRl
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkF1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YWRkUmVtb3RlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVtb3RlQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3Vy
YXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmVuZ2luZUZhaWxlZFRvTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXplQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6YWRkUmVtb3RlQXVkaW9UcmFjayk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3ZlUmVtb3Rl
QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3Bw
OgorCiAyMDIwLTAxLTEzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIExGQyBpbnRlZ3JhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKaW5k
ZXggNDc2OTM5MzgwZGZhNmZlMjA3NTk4ZDA4MzdlYzE2Mzg3YzkxZjgwZi4uNjIxYmE4NmM4ZGFm
Mjk0N2FjMjQ4ZTg2ZjIwNTBlYWRhZDJiZDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCkBAIC03Niw0ICs3NiwyMSBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjpLaW5kPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQsCisgICAgICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlOjpLaW5kOjpBbHRlcm5hdGl2ZSwKKyAgICAgICAgV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGU6OktpbmQ6OkRlc2NyaXB0aW9uLAorICAgICAgICBXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6S2luZDo6TWFpbiwKKyAgICAgICAgV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6Oktp
bmQ6Ok1haW5EZXNjLAorICAgICAgICBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6
VHJhbnNsYXRpb24sCisgICAgICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kOjpD
b21tZW50YXJ5LAorICAgICAgICBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZDo6Tm9u
ZQorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKaW5kZXgg
ZWQ3OTkzZDhhZGE0NjVhZGYzODYyODQ4NWM0NzcxM2YxNGM2MmJmZC4uNzE0NGE5ZDA1Y2I5NDg4
YmZkODRhYjdhMmEyODBmNTE3YzgyNzg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKSA9IDA7CiB9OwogCi1jbGFzcyBUcmFj
a1ByaXZhdGVCYXNlCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBUcmFja1ByaXZhdGVCYXNlCiAgICAg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhY2tQcml2YXRlQmFzZSwgV1RGOjpEZXN0
cnVjdGlvblRocmVhZDo6TWFpbj4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHBy
aXZhdGUgTG9nZ2VySGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3OGQxMzRjMjZi
YzJlMjhmYzk1ZTEzMGYxNzY4YjZmZmMwMDg1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApAQCAtMCww
ICsxLDk1IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqCisq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVBdWRpb1RyYWNrUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlbW90ZUF1
ZGlvVHJhY2tQcm94eTo6UmVtb3RlQXVkaW9UcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJv
eHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQor
ICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9pZGVudGlmaWVyKGlkKQorICAgICwgbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV90cmFja1By
aXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fdHJhY2tQcml2YXRlLT5zZXRDbGllbnQodGhp
cyk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpBZGRSZW1vdGVBdWRpb1RyYWNrKG1fcGxheWVyLmlkZW5kaWZpZXIo
KSwgbV9pZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkpLCAwKTsKK30KKworVHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbiYgUmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbjsKKworICAgIGNvbmZpZ3VyYXRpb24tPmlkID0gbV90cmFj
a1ByaXZhdGUtPmlkKCk7CisgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0
ZS0+bGFiZWwoKTsKKyAgICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRl
LT5sYW5ndWFnZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJp
dmF0ZS0+dHJhY2tJbmRleCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnN0YXJ0VGltZVZhcmlhbmNl
ID0gbV90cmFja1ByaXZhdGUtPnN0YXJ0VGltZVZhcmlhbmNlKCk7CisgICAgY29uZmlndXJhdGlv
bi0+ZW5hYmxlZCA9IG1fdHJhY2tQcml2YXRlLT5lbmFibGVkKCk7CisgICAgY29uZmlndXJhdGlv
bi0+a2luZCA9IG1fdHJhY2tQcml2YXRlLT5raW5kKCk7CisKKyAgICByZXR1cm4gY29uZmlndXJh
dGlvbi5nZXQoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRp
b25DaGFuZ2VkKCkKK3sKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OlJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9u
Q2hhbmdlZChtX3BsYXllci5pZGVuZGlmaWVyKCksIG1faWRlbnRpZmllciwgY29uZmlndXJhdGlv
bigpKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9UcmFja1Byb3h5Ojp3aWxsUmVtb3ZlKCkK
K3sKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OlJlbW92ZVJlbW90ZUF1ZGlvVHJhY2sobV9wbGF5ZXIuaWRlbmRpZmll
cigpLCBtX2lkZW50aWZpZXIpLCAwKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6
OmVuYWJsZWRDaGFuZ2VkKGJvb2wpCit7CisgICAgY29uZmlndXJhdGlvbkNoYW5nZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JikKK3sKKyAgICBjb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlv
VHJhY2tQcm94eTo6bGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKQoreworICAgIGNvbmZp
Z3VyYXRpb25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9UcmFja1Byb3h5OjpsYW5n
dWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpCit7CisgICAgY29uZmlndXJhdGlvbkNoYW5n
ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9UcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9UcmFja1Byb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM2YzQ1N2Y5NDY5MjEzYWM4YzhmM2Vl
M2ViNDQ5M2I5ZDk5YjJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuaApAQCAtMCwwICsxLDc2IEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgor
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqCisqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
KgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9UcmFja1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYWNr
QmFzZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUF1ZGlvVHJhY2tQcm94eSBmaW5hbAorICAg
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJpdmF0ZUJhc2UsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQ
cm94eT4gY3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBB
dWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9UcmFja1Byb3h5KHBsYXllciwgaWQsIFdURk1vdmUoY29u
bmVjdGlvbiksIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKworICAgIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfTsK
KworICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90cmFja1ByaXZhdGUtPnNl
dEVuYWJsZWQoZW5hYmxlZCk7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVBdWRpb1RyYWNrUHJv
eHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIEF1ZGlvVHJhY2tQcml2YXRlJik7CisgICAgflJlbW90
ZUF1ZGlvVHJhY2tQcm94eSgpID0gZGVmYXVsdDsKKworICAgIC8vIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50CisgICAgdm9pZCBlbmFibGVkQ2hhbmdlZChib29sKSBmaW5hbDsKKworICAgIC8vIFRy
YWNrUHJpdmF0ZUJhc2VDbGllbnQKKyAgICB2b2lkIGlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JikgZmluYWw7CisgICAgdm9pZCBsYWJlbENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKyAg
ICB2b2lkIHdpbGxSZW1vdmUoKSBmaW5hbDsKKworICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKTsKKyAgICB2b2lkIGNvbmZpZ3VyYXRpb25DaGFuZ2Vk
KCk7CisKKyAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5JiBtX3BsYXllcjsKKyAgICBUcmFja1By
aXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOworICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZT4g
bV90cmFja1ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IDQ3OTMzMDk5MGMzOGYwNmNiODYwY2MzOGY1MzFjZjMwZTMwZDJlZWYuLjBmZTQ2MzZhNzRhODJi
NjY4ZTkwNjYyZDRmYWU4OTAzZmVkOGY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcApAQCAtMzIzLDEyICszMjMsMTggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW8KICAgICAg
ICAgcGxheWVyLT5zZXRTaG91bGREaXNhYmxlU2xlZXAoZGlzYWJsZSk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFJhdGUoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgcmF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OnNldFJhdGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBpZCwgZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVz
LmdldChpZCkpCiAgICAgICAgIHBsYXllci0+c2V0UmF0ZShyYXRlKTsKIH0KIAordm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6YXVkaW9UcmFja1NldEVuYWJsZWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJRCwgVHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciB0cmFja0lELCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0g
bV9wcm94aWVzLmdldChwbGF5ZXJJRCkpCisgICAgICAgIHBsYXllci0+YXVkaW9UcmFja1NldEVu
YWJsZWQodHJhY2tJRCwgZW5hYmxlZCk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
IGNvbnN0IExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGQzN2NmMThhYTMyNzkyOGI0
MWYyZDBhNWYzYzgwZjMwZmYxZTFmMWUuLmJlMmM3NGRkNDNhNmM1Mzg3NTM0MzllNGQ1OWI5Mzgy
ZTkxNjc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNp
bmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIApAQCAtMTA5
LDcgKzExMCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlZpZGVvR3Jhdml0eSk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRl
Q2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKICAgICB2
b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBib29sKTsKLSAgICB2b2lkIHNldFJhdGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOworICAgIHZvaWQgc2V0UmF0ZShNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOworCisgICAgdm9pZCBhdWRpb1RyYWNrU2V0
RW5hYmxlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBib29sKTsKIAogICAgIEhhc2hNYXA8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+
PiBtX3Byb3hpZXM7CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGIxZTE0MjBiYTljMTEwODkyZDk4OGM1NjlhZjIwZTdlYWM3NGI5YjAuLjlm
MjVkMWI4MjZkMzYzOTVmZjRhODU5NDRlZGM0ZWI3ZmUxZGUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTY0LDYgKzY0LDggQEAgbWVzc2Fn
ZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAg
QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIGNhbkJlQWNjZWxlcmF0ZWQpCiAgICAgU2V0U2hv
dWxkRGlzYWJsZVNsZWVwKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgYm9vbCBkaXNhYmxlKQogICAgIFNldFJhdGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgcmF0ZSkKKworICAgIEF1ZGlvVHJhY2tTZXRF
bmFibGVkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJ
RCwgV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIGJvb2wgZW5h
YmxlZCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYTE0MTdhMjhhNjUwYjBk
MmZlMWJjNWNhMzJjZGJjZDBjMGI5ZjUxNy4uZmNmODQxMDkxNThjMzY5ZDg1OGM4MmIzMDkyYTI0
YTcwZWExMThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzY0LDYgKzM2NCwyOSBAQCBib29s
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVy
YXRlZCgpCiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZDsKIH0KIAordm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soV2Vi
Q29yZTo6QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQoreworICAgIG1fYXVkaW9UcmFja3Muc2V0
KCZ0cmFjaywgUmVtb3RlQXVkaW9UcmFja1Byb3h5OjpjcmVhdGUoKnRoaXMsIFRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY29w
eVJlZigpLCB0cmFjaykpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYgdHJh
Y2spCit7CisgICAgQVNTRVJUKG1fYXVkaW9UcmFja3MuY29udGFpbnMoJnRyYWNrKSk7CisgICAg
bV9hdWRpb1RyYWNrcy5yZW1vdmUoJnRyYWNrKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjphdWRpb1RyYWNrU2V0RW5hYmxlZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IHRyYWNrSUQsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRp
b1RyYWNrcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAodHJhY2stPmlkZW50aWZpZXIoKSA9PSB0
cmFja0lEKSB7CisgICAgICAgICAgICB0cmFjay0+c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCiAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZAogdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCkKIHsKQEAgLTQ5MiwxMSAr
NTE1LDYgQEAgYm9vbCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpkb2VzSGF2ZUF0dHJpYnV0ZShj
b25zdCBBdG9tU3RyaW5nJiwgQXRvbVN0cmluZyopIGMKIH0KIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRp
b1RyYWNrKEF1ZGlvVHJhY2tQcml2YXRlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNr
KEluYmFuZFRleHRUcmFja1ByaXZhdGUmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC01
MDcsMTEgKzUyNSw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJE
aWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJikKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRGlkUmVtb3Zl
QXVkaW9UcmFjayhBdWRpb1RyYWNrUHJpdmF0ZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckRpZFJlbW92ZVRl
eHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmgKaW5kZXggZmNjMzY2NGMyNDRlMzI4ZDZkY2FkZmFkYzE5ODgyZTMyNjNm
ZWMyZS4uMDliM2M3OGFjMGI0ZTBmNDQ4MDQ0YWM5MmJiNTE3ZTYxMTM2NTQ3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oCkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBdWRpb1Ry
YWNrUHJpdmF0ZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OwpAQCAtNTUsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYsIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJik7CiAgICAgflJlbW90ZU1lZGlhUGxheWVyUHJveHko
KTsKIAorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbmRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZv
aWQgZ2V0Q29uZmlndXJhdGlvbihSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mKTsKQEAg
LTg5LDYgKzk0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJv
b2wpOwogICAgIHZvaWQgc2V0UmF0ZShkb3VibGUpOwogCisgICAgdm9pZCBhdWRpb1RyYWNrU2V0
RW5hYmxlZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKKwogICAgIFJlZjxX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpM
b2FkT3B0aW9ucyk7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllcik7CiAKQEAgLTEwNyw2ICsxMTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVk
aWFQbGF5ZXJTZWVrYWJsZVRpbWVSYW5nZXNDaGFuZ2VkKCkgZmluYWw7CiAgICAgYm9vbCBtZWRp
YVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSBmaW5hbDsKIAorICAgIHZvaWQgbWVk
aWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJikgZmlu
YWw7CisgICAgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGUmKSBmaW5hbDsKKwogICAgIC8vIE5vdCBpbXBsZW1lbnRlZAogICAgIHZv
aWQgbWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpIGZpbmFsOwogICAgIHZvaWQgbWVk
aWFQbGF5ZXJTaXplQ2hhbmdlZCgpIGZpbmFsOwpAQCAtMTQ3LDEwICsxNTcsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgp
IGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soV2Vi
Q29yZTo6QXVkaW9UcmFja1ByaXZhdGUmKSBmaW5hbDsKICAgICB2b2lkIG1lZGlhUGxheWVyRGlk
QWRkVGV4dFRyYWNrKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGUmKSBmaW5hbDsKICAg
ICB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJp
dmF0ZSYpIGZpbmFsOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFdl
YkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJikgZmluYWw7CiAgICAgdm9pZCBtZWRpYVBsYXllckRp
ZFJlbW92ZVRleHRUcmFjayhXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlJikgZmluYWw7
CiAgICAgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2soV2ViQ29yZTo6VmlkZW9U
cmFja1ByaXZhdGUmKSBmaW5hbDsKIApAQCAtMTg2LDYgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAg
Y29uc3Qgdm9pZCogbWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4obV9jb25maWd1cmF0aW9uLmxvZ0lkZW50aWZpZXIpOyB9CiAj
ZW5kaWYKIAorICAgIEhhc2hNYXA8QXVkaW9UcmFja1ByaXZhdGUqLCBSZWY8UmVtb3RlQXVkaW9U
cmFja1Byb3h5Pj4gbV9hdWRpb1RyYWNrczsKICAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIG1faWQ7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4
dGVuc2lvbjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX3dlYlByb2Nlc3NDb25uZWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyNWM1ZGZlNjBj
OWYwNzdiOTFmOGU2MWNkNTUxODQ2MWFkYjBlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgK
QEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKKyAg
ICBBdG9tU3RyaW5nIGlkOworICAgIEF0b21TdHJpbmcgbGFiZWw7CisgICAgQXRvbVN0cmluZyBs
YW5ndWFnZTsKKyAgICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UgeyBNZWRpYVRpbWU6Onpl
cm9UaW1lKCkgfTsKKyAgICBpbnQgdHJhY2tJbmRleDsKKyAgICBib29sIGVuYWJsZWQ7CisgICAg
V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQga2luZCB7IFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlOjpLaW5kOjpOb25lIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBl
bmNvZGVyIDw8IGlkOworICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOworICAgICAgICBlbmNvZGVy
IDw8IGxhbmd1YWdlOworICAgICAgICBlbmNvZGVyIDw8IHN0YXJ0VGltZVZhcmlhbmNlOworICAg
ICAgICBlbmNvZGVyIDw8IHRyYWNrSW5kZXg7CisgICAgICAgIGVuY29kZXIgPDwgZW5hYmxlZDsK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGtpbmQpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPEF0b21TdHJpbmc+IGlkOworICAgICAgICBkZWNvZGVyID4+IGlkOworICAgICAgICBp
ZiAoIWlkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKKyAgICAgICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICAg
ICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CisgICAgICAgIGRlY29kZXIgPj4gbGFu
Z3VhZ2U7CisgICAgICAgIGlmICghbGFuZ3VhZ2UpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7
CisgICAgICAgIGRlY29kZXIgPj4gc3RhcnRUaW1lVmFyaWFuY2U7CisgICAgICAgIGlmICghc3Rh
cnRUaW1lVmFyaWFuY2UpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIE9wdGlvbmFsPGludD4gdHJhY2tJbmRleDsKKyAgICAgICAgZGVjb2RlciA+PiB0cmFja0lu
ZGV4OworICAgICAgICBpZiAoIXRyYWNrSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgICAgIGRlY29k
ZXIgPj4gZW5hYmxlZDsKKyAgICAgICAgaWYgKCFlbmFibGVkKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6S2luZD4ga2luZDsKKyAgICAgICAgZGVjb2RlciA+PiBraW5kOworICAgICAgICBpZiAo
IWtpbmQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVy
biB7eworICAgICAgICAgICAgV1RGTW92ZSgqaWQpLAorICAgICAgICAgICAgV1RGTW92ZSgqbGFi
ZWwpLAorICAgICAgICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2UpLAorICAgICAgICAgICAgV1RGTW92
ZSgqc3RhcnRUaW1lVmFyaWFuY2UpLAorICAgICAgICAgICAgKnRyYWNrSW5kZXgsCisgICAgICAg
ICAgICAqZW5hYmxlZCwKKyAgICAgICAgICAgICpraW5kLAorICAgICAgICB9fTsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40OWE1N2M2MjAwMjFiNGVlZmIzODlkNTBiY2M5OTU1NTA3ODVlYjk2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UgLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
clR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBjZWZmM2MyNjA1YTFmODVkNWQ5OTBhNjRj
M2YyODIwM2QxMTUyMzIwLi43ZmQzM2UwZWY5ZDJkNzZmMjI2NDBhYjI4NDBhM2JmMzM4MTMyZjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIyNyw2ICsy
MjcsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCiAgICAgICAgICdXZWJL
aXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDMwNmNkMWU2OTM1NjYxYWQ0
MWMwNjA5Mjg0OGJmOWFmMzZiMWI3MjYuLjc2MTdjMmUxN2VkZDQ3ODA0ZjVkZjY4ODMxY2NjMzJk
OGY4NmMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCitHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwCkBAIC01MTAsNiArNTExLDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11
bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYWZiZGMyNTc1ZTQ0ODE4NWU0YmNiYzg0MmU0ZjdhNTQ0MzEzYjQzOS4uMDc5MjNmODcx
NDczN2U5YzI4OTdhNTVkMDJjOGNkNGRiYTFlZDZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDUxLDYgKzIwNTEsMTIgQEAKIAkJ
MDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzAxNzg5QjIzQkFFMjYxMDA1RjBGQUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVD
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDE3ODlDMjNCQUUyNjIw
MDVGMEZBQSAvKiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MUJDNTc3MjNDOTNCQjcwMDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU3OTIzQzkzQkI5MDA2ODBEN0MgLyogQXVkaW9U
cmFja1ByaXZhdGVSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFCQzU3QjIzQ0E1
MzI0MDA2ODBEN0MgLyogVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MUJDNTdEMjNDQTU2RDIwMDY4MEQ3QyAvKiBUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQkM1N0UyM0NBNURCMTAw
NjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjVFRkFDMjM5QUUz
ODUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE2OSw2ICs1MTc1
LDggQEAKIAkJMDc5MjMxMkYyMzlCM0IwQzAwOTU5OEUyIC8qIG1lZGlhICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzFCQzU3OTIzQzkzQkI5MDA2ODBE
N0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwICovLAorCQkJCTA3MUJDNTc3MjNDOTNC
QjcwMDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3OTIzMTMx
MjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJ
CTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAq
LywKIAkJCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oICovLApAQCAtNTE4OCw2ICs1MTk2LDggQEAKIAkJMDdDNzVDMTcyMzk5
QTNEQjAwODhFNjVCIC8qIG1lZGlhICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFj
a1Byb3h5LmNwcCAqLywKKwkJCQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVk
aW9UcmFja1Byb3h5LmggKi8sCiAJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBB
NTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZB
QjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCkBAIC01MjAyLDYgKzUyMTIsOCBAQAogCQkJCTFEQTQwODlFMjNBODI3NzgwMDU4
Qzk1MCAvKiBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAgKi8sCiAJCQkJMURBNDA4OTQy
M0E4MEEzRTAwNThDOTUwIC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggKi8sCiAJCQkJ
MUQzMkY4QTYyM0E4NjAxOTAwQjFFQTZBIC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluICovLAorCQkJCTA3MUJDNTdCMjNDQTUzMjQwMDY4MEQ3QyAvKiBUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uLmggKi8sCisJCQkJMDcxQkM1N0QyM0NBNTZEMjAwNjgwRDdD
IC8qIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
bWVkaWE7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3Rl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lY2Y3ZmRmOWJiZWEyY2VkMGYwNDYxOWY2YzM2ODY1ZjllMDM0NzU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9B
dWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitBdWRpb1RyYWNrUHJpdmF0ZVJlbW90
ZTo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlJiBwbGF5
ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbmRpZmllciwgVHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX3BsYXllcihwbGF5
ZXIpCisgICAgLCBtX2lkZW5kaWZpZXIoaWRlbmRpZmllcikKK3sKKyAgICB1cGRhdGVDb25maWd1
cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoZW5hYmxlZCAh
PSB0aGlzLT5lbmFibGVkKCkpCisgICAgICAgIG1fcGxheWVyLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6QXVkaW9UcmFja1NldEVuYWJs
ZWQobV9wbGF5ZXIuaXRlbnRpZmllcigpLCBtX2lkZW5kaWZpZXIsIGVuYWJsZWQpLCAwKTsKKwor
ICAgIEF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIEF1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIGlmIChjb25maWd1cmF0
aW9uLmlkICE9IG1faWQpIHsKKyAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgp
OworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5pZDsKKyAgICAgICAgaWYgKGNoYW5nZWQg
JiYgY2xpZW50KCkpCisgICAgICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOworICAg
IH0KKworICAgIGlmIChjb25maWd1cmF0aW9uLmxhYmVsICE9IG1fbGFiZWwpIHsKKyAgICAgICAg
YXV0byBjaGFuZ2VkID0gIW1fbGFiZWwuaXNFbXB0eSgpOworICAgICAgICBtX2xhYmVsID0gY29u
ZmlndXJhdGlvbi5sYWJlbDsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCisgICAg
ICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1fbGFiZWwpOworICAgIH0KKworICAgIGlmIChj
b25maWd1cmF0aW9uLmxhbmd1YWdlICE9IG1fbGFuZ3VhZ2UpIHsKKyAgICAgICAgYXV0byBjaGFu
Z2VkID0gIW1fbGFuZ3VhZ2UuaXNFbXB0eSgpOworICAgICAgICBtX2xhbmd1YWdlID0gY29uZmln
dXJhdGlvbi5sYW5ndWFnZTsKKyAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCisgICAg
ICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1fbGFuZ3VhZ2UpOworICAgIH0KKworICAgIG1f
dHJhY2tJbmRleCA9IGNvbmZpZ3VyYXRpb24udHJhY2tJbmRleDsKKyAgICBtX3N0YXJ0VGltZVZh
cmlhbmNlID0gY29uZmlndXJhdGlvbi5zdGFydFRpbWVWYXJpYW5jZTsKKyAgICBtX2tpbmQgPSBj
b25maWd1cmF0aW9uLmtpbmQ7CisgICAgc2V0RW5hYmxlZChjb25maWd1cmF0aW9uLmVuYWJsZWQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVk
aW9UcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGUxYTY3YjdjNTkyZjkx
MjNhZjIwMzMxMDRlNDIzNDYyNGMwOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyoKKyog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2YXRl
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbjsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKQorcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXVkaW9U
cmFja1ByaXZhdGVSZW1vdGU+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGUmIHBsYXll
ciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVuZGlmaWVyLCBUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKHBsYXllciwgaWRlbmRpZmll
ciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworICAgIH0KKworICAgIHZvaWQgdXBkYXRlQ29u
ZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOworCitwcml2YXRl
OgorICAgIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSYs
IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3Vy
YXRpb24mJik7CisKKyAgICB1c2luZyBBdWRpb1RyYWNrS2luZCA9IFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlOjpLaW5kOworICAgIEF1ZGlvVHJhY2tLaW5kIGtpbmQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2tpbmQ7IH0KKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xhYmVsOyB9CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbGFuZ3VhZ2U7IH0KKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fdHJhY2tJbmRleDsgfQorICAgIHZvaWQgc2V0RW5hYmxlZChib29sKSBmaW5hbDsKKworICAg
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSYgbV9wbGF5ZXI7CisgICAgQXVkaW9UcmFja0tpbmQg
bV9raW5kIHsgTm9uZSB9OworICAgIEF0b21TdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5nIG1f
bGFiZWw7CisgICAgQXRvbVN0cmluZyBtX2xhbmd1YWdlOworICAgIGludCBtX3RyYWNrSW5kZXgg
eyAtMSB9OworICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6
ZXJvVGltZSgpIH07CisgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW5kaWZp
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggY2M5ODU3MzE0MzEzOWMwYTUzNTM5OWNkYmFiYzJmYTI3ZmE0
OTk2NC4uYjdiZjRhNmUzMzM4NTAwN2JkODliOWU1YzdiNjVjNmUwODlhNDhlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKIAorI2luY2x1
ZGUgIkF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC04NiwxMiArODcsMTEgQEAgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9y
UGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVw
YXJlKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHBy
ZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCiB7Ci0gICAgYXV0byYgY29ubmVjdGlvbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgp
KSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KICAgICAgICAgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKICAgICB9CiAKLSAgICBjb25uZWN0aW9uLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Okxv
YWQobV9pZCwgdXJsLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSwga2V5U3lz
dGVtKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlv
bikgeworICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQsIHVybCwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgY29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQog
ICAgICAgICAgICAgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CiAg
ICAgfSk7CkBAIC0xMjUsNDkgKzEyNSw0OSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCgpCiB7Ci0gICAgbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5jZWxMb2FkKG1faWQpLCAwKTsKKyAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkNhbmNlbExvYWQobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6cHJlcGFyZVRvUGxheSgpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpQcmVwYXJlVG9QbGF5KG1faWQpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVUb1BsYXkobV9pZCks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSgpCiB7CiAgICAg
bV9jYWNoZWRTdGF0ZS5wYXVzZWQgPSBmYWxzZTsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OlBsYXkobV9pZCksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UGxheShtX2lkKSwgMCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVzZSgpCiB7CiAgICAgbV9jYWNoZWRT
dGF0ZS5wYXVzZWQgPSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGF1c2UobV9pZCksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UGF1c2UobV9pZCksIDApOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQ
aXRjaCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByZXNl
cnZlc1BpdGNoKG1faWQsIHByZXNlcnZlc1BpdGNoKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVzZXJ2ZXNQ
aXRjaChtX2lkLCBwcmVzZXJ2ZXNQaXRjaCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0Vm9sdW1lRG91YmxlKGRvdWJsZSB2b2x1bWUpCiB7Ci0gICAgbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWb2x1bWUobV9pZCwgdm9sdW1lKSwgMCk7
CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpTZXRWb2x1bWUobV9pZCwgdm9sdW1lKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRNdXRlZChib29sIG11dGVkKQogewotICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0TXV0ZWQobV9pZCwgbXV0ZWQpLCAwKTsKKyAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OlNldE11dGVkKG1faWQsIG11dGVkKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiB7Ci0gICAg
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVsb2FkKG1faWQsIHByZWxv
YWQpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlNldFByZWxvYWQobV9pZCwgcHJlbG9hZCksIDApOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sIHBy
aXZhdGVNb2RlKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0
UHJpdmF0ZUJyb3dzaW5nTW9kZShtX2lkLCBwcml2YXRlTW9kZSksIDApOworICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShtX2lkLCBwcml2YXRlTW9kZSksIDApOwogfQogCiBNZWRpYVRpbWUg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKQEAgLTE3
OCwxMyArMTc4LDEzIEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmN1cnJl
bnRNZWRpYVRpbWUoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWso
Y29uc3QgTWVkaWFUaW1lJiB0aW1lKQogewogICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9t
YW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZWVrKG1faWQsIHRpbWUpLCAwKTsKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlNlZWsobV9pZCwgdGltZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBNZWRp
YVRpbWUmIG5lZ2F0aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJh
bmNlKQogewogICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTZWVrV2l0aFRvbGVyYW5jZShtX2lkLCB0aW1lLCBuZWdhdGl2ZVRvbGVy
YW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWtXaXRoVG9sZXJhbmNlKG1f
aWQsIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSksIDApOwogfQog
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29u
c3QKQEAgLTM0MSw0MiArMzQxLDQyIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwgMCk7CisgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJl
Rm9yUmVuZGVyaW5nKG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwgc2l6ZSksIDApOworICAg
IGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6U2V0U2l6ZShtX2lkLCBzaXplKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpc2libGUobV9pZCwgdmlzaWJsZSksIDApOworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U2V0VmlzaWJsZShtX2lkLCB2aXNpYmxlKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wgbWFpbnRhaW5SYXRp
bykKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZE1h
aW50YWluQXNwZWN0UmF0aW8obV9pZCwgbWFpbnRhaW5SYXRpbyksIDApOworICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2hv
dWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhtX2lkLCBtYWludGFpblJhdGlvKSwgMCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQsIHJlY3QpLCAwKTsKKyAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQsIHJlY3QpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KG1faWQsIGdy
YXZpdHkpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkobV9pZCwgZ3Jhdml0
eSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXIt
PnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSksIDApOworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6QWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRS
ZW5kZXJpbmcoKSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZGlzYWJsZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZERpc2FibGVTbGVlcChtX2lkLCBkaXNhYmxlKSwg
MCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpTZXRTaG91bGREaXNhYmxlU2xlZXAobV9pZCwgZGlzYWJsZSksIDApOwogfQog
CiBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0
CkBAIC0zODQsNiArMzg0LDM0IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Om5hdHVyYWxTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRTdGF0ZS5uYXR1cmFsU2l6
ZTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZFJlbW90ZUF1ZGlvVHJh
Y2soVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fYXVk
aW9UcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGlmIChtX2F1ZGlvVHJhY2tzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRyYWNrID0g
QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2sobV9hdWRpb1Ry
YWNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZSh0cmFjaykpLml0ZXJhdG9yLT52YWx1ZSk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZW1vdmVSZW1vdGVBdWRpb1RyYWNr
KFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fYXVkaW9U
cmFja3MuY29udGFpbnMoaWQpKTsKKworICAgIGlmIChhdXRvKiB0cmFjayA9IG1fYXVkaW9UcmFj
a3MuZ2V0KGlkKSkgeworICAgICAgICBtX3BsYXllci0+cmVtb3ZlQXVkaW9UcmFjaygqdHJhY2sp
OworICAgICAgICBtX2F1ZGlvVHJhY2tzLnJlbW92ZShpZCk7CisgICAgfQorfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFu
Z2VkKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFRyYWNrUHJpdmF0ZVJlbW90ZUNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIEFTU0VSVChtX2F1ZGlvVHJhY2tz
LmNvbnRhaW5zKGlkKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYgdHJhY2sgPSBtX2F1ZGlvVHJh
Y2tzLmdldChpZCkpCisgICAgICAgIHRyYWNrLT51cGRhdGVDb25maWd1cmF0aW9uKFdURk1vdmUo
Y29uZmlndXJhdGlvbikpOworfQorCiAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZAogCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKQEAgLTg0MSw3ICs4NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cmVxdWVzdFJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
IHJlbQogICAgIEFTU0VSVCghbV9tZWRpYVJlc291cmNlcy5jb250YWlucyhyZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllcikpOwogICAgIGF1dG8gcmVzb3VyY2UgPSBtX21lZGlhUmVzb3VyY2VM
b2FkZXItPnJlcXVlc3RSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICAv
LyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2Ugb3ducyB0aGUgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xp
ZW50Ci0gICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLCAq
cmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKSk7CisgICAgcmVzb3VyY2Ut
PnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eT4oY29ubmVjdGlv
bigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKSk7CiAgICAgbV9t
ZWRpYVJlc291cmNlcy5hZGQocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUo
cmVzb3VyY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNDE5NzVjZjU5
NDg5NTA5NGIwNjY0NDRhM2E0ZTEyY2Q0YWQyZmFmZC4uOGM0YTA4NjFhNmEwNjU1ZTY5ZTljMmE2
MTAzOTZjNjU1Nzk5MjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Z2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KQEAgLTM5LDYgKzQwLDkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3Rl
Oworc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CisKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAogICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UKQEAgLTU4LDcgKzYyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBp
bnZhbGlkYXRlKCkgeyBtX2ludmFsaWQgPSB0cnVlOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7IH0KLSAgICBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllckl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpdGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKTsgfQogCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFJlbW90ZU1lZGlh
UGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChSZW1vdGVNZWRpYVBs
YXllclN0YXRlJiYpOwpAQCAtNzMsNiArNzgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2hhcmFj
dGVyaXN0aWNDaGFuZ2VkKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwogICAgIHZvaWQgc2l6ZUNoYW5nZWQoV2Vi
Q29yZTo6RmxvYXRTaXplKTsKIAorICAgIHZvaWQgYWRkUmVtb3RlQXVkaW9UcmFjayhUcmFja1By
aXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYp
OworICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uJiYpOworCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNl
KFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKIApAQCAtMzExLDYgKzMyMCw3IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcz4g
bV9jYWNoZWRCdWZmZXJlZFRpbWVSYW5nZXM7CiAKICAgICBIYXNoTWFwPFJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPj4g
bV9tZWRpYVJlc291cmNlczsKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZT4+IG1fYXVkaW9UcmFja3M7CiAKICAgICBk
b3VibGUgbV92b2x1bWUgeyAxIH07CiAgICAgZG91YmxlIG1fcmF0ZSB7IDEgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA2ZWNiYmVhYmJjYmMzYTg1MzExMjA4NGUzZjMzNjdm
N2M2YzU4NDE5Li43ZDVkMzc3M2UwZjRiYjUzMmU2Y2M2M2MxNGQ5MDI5Y2VlZmFmNWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2MSwxMyArMjYxLDEzIEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjptdXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGlkCiAgICAgICAgIHBsYXllci0+bXV0ZUNoYW5nZWQobXV0ZSk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0aW1lQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBz
dGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0aW1lQ2hhbmdlZChNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYg
c3RhdGUpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQp
KQogICAgICAgICBwbGF5ZXItPnRpbWVDaGFuZ2VkKFdURk1vdmUoc3RhdGUpKTsKIH0KIAotdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUm
JiBzdGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZSYmIHN0YXRlKQogewogICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMu
Z2V0KGlkKSkKICAgICAgICAgcGxheWVyLT5kdXJhdGlvbkNoYW5nZWQoV1RGTW92ZShzdGF0ZSkp
OwpAQCAtMjg1LDI0ICsyODUsNDIgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnBs
YXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW4KICAgICAgICAg
cGxheWVyLT5wbGF5YmFja1N0YXRlQ2hhbmdlZChwYXVzZWQpOwogfQogCi12b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6ZW5naW5lRmFpbGVkVG9Mb2FkKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSkKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjplbmdpbmVGYWlsZWRUb0xvYWQoTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSkKIHsKICAg
ICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCiAgICAgICAgIHBs
YXllci0+ZW5naW5lRmFpbGVkVG9Mb2FkKHBsYXRmb3JtRXJyb3JDb2RlKTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3RlcmlzdGljQ2hhbmdlZChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbG9hZFR5
cGUpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJv
b2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbG9h
ZFR5cGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCiAgICAg
ICAgIHBsYXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGhhc0F1ZGlvLCBoYXNWaWRlbywgbG9h
ZFR5cGUpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c2l6ZUNoYW5nZWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpG
bG9hdFNpemUgbmF0dXJhbFNpemUpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c2l6
ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
RmxvYXRTaXplIG5hdHVyYWxTaXplKQogewogICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVy
cy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnNpemVDaGFuZ2VkKG5hdHVyYWxTaXplKTsKIH0K
IAordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmFkZFJlbW90ZUF1ZGlvVHJhY2soTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJRCwgVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciB0cmFja0lELCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYg
Y29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJz
LmdldChwbGF5ZXJJRCkpCisgICAgICAgIHBsYXllci0+YWRkUmVtb3RlQXVkaW9UcmFjayh0cmFj
a0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnJlbW92ZVJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBwbGF5ZXJJRCwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lE
KQoreworICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KHBsYXllcklE
KSkKKyAgICAgICAgcGxheWVyLT5yZW1vdmVSZW1vdGVBdWRpb1RyYWNrKHRyYWNrSUQpOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3Vy
YXRpb25DaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQs
IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgVHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKGNvbnN0IGF1dG8mIHBs
YXllciA9IG1fcGxheWVycy5nZXQocGxheWVySUQpKQorICAgICAgICBwbGF5ZXItPnJlbW90ZUF1
ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZCh0cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlcXVlc3RSZXNvdXJj
ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBv
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQpAQCAtMzI2
LDcgKzM0NCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJl
bmNlcyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYSgpID8gV1RGTW92ZShyZWdpc3RlckVuZ2luZSkgOiBSZW1vdGVNZWRpYVBsYXll
clN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBz
dGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVDYWNoZWRTdGF0ZShN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVBsYXllclN0
YXRlJiYgc3RhdGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkp
CiAgICAgICAgIHBsYXllci0+dXBkYXRlQ2FjaGVkU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUwMjhiNjdkNDlmM2YyNzc5OWVhOGVhY2Q3
MjJkZmViMGI4OS4uYWI5NGRmNzgxZTcyZDJlYTc5NDhiMTRjZDIyNjgyYmQyM2IwOGJhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC00Nyw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOwog
Y2xhc3MgV2ViUHJvY2VzczsKK3N0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
OwogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1
cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC03NywxNiArNzksMTkgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwotICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGRvdWJs
ZSk7Ci0gICAgdm9pZCBtdXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgdGltZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwot
ICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKLSAgICB2b2lkIHJhdGVDaGFu
Z2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgZG91YmxlKTsK
LSAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgYm9vbCk7Ci0gICAgdm9pZCBlbmdpbmVGYWlsZWRUb0xvYWQoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBsb25nKTsKLSAgICB2b2lk
IHVwZGF0ZUNhY2hlZFN0YXRlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKLSAgICB2b2lkIGNoYXJhY3RlcmlzdGlj
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wg
aGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmll
TG9hZFR5cGUpOwotICAgIHZvaWQgc2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFNpemUpOworICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOworICAg
IHZvaWQgbXV0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9v
bCk7CisgICAgdm9pZCB0aW1lQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CisgICAgdm9pZCByYXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBkb3VibGUpOworICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9pZCBlbmdpbmVGYWlsZWRU
b0xvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgbG9uZyk7CisgICAgdm9p
ZCB1cGRhdGVDYWNoZWRTdGF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOworICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOworICAg
IHZvaWQgc2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGFkZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90
ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJh
dGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsK
IAogICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9u
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNl
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggNTRhMDFmOGIzNTIyYTFhMjU2NjFlZWVlZTUyNzkyY2QzNDNkMDEzZS4uMDA4NGFmYzM1
ZDRmN2RkNjI0MTBlMWYyZDQ2NzcxYWUzZTNkNTA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTM3LDYgKzM3LDEwIEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKQogICAgIFNpemVDaGFuZ2Vk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
RmxvYXRTaXplIG5hdHVyYWxTaXplKQogCisgICAgQWRkUmVtb3RlQXVkaW9UcmFjayhXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCisgICAgUmVtb3ZlUmVtb3Rl
QXVkaW9UcmFjayhXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxh
eWVySUQsIFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lEKQorICAg
IFJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFdlYktpdDo6VHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCisKICAgICBSZXF1ZXN0UmVzb3VyY2UoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpM
b2FkT3B0aW9ucyBvcHRpb25zKSAtPiAoKSBBc3luYwogICAgIFJlbW92ZVJlc291cmNlKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggNDZkMTE5
ODc3MmM1MWI4YWQ5MGVmOGExNzEzMjFmZmNlMjkwZmNmOS4uOWQ0MWM5MjY0MTBlMTYzN2ZhMTgx
OGYxMDU1NjQ2NTkzMjIyNzg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaD4KQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgd2VicnRjOjpXZWJLaXRWaWRlb0RlY29kZXIgY3JlYXRl
VmlkZW9EZWNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDkzZDNhMjQyNjM5
NzBlMDZjYTAyODAzMWI1NGMwYWExNDA2Yjk4MzEuLjA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1
OWY1ZmQxM2M3NTRlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShRVUlDS19MT09LKQogCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2YWZmMWY0OTM1YjAwYWI0MjhmMzhlZWNkZTljMDk4ODMx
NDE1ZWIuLjZiNDJlNDYxNTY0ZTgzY2Q3OWVlOWMwNWQ1Nzk2YTQzODM0MmVhODcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMC0wMS0xMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgYXVkaW8gdHJhY2tzIGZvciBtZWRpYSBmaWxlcyBp
biB0aGUgR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2MTUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODUxMzIyNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSB5b3Vlbm4gZmFibGV0LgorCisgICAgICAgICogZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMS0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVuYWJsZSBMRkMgaW50ZWdy
YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE1MTYz
M2ZmYWRiMjQwY2IyN2RiZDFkNjRhNGMzMDBiNTA4ZDFlZWUuLjcyMGU2ZTM2MWMyZWExZTRiOTA4
ZjBlMDkwNTcwMWM5YmFhOWVmYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMjE4LDYgKzIxOCw4IEBAIG1lZGlhL3Jlc3RyaWN0ZWQtYXVkaW8tcGxheWJh
Y2std2l0aC1kb2N1bWVudC1nZXN0dXJlLmh0bWwgWyBQYXNzIF0KIG1lZGlhL3Jlc3RyaWN0ZWQt
YXVkaW8tcGxheWJhY2std2l0aC1tdWx0aXBsZS1zZXR0aW1lb3V0cy5odG1sIFsgUGFzcyBdCiBt
ZWRpYS92aWRlby1jb250cm9scy12aXNpYmxlLWF1ZGlvLW9ubHkuaHRtbCBbIFBhc3MgXQogbWVk
aWEvdmlkZW8tcGxheS1hdWRpby1yZXF1aXJlLXVzZXItZ2VzdHVyZS5odG1sIFsgUGFzcyBdCitt
ZWRpYS90cmFjay9hdWRpby10cmFjay5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby10cmFjay1h
ZGQtcmVtb3ZlLmh0bWwgWyBQYXNzIF0KIAogYWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVtZW50Lmh0
bWwgWyBTa2lwIF0KIGZhc3QvYmxvY2svZmxvYXQvbGlzdC1tYXJrZXItaXMtZmxvYXQtY3Jhc2gu
aHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>