<?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>123374</bug_id>
          
          <creation_ts>2013-10-25 16:55:01 -0700</creation_ts>
          <short_desc>[MSE] Add MediaSource extensions to AudioTrack, VideoTrack, and TextTrack.</short_desc>
          <delta_ts>2019-08-20 16:11:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>123353</dependson>
    
    <dependson>123373</dependson>
    
    <dependson>123463</dependson>
          <blocked>123322</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dustin.kerstein</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943820</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-25 16:55:01 -0700</bug_when>
    <thetext>[MSE] Add MediaSource extensions to AudioTrack, VideoTrack, and TextTrack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944929</commentid>
    <comment_count>1</comment_count>
      <attachid>215513</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-30 09:23:57 -0700</bug_when>
    <thetext>Created attachment 215513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947330</commentid>
    <comment_count>2</comment_count>
      <attachid>215513</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-11-05 13:44:22 -0800</bug_when>
    <thetext>Comment on attachment 215513
Patch

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

&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:373
&gt; +        return m_duration - endTime &lt; 1;

Nit: this confused me, how about &quot;return endTime &gt;= m_duration&quot;?

Isn&apos;t this is more conservative than it needs to be, won&apos;t it delay &apos;canplaythrough&apos; until the entire file has been buffered?

&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:390
&gt; +        return endTime - m_time &gt; 1;

Nit: this confused me, how about &quot;return endTime &gt; m_time&quot;?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1124
&gt; +        if (m_mediaSource-&gt;attachToElement(this))

m_mediaSource is created externally and is ref&apos;d by the media source registry, so shouldn&apos;t you also call m_mediaSource-&gt;attachToElement(nullptr) at some point?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2906
&gt; +    textTrack-&gt;setMediaElement(this);

Is this necessary, it is already done in TextTrackList::append?

&gt; Source/WebCore/html/track/AudioTrackList.cpp:91
&gt; +bool AudioTrackList::isAnyTrackEnabled() const
&gt; +{
&gt; +    for (size_t i = 0; i &lt; m_inbandTracks.size(); ++i) {
&gt; +        AudioTrack* track = toAudioTrack(m_inbandTracks[i].get());
&gt; +        if (track-&gt;enabled())
&gt; +            return true;
&gt; +    }
&gt; +    return false;
&gt; +}

Instead of overriding isAnyTrackEnabled, can you add a virtual method that different track types override for their definition of &quot;enabled&quot; (eg. willRenderData() or some such) and put this in TrackListBase?

&gt; Source/WebCore/html/track/TextTrack.cpp:178
&gt; -    TrackBase::setKind(newKind);
&gt; +#if ENABLE(MEDIA_SOURCE)

What happens when MEDIA_SOURCE_ENABLED is not defined?

&gt; Source/WebCore/html/track/VideoTrack.cpp:197
&gt; +    // FIXME: Validate the BCP47-ness of langague.

Nit: a bug number would be good.

&gt; Source/WebCore/html/track/VideoTrack.cpp:199
&gt; +    if (!language.isNull() &amp;&amp; !language.isEmpty())
&gt; +        return;

1) there is no need to check both because isEmpty() returns true for a NULL string. 2) do you really want to return early when the language is NOT empty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947912</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-06 14:13:21 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 215513 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215513&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:373
&gt; &gt; +        return m_duration - endTime &lt; 1;
&gt; 
&gt; Nit: this confused me, how about &quot;return endTime &gt;= m_duration&quot;?

Because the reported duration may not be equal to the end time of the last sample.

&gt; Isn&apos;t this is more conservative than it needs to be, won&apos;t it delay &apos;canplaythrough&apos; until the entire file has been buffered?

Very much so!  We need some kind of playability monitor which can take network conditions into account.  I used to have a fixme here, so I&apos;ll add another one.

&gt; &gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:390
&gt; &gt; +        return endTime - m_time &gt; 1;
&gt; 
&gt; Nit: this confused me, how about &quot;return endTime &gt; m_time&quot;?

Because technically the spec says that HAVE_FUTURE means that there is enough data to advance the time &quot;least a little&quot; bit.  I just defined &quot;a little bit&quot; to be &quot;more than a second&quot;. :-D

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:1124
&gt; &gt; +        if (m_mediaSource-&gt;attachToElement(this))
&gt; 
&gt; m_mediaSource is created externally and is ref&apos;d by the media source registry, so shouldn&apos;t you also call m_mediaSource-&gt;attachToElement(nullptr) at some point?

That happens as a side effect of calling close() (or whenever the readyState becomes &quot;closed&quot;).

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:2906
&gt; &gt; +    textTrack-&gt;setMediaElement(this);
&gt; 
&gt; Is this necessary, it is already done in TextTrackList::append?

Yes, it needs to happen earlier.  Some of the side effects of the intermediate calls need to know what the attached HTMLMediaElement is.

&gt; &gt; Source/WebCore/html/track/AudioTrackList.cpp:91
&gt; &gt; +bool AudioTrackList::isAnyTrackEnabled() const
&gt; &gt; +{
&gt; &gt; +    for (size_t i = 0; i &lt; m_inbandTracks.size(); ++i) {
&gt; &gt; +        AudioTrack* track = toAudioTrack(m_inbandTracks[i].get());
&gt; &gt; +        if (track-&gt;enabled())
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; 
&gt; Instead of overriding isAnyTrackEnabled, can you add a virtual method that different track types override for their definition of &quot;enabled&quot; (eg. willRenderData() or some such) and put this in TrackListBase?

I don&apos;t really like &quot;willRenderData()&quot;; it sounds like a notification method. How about we just add an &quot;enabled()&quot; virtual method in TrackBase and have every track type implement it?

&gt; &gt; Source/WebCore/html/track/TextTrack.cpp:178
&gt; &gt; -    TrackBase::setKind(newKind);
&gt; &gt; +#if ENABLE(MEDIA_SOURCE)
&gt; 
&gt; What happens when MEDIA_SOURCE_ENABLED is not defined?

Whoops, fixed.

&gt; &gt; Source/WebCore/html/track/VideoTrack.cpp:197
&gt; &gt; +    // FIXME: Validate the BCP47-ness of langague.
&gt; 
&gt; Nit: a bug number would be good.

Sure thing; added.

&gt; &gt; Source/WebCore/html/track/VideoTrack.cpp:199
&gt; &gt; +    if (!language.isNull() &amp;&amp; !language.isEmpty())
&gt; &gt; +        return;
&gt; 
&gt; 1) there is no need to check both because isEmpty() returns true for a NULL string. 2) do you really want to return early when the language is NOT empty?

Well, it made sense at the time. ;)

Seriously though, that should be something like:

if (!language.isEmpty() || !isValidBCP47(language))
    return;

So maybe i&apos;ll just remove this until the FIXME is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947979</commentid>
    <comment_count>4</comment_count>
      <attachid>216239</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-06 16:36:22 -0800</bug_when>
    <thetext>Created attachment 216239
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947995</commentid>
    <comment_count>5</comment_count>
      <attachid>216239</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-06 17:09:01 -0800</bug_when>
    <thetext>Comment on attachment 216239
Patch for landing

Attachment 216239 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22778019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948024</commentid>
    <comment_count>6</comment_count>
      <attachid>216252</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-06 18:03:05 -0800</bug_when>
    <thetext>Created attachment 216252
Patch for landing

Fixed build errors on platforms which do not enable MEDIA_SOURCE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948036</commentid>
    <comment_count>7</comment_count>
      <attachid>216252</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-06 19:29:04 -0800</bug_when>
    <thetext>Comment on attachment 216252
Patch for landing

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

&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:264
&gt; +    }

This method is way too big, maybe you could split it in three: one that deals with audio tracks, other that deals with video tracks and other to deal with text tracks. You can also reuse some code

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:540
&gt; +

This can be spitted too

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:586
&gt; +

All that for loops above can be in a method that receives the vector to be analyzed as parameter

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:609
&gt; +

Maybe the method that will deal with the for loop can also perform that check in the same vector?

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:889
&gt; +    } while (1);

Can&apos;t this be splitted in methods that can be reused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948063</commentid>
    <comment_count>8</comment_count>
      <attachid>216252</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-06 21:24:39 -0800</bug_when>
    <thetext>Comment on attachment 216252
Patch for landing

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

&gt;&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:264
&gt;&gt; +    }
&gt; 
&gt; This method is way too big, maybe you could split it in three: one that deals with audio tracks, other that deals with video tracks and other to deal with text tracks. You can also reuse some code

I don&apos;t think this method would benefit from being broken up:

* None of this code is re-usable, so splitting it into three would be pointless and wasteful.
* The steps are also subtly different between Video, Audio, and TextTracks, so templating this code will be impossible as well.
* If you ignore the comments, there are a reasonable number of lines of code in this function.
* The algorithm isn&apos;t broken up, so breaking up this method would just confuse future developers comparing the implementation to the spec.

&gt;&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:540
&gt;&gt; +
&gt; 
&gt; This can be spitted too

The same reasons for not splitting the code apply here.

&gt;&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:586
&gt;&gt; +
&gt; 
&gt; All that for loops above can be in a method that receives the vector to be analyzed as parameter

No, that won&apos;t work because the vectors are not of the same type. See InitializationSegment in SourceBufferPrivateClient.h.

&gt;&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:609
&gt;&gt; +
&gt; 
&gt; Maybe the method that will deal with the for loop can also perform that check in the same vector?

Again, the vectors are not of the same type.

&gt;&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:889
&gt;&gt; +    } while (1);
&gt; 
&gt; Can&apos;t this be splitted in methods that can be reused?

The same reasons apply above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948064</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-06 21:24:50 -0800</bug_when>
    <thetext>Committed r158821: &lt;http://trac.webkit.org/changeset/158821&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215513</attachid>
            <date>2013-10-30 09:23:57 -0700</date>
            <delta_ts>2013-11-05 13:44:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123374-20131030092357.patch</filename>
            <type>text/plain</type>
            <size>134292</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODViZjE1OTkyYjdjZmYx
YWQ0NGUyMmNlYjc1MzU5Zjk1NThkZWY3MC4uZGM1OTgxNjgzMGViNGZkNjkzY2ZiMGFmMTQ2YjQz
NGRlNTZiMjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk3IEBACiAyMDEzLTEwLTI1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNU0VdIEFkZCBNZWRpYVNv
dXJjZSBleHRlbnNpb25zIHRvIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2ssIGFuZCBUZXh0VHJhY2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0
cyBhZGRlZDsgdGVzdHMgd2lsbCBiZSBhZGRlZCB3aGVuIE1vY2sgaW1wbGVtZW50YXRpb25zIGFy
ZSBhZGRlZCBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICBBZGQgbmV3IHBhcnRpYWwgaW50
ZXJmYWNlcyBmb3IgYWRkZWQgbWV0aG9kcyBvbiBBdWRpb1RyYWNrLCBUZXh0VHJhY2ssIGFuZCBW
aWRlb1RyYWNrOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlh
U291cmNlLmlkbDogQWRkIHJlYWQtb25seSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsOiBEaXR0by4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGw6
IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTWVkaWFTb3VyY2U6OnNvdXJjZUJ1
ZmZlcik6IEFkZGVkIHN0YXRpYyB3cmFwcGVyIGFyb3VuZCBub24tc3RhdGljIHNvdXJjZUJ1ZmZl
cigpLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja01lZGlhU291cmNlOjpzb3VyY2VCdWZmZXIp
OiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja01lZGlhU291cmNlOjpzb3VyY2VC
dWZmZXIpOiBEaXR0by4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd3JpdGFibGUga2luZCAm
IGxhbmd1YWdlIGF0dHJpYnV0ZXMgdGhyb3VnaCBhIGN1c3RvbSBzZXR0ZXI6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNl
dExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1RleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VmlkZW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNl
dEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZSk6Cisg
ICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbDoKKwor
ICAgICAgICBBZGQgc2V0dGVyIG1ldGhvZHMgdG8gdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzZXM6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRL
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
QmFzZTo6c2V0S2luZEludGVybmFsKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrQmFzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6OnNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
a0Jhc2U6OnNldFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmg6
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSB1bmltcGxlbWVudGVkIHBvcnRpb25zIG9mIE1lZGlh
U291cmNlIGFuZCBTb3VyY2VCdWZmZXI6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6cmVtb3ZlU291
cmNlQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUJhc2U6Ok1lZGlhU291cmNlQmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUJhc2U6OnNldFByaXZhdGVBbmRPcGVu
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlQmFzZTo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUJhc2U6OmF0dGFjaFRvRWxlbWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU291cmNlQmFzZTo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXVk
aW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZEFk
ZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsOgorCisgICAgICAgIEFkZCBu
ZXcgZmlsZXMgdG8gdGhlIHByb2plY3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
QW5kIGEgc21vcmdhc2JvcmQgb2Ygb3RoZXIgdXRpbGl0eSBjaGFuZ2VzOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkUmVzb3VyY2UpOiBQYXNzIHRoaXMgd2hlbiBhdHRhY2hpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6IERp
dHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU291cmNlLmg6CisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Oml0ZW0pOiBN
YWtlIGNvbnN0LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6bGFzdEl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgor
CisyMDEzLTEwLTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAg
IFtNU0VdIEFkZCBhIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQgaW50ZXJmYWNlIGZvciBwbGF0
Zm9ybSAtPiBodG1sIGNvbW11bmljYXRpb24uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNjI2MmYzY2Q5MWEyYjRiNDZhN2VkYmIxYzJkMmE4ZDY4NGVhNDk4MS4uZjk3YmEwOTg1
NGQwYWI0ZmIwN2IyNmYyYjYzNTNjYWYxODUyOGE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC05NCw5ICs5NCwxNCBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2luZGlldWkvVUlSZXF1ZXN0RXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwgXAogCSQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJjZS5pZGwgXAorCSQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291cmNlLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaWRsIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRp
YVNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMWFiOTdlN2IyNmQxMmE2MGFhODY1ZDIyMDk1MzBlZmQ2
NjY3ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL0F1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZV9oCisjZGVmaW5lIEF1ZGlvVHJhY2tNZWRpYVNv
dXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBFTkFCTEUoVklERU9fVFJBQ0sp
CisKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU291cmNlQnVmZmVyOworCitjbGFzcyBBdWRpb1RyYWNrTWVkaWFTb3VyY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBTb3VyY2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcihBdWRpb1RyYWNrKiB0cmFj
aykgeyByZXR1cm4gdHJhY2stPnNvdXJjZUJ1ZmZlcigpOyB9Cit9OworCit9CisKKyNlbmRpZgor
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MWNiNGEwNDg4
ZTQ3NTM5OTQwY2Q1NTlmMjAyZmFkMWM2ZGU5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRpYVNvdXJjZS5pZGwKQEAg
LTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TT1VSQ0Um
VklERU9fVFJBQ0ssCitdCitwYXJ0aWFsIGludGVyZmFjZSBBdWRpb1RyYWNrIHsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgU291cmNlQnVmZmVyIHNvdXJjZUJ1ZmZlcjsKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGYy
MWIyNjNlZDkwYzBhM2M0OGY5Y2I4MTczNTE5MjUzMTU5MjM2OTkuLjdjY2FkOWMxZDJiOWI2ODUw
MTFhYzYwOWY3MWU2NTI4NmYzMDE5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0zMywxNSArMzMsMjIgQEAKIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCisjaW5jbHVk
ZSAiQXVkaW9UcmFja0xpc3QuaCIKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVl
LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
ICNpbmNsdWRlICJNZWRpYVNvdXJjZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVy
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRleHRUcmFja0xp
c3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgor
I2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xMzYsOCArMTQzLDEyNiBA
QCB2b2lkIE1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyKiBidWZm
ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZmZXIudXBk
YXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OiAuLi4KICAgICBidWZmZXItPmFib3J0SWZVcGRhdGluZygpOwogCi0gICAgLy8gU3RlcHMgNC05
IGFyZSByZWxhdGVkIHRvIHVwZGF0aW5nIGF1ZGlvVHJhY2tzLCB2aWRlb1RyYWNrcywgYW5kIHRl
eHRUcmFja3Mgd2hpY2ggYXJlbid0IGltcGxtZW50ZWQgeWV0LgotICAgIC8vIEZJWE1FKDkxNjQ5
KTogc3VwcG9ydCB0cmFjayBzZWxlY3Rpb24KKyAgICAvLyA0LiBMZXQgU291cmNlQnVmZmVyIGF1
ZGlvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBi
eSBzb3VyY2VCdWZmZXIuYXVkaW9UcmFja3MuCisgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBh
dWRpb1RyYWNrcyA9IGJ1ZmZlci0+YXVkaW9UcmFja3MoKTsKKworICAgIC8vIDUuIElmIHRoZSBT
b3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKGF1ZGlvVHJhY2tzLT5sZW5ndGgoKSkgeworICAgICAg
ICAvLyA1LjEgTGV0IEhUTUxNZWRpYUVsZW1lbnQgYXVkaW9UcmFja3MgbGlzdCBlcXVhbCB0aGUg
QXVkaW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBhdWRpb1RyYWNrcworICAgICAg
ICAvLyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgICAgIC8vIDUuMiBM
ZXQgdGhlIHJlbW92ZWQgZW5hYmxlZCBhdWRpbyB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAg
ICAgICBib29sIHJlbW92ZWRFbmFibGVkQXVkaW9UcmFjayA9IGZhbHNlOworCisgICAgICAgIC8v
IDUuMyBGb3IgZWFjaCBBdWRpb1RyYWNrIG9iamVjdCBpbiB0aGUgU291cmNlQnVmZmVyIGF1ZGlv
VHJhY2tzIGxpc3QsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICB3aGlsZSAoYXVk
aW9UcmFja3MtPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBBdWRpb1RyYWNrKiB0cmFjayA9IGF1
ZGlvVHJhY2tzLT5sYXN0SXRlbSgpOworCisgICAgICAgICAgICAvLyA1LjMuMSBTZXQgdGhlIHNv
dXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhlIEF1ZGlvVHJhY2sgb2JqZWN0IHRvIG51bGwuCisg
ICAgICAgICAgICB0cmFjay0+c2V0U291cmNlQnVmZmVyKDApOworCisgICAgICAgICAgICAvLyA1
LjMuMiBJZiB0aGUgZW5hYmxlZCBhdHRyaWJ1dGUgb24gdGhlIEF1ZGlvVHJhY2sgb2JqZWN0IGlz
IHRydWUsIHRoZW4gc2V0IHRoZSByZW1vdmVkIGVuYWJsZWQKKyAgICAgICAgICAgIC8vIGF1ZGlv
IHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAgIGlmICh0cmFjay0+ZW5hYmxlZCgpKQor
ICAgICAgICAgICAgICAgIHJlbW92ZWRFbmFibGVkQXVkaW9UcmFjayA9IHRydWU7CisKKyAgICAg
ICAgICAgIC8vIDUuMy4zIFJlbW92ZSB0aGUgQXVkaW9UcmFjayBvYmplY3QgZnJvbSB0aGUgSFRN
TE1lZGlhRWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgLy8gNS4zLjQgUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0
IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAvLyBjYW5jZWxhYmxlLCBh
bmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIEhUTUxNZWRpYUVs
ZW1lbnQgYXVkaW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKSkK
KyAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7
CisKKyAgICAgICAgICAgIC8vIDUuMy41IFJlbW92ZSB0aGUgQXVkaW9UcmFjayBvYmplY3QgZnJv
bSB0aGUgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAvLyA1LjMu
NiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ss
IHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKKyAgICAgICAgICAgIC8vIGNhbmNlbGFi
bGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNl
QnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICBhdWRpb1RyYWNrcy0+cmVtb3Zl
KHRyYWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDUuNCBJZiB0aGUgcmVtb3ZlZCBlbmFi
bGVkIGF1ZGlvIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQKKyAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVk
aWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgIGlmIChyZW1vdmVkRW5hYmxlZEF1
ZGlvVHJhY2spCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja3MoKS0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOworICAgIH0KKworICAgIC8vIDYuIExldCBTb3VyY2VCdWZmZXIg
dmlkZW9UcmFja3MgbGlzdCBlcXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVk
IGJ5IHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy4KKyAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+
IHZpZGVvVHJhY2tzID0gYnVmZmVyLT52aWRlb1RyYWNrcygpOworCisgICAgLy8gNy4gSWYgdGhl
IFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlbiBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodmlkZW9UcmFja3MtPmxlbmd0aCgpKSB7CisgICAg
ICAgIC8vIDcuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0IGVxdWFsIHRo
ZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIHZpZGVvVHJhY2tzCisgICAg
ICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAgICAgLy8gNy4y
IExldCB0aGUgcmVtb3ZlZCBzZWxlY3RlZCB2aWRlbyB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgor
ICAgICAgICBib29sIHJlbW92ZWRTZWxlY3RlZFZpZGVvVHJhY2sgPSBmYWxzZTsKKworICAgICAg
ICAvLyA3LjMgRm9yIGVhY2ggVmlkZW9UcmFjayBvYmplY3QgaW4gdGhlIFNvdXJjZUJ1ZmZlciB2
aWRlb1RyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgd2hpbGUg
KHZpZGVvVHJhY2tzLT5sZW5ndGgoKSkgeworICAgICAgICAgICAgVmlkZW9UcmFjayogdHJhY2sg
PSB2aWRlb1RyYWNrcy0+bGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgLy8gNy4zLjEgU2V0IHRo
ZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBWaWRlb1RyYWNrIG9iamVjdCB0byBudWxs
LgorICAgICAgICAgICAgdHJhY2stPnNldFNvdXJjZUJ1ZmZlcigwKTsKKworICAgICAgICAgICAg
Ly8gNy4zLjIgSWYgdGhlIHNlbGVjdGVkIGF0dHJpYnV0ZSBvbiB0aGUgVmlkZW9UcmFjayBvYmpl
Y3QgaXMgdHJ1ZSwgdGhlbiBzZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQKKyAgICAgICAgICAgIC8v
IHZpZGVvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAgIGlmICh0cmFjay0+c2VsZWN0
ZWQoKSkKKyAgICAgICAgICAgICAgICByZW1vdmVkU2VsZWN0ZWRWaWRlb1RyYWNrID0gdHJ1ZTsK
KworICAgICAgICAgICAgLy8gNy4zLjMgUmVtb3ZlIHRoZSBWaWRlb1RyYWNrIG9iamVjdCBmcm9t
IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAvLyA3
LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJh
Y2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKKyAgICAgICAgICAgIC8vIGNhbmNl
bGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgSFRN
TE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgaWYgKG1lZGlhRWxl
bWVudCgpKQorICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVWaWRlb1RyYWNr
KHRyYWNrKTsKKworICAgICAgICAgICAgLy8gNy4zLjUgUmVtb3ZlIHRoZSBWaWRlb1RyYWNrIG9i
amVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAg
IC8vIDcuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCByZW1v
dmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAgLy8g
Y2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRo
ZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgIHZpZGVvVHJhY2tz
LT5yZW1vdmUodHJhY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gNy40IElmIHRoZSByZW1v
dmVkIHNlbGVjdGVkIHZpZGVvIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKKyAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRo
ZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgIGlmIChyZW1vdmVk
U2VsZWN0ZWRWaWRlb1RyYWNrKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnZpZGVvVHJh
Y2tzKCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICB9CisKKyAgICAvLyA4LiBMZXQgU291
cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdCBlcXVhbCB0aGUgVGV4dFRyYWNrTGlzdCBvYmplY3Qg
cmV0dXJuZWQgYnkgc291cmNlQnVmZmVyLnRleHRUcmFja3MuCisgICAgUmVmUHRyPFRleHRUcmFj
a0xpc3Q+IHRleHRUcmFja3MgPSBidWZmZXItPnRleHRUcmFja3MoKTsKKworICAgIC8vIDkuIElm
IHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlbiBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodGV4dFRyYWNrcy0+bGVuZ3RoKCkpIHsKKyAg
ICAgICAgLy8gOS4xIExldCBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdCBlcXVhbCB0
aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIHRleHRUcmFja3MKKyAgICAg
ICAgLy8gYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAvLyA5LjIg
TGV0IHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAg
ICAgICBib29sIHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrID0gZmFsc2U7CisKKyAgICAgICAgLy8g
OS4zIEZvciBlYWNoIFRleHRUcmFjayBvYmplY3QgaW4gdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJh
Y2tzIGxpc3QsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICB3aGlsZSAodGV4dFRy
YWNrcy0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0ZXh0VHJh
Y2tzLT5sYXN0SXRlbSgpOworCisgICAgICAgICAgICAvLyA5LjMuMSBTZXQgdGhlIHNvdXJjZUJ1
ZmZlciBhdHRyaWJ1dGUgb24gdGhlIFRleHRUcmFjayBvYmplY3QgdG8gbnVsbC4KKyAgICAgICAg
ICAgIHRyYWNrLT5zZXRTb3VyY2VCdWZmZXIoMCk7CisKKyAgICAgICAgICAgIC8vIDkuMy4yIElm
IHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVjdCBpcyBzZXQgdG8gInNo
b3dpbmciIG9yICJoaWRkZW4iLCB0aGVuCisgICAgICAgICAgICAvLyBzZXQgdGhlIHJlbW92ZWQg
ZW5hYmxlZCB0ZXh0IHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAgIGlmICh0cmFjay0+
bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSB8fCB0cmFjay0+bW9kZSgpID09
IFRleHRUcmFjazo6aGlkZGVuS2V5d29yZCgpKQorICAgICAgICAgICAgICAgIHJlbW92ZWRFbmFi
bGVkVGV4dFRyYWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gOS4zLjMgUmVtb3ZlIHRoZSBU
ZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0
LgorICAgICAgICAgICAgLy8gOS4zLjQgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2
ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90Cisg
ICAgICAgICAgICAvLyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGlu
dGVyZmFjZSwgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgorICAgICAg
ICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgp
LT5yZW1vdmVUZXh0VHJhY2sodHJhY2spOworCisgICAgICAgICAgICAvLyA5LjMuNSBSZW1vdmUg
dGhlIFRleHRUcmFjayBvYmplY3QgZnJvbSB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlz
dC4KKyAgICAgICAgICAgIC8vIDkuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBl
dmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAor
ICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBp
bnRlcmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0LgorICAgICAgICAg
ICAgdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDku
NCBJZiB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBlcXVhbHMgdHJ1ZSwgdGhl
biBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAorICAgICAgICAvLyBuYW1lZCBj
aGFuZ2UgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgorICAgICAgICBp
ZiAocmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2spCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+
dGV4dFRyYWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisgICAgfQorCiAKICAgICAvLyAx
MC4gSWYgc291cmNlQnVmZmVyIGlzIGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMsIHRoZW4gcmVtb3Zl
IHNvdXJjZUJ1ZmZlciBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMgLi4uCiAgICAgbV9hY3RpdmVT
b3VyY2VCdWZmZXJzLT5yZW1vdmUoYnVmZmVyKTsKQEAgLTIxNiw2ICszNDEsMTE4IEBAIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIE1lZGlhU291cmNlOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
CiAgICAgcmV0dXJuIE1lZGlhU291cmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCit2
b2lkIE1lZGlhU291cmNlOjpzb3VyY2VCdWZmZXJEaWRDaGFuZ2VBY2l0dmVTdGF0ZShTb3VyY2VC
dWZmZXIqIHNvdXJjZUJ1ZmZlciwgYm9vbCBhY3RpdmUpCit7CisgICAgaWYgKGFjdGl2ZSAmJiAh
bV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5jb250YWlucyhzb3VyY2VCdWZmZXIpKQorICAgICAgICBt
X2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmFkZChzb3VyY2VCdWZmZXIpOworICAgIGVsc2UgaWYgKCFh
Y3RpdmUgJiYgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5jb250YWlucyhzb3VyY2VCdWZmZXIpKQor
ICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPnJlbW92ZShzb3VyY2VCdWZmZXIpOworfQor
CitjbGFzcyBTb3VyY2VCdWZmZXJCdWZmZXJlZERvZXNOb3RDb250YWluVGltZSB7CitwdWJsaWM6
CisgICAgU291cmNlQnVmZmVyQnVmZmVyZWREb2VzTm90Q29udGFpblRpbWUoZG91YmxlIHRpbWUp
IDogbV90aW1lKHRpbWUpIHsgfQorICAgIGJvb2wgb3BlcmF0b3IoKShSZWZQdHI8U291cmNlQnVm
ZmVyPiBzb3VyY2VCdWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gIXNvdXJjZUJ1ZmZlci0+
YnVmZmVyZWQoKS0+Y29udGFpbihtX3RpbWUpOworICAgIH0KKworICAgIGRvdWJsZSBtX3RpbWU7
Cit9OworCitjbGFzcyBTb3VyY2VCdWZmZXJCdWZmZXJlZEhhc0Vub3VnaCB7CitwdWJsaWM6Cisg
ICAgU291cmNlQnVmZmVyQnVmZmVyZWRIYXNFbm91Z2goZG91YmxlIHRpbWUsIGRvdWJsZSBkdXJh
dGlvbikgOiBtX3RpbWUodGltZSksIG1fZHVyYXRpb24oZHVyYXRpb24pIHsgfQorICAgIGJvb2wg
b3BlcmF0b3IoKShSZWZQdHI8U291cmNlQnVmZmVyPiBzb3VyY2VCdWZmZXIpCisgICAgeworICAg
ICAgICBzaXplX3QgcmFuZ2VQb3MgPSBzb3VyY2VCdWZmZXItPmJ1ZmZlcmVkKCktPmZpbmQobV90
aW1lKTsKKyAgICAgICAgaWYgKHJhbmdlUG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGRvdWJsZSBlbmRUaW1lID0gc291cmNlQnVmZmVyLT5idWZm
ZXJlZCgpLT5lbmQocmFuZ2VQb3MsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICByZXR1cm4g
bV9kdXJhdGlvbiAtIGVuZFRpbWUgPCAxOworICAgIH0KKworICAgIGRvdWJsZSBtX3RpbWU7Cisg
ICAgZG91YmxlIG1fZHVyYXRpb247Cit9OworCitjbGFzcyBTb3VyY2VCdWZmZXJCdWZmZXJlZEhh
c0Z1dHVyZSB7CitwdWJsaWM6CisgICAgU291cmNlQnVmZmVyQnVmZmVyZWRIYXNGdXR1cmUoZG91
YmxlIHRpbWUpIDogbV90aW1lKHRpbWUpIHsgfQorICAgIGJvb2wgb3BlcmF0b3IoKShSZWZQdHI8
U291cmNlQnVmZmVyPiBzb3VyY2VCdWZmZXIpCisgICAgeworICAgICAgICBzaXplX3QgcmFuZ2VQ
b3MgPSBzb3VyY2VCdWZmZXItPmJ1ZmZlcmVkKCktPmZpbmQobV90aW1lKTsKKyAgICAgICAgaWYg
KHJhbmdlUG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGRvdWJsZSBlbmRUaW1lID0gc291cmNlQnVmZmVyLT5idWZmZXJlZCgpLT5lbmQocmFuZ2VQ
b3MsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICByZXR1cm4gZW5kVGltZSAtIG1fdGltZSA+
IDE7CisgICAgfQorCisgICAgZG91YmxlIG1fdGltZTsKK307CisKK3ZvaWQgTWVkaWFTb3VyY2U6
Om1vbml0b3JTb3VyY2VCdWZmZXJzKCkKK3sKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBtZWRp
YUVsZW1lbnQoKS0+Y3VycmVudFRpbWUoKTsKKworICAgIC8vIDIuNC40IFNvdXJjZUJ1ZmZlciBN
b25pdG9yaW5nCisgICAgLy8g4oazIElmIGJ1ZmZlcmVkIGZvciBhbGwgb2JqZWN0cyBpbiBhY3Rp
dmVTb3VyY2VCdWZmZXJzIGRvIG5vdCBjb250YWluIFRpbWVSYW5nZXMgZm9yIHRoZSBjdXJyZW50
CisgICAgLy8gcGxheWJhY2sgcG9zaXRpb246CisgICAgYXV0byBiZWdpbiA9IG1fYWN0aXZlU291
cmNlQnVmZmVycy0+YmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IG1fYWN0aXZlU291cmNlQnVmZmVy
cy0+ZW5kKCk7CisgICAgaWYgKHN0ZDo6YWxsX29mKGJlZ2luLCBlbmQsIFNvdXJjZUJ1ZmZlckJ1
ZmZlcmVkRG9lc05vdENvbnRhaW5UaW1lKGN1cnJlbnRUaW1lKSkpIHsKKyAgICAgICAgLy8gMS4g
U2V0IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfTUVU
QURBVEEuCisgICAgICAgIC8vIDIuIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRyYW5zaXRpb24gdG8g
SEFWRV9NRVRBREFUQSwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAor
ICAgICAgICAvLyBuYW1lZCBsb2FkZWRtZXRhZGF0YSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAg
ICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEp
OworCisgICAgICAgIC8vIDMuIEFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8g4oazIElmIGJ1ZmZlcmVkIGZvciBhbGwgb2JqZWN0cyBpbiBhY3RpdmVT
b3VyY2VCdWZmZXJzIGNvbnRhaW4gVGltZVJhbmdlcyB0aGF0IGluY2x1ZGUgdGhlIGN1cnJlbnQK
KyAgICAvLyBwbGF5YmFjayBwb3NpdGlvbiBhbmQgZW5vdWdoIGRhdGEgdG8gZW5zdXJlIHVuaW50
ZXJydXB0ZWQgcGxheWJhY2s6CisgICAgaWYgKHN0ZDo6YWxsX29mKGJlZ2luLCBlbmQsIFNvdXJj
ZUJ1ZmZlckJ1ZmZlcmVkSGFzRW5vdWdoKGN1cnJlbnRUaW1lLCBtZWRpYUVsZW1lbnQoKS0+ZHVy
YXRpb24oKSkpKSB7CisgICAgICAgIC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFk
eVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX0VOT1VHSF9EQVRBLgorICAgICAgICAvLyAyLiBRdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjYW5wbGF5dGhyb3VnaCBhdCB0
aGUgbWVkaWEgZWxlbWVudC4KKyAgICAgICAgLy8gMy4gUGxheWJhY2sgbWF5IHJlc3VtZSBhdCB0
aGlzIHBvaW50IGlmIGl0IHdhcyBwcmV2aW91c2x5IHN1c3BlbmRlZCBieSBhIHRyYW5zaXRpb24g
dG8gSEFWRV9DVVJSRU5UX0RBVEEuCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGEpOworCisgICAgICAgIC8vIDQuIEFib3J0IHRoZXNl
IHN0ZXBzLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g4oazIElmIGJ1ZmZlcmVk
IGZvciBhdCBsZWFzdCBvbmUgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMgY29udGFpbnMg
YSBUaW1lUmFuZ2UgdGhhdCBpbmNsdWRlcworICAgIC8vIHRoZSBjdXJyZW50IHBsYXliYWNrIHBv
c2l0aW9uIGJ1dCBub3QgZW5vdWdoIGRhdGEgdG8gZW5zdXJlIHVuaW50ZXJydXB0ZWQgcGxheWJh
Y2s6CisgICAgaWYgKHN0ZDo6YW55X29mKGJlZ2luLCBlbmQsIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVk
SGFzRnV0dXJlKGN1cnJlbnRUaW1lKSkpIHsKKyAgICAgICAgLy8gMS4gU2V0IHRoZSBIVE1MTWVk
aWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfRlVUVVJFX0RBVEEuCisgICAg
ICAgIC8vIDIuIElmIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiBIVE1MTWVkaWFFbGVtZW50LnJlYWR5
U3RhdGUgd2FzIGxlc3MgdGhhbiBIQVZFX0ZVVFVSRV9EQVRBLCB0aGVuIHF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNhbnBsYXkgYXQgdGhlIG1lZGlhIGVsZW1lbnQu
CisgICAgICAgIC8vIDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBwb2ludCBpZiBpdCB3
YXMgcHJldmlvdXNseSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhBVkVfQ1VSUkVOVF9E
QVRBLgorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVG
dXR1cmVEYXRhKTsKKworICAgICAgICAvLyA0LiBBYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYXQgbGVhc3Qgb25l
IG9iamVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzIGNvbnRhaW5zIGEgVGltZVJhbmdlIHRoYXQg
ZW5kcworICAgIC8vIGF0IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGFuZCBkb2VzIG5v
dCBoYXZlIGEgcmFuZ2UgY292ZXJpbmcgdGhlIHRpbWUgaW1tZWRpYXRlbHkKKyAgICAvLyBhZnRl
ciB0aGUgY3VycmVudCBwb3NpdGlvbjoKKyAgICAvLyBOT1RFOiBMb2dpY2FsbHksICEoYWxsIG9i
amVjdHMgZG8gbm90IGNvbnRhaW4gY3VycmVudFRpbWUpID09IChzb21lIG9iamVjdHMgY29udGFp
biBjdXJyZW50IHRpbWUpCisKKyAgICAvLyAxLiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9DVVJSRU5UX0RBVEEuCisgICAgLy8gMi4gSWYgdGhp
cyBpcyB0aGUgZmlyc3QgdHJhbnNpdGlvbiB0byBIQVZFX0NVUlJFTlRfREFUQSwgdGhlbiBxdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQorICAgIC8vIGV2ZW50IG5hbWVkIGxvYWRlZGRhdGEg
YXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgLy8gMy4gUGxheWJhY2sgaXMgc3VzcGVuZGVkIGF0
IHRoaXMgcG9pbnQgc2luY2UgdGhlIG1lZGlhIGVsZW1lbnQgZG9lc24ndCBoYXZlIGVub3VnaCBk
YXRhIHRvCisgICAgLy8gYWR2YW5jZSB0aGUgbWVkaWEgdGltZWxpbmUuCisgICAgbV9wcml2YXRl
LT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGEpOworCisgICAgLy8g
NC4gQWJvcnQgdGhlc2Ugc3RlcHMuCit9CisKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5oCmluZGV4IGY3Y2U4YzFmYjViZjg2YjhkMzQ2NzM4MjM0NmVjOTk1YjRjMzUwNzcuLmJk
MWYwMzdkNWM4ZTBiNjkxZjZkNjA5MDgzODY1ZmFkMzczMDcxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTU5LDYgKzU5LDEw
IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU291cmNlQmFzZT46OnJlZjsK
ICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU291cmNlQmFzZT46OmRlcmVmOwogCisgICAgdm9p
ZCBzb3VyY2VCdWZmZXJEaWRDaGFuZ2VBY2l0dmVTdGF0ZShTb3VyY2VCdWZmZXIqLCBib29sKTsK
KworICAgIHZvaWQgbW9uaXRvclNvdXJjZUJ1ZmZlcnMoKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBNZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcApp
bmRleCA5NWJhYTI3MGUyYWRiOWM5OGM3NjU0NTExZTI3MTM3MjNmOTk5ZWViLi45ZGM1MzU2MTI2
YjM5NTllOWY3ZTA3MjI3OGRmOWQ4MTViM2Q3MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuY3BwCkBAIC00Nyw5ICs0
Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFTb3VyY2VCYXNlOjpNZWRpYVNvdXJj
ZUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0KQorICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKICAgICAsIG1fcmVhZHlTdGF0
ZShjbG9zZWRLZXl3b3JkKCkpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhpcykKLSAgICAs
IG1fYXR0YWNoZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYVNvdXJjZUJhc2U6OmVuZGVkS2V5d29yZCgpCiB2b2lkIE1lZGlhU291cmNl
QmFzZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJjZVByaXZhdGU+IG1lZGlh
U291cmNlUHJpdmF0ZSkKIHsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7Ci0gICAgQVNTRVJUKG1f
YXR0YWNoZWQpOworICAgIEFTU0VSVChtX21lZGlhRWxlbWVudCk7CiAgICAgbV9wcml2YXRlID0g
c3RkOjptb3ZlKG1lZGlhU291cmNlUHJpdmF0ZSk7CiAgICAgc2V0UmVhZHlTdGF0ZShvcGVuS2V5
d29yZCgpKTsKIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIE1lZGlhU291cmNlQmFzZTo6c2V0
UmVhZHlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0YXRlKQogCiAgICAgaWYgKHN0YXRlID09
IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBtX3ByaXZhdGUuY2xlYXIoKTsKLSAgICAgICAg
bV9hdHRhY2hlZCA9IGZhbHNlOworICAgICAgICBtX21lZGlhRWxlbWVudCA9IDA7CiAgICAgfQog
CiAgICAgaWYgKG9sZFN0YXRlID09IHN0YXRlKQpAQCAtMjIyLDE0ICsyMjIsMTQgQEAgdm9pZCBN
ZWRpYVNvdXJjZUJhc2U6OmNsb3NlKCkKICAgICBzZXRSZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQo
KSk7CiB9CiAKLWJvb2wgTWVkaWFTb3VyY2VCYXNlOjphdHRhY2hUb0VsZW1lbnQoKQorYm9vbCBN
ZWRpYVNvdXJjZUJhc2U6OmF0dGFjaFRvRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
KQogewotICAgIGlmIChtX2F0dGFjaGVkKQorICAgIGlmIChtX21lZGlhRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGlzQ2xvc2VkKCkpOwogCi0gICAgbV9hdHRh
Y2hlZCA9IHRydWU7CisgICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZUJhc2UuaAppbmRleCAxNTg0NGFlNDIxZmU2MDNjMDZlMjU4MjZjNTI0ODIzMTdi
NmViMTZiLi5hODQ1M2Y1OWM2NTE1NGFlNjE1MWQ3ZjYyNGU1ZGNmYWIyYzM3OWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNl
LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNPcGVuKCkgY29uc3Q7CiAK
ICAgICAvLyBIVE1MTWVkaWFTb3VyY2UKLSAgICB2aXJ0dWFsIGJvb2wgYXR0YWNoVG9FbGVtZW50
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGF0dGFjaFRvRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFBh
c3NSZWY8TWVkaWFTb3VyY2VQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkKCkgY29uc3QgT1ZFUlJJ
REU7CkBAIC03NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCBlbmRPZlN0cmVhbShjb25zdCBBdG9taWNTdHJp
bmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0IGludGVyZmFjZQogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBPVkVSUklERTsKQEAgLTEwMSwxMSArMTAyLDEwIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwogICAg
IEdlbmVyaWNFdmVudFF1ZXVlJiBhc3luY0V2ZW50UXVldWUoKSB7IHJldHVybiBtX2FzeW5jRXZl
bnRRdWV1ZTsgfQogCi1wcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGU+IG1f
cHJpdmF0ZTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKICAgICBBdG9t
aWNTdHJpbmcgbV9yZWFkeVN0YXRlOwogICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVu
dFF1ZXVlOwotICAgIGJvb2wgbV9hdHRhY2hlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCA0NTc4ZmU0
Y2U4YzRlYzVlYWIzZWU2YjlhYjRiNWMzZDU2YjlkMDhmLi4zNDI2ZDZjNWQ5ODJjNDZkNGZkMWQ3
MGU5N2VlM2I0ZDc3OGVjNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC0zMywxNiArMzMsNDUgQEAKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJN
ZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiU291cmNl
QnVmZmVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlICJU
aW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlIDxtYXA+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorc3RydWN0IFNvdXJjZUJ1ZmZlcjo6VHJhY2tCdWZmZXIgeworICAgIE1lZGlhVGltZSBsYXN0
RGVjb2RlVGltZXN0YW1wOworICAgIE1lZGlhVGltZSBsYXN0RnJhbWVEdXJhdGlvbjsKKyAgICBN
ZWRpYVRpbWUgaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcDsKKyAgICBNZWRpYVRpbWUgbGFz
dEVucXVldWVkUHJlc2VudGF0aW9uVGltZTsKKyAgICBib29sIG5lZWRSYW5kb21BY2Nlc3NGbGFn
OworICAgIHR5cGVkZWYgc3RkOjptdWx0aW1hcDxNZWRpYVRpbWUsIFJlZlB0cjxNZWRpYVNhbXBs
ZT4+IFNhbXBsZU1hcDsKKyAgICBTYW1wbGVNYXAgc2FtcGxlczsKKyAgICBTYW1wbGVNYXAgZGVj
b2RlUXVldWU7CisgICAgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb24+IGRlc2NyaXB0aW9uOworCisg
ICAgVHJhY2tCdWZmZXIoKQorICAgICAgICA6IGxhc3REZWNvZGVUaW1lc3RhbXAoTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIGxhc3RGcmFtZUR1cmF0aW9uKE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSkKKyAgICAgICAgLCBoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKKyAgICAgICAgLCBsYXN0RW5xdWV1ZWRQcmVzZW50YXRp
b25UaW1lKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKKyAgICAgICAgLCBuZWVkUmFuZG9tQWNj
ZXNzRmxhZyhmYWxzZSkKKyAgICB7CisgICAgfQorfTsKKwogUGFzc1JlZjxTb3VyY2VCdWZmZXI+
IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKFBhc3NSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4gc291cmNl
QnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKIHsKICAgICBSZWZQdHI8U291cmNl
QnVmZmVyPiBzb3VyY2VCdWZmZXIoYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlcihzdGQ6Om1vdmUo
c291cmNlQnVmZmVyUHJpdmF0ZSksIHNvdXJjZSkpKTsKQEAgLTU2LDggKzg1LDEyIEBAIFNvdXJj
ZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFBhc3NSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4gc291cmNl
QnVmZmVyUHJpdmF0ZSwgTWVkCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2FzeW5j
RXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fdXBkYXRpbmcoZmFsc2UpCi0gICAgLCBtX3RpbWVz
dGFtcE9mZnNldCgwKQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcih0aGlzLCAmU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKQorICAgICwgbV9oaWdoZXN0UHJlc2VudGF0aW9u
RW5kVGltZXN0YW1wKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKKyAgICAsIG1fcmVjZWl2ZWRG
aXJzdEluaXRpYWxpemF0aW9uU2VnbWVudChmYWxzZSkKKyAgICAsIG1fYnVmZmVyZWQoVGltZVJh
bmdlczo6Y3JlYXRlKCkpCisgICAgLCBtX2FjdGl2ZShmYWxzZSkKKyAgICAsIG1fYXBwZW5kU3Rh
dGUoV2FpdGluZ0ZvclNlZ21lbnQpCiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CiAgICAgQVNT
RVJUKG1fc291cmNlKTsKQEAgLTgzLDEyICsxMTYsMTcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgIH0K
IAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9i
amVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1ZmZlcmVkLgotICAgIHJldHVybiBtX3ByaXZh
dGUtPmJ1ZmZlcmVkKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyZWQtPmNvcHkoKTsKK30KKworY29u
c3QgUmVmUHRyPFRpbWVSYW5nZXM+JiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9idWZmZXJlZDsKIH0KIAogZG91YmxlIFNvdXJjZUJ1ZmZlcjo6dGltZXN0
YW1wT2Zmc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90aW1lc3RhbXBPZmZzZXQ7CisgICAg
cmV0dXJuIG1fdGltZXN0YW1wT2Zmc2V0LnRvRG91YmxlKCk7CiB9CiAKIHZvaWQgU291cmNlQnVm
ZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0xMTIsOSArMTUwLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFRpbWVzdGFtcE9mZnNl
dChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyA0LjIgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgc291cmNlb3BlbiBhdCB0aGUgcGFyZW50
IG1lZGlhIHNvdXJjZS4KICAgICBtX3NvdXJjZS0+b3BlbklmSW5FbmRlZFN0YXRlKCk7CiAKLSAg
ICAvLyA1LiBJZiB0aGlzIG9iamVjdCBpcyB3YWl0aW5nIGZvciB0aGUgZW5kIG9mIGEgbWVkaWEg
c2VnbWVudCB0byBiZSBhcHBlbmRlZCwgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUgot
ICAgIC8vIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcHJpdmF0ZS0+c2V0VGlt
ZXN0YW1wT2Zmc2V0KG9mZnNldCkpIHsKKyAgICAvLyA1LiBJZiB0aGUgYXBwZW5kIHN0YXRlIGVx
dWFscyBQQVJTSU5HX01FRElBX1NFR01FTlQsIHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9F
UlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChtX2FwcGVuZFN0YXRlID09IFBhcnNp
bmdNZWRpYVNlZ21lbnQpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTI4NSw2ICszMjIsNjIgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoVGltZXI8U291cmNlQnVmZmVyPiopCiAKICAgICAvLyA1
LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCB1cGRhdGVlbmQgYXQg
dGhpcyBTb3VyY2VCdWZmZXIgb2JqZWN0LgogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnVwZGF0ZWVuZEV2ZW50KTsKKworICAgIG1fc291cmNlLT5tb25pdG9yU291cmNlQnVmZmVycygp
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUJ1ZmZlcjo6ZGVjb2RlRXJyb3IoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGRlY29kZSgiZGVjb2Rl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGRlY29k
ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VCdWZmZXI6Om5ldHdvcmtFcnJvcigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmV0d29yaygibmV0
d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBu
ZXR3b3JrOworfQorCitWaWRlb1RyYWNrTGlzdCogU291cmNlQnVmZmVyOjp2aWRlb1RyYWNrcygp
Cit7CisgICAgaWYgKCFtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlk
ZW9UcmFja0xpc3Q6OmNyZWF0ZShtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCksIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX3ZpZGVvVHJh
Y2tzLmdldCgpOworfQorCitBdWRpb1RyYWNrTGlzdCogU291cmNlQnVmZmVyOjphdWRpb1RyYWNr
cygpCit7CisgICAgaWYgKCFtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICBtX2F1ZGlvVHJhY2tzID0g
QXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCksIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX2F1ZGlv
VHJhY2tzLmdldCgpOworfQorCitUZXh0VHJhY2tMaXN0KiBTb3VyY2VCdWZmZXI6OnRleHRUcmFj
a3MoKQoreworICAgIGlmICghbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmICghbV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MgPSBU
ZXh0VHJhY2tMaXN0OjpjcmVhdGUobV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLCBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV90ZXh0VHJh
Y2tzLmdldCgpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZl
KQoreworICAgIGlmIChtX2FjdGl2ZSA9PSBhY3RpdmUpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYWN0aXZlID0gYWN0aXZlOworICAgIG1fc291cmNlLT5zb3VyY2VCdWZmZXJEaWRDaGFuZ2VB
Y2l0dmVTdGF0ZSh0aGlzLCBhY3RpdmUpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIGVycm9yKQpAQCAtMjkyLDIyICszODUsNjIxIEBAIHZvaWQgU291cmNl
QnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZh
dGUqLCBjb25zdCBXCiAgICAgbV9zb3VyY2UtPmVuZE9mU3RyZWFtKGVycm9yLCBJZ25vcmFibGVF
eGNlcHRpb25Db2RlKCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZSos
IGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVy
UHJpdmF0ZSosIGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVudCkKIHsKKyAgICBt
X2FwcGVuZFN0YXRlID0gUGFyc2luZ0luaXRTZWdtZW50OworCisgICAgLy8gMy41LjcgSW5pdGlh
bGl6YXRpb24gU2VnbWVudCBSZWNlaXZlZAorICAgIC8vIDEuIFVwZGF0ZSB0aGUgZHVyYXRpb24g
YXR0cmlidXRlIGlmIGl0IGN1cnJlbnRseSBlcXVhbHMgTmFOOgorICAgIGlmIChzdGQ6OmlzbmFu
KG1fc291cmNlLT5kdXJhdGlvbigpKSAmJiBzZWdtZW50LmR1cmF0aW9uLmlzVmFsaWQoKSkKKyAg
ICAgICAgbV9zb3VyY2UtPnNldER1cmF0aW9uKHNlZ21lbnQuZHVyYXRpb24udG9Eb3VibGUoKSwg
SUdOT1JFX0VYQ0VQVElPTik7CisKKyAgICAvLyAyLiBJZiB0aGUgaW5pdGlhbGl6YXRpb24gc2Vn
bWVudCBoYXMgbm8gYXVkaW8sIHZpZGVvLCBvciB0ZXh0IHRyYWNrcywgdGhlbiBydW4gdGhlIGVu
ZCBvZiBzdHJlYW0KKyAgICAvLyBhbGdvcml0aG0gd2l0aCB0aGUgZXJyb3IgcGFyYW1ldGVyIHNl
dCB0byAiZGVjb2RlIiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFzZWdtZW50LmF1
ZGlvVHJhY2tzLnNpemUoKSAmJiAhc2VnbWVudC52aWRlb1RyYWNrcy5zaXplKCkgJiYgIXNlZ21l
bnQudGV4dFRyYWNrcy5zaXplKCkpCisgICAgICAgIG1fc291cmNlLT5lbmRPZlN0cmVhbShkZWNv
ZGVFcnJvcigpLCBJZ25vcmFibGVFeGNlcHRpb25Db2RlKCkpOworCisKKyAgICAvLyAzLiBJZiB0
aGUgZmlyc3QgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmbGFnIGlzIHRydWUsIHRoZW4gcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKG1fcmVjZWl2ZWRGaXJzdEluaXRpYWxpemF0aW9u
U2VnbWVudCkgeworICAgICAgICBpZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNl
Z21lbnQpKSB7CisgICAgICAgICAgICBtX3NvdXJjZS0+ZW5kT2ZTdHJlYW0oZGVjb2RlRXJyb3Io
KSwgSWdub3JhYmxlRXhjZXB0aW9uQ29kZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAvLyAzLjIgQWRkIHRoZSBhcHByb3ByaWF0ZSB0cmFjayBkZXNjcmlwdGlv
bnMgZnJvbSB0aGlzIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgdG8gZWFjaCBvZiB0aGUgdHJhY2sg
YnVmZmVycy4KKyAgICAgICAgLy8gTk9URTogTm8gY2hhbmdlcyB0byBtYWtlCisgICAgfQorCisg
ICAgLy8gNC4gTGV0IGFjdGl2ZSB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAgIGJvb2wgYWN0
aXZlVHJhY2tGbGFnID0gZmFsc2U7CisKKyAgICAvLyA1LiBJZiB0aGUgZmlyc3QgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCBmbGFnIGlzIGZhbHNlLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgorICAgIGlmICghbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50KSB7CisgICAg
ICAgIC8vIDUuMSBJZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBjb250YWlucyB0cmFja3Mg
d2l0aCBjb2RlY3MgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3Qgc3VwcG9ydCwKKyAgICAgICAgLy8g
dGhlbiBydW4gdGhlIGVuZCBvZiBzdHJlYW0gYWxnb3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFt
ZXRlciBzZXQgdG8gImRlY29kZSIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAvLyBO
T1RFOiBUaGlzIGNoZWNrIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgU291cmNlQnVmZmVy
UHJpdmF0ZS4KKworICAgICAgICAvLyA1LjIgRm9yIGVhY2ggYXVkaW8gdHJhY2sgaW4gdGhlIGlu
aXRpYWxpemF0aW9uIHNlZ21lbnQsIHJ1biBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGZvciAo
YXV0byBpdCA9IHNlZ21lbnQuYXVkaW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC5hdWRp
b1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgQXVkaW9UcmFja1ByaXZhdGUqIGF1
ZGlvVHJhY2tQcml2YXRlID0gaXQtPnRyYWNrLmdldCgpOworCisgICAgICAgICAgICAvLyA1LjIu
MSBMZXQgbmV3IGF1ZGlvIHRyYWNrIGJlIGEgbmV3IEF1ZGlvVHJhY2sgb2JqZWN0LgorICAgICAg
ICAgICAgLy8gNS4yLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBpdCB0byB0aGUg
aWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgorICAgICAgICAgICAgUmVmUHRyPEF1ZGlv
VHJhY2s+IG5ld0F1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgYXVkaW9UcmFj
a1ByaXZhdGUpOworICAgICAgICAgICAgbmV3QXVkaW9UcmFjay0+c2V0U291cmNlQnVmZmVyKHRo
aXMpOworCisgICAgICAgICAgICAvLyA1LjIuMyBJZiBhdWRpb1RyYWNrcy5sZW5ndGggZXF1YWxz
IDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICBpZiAoIWF1ZGlv
VHJhY2tzKCktPmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gNS4yLjMuMSBTZXQgdGhl
IGVuYWJsZWQgcHJvcGVydHkgb24gbmV3IGF1ZGlvIHRyYWNrIHRvIHRydWUuCisgICAgICAgICAg
ICAgICAgbmV3QXVkaW9UcmFjay0+c2V0RW5hYmxlZCh0cnVlKTsKKworICAgICAgICAgICAgICAg
IC8vIDUuMi4zLjIgU2V0IGFjdGl2ZSB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICAg
ICAgYWN0aXZlVHJhY2tGbGFnID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gNS4yLjQgQWRkIG5ldyBhdWRpbyB0cmFjayB0byB0aGUgYXVkaW9UcmFja3MgYXR0cmlidXRl
IG9uIHRoaXMgU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIC8vIDUuMi41IFF1ZXVl
IGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2Vz
IG5vdCBidWJibGUgYW5kIGlzCisgICAgICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRo
YXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBBdWRpb1RyYWNrTGlzdCBv
YmplY3QKKyAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJp
YnV0ZSBvbiB0aGlzIFNvdXJjZUJ1ZmZlciBvYmplY3QuCisgICAgICAgICAgICBhdWRpb1RyYWNr
cygpLT5hcHBlbmQobmV3QXVkaW9UcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuMi42IEFkZCBu
ZXcgYXVkaW8gdHJhY2sgdG8gdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1l
ZGlhRWxlbWVudC4KKyAgICAgICAgICAgIC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
dHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlz
CisgICAgICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tF
dmVudCBpbnRlcmZhY2UsIGF0IHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QKKyAgICAgICAgICAg
IC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1l
ZGlhRWxlbWVudC4KKyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YXVkaW9U
cmFja3MoKS0+YXBwZW5kKG5ld0F1ZGlvVHJhY2spOworCisgICAgICAgICAgICAvLyA1LjIuOCBD
cmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0
cmFjay4KKyAgICAgICAgICAgIEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyhuZXdB
dWRpb1RyYWNrLT5pZCgpKSk7CisgICAgICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIg
PSBtX3RyYWNrQnVmZmVyTWFwLmFkZChuZXdBdWRpb1RyYWNrLT5pZCgpLCBUcmFja0J1ZmZlcigp
KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIC8vIDUuMi45IEFkZCB0aGUgdHJhY2sg
ZGVzY3JpcHRpb24gZm9yIHRoaXMgdHJhY2sgdG8gdGhlIHRyYWNrIGJ1ZmZlci4KKyAgICAgICAg
ICAgIHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uID0gaXQtPmRlc2NyaXB0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgLy8gNS4zIEZvciBlYWNoIHZpZGVvIHRyYWNrIGluIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICBmb3IgKGF1dG8gaXQg
PSBzZWdtZW50LnZpZGVvVHJhY2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQudmlkZW9UcmFja3Mu
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIFZpZGVvVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNr
UHJpdmF0ZSA9IGl0LT50cmFjay5nZXQoKTsKKworICAgICAgICAgICAgLy8gNS4zLjEgTGV0IG5l
dyB2aWRlbyB0cmFjayBiZSBhIG5ldyBWaWRlb1RyYWNrIG9iamVjdC4KKyAgICAgICAgICAgIC8v
IDUuMy4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlkIHByb3Bl
cnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KKyAgICAgICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrPiBu
ZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHZpZGVvVHJhY2tQcml2YXRl
KTsKKyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPnNldFNvdXJjZUJ1ZmZlcih0aGlzKTsKKwor
ICAgICAgICAgICAgLy8gNS4zLjMgSWYgdmlkZW9UcmFja3MubGVuZ3RoIGVxdWFscyAwLCB0aGVu
IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgaWYgKCF2aWRlb1RyYWNrcygp
LT5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIDUuMy4zLjEgU2V0IHRoZSBzZWxlY3Rl
ZCBwcm9wZXJ0eSBvbiBuZXcgdmlkZW8gdHJhY2sgdG8gdHJ1ZS4KKyAgICAgICAgICAgICAgICBu
ZXdWaWRlb1RyYWNrLT5zZXRTZWxlY3RlZCh0cnVlKTsKKworICAgICAgICAgICAgICAgIC8vIDUu
My4zLjIgU2V0IGFjdGl2ZSB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICAgICAgYWN0
aXZlVHJhY2tGbGFnID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gNS4z
LjQgQWRkIG5ldyB2aWRlbyB0cmFjayB0byB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRo
aXMgU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIC8vIDUuMy41IFF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBi
dWJibGUgYW5kIGlzCisgICAgICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNl
cyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QK
KyAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGlzIFNvdXJjZUJ1ZmZlciBvYmplY3QuCisgICAgICAgICAgICB2aWRlb1RyYWNrcygpLT5h
cHBlbmQobmV3VmlkZW9UcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuMy42IEFkZCBuZXcgdmlk
ZW8gdHJhY2sgdG8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxl
bWVudC4KKyAgICAgICAgICAgIC8vIDUuMy43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3Rl
ZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCisgICAg
ICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBp
bnRlcmZhY2UsIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QKKyAgICAgICAgICAgIC8vIHJl
ZmVyZW5jZWQgYnkgdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxl
bWVudC4KKyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dmlkZW9UcmFja3Mo
KS0+YXBwZW5kKG5ld1ZpZGVvVHJhY2spOworCisgICAgICAgICAgICAvLyA1LjMuOCBDcmVhdGUg
YSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4K
KyAgICAgICAgICAgIEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyhuZXdWaWRlb1Ry
YWNrLT5pZCgpKSk7CisgICAgICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSBtX3Ry
YWNrQnVmZmVyTWFwLmFkZChuZXdWaWRlb1RyYWNrLT5pZCgpLCBUcmFja0J1ZmZlcigpKS5pdGVy
YXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIC8vIDUuMy45IEFkZCB0aGUgdHJhY2sgZGVzY3Jp
cHRpb24gZm9yIHRoaXMgdHJhY2sgdG8gdGhlIHRyYWNrIGJ1ZmZlci4KKyAgICAgICAgICAgIHRy
YWNrQnVmZmVyLmRlc2NyaXB0aW9uID0gaXQtPmRlc2NyaXB0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gNS40IEZvciBlYWNoIHRleHQgdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNl
Z21lbnQsIHJ1biBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGZvciAoYXV0byBpdCA9IHNlZ21l
bnQudGV4dFRyYWNrcy5iZWdpbigpOyBpdCAhPSBzZWdtZW50LnRleHRUcmFja3MuZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGUqIHRleHRUcmFja1ByaXZh
dGUgPSBpdC0+dHJhY2suZ2V0KCk7CisKKyAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4
dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJhY2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9w
dWxhdGVkIHdpdGggdGhlCisgICAgICAgICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBm
cm9tIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LgorICAgICAgICAgICAgUmVmUHRyPEluYmFu
ZFRleHRUcmFjaz4gbmV3VGV4dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCB0ZXh0VHJhY2tQcml2YXRlKTsKKworICAgICAgICAg
ICAgLy8gNS40LjIgSWYgdGhlIG1vZGUgcHJvcGVydHkgb24gbmV3IHRleHQgdHJhY2sgZXF1YWxz
ICJzaG93aW5nIiBvciAiaGlkZGVuIiwgdGhlbiBzZXQgYWN0aXZlCisgICAgICAgICAgICAvLyB0
cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAodGV4dFRyYWNrUHJpdmF0ZS0+bW9k
ZSgpICE9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRpc2FibGVkKQorICAgICAgICAgICAgICAg
IGFjdGl2ZVRyYWNrRmxhZyA9IHRydWU7CisKKyAgICAgICAgICAgIC8vIDUuNC4zIEFkZCBuZXcg
dGV4dCB0cmFjayB0byB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhpcyBTb3VyY2VCdWZm
ZXIgb2JqZWN0LgorICAgICAgICAgICAgLy8gNS40LjQgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0
cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMK
KyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2
ZW50IGludGVyZmFjZSwgYXQgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhpcworICAgICAgICAg
ICAgLy8gU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIHRleHRUcmFja3MoKS0+YXBw
ZW5kKG5ld1RleHRUcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuNC41IEFkZCBuZXcgdGV4dCB0
cmFjayB0byB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQu
CisgICAgICAgICAgICAvLyA1LjQuNiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZl
bnQgbmFtZWQgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcworICAgICAgICAg
ICAgLy8gbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJm
YWNlLCBhdCB0aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QKKyAgICAgICAgICAgIC8vIHJlZmVyZW5j
ZWQgYnkgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgor
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tzKCktPmFwcGVu
ZChuZXdUZXh0VHJhY2spOworCisgICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUgYSBuZXcgdHJh
Y2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KKyAgICAgICAg
ICAgIEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyh0ZXh0VHJhY2tQcml2YXRlLT5p
ZCgpKSk7CisgICAgICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSBtX3RyYWNrQnVm
ZmVyTWFwLmFkZCh0ZXh0VHJhY2tQcml2YXRlLT5pZCgpLCBUcmFja0J1ZmZlcigpKS5pdGVyYXRv
ci0+dmFsdWU7CisKKyAgICAgICAgICAgIC8vIDUuNC44IEFkZCB0aGUgdHJhY2sgZGVzY3JpcHRp
b24gZm9yIHRoaXMgdHJhY2sgdG8gdGhlIHRyYWNrIGJ1ZmZlci4KKyAgICAgICAgICAgIHRyYWNr
QnVmZmVyLmRlc2NyaXB0aW9uID0gaXQtPmRlc2NyaXB0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gNS41IElmIGFjdGl2ZSB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUg
Zm9sbG93aW5nIHN0ZXBzOgorICAgICAgICBpZiAoYWN0aXZlVHJhY2tGbGFnKSB7CisgICAgICAg
ICAgICAvLyA1LjUuMSBBZGQgdGhpcyBTb3VyY2VCdWZmZXIgdG8gYWN0aXZlU291cmNlQnVmZmVy
cy4KKyAgICAgICAgICAgIHNldEFjdGl2ZSh0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IDUuNiBTZXQgZmlyc3QgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmbGFnIHRvIHRydWUuCisgICAg
ICAgIG1fcmVjZWl2ZWRGaXJzdEluaXRpYWxpemF0aW9uU2VnbWVudCA9IHRydWU7CisgICAgfQor
CisgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUg
aXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlmICht
X3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAg
ICAgICAgLy8gNi4xIElmIG9uZSBvciBtb3JlIG9iamVjdHMgaW4gc291cmNlQnVmZmVycyBoYXZl
IGZpcnN0IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgZmxhZyBzZXQgdG8gZmFsc2UsIHRoZW4gYWJv
cnQgdGhlc2Ugc3RlcHMuCisgICAgICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgaSA8IG1f
c291cmNlLT5zb3VyY2VCdWZmZXJzKCktPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICghbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlcnMoKS0+aXRlbShpKS0+bV9yZWNlaXZlZEZpcnN0SW5p
dGlhbGl6YXRpb25TZWdtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIDYuMiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRy
aWJ1dGUgdG8gSEFWRV9NRVRBREFUQS4KKyAgICAgICAgLy8gNi4zIFF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWRlZG1ldGFkYXRhIGF0IHRoZSBtZWRpYSBlbGVt
ZW50LgorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSk7CisgICAgfQorCisgICAgLy8gNy4gSWYgdGhlIGFjdGl2ZSB0cmFjayBmbGFnIGVx
dWFscyB0cnVlIGFuZCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlCisgICAgLy8gYXR0
cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX0NVUlJFTlRfREFUQSwgdGhlbiBzZXQgdGhlIEhU
TUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZQorICAgIC8vIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFE
QVRBLgorICAgIGlmIChhY3RpdmVUcmFja0ZsYWcgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkg
PiBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKQorICAgICAgICBtX3ByaXZhdGUtPnNldFJl
YWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2
YXRlKiwgUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4pCitib29sIFNvdXJjZUJ1ZmZlcjo6dmFsaWRh
dGVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdt
ZW50KQogeworICAgIC8vIDMuMS4gVmVyaWZ5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcy4gSWYg
YW55IG9mIHRoZSBjaGVja3MgZmFpbCB0aGVuIHJ1biB0aGUgZW5kIG9mIHN0cmVhbQorICAgIC8v
IGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvICJkZWNvZGUiIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyAgICogVGhlIG51bWJlciBvZiBhdWRpbywgdmlkZW8s
IGFuZCB0ZXh0IHRyYWNrcyBtYXRjaCB3aGF0IHdhcyBpbiB0aGUgZmlyc3QgaW5pdGlhbGl6YXRp
b24gc2VnbWVudC4KKyAgICBpZiAoc2VnbWVudC5hdWRpb1RyYWNrcy5zaXplKCkgIT0gYXVkaW9U
cmFja3MoKS0+bGVuZ3RoKCkKKyAgICAgICAgfHwgc2VnbWVudC52aWRlb1RyYWNrcy5zaXplKCkg
IT0gdmlkZW9UcmFja3MoKS0+bGVuZ3RoKCkKKyAgICAgICAgfHwgc2VnbWVudC50ZXh0VHJhY2tz
LnNpemUoKSAhPSB0ZXh0VHJhY2tzKCktPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyAgICogVGhlIGNvZGVjcyBmb3IgZWFjaCB0cmFjaywgbWF0Y2ggd2hhdCB3YXMg
c3BlY2lmaWVkIGluIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50LgorICAgIGZvciAo
YXV0byBpdCA9IHNlZ21lbnQuYXVkaW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC5hdWRp
b1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoIW1fdmlkZW9Db2RlY3MuY29udGFp
bnMoaXQtPmRlc2NyaXB0aW9uLT5jb2RlYygpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBmb3IgKGF1dG8gaXQgPSBzZWdtZW50LnZpZGVvVHJhY2tzLmJlZ2luKCk7
IGl0ICE9IHNlZ21lbnQudmlkZW9UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKCFt
X2F1ZGlvQ29kZWNzLmNvbnRhaW5zKGl0LT5kZXNjcmlwdGlvbi0+Y29kZWMoKSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC52
aWRlb1RyYWNrcy5iZWdpbigpOyBpdCAhPSBzZWdtZW50LnZpZGVvVHJhY2tzLmVuZCgpOyArK2l0
KSB7CisgICAgICAgIGlmICghbV90ZXh0Q29kZWNzLmNvbnRhaW5zKGl0LT5kZXNjcmlwdGlvbi0+
Y29kZWMoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gICAq
IElmIG1vcmUgdGhhbiBvbmUgdHJhY2sgZm9yIGEgc2luZ2xlIHR5cGUgYXJlIHByZXNlbnQgKGll
IDIgYXVkaW8gdHJhY2tzKSwgdGhlbiB0aGUgVHJhY2sKKyAgICAvLyAgIElEcyBtYXRjaCB0aGUg
b25lcyBpbiB0aGUgZmlyc3QgaW5pdGlhbGl6YXRpb24gc2VnbWVudC4KKyAgICBpZiAoc2VnbWVu
dC5hdWRpb1RyYWNrcy5zaXplKCkgPj0gMikgeworICAgICAgICBmb3IgKGF1dG8gaXQgPSBzZWdt
ZW50LmF1ZGlvVHJhY2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQuYXVkaW9UcmFja3MuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgICAgIGlmICghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyhpdC0+
dHJhY2stPmlkKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChzZWdtZW50LnZpZGVvVHJhY2tzLnNpemUoKSA+PSAyKSB7CisgICAg
ICAgIGZvciAoYXV0byBpdCA9IHNlZ21lbnQudmlkZW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2Vn
bWVudC52aWRlb1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCFtX3RyYWNr
QnVmZmVyTWFwLmNvbnRhaW5zKGl0LT50cmFjay0+aWQoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNlZ21lbnQudGV4dFRyYWNr
cy5zaXplKCkgPj0gMikgeworICAgICAgICBmb3IgKGF1dG8gaXQgPSBzZWdtZW50LnZpZGVvVHJh
Y2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQudmlkZW9UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgICAgIGlmICghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyhpdC0+dHJhY2stPmlkKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitjbGFzcyBTYW1wbGVMZXNzVGhhbkNvbXBhcmF0b3IgeworcHVi
bGljOgorICAgIGJvb2wgb3BlcmF0b3IoKShzdGQ6OnBhaXI8TWVkaWFUaW1lLCBSZWZQdHI8TWVk
aWFTYW1wbGU+PiB2YWx1ZTEsIHN0ZDo6cGFpcjxNZWRpYVRpbWUsIFJlZlB0cjxNZWRpYVNhbXBs
ZT4+IHZhbHVlMikKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZTEuZmlyc3QgPCB2YWx1ZTIu
Zmlyc3Q7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKE1lZGlhVGltZSB2YWx1ZTEsIHN0
ZDo6cGFpcjxNZWRpYVRpbWUsIFJlZlB0cjxNZWRpYVNhbXBsZT4+IHZhbHVlMikKKyAgICB7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTEgPCB2YWx1ZTIuZmlyc3Q7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvcigpKHN0ZDo6cGFpcjxNZWRpYVRpbWUsIFJlZlB0cjxNZWRpYVNhbXBsZT4+IHZhbHVl
MSwgTWVkaWFUaW1lIHZhbHVlMikKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZTEuZmlyc3Qg
PCB2YWx1ZTI7CisgICAgfQorfTsKKworY2xhc3MgU2FtcGxlQ29udGFpbnNNZWRpYVRpbWVDb21w
YXJhdG9yIHsKK3B1YmxpYzoKKyAgICBib29sIGNvbnRhaW5zKE1lZGlhU2FtcGxlKiBzYW1wbGUs
IE1lZGlhVGltZSB0aW1lKQorICAgIHsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblN0
YXJ0VGltZSA9IHNhbXBsZS0+cHJlc2VudGF0aW9uVGltZSgpOworICAgICAgICBNZWRpYVRpbWUg
cHJlc2VudGF0aW9uRW5kVGltZSA9IHByZXNlbnRhdGlvblN0YXJ0VGltZSArIHNhbXBsZS0+ZHVy
YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIHByZXNlbnRhdGlvblN0YXJ0VGltZSA8PSB0aW1lICYm
IHByZXNlbnRhdGlvbkVuZFRpbWUgPiB0aW1lOworICAgIH0KKyAgICBib29sIG9wZXJhdG9yKCko
c3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUsIE1lZGlhVGlt
ZSB0aW1lKQorICAgIHsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblN0YXJ0VGltZSA9
IHZhbHVlLnNlY29uZC0+cHJlc2VudGF0aW9uVGltZSgpOworICAgICAgICBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uRW5kVGltZSA9IHByZXNlbnRhdGlvblN0YXJ0VGltZSArIHZhbHVlLnNlY29uZC0+
ZHVyYXRpb24oKTsKKyAgICAgICAgcmV0dXJuIHByZXNlbnRhdGlvblN0YXJ0VGltZSA8IHRpbWUg
JiYgcHJlc2VudGF0aW9uRW5kVGltZSA8PSB0aW1lOworICAgIH0KK307CisKK2NsYXNzIFNhbXBs
ZVByZXNlbnRhdGlvblRpbWVJc1dpdGhpblJhbmdlQ29tcGFyYXRvciB7CitwdWJsaWM6CisgICAg
Ym9vbCBvcGVyYXRvcigpKHN0ZDo6cGFpcjxNZWRpYVRpbWUsIE1lZGlhVGltZT4gcmFuZ2UsIHN0
ZDo6cGFpcjxNZWRpYVRpbWUsIFJlZlB0cjxNZWRpYVNhbXBsZT4+IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJhbmdlLnNlY29uZCA8IHZhbHVlLmZpcnN0OworICAgIH0KKyAgICBib29s
IG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFs
dWUsIHN0ZDo6cGFpcjxNZWRpYVRpbWUsIE1lZGlhVGltZT4gcmFuZ2UpCisgICAgeworICAgICAg
ICByZXR1cm4gdmFsdWUuZmlyc3QgPCByYW5nZS5maXJzdDsKKyAgICB9Cit9OworCitjbGFzcyBT
YW1wbGVJc1JhbmRvbUFjY2Vzc1ByZWRpY2F0ZSB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRv
cigpKHN0ZDo6cGFpcjxNZWRpYVRpbWUsIFJlZlB0cjxNZWRpYVNhbXBsZT4+IHZhbHVlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLnNlY29uZC0+ZmxhZ3MoKSA9PSBNZWRpYVNhbXBsZTo6
SXNTeW5jOworICAgIH0KK307CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzc1JlZlB0cjxNZWRp
YVNhbXBsZT4gc2FtcGxlKQoreworICAgIC8vIDMuNS44IENvZGVkIEZyYW1lIFByb2Nlc3NpbmcK
KyAgICAvLyBXaGVuIGNvbXBsZXRlIGNvZGVkIGZyYW1lcyBoYXZlIGJlZW4gcGFyc2VkIGJ5IHRo
ZSBzZWdtZW50IHBhcnNlciBsb29wIHRoZW4gdGhlIGZvbGxvd2luZyBzdGVwcworICAgIC8vIGFy
ZSBydW46CisgICAgLy8gMS4gRm9yIGVhY2ggY29kZWQgZnJhbWUgaW4gdGhlIG1lZGlhIHNlZ21l
bnQgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4xLiBMb29wIFRvcAorICAgIGRv
IHsKKyAgICAgICAgLy8gMS4xIChjdGQpIExldCBwcmVzZW50YXRpb24gdGltZXN0YW1wIGJlIGEg
ZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCByZXByZXNlbnRhdGlvbiBvZgorICAgICAg
ICAvLyB0aGUgY29kZWQgZnJhbWUncyBwcmVzZW50YXRpb24gdGltZXN0YW1wIGluIHNlY29uZHMu
CisgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lc3RhbXAgPSBzYW1wbGUtPnByZXNl
bnRhdGlvblRpbWUoKTsKKworICAgICAgICAvLyAxLjIgTGV0IGRlY29kZSB0aW1lc3RhbXAgYmUg
YSBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBj
b2RlZCBmcmFtZSdzCisgICAgICAgIC8vIGRlY29kZSB0aW1lc3RhbXAgaW4gc2Vjb25kcy4KKyAg
ICAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWVzdGFtcCA9IHNhbXBsZS0+ZGVjb2RlVGltZSgpOwor
CisgICAgICAgIC8vIDEuMyBMZXQgZnJhbWUgZHVyYXRpb24gYmUgYSBkb3VibGUgcHJlY2lzaW9u
IGZsb2F0aW5nIHBvaW50IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb2RlZCBmcmFtZSdzCisgICAg
ICAgIC8vIGR1cmF0aW9uIGluIHNlY29uZHMuCisgICAgICAgIE1lZGlhVGltZSBmcmFtZUR1cmF0
aW9uID0gc2FtcGxlLT5kdXJhdGlvbigpOworCisgICAgICAgIC8vIDEuNCBJZiBtb2RlIGVxdWFs
cyAic2VxdWVuY2UiIGFuZCBncm91cCBzdGFydCB0aW1lc3RhbXAgaXMgc2V0LCB0aGVuIHJ1biB0
aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yICJz
ZXF1ZW5jZSIgbW9kZQorCisgICAgICAgIC8vIDEuNSBJZiB0aW1lc3RhbXBPZmZzZXQgaXMgbm90
IDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGlmIChtX3RpbWVzdGFt
cE9mZnNldCAhPSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKKyAgICAgICAgICAgIC8vIDEuNS4x
IEFkZCB0aW1lc3RhbXBPZmZzZXQgdG8gdGhlIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAuCisgICAg
ICAgICAgICBwcmVzZW50YXRpb25UaW1lc3RhbXAgKz0gbV90aW1lc3RhbXBPZmZzZXQ7CisKKyAg
ICAgICAgICAgIC8vIDEuNS4yIEFkZCB0aW1lc3RhbXBPZmZzZXQgdG8gdGhlIGRlY29kZSB0aW1l
c3RhbXAuCisgICAgICAgICAgICBkZWNvZGVUaW1lc3RhbXAgKz0gbV90aW1lc3RhbXBPZmZzZXQ7
CisKKyAgICAgICAgICAgIC8vIDEuNS4zIElmIHRoZSBwcmVzZW50YXRpb24gdGltZXN0YW1wIG9y
IGRlY29kZSB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIHRoZSBwcmVzZW50YXRpb24gc3RhcnQKKyAg
ICAgICAgICAgIC8vIHRpbWUsIHRoZW4gcnVuIHRoZSBlbmQgb2Ygc3RyZWFtIGFsZ29yaXRobSB3
aXRoIHRoZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvICJkZWNvZGUiLCBhbmQKKyAgICAgICAgICAg
IC8vIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlv
blN0YXJ0VGltZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKKyAgICAgICAgICAgIGlmIChwcmVz
ZW50YXRpb25UaW1lc3RhbXAgPCBwcmVzZW50YXRpb25TdGFydFRpbWUgfHwgZGVjb2RlVGltZXN0
YW1wIDwgcHJlc2VudGF0aW9uU3RhcnRUaW1lKSB7CisgICAgICAgICAgICAgICAgbV9zb3VyY2Ut
PmVuZE9mU3RyZWFtKGRlY29kZUVycm9yKCksIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gMS42IExldCB0cmFjayBidWZmZXIgZXF1YWwgdGhlIHRyYWNrIGJ1ZmZlciB0aGF0IHRo
ZSBjb2RlZCBmcmFtZSB3aWxsIGJlIGFkZGVkIHRvLgorICAgICAgICBBdG9taWNTdHJpbmcgdHJh
Y2tJRCA9IHNhbXBsZS0+dHJhY2tJRCgpOworICAgICAgICBhdXRvIGl0ID0gbV90cmFja0J1ZmZl
ck1hcC5maW5kKHRyYWNrSUQpOworICAgICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5l
bmQoKSkKKyAgICAgICAgICAgIGl0ID0gbV90cmFja0J1ZmZlck1hcC5hZGQodHJhY2tJRCwgVHJh
Y2tCdWZmZXIoKSkuaXRlcmF0b3I7CisgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciA9
IGl0LT52YWx1ZTsKKworICAgICAgICAvLyAxLjcgSWYgbGFzdCBkZWNvZGUgdGltZXN0YW1wIGZv
ciB0cmFjayBidWZmZXIgaXMgc2V0IGFuZCBkZWNvZGUgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBs
YXN0CisgICAgICAgIC8vIGRlY29kZSB0aW1lc3RhbXA6CisgICAgICAgIC8vIE9SCisgICAgICAg
IC8vIElmIGxhc3QgZGVjb2RlIHRpbWVzdGFtcCBmb3IgdHJhY2sgYnVmZmVyIGlzIHNldCBhbmQg
dGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBkZWNvZGUgdGltZXN0YW1wIGFuZAorICAgICAgICAvLyBs
YXN0IGRlY29kZSB0aW1lc3RhbXAgaXMgZ3JlYXRlciB0aGFuIDIgdGltZXMgbGFzdCBmcmFtZSBk
dXJhdGlvbjoKKyAgICAgICAgaWYgKHRyYWNrQnVmZmVyLmxhc3REZWNvZGVUaW1lc3RhbXAuaXNW
YWxpZCgpICYmIChkZWNvZGVUaW1lc3RhbXAgPCB0cmFja0J1ZmZlci5sYXN0RGVjb2RlVGltZXN0
YW1wCisgICAgICAgICAgICB8fCBhYnMoZGVjb2RlVGltZXN0YW1wIC0gdHJhY2tCdWZmZXIubGFz
dERlY29kZVRpbWVzdGFtcCkgPiAodHJhY2tCdWZmZXIubGFzdEZyYW1lRHVyYXRpb24gKiAyKSkp
IHsKKyAgICAgICAgICAgIC8vIDEuNy4xIElmIG1vZGUgZXF1YWxzICJzZWdtZW50cyI6CisgICAg
ICAgICAgICAvLyBTZXQgaGlnaGVzdCBwcmVzZW50YXRpb24gZW5kIHRpbWVzdGFtcCB0byBwcmVz
ZW50YXRpb24gdGltZXN0YW1wLgorICAgICAgICAgICAgbV9oaWdoZXN0UHJlc2VudGF0aW9uRW5k
VGltZXN0YW1wID0gcHJlc2VudGF0aW9uVGltZXN0YW1wOworCisgICAgICAgICAgICAvLyBJZiBt
b2RlIGVxdWFscyAic2VxdWVuY2UiOgorICAgICAgICAgICAgLy8gU2V0IGdyb3VwIHN0YXJ0IHRp
bWVzdGFtcCBlcXVhbCB0byB0aGUgaGlnaGVzdCBwcmVzZW50YXRpb24gZW5kIHRpbWVzdGFtcC4K
KyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgInNlcXVlbmNlIiBtb2RlLgor
CisgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkuYmVn
aW4oKTsgaSAhPSBtX3RyYWNrQnVmZmVyTWFwLnZhbHVlcygpLmVuZCgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAvLyAxLjcuMiBVbnNldCB0aGUgbGFzdCBkZWNvZGUgdGltZXN0YW1wIG9uIGFs
bCB0cmFjayBidWZmZXJzLgorICAgICAgICAgICAgICAgIGktPmxhc3REZWNvZGVUaW1lc3RhbXAg
PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CisgICAgICAgICAgICAgICAgLy8gMS43LjMgVW5z
ZXQgdGhlIGxhc3QgZnJhbWUgZHVyYXRpb24gb24gYWxsIHRyYWNrIGJ1ZmZlcnMuCisgICAgICAg
ICAgICAgICAgaS0+bGFzdEZyYW1lRHVyYXRpb24gPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7
CisgICAgICAgICAgICAgICAgLy8gMS43LjQgVW5zZXQgdGhlIGhpZ2hlc3QgcHJlc2VudGF0aW9u
IHRpbWVzdGFtcCBvbiBhbGwgdHJhY2sgYnVmZmVycy4KKyAgICAgICAgICAgICAgICBpLT5oaWdo
ZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworICAg
ICAgICAgICAgICAgIC8vIDEuNy41IFNldCB0aGUgbmVlZCByYW5kb20gYWNjZXNzIHBvaW50IGZs
YWcgb24gYWxsIHRyYWNrIGJ1ZmZlcnMgdG8gdHJ1ZS4KKyAgICAgICAgICAgICAgICBpLT5uZWVk
UmFuZG9tQWNjZXNzRmxhZyA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IDEuNy42IEp1bXAgdG8gdGhlIExvb3AgVG9wIHN0ZXAgYWJvdmUgdG8gcmVzdGFydCBwcm9jZXNz
aW5nIG9mIHRoZSBjdXJyZW50IGNvZGVkIGZyYW1lLgorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyAxLjggTGV0IGZyYW1lIGVuZCB0aW1lc3RhbXAgZXF1YWwg
dGhlIHN1bSBvZiBwcmVzZW50YXRpb24gdGltZXN0YW1wIGFuZCBmcmFtZSBkdXJhdGlvbi4KKyAg
ICAgICAgTWVkaWFUaW1lIGZyYW1lRW5kVGltZXN0YW1wID0gcHJlc2VudGF0aW9uVGltZXN0YW1w
ICsgZnJhbWVEdXJhdGlvbjsKKworICAgICAgICAvLyAxLjkgSWYgcHJlc2VudGF0aW9uIHRpbWVz
dGFtcCBpcyBsZXNzIHRoYW4gYXBwZW5kV2luZG93U3RhcnQsIHRoZW4gc2V0IHRoZSBuZWVkIHJh
bmRvbSBhY2Nlc3MKKyAgICAgICAgLy8gcG9pbnQgZmxhZyB0byB0cnVlLCBkcm9wIHRoZSBjb2Rl
ZCBmcmFtZSwgYW5kIGp1bXAgdG8gdGhlIHRvcCBvZiB0aGUgbG9vcCB0byBzdGFydCBwcm9jZXNz
aW5nCisgICAgICAgIC8vIHRoZSBuZXh0IGNvZGVkIGZyYW1lLgorICAgICAgICAvLyAxLjEwIElm
IGZyYW1lIGVuZCB0aW1lc3RhbXAgaXMgZ3JlYXRlciB0aGFuIGFwcGVuZFdpbmRvd0VuZCwgdGhl
biBzZXQgdGhlIG5lZWQgcmFuZG9tIGFjY2VzcworICAgICAgICAvLyBwb2ludCBmbGFnIHRvIHRy
dWUsIGRyb3AgdGhlIGNvZGVkIGZyYW1lLCBhbmQganVtcCB0byB0aGUgdG9wIG9mIHRoZSBsb29w
IHRvIHN0YXJ0IHByb2Nlc3NpbmcKKyAgICAgICAgLy8gdGhlIG5leHQgY29kZWQgZnJhbWUuCisg
ICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYXBwZW5kIHdpbmRvd3MKKworICAgICAgICAvLyAx
LjExIElmIHRoZSBuZWVkIHJhbmRvbSBhY2Nlc3MgcG9pbnQgZmxhZyBvbiB0cmFjayBidWZmZXIg
ZXF1YWxzIHRydWUsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vIDEu
MTEuMSBJZiB0aGUgY29kZWQgZnJhbWUgaXMgbm90IGEgcmFuZG9tIGFjY2VzcyBwb2ludCwgdGhl
biBkcm9wIHRoZSBjb2RlZCBmcmFtZSBhbmQganVtcAorICAgICAgICAvLyB0byB0aGUgdG9wIG9m
IHRoZSBsb29wIHRvIHN0YXJ0IHByb2Nlc3NpbmcgdGhlIG5leHQgY29kZWQgZnJhbWUuCisgICAg
ICAgIC8vIDEuMTEuMiBTZXQgdGhlIG5lZWQgcmFuZG9tIGFjY2VzcyBwb2ludCBmbGFnIG9uIHRy
YWNrIGJ1ZmZlciB0byBmYWxzZS4KKyAgICAgICAgLy8gTk9URTogTW9ja1NhbXBsZUJveGVzIGFy
ZSBub3QgZGVjb2RhYmxlLgorCisgICAgICAgIC8vIDEuMTIgTGV0IHNwbGljZWQgYXVkaW8gZnJh
bWUgYmUgYW4gdW5zZXQgdmFyaWFibGUgZm9yIGhvbGRpbmcgYXVkaW8gc3BsaWNlIGluZm9ybWF0
aW9uCisgICAgICAgIC8vIDEuMTMgTGV0IHNwbGljZWQgdGltZWQgdGV4dCBmcmFtZSBiZSBhbiB1
bnNldCB2YXJpYWJsZSBmb3IgaG9sZGluZyB0aW1lZCB0ZXh0IHNwbGljZSBpbmZvcm1hdGlvbgor
ICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHNhbXBsZSBzcGxpY2luZy4KKworICAg
ICAgICBUcmFja0J1ZmZlcjo6U2FtcGxlTWFwIGVyYXNlZFNhbXBsZXM7CisgICAgICAgIE1lZGlh
VGltZSBtaWNyb3NlY29uZCgxLCAxMDAwMDAwKTsKKworICAgICAgICAvLyAxLjE0IElmIGxhc3Qg
ZGVjb2RlIHRpbWVzdGFtcCBmb3IgdHJhY2sgYnVmZmVyIGlzIHVuc2V0IGFuZCB0aGVyZSBpcyBh
IGNvZGVkIGZyYW1lIGluCisgICAgICAgIC8vIHRyYWNrIGJ1ZmZlciB3aXRoIGEgcHJlc2VudGF0
aW9uIHRpbWVzdGFtcCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcHJlc2VudGF0aW9uIHRpbWVzdGFt
cAorICAgICAgICAvLyBhbmQgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gdGhp
cyBjb2RlZCBmcmFtZSdzIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgcGx1cworICAgICAgICAvLyBp
dHMgZnJhbWUgZHVyYXRpb24sIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAg
IGlmICh0cmFja0J1ZmZlci5sYXN0RGVjb2RlVGltZXN0YW1wLmlzSW52YWxpZCgpKSB7CisgICAg
ICAgICAgICBTYW1wbGVDb250YWluc01lZGlhVGltZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKyAg
ICAgICAgICAgIGF1dG8gaXRlciA9IHN0ZDo6bG93ZXJfYm91bmQodHJhY2tCdWZmZXIuc2FtcGxl
cy5iZWdpbigpLCB0cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCBwcmVzZW50YXRpb25UaW1lc3Rh
bXAsIGNvbXBhcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0ZXIgIT0gdHJhY2tCdWZmZXIuc2Ft
cGxlcy5lbmQoKSAmJiBjb21wYXJhdG9yLmNvbnRhaW5zKGl0ZXItPnNlY29uZC5nZXQoKSwgcHJl
c2VudGF0aW9uVGltZXN0YW1wKSkgeworICAgICAgICAgICAgICAgIC8vIDEuMTQuMSBMZXQgb3Zl
cmxhcHBlZCBmcmFtZSBiZSB0aGUgY29kZWQgZnJhbWUgaW4gdHJhY2sgYnVmZmVyIHRoYXQgbWF0
Y2hlcyB0aGUgY29uZGl0aW9uIGFib3ZlLgorICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRpYVNh
bXBsZT4gb3ZlcmxhcHBlZEZyYW1lID0gaXRlci0+c2Vjb25kOworCisgICAgICAgICAgICAgICAg
Ly8gMS4xNC4yIElmIHRyYWNrIGJ1ZmZlciBjb250YWlucyBhdWRpbyBjb2RlZCBmcmFtZXM6Cisg
ICAgICAgICAgICAgICAgLy8gUnVuIHRoZSBhdWRpbyBzcGxpY2UgZnJhbWUgYWxnb3JpdGhtIGFu
ZCBpZiBhIHNwbGljZSBmcmFtZSBpcyByZXR1cm5lZCwgYXNzaWduIGl0IHRvCisgICAgICAgICAg
ICAgICAgLy8gc3BsaWNlZCBhdWRpbyBmcmFtZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIHNhbXBsZSBzcGxpY2luZy4KKworICAgICAgICAgICAgICAgIC8vIElm
IHRyYWNrIGJ1ZmZlciBjb250YWlucyB2aWRlbyBjb2RlZCBmcmFtZXM6CisgICAgICAgICAgICAg
ICAgaWYgKHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc1ZpZGVvKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gMS4xNC4yLjEgTGV0IG92ZXJsYXBwZWQgZnJhbWUgcHJlc2VudGF0aW9uIHRp
bWVzdGFtcCBlcXVhbCB0aGUgcHJlc2VudGF0aW9uIHRpbWVzdGFtcAorICAgICAgICAgICAgICAg
ICAgICAvLyBvZiBvdmVybGFwcGVkIGZyYW1lLgorICAgICAgICAgICAgICAgICAgICBNZWRpYVRp
bWUgb3ZlcmxhcHBlZEZyYW1lUHJlc2VudGF0aW9uVGltZXN0YW1wID0gb3ZlcmxhcHBlZEZyYW1l
LT5wcmVzZW50YXRpb25UaW1lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMS4xNC4yLjIg
TGV0IHJlbW92ZSB3aW5kb3cgdGltZXN0YW1wIGVxdWFsIG92ZXJsYXBwZWQgZnJhbWUgcHJlc2Vu
dGF0aW9uIHRpbWVzdGFtcAorICAgICAgICAgICAgICAgICAgICAvLyBwbHVzIDEgbWljcm9zZWNv
bmQuCisgICAgICAgICAgICAgICAgICAgIE1lZGlhVGltZSByZW1vdmVXaW5kb3dUaW1lc3RhbXAg
PSBvdmVybGFwcGVkRnJhbWVQcmVzZW50YXRpb25UaW1lc3RhbXAgKyBtaWNyb3NlY29uZDsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyAxLjE0LjIuMyBJZiB0aGUgcHJlc2VudGF0aW9uIHRpbWVz
dGFtcCBpcyBsZXNzIHRoYW4gdGhlIHJlbW92ZSB3aW5kb3cgdGltZXN0YW1wLAorICAgICAgICAg
ICAgICAgICAgICAvLyB0aGVuIHJlbW92ZSBvdmVybGFwcGVkIGZyYW1lIGFuZCBhbnkgY29kZWQg
ZnJhbWVzIHRoYXQgZGVwZW5kIG9uIGl0IGZyb20gdHJhY2sgYnVmZmVyLgorICAgICAgICAgICAg
ICAgICAgICBpZiAocHJlc2VudGF0aW9uVGltZXN0YW1wIDwgcmVtb3ZlV2luZG93VGltZXN0YW1w
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBNb2NrU2FtcGxlQm94ZXMgZG9u
J3QgaGF2ZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGVyYXNlZFNhbXBs
ZXMuaW5zZXJ0KCppdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnVmZmVyLnNh
bXBsZXMuZXJhc2UoaXRlcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0cmFjayBidWZmZXIgY29udGFpbnMgdGltZWQg
dGV4dCBjb2RlZCBmcmFtZXM6CisgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSB0ZXh0IHNwbGlj
ZSBmcmFtZSBhbGdvcml0aG0gYW5kIGlmIGEgc3BsaWNlIGZyYW1lIGlzIHJldHVybmVkLCBhc3Np
Z24gaXQgdG8gc3BsaWNlZCB0aW1lZCB0ZXh0IGZyYW1lLgorICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3Igc2FtcGxlIHNwbGljaW5nLgorICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgLy8gMS4xNSBSZW1vdmUgZXhpc3RpbmcgY29kZWQgZnJhbWVzIGlu
IHRyYWNrIGJ1ZmZlcjoKKyAgICAgICAgLy8gSWYgaGlnaGVzdCBwcmVzZW50YXRpb24gdGltZXN0
YW1wIGZvciB0cmFjayBidWZmZXIgaXMgbm90IHNldDoKKyAgICAgICAgaWYgKHRyYWNrQnVmZmVy
LmhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAuaXNJbnZhbGlkKCkpIHsKKyAgICAgICAgICAg
IC8vIFJlbW92ZSBhbGwgY29kZWQgZnJhbWVzIGZyb20gdHJhY2sgYnVmZmVyIHRoYXQgaGF2ZSBh
IHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgZ3JlYXRlciB0aGFuIG9yCisgICAgICAgICAgICAvLyBl
cXVhbCB0byBwcmVzZW50YXRpb24gdGltZXN0YW1wIGFuZCBsZXNzIHRoYW4gZnJhbWUgZW5kIHRp
bWVzdGFtcC4KKyAgICAgICAgICAgIFNhbXBsZVByZXNlbnRhdGlvblRpbWVJc1dpdGhpblJhbmdl
Q29tcGFyYXRvciBjb21wYXJhdG9yOworICAgICAgICAgICAgc3RkOjpwYWlyPE1lZGlhVGltZSwg
TWVkaWFUaW1lPiByYW5nZShwcmVzZW50YXRpb25UaW1lc3RhbXAsIGZyYW1lRW5kVGltZXN0YW1w
KTsKKyAgICAgICAgICAgIGF1dG8gaXRlcl9wYWlyID0gc3RkOjplcXVhbF9yYW5nZSh0cmFja0J1
ZmZlci5zYW1wbGVzLmJlZ2luKCksIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksIHJhbmdlLCBj
b21wYXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChpdGVyX3BhaXIuZmlyc3QgIT0gdHJhY2tCdWZm
ZXIuc2FtcGxlcy5lbmQoKSkgeworICAgICAgICAgICAgICAgIGVyYXNlZFNhbXBsZXMuaW5zZXJ0
KGl0ZXJfcGFpci5maXJzdCwgaXRlcl9wYWlyLnNlY29uZCk7CisgICAgICAgICAgICAgICAgdHJh
Y2tCdWZmZXIuc2FtcGxlcy5lcmFzZShpdGVyX3BhaXIuZmlyc3QsIGl0ZXJfcGFpci5zZWNvbmQp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgaGlnaGVzdCBwcmVz
ZW50YXRpb24gdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgaXMgc2V0IGFuZCBsZXNzIHRoYW4g
cHJlc2VudGF0aW9uIHRpbWVzdGFtcAorICAgICAgICBpZiAodHJhY2tCdWZmZXIuaGlnaGVzdFBy
ZXNlbnRhdGlvblRpbWVzdGFtcC5pc1ZhbGlkKCkgJiYgdHJhY2tCdWZmZXIuaGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcCA8IHByZXNlbnRhdGlvblRpbWVzdGFtcCkgeworICAgICAgICAgICAg
Ly8gUmVtb3ZlIGFsbCBjb2RlZCBmcmFtZXMgZnJvbSB0cmFjayBidWZmZXIgdGhhdCBoYXZlIGEg
cHJlc2VudGF0aW9uIHRpbWVzdGFtcCBncmVhdGVyIHRoYW4gaGlnaGVzdAorICAgICAgICAgICAg
Ly8gcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGZyYW1l
IGVuZCB0aW1lc3RhbXAuCisgICAgICAgICAgICBTYW1wbGVQcmVzZW50YXRpb25UaW1lSXNXaXRo
aW5SYW5nZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKyAgICAgICAgICAgIHN0ZDo6cGFpcjxNZWRp
YVRpbWUsIE1lZGlhVGltZT4gcmFuZ2UodHJhY2tCdWZmZXIuaGlnaGVzdFByZXNlbnRhdGlvblRp
bWVzdGFtcCwgZnJhbWVFbmRUaW1lc3RhbXApOworICAgICAgICAgICAgYXV0byBpdGVyX3BhaXIg
PSBzdGQ6OmVxdWFsX3JhbmdlKHRyYWNrQnVmZmVyLnNhbXBsZXMuYmVnaW4oKSwgdHJhY2tCdWZm
ZXIuc2FtcGxlcy5lbmQoKSwgcmFuZ2UsIGNvbXBhcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0
ZXJfcGFpci5maXJzdCAhPSB0cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpKSB7CisgICAgICAgICAg
ICAgICAgZXJhc2VkU2FtcGxlcy5pbnNlcnQoaXRlcl9wYWlyLmZpcnN0LCBpdGVyX3BhaXIuc2Vj
b25kKTsKKyAgICAgICAgICAgICAgICB0cmFja0J1ZmZlci5zYW1wbGVzLmVyYXNlKGl0ZXJfcGFp
ci5maXJzdCwgaXRlcl9wYWlyLnNlY29uZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyAxLjE2IFJlbW92ZSBkZWNvZGluZyBkZXBlbmRlbmNpZXMgb2YgdGhlIGNvZGVk
IGZyYW1lcyByZW1vdmVkIGluIHRoZSBwcmV2aW91cyBzdGVwOgorICAgICAgICBpZiAoIWVyYXNl
ZFNhbXBsZXMuZW1wdHkoKSkgeworICAgICAgICAgICAgLy8gSWYgZGV0YWlsZWQgaW5mb3JtYXRp
b24gYWJvdXQgZGVjb2RpbmcgZGVwZW5kZW5jaWVzIGlzIGF2YWlsYWJsZToKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgZGV0YWlsZWQgZGVwZW5kZW5jeSBpbmZvcm1hdGlv
bgorCisgICAgICAgICAgICAvLyBPdGhlcndpc2U6IFJlbW92ZSBhbGwgY29kZWQgZnJhbWVzIGJl
dHdlZW4gdGhlIGNvZGVkIGZyYW1lcyByZW1vdmVkIGluIHRoZSBwcmV2aW91cyBzdGVwCisgICAg
ICAgICAgICAvLyBhbmQgdGhlIG5leHQgcmFuZG9tIGFjY2VzcyBwb2ludCBhZnRlciB0aG9zZSBy
ZW1vdmVkIGZyYW1lcy4KKyAgICAgICAgICAgIGF1dG8gZmlyc3RfaXRlciA9IHN0ZDo6dXBwZXJf
Ym91bmQodHJhY2tCdWZmZXIuc2FtcGxlcy5iZWdpbigpLCB0cmFja0J1ZmZlci5zYW1wbGVzLmVu
ZCgpLCAqZXJhc2VkU2FtcGxlcy5iZWdpbigpLCBTYW1wbGVMZXNzVGhhbkNvbXBhcmF0b3IoKSk7
CisgICAgICAgICAgICBhdXRvIHNlY29uZF9pdGVyID0gc3RkOjpmaW5kX2lmKGZpcnN0X2l0ZXIs
IHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksIFNhbXBsZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRl
KCkpOworICAgICAgICAgICAgaWYgKGZpcnN0X2l0ZXIgIT0gdHJhY2tCdWZmZXIuc2FtcGxlcy5l
bmQoKSkgeworICAgICAgICAgICAgICAgIHRyYWNrQnVmZmVyLnNhbXBsZXMuZXJhc2UoZmlyc3Rf
aXRlciwgc2Vjb25kX2l0ZXIpOworICAgICAgICAgICAgICAgIGVyYXNlZFNhbXBsZXMuaW5zZXJ0
KGZpcnN0X2l0ZXIsIHNlY29uZF9pdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIDEuMTcgSWYgc3BsaWNlZCBhdWRpbyBmcmFtZSBpcyBzZXQ6CisgICAgICAgIC8v
IEFkZCBzcGxpY2VkIGF1ZGlvIGZyYW1lIHRvIHRoZSB0cmFjayBidWZmZXIuCisgICAgICAgIC8v
IElmIHNwbGljZWQgdGltZWQgdGV4dCBmcmFtZSBpcyBzZXQ6CisgICAgICAgIC8vIEFkZCBzcGxp
Y2VkIHRpbWVkIHRleHQgZnJhbWUgdG8gdGhlIHRyYWNrIGJ1ZmZlci4KKyAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBzYW1wbGUgc3BsaWNpbmcuCisKKyAgICAgICAgLy8gT3RoZXJ3
aXNlOgorICAgICAgICAvLyBBZGQgdGhlIGNvZGVkIGZyYW1lIHdpdGggdGhlIHByZXNlbnRhdGlv
biB0aW1lc3RhbXAsIGRlY29kZSB0aW1lc3RhbXAsIGFuZCBmcmFtZSBkdXJhdGlvbiB0byB0aGUg
dHJhY2sgYnVmZmVyLgorICAgICAgICB0cmFja0J1ZmZlci5zYW1wbGVzLmluc2VydChUcmFja0J1
ZmZlcjo6U2FtcGxlTWFwOjp2YWx1ZV90eXBlKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgc2FtcGxl
KSk7CisgICAgICAgIHRyYWNrQnVmZmVyLmRlY29kZVF1ZXVlLmluc2VydChUcmFja0J1ZmZlcjo6
U2FtcGxlTWFwOjp2YWx1ZV90eXBlKGRlY29kZVRpbWVzdGFtcCwgc2FtcGxlKSk7CisKKyAgICAg
ICAgLy8gMS4xOCBTZXQgbGFzdCBkZWNvZGUgdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgdG8g
ZGVjb2RlIHRpbWVzdGFtcC4KKyAgICAgICAgdHJhY2tCdWZmZXIubGFzdERlY29kZVRpbWVzdGFt
cCA9IGRlY29kZVRpbWVzdGFtcDsKKworICAgICAgICAvLyAxLjE5IFNldCBsYXN0IGZyYW1lIGR1
cmF0aW9uIGZvciB0cmFjayBidWZmZXIgdG8gZnJhbWUgZHVyYXRpb24uCisgICAgICAgIHRyYWNr
QnVmZmVyLmxhc3RGcmFtZUR1cmF0aW9uID0gZnJhbWVEdXJhdGlvbjsKKworICAgICAgICAvLyAx
LjIwIElmIGhpZ2hlc3QgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBmb3IgdHJhY2sgYnVmZmVyIGlz
IHVuc2V0IG9yIGZyYW1lIGVuZCB0aW1lc3RhbXAgaXMgZ3JlYXRlcgorICAgICAgICAvLyB0aGFu
IGhpZ2hlc3QgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCwgdGhlbiBzZXQgaGlnaGVzdCBwcmVzZW50
YXRpb24gdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIKKyAgICAgICAgLy8gdG8gZnJhbWUgZW5k
IHRpbWVzdGFtcC4KKyAgICAgICAgaWYgKHRyYWNrQnVmZmVyLmhpZ2hlc3RQcmVzZW50YXRpb25U
aW1lc3RhbXAuaXNJbnZhbGlkKCkgfHwgZnJhbWVFbmRUaW1lc3RhbXAgPiB0cmFja0J1ZmZlci5o
aWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKQorICAgICAgICAgICAgdHJhY2tCdWZmZXIuaGln
aGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCA9IGZyYW1lRW5kVGltZXN0YW1wOworCisgICAgICAg
IGlmIChlcmFzZWRTYW1wbGVzLnNpemUoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IGVyYXNlZFJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgICAgICAgICAgZm9y
IChhdXRvIGl0ZXIgPSBlcmFzZWRTYW1wbGVzLmJlZ2luKCk7IGl0ZXIgIT0gZXJhc2VkU2FtcGxl
cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgZG91YmxlIHN0YXJ0ID0gaXRlci0+
Zmlyc3QudG9Eb3VibGUoKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZW5kID0gKChpdGVyLT5m
aXJzdCArIGl0ZXItPnNlY29uZC0+ZHVyYXRpb24oKSkgKyBtaWNyb3NlY29uZCkudG9Eb3VibGUo
KTsKKyAgICAgICAgICAgICAgICBlcmFzZWRSYW5nZXMtPmFkZChzdGFydCwgZW5kKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVyYXNlZFJhbmdlcy0+aW52ZXJ0KCk7CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkLT5pbnRlcnNlY3RXaXRoKGVyYXNlZFJhbmdlcy5nZXQoKSk7CisgICAgICAg
IH0KKworICAgICAgICBtX2J1ZmZlcmVkLT5hZGQocHJlc2VudGF0aW9uVGltZXN0YW1wLnRvRG91
YmxlKCksIChwcmVzZW50YXRpb25UaW1lc3RhbXAgKyBmcmFtZUR1cmF0aW9uICsgbWljcm9zZWNv
bmQpLnRvRG91YmxlKCkpOworCisgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKDEpOwogfQog
CiBib29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKGNvbnN0IFNv
dXJjZUJ1ZmZlclByaXZhdGUqKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7CiB9CiAKIGJvb2wgU291cmNlQnVmZmVyOjpzb3Vy
Y2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgo
KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlk
ZW9UcmFjayogdHJhY2spCit7CisgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9lbmFi
bGVkIHRyYWNrIHN0YXRlCisgICAgLy8gSWYgdGhlIHNlbGVjdGVkIHZpZGVvIHRyYWNrIGNoYW5n
ZXMsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gSWYgdGhlIFNvdXJj
ZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgdmlkZW8gdHJh
Y2sgaXMgbm90IGFzc29jaWF0ZWQgd2l0aAorICAgIC8vIGFueSBvdGhlciBlbmFibGVkIHRyYWNr
cywgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKHRyYWNrLT5zZWxlY3RlZCgpCisg
ICAgICAgICYmICghbV92aWRlb1RyYWNrcyB8fCAhbV92aWRlb1RyYWNrcy0+aXNBbnlUcmFja1Nl
bGVjdGVkKCkpCisgICAgICAgICYmICghbV9hdWRpb1RyYWNrcyB8fCAhbV9hdWRpb1RyYWNrcy0+
aXNBbnlUcmFja0VuYWJsZWQoKSkKKyAgICAgICAgJiYgKCFtX3RleHRUcmFja3MgfHwgIW1fdGV4
dFRyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkpIHsKKyAgICAgICAgLy8gMS4xIFJlbW92ZSB0
aGUgU291cmNlQnVmZmVyIGZyb20gYWN0aXZlU291cmNlQnVmZmVycy4KKyAgICAgICAgLy8gMS4y
IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHJlbW92ZXNvdXJjZWJ1
ZmZlciBhdCBhY3RpdmVTb3VyY2VCdWZmZXJzCisgICAgICAgIHNldEFjdGl2ZShmYWxzZSk7Cisg
ICAgfSBlbHNlIGlmICghdHJhY2stPnNlbGVjdGVkKCkpIHsKKyAgICAgICAgLy8gMi4gSWYgdGhl
IFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIG5ld2x5IHNlbGVjdGVkIHZpZGVvIHRy
YWNrIGlzIG5vdCBhbHJlYWR5IGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMsCisgICAgICAgIC8vIHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyAyLjEgQWRkIHRoZSBTb3VyY2VCdWZm
ZXIgdG8gYWN0aXZlU291cmNlQnVmZmVycy4KKyAgICAgICAgLy8gMi4yIFF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGFkZHNvdXJjZWJ1ZmZlciBhdCBhY3RpdmVTb3Vy
Y2VCdWZmZXJzCisgICAgICAgIHNldEFjdGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICBpZiAoIWlz
UmVtb3ZlZCgpKQorICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnZpZGVvVHJhY2tT
ZWxlY3RlZENoYW5nZWQodHJhY2spOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFj
a0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIDIuNC41IENoYW5n
ZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0cmFjayBzdGF0ZQorICAgIC8vIElmIGFuIGF1ZGlvIHRy
YWNrIGJlY29tZXMgZGlzYWJsZWQgYW5kIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgdHJhY2sgaXMgbm90CisgICAgLy8gYXNzb2NpYXRlZCB3aXRoIGFueSBvdGhlciBlbmFi
bGVkIG9yIHNlbGVjdGVkIHRyYWNrLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IGlmICh0cmFjay0+ZW5hYmxlZCgpCisgICAgICAgICYmICghbV92aWRlb1RyYWNrcyB8fCAhbV92
aWRlb1RyYWNrcy0+aXNBbnlUcmFja1NlbGVjdGVkKCkpCisgICAgICAgICYmICghbV9hdWRpb1Ry
YWNrcyB8fCAhbV9hdWRpb1RyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkKKyAgICAgICAgJiYg
KCFtX3RleHRUcmFja3MgfHwgIW1fdGV4dFRyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkpIHsK
KyAgICAgICAgLy8gMS4gUmVtb3ZlIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRo
ZSBhdWRpbyB0cmFjayBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgLy8gMi4gUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmVtb3Zlc291cmNlYnVmZmVy
IGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgc2V0QWN0aXZlKGZhbHNlKTsKKyAgICB9
IGVsc2UgaWYgKCF0cmFjay0+ZW5hYmxlZCgpKSB7CisgICAgICAgIC8vIElmIGFuIGF1ZGlvIHRy
YWNrIGJlY29tZXMgZW5hYmxlZCBhbmQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGgg
dGhpcyB0cmFjayBpcworICAgICAgICAvLyBub3QgYWxyZWFkeSBpbiBhY3RpdmVTb3VyY2VCdWZm
ZXJzLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyAxLiBBZGQgdGhl
IFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIGF1ZGlvIHRyYWNrIHRvIGFjdGl2ZVNv
dXJjZUJ1ZmZlcnMKKyAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUg
ZXZlbnQgbmFtZWQgYWRkc291cmNlYnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAg
ICAgc2V0QWN0aXZlKHRydWUpOworICAgIH0KKworICAgIGlmICghaXNSZW1vdmVkKCkpCisgICAg
ICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRy
YWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayogdHJhY2spCit7CisgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9lbmFibGVk
IHRyYWNrIHN0YXRlCisgICAgLy8gSWYgYSB0ZXh0IHRyYWNrIG1vZGUgYmVjb21lcyAiZGlzYWJs
ZWQiIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYWNrIGlzIG5v
dAorICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbnkgb3RoZXIgZW5hYmxlZCBvciBzZWxlY3RlZCB0
cmFjaywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpCisgICAgICAgICYmICghbV92aWRlb1Ry
YWNrcyB8fCAhbV92aWRlb1RyYWNrcy0+aXNBbnlUcmFja1NlbGVjdGVkKCkpCisgICAgICAgICYm
ICghbV9hdWRpb1RyYWNrcyB8fCAhbV9hdWRpb1RyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkK
KyAgICAgICAgJiYgKCFtX3RleHRUcmFja3MgfHwgIW1fdGV4dFRyYWNrcy0+aXNBbnlUcmFja0Vu
YWJsZWQoKSkpIHsKKyAgICAgICAgLy8gMS4gUmVtb3ZlIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2Np
YXRlZCB3aXRoIHRoZSBhdWRpbyB0cmFjayBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAg
ICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmVtb3Zl
c291cmNlYnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgc2V0QWN0aXZlKGZh
bHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJZiBhIHRleHQgdHJhY2sgbW9kZSBiZWNv
bWVzICJzaG93aW5nIiBvciAiaGlkZGVuIiBhbmQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVk
IHdpdGggdGhpcworICAgICAgICAvLyB0cmFjayBpcyBub3QgYWxyZWFkeSBpbiBhY3RpdmVTb3Vy
Y2VCdWZmZXJzLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyAxLiBB
ZGQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIHRleHQgdHJhY2sgdG8gYWN0
aXZlU291cmNlQnVmZmVycworICAgICAgICAvLyAyLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCBhZGRzb3VyY2VidWZmZXIgYXQgYWN0aXZlU291cmNlQnVmZmVycwor
ICAgICAgICBzZXRBY3RpdmUodHJ1ZSk7CisgICAgfQorCisgICAgaWYgKCFpc1JlbW92ZWQoKSkK
KyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tNb2RlQ2hhbmdlZCh0
cmFjayk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
KiB0cmFjaywgV1RGOjpQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQoreworICAgIGlmICgh
aXNSZW1vdmVkKCkpCisgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNr
QWRkQ3VlKHRyYWNrLCBjdWUpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRk
Q3VlcyhUZXh0VHJhY2sqIHRyYWNrLCBUZXh0VHJhY2tDdWVMaXN0IGNvbnN0KiBjdWVMaXN0KQor
eworICAgIGlmICghaXNSZW1vdmVkKCkpCisgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQo
KS0+dGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Cit9CisKK3ZvaWQgU291cmNlQnVm
ZmVyOjp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiB0cmFjaywgV1RGOjpQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4gY3VlKQoreworICAgIGlmICghaXNSZW1vdmVkKCkpCisgICAgICAgIG1f
c291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRyYWNrLCBjdWUpOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqIHRy
YWNrLCBUZXh0VHJhY2tDdWVMaXN0IGNvbnN0KiBjdWVMaXN0KQoreworICAgIGlmICghaXNSZW1v
dmVkKCkpCisgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrUmVtb3Zl
Q3Vlcyh0cmFjaywgY3VlTGlzdCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tL
aW5kQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIGlmICghaXNSZW1vdmVkKCkpCisg
ICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJh
Y2spOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCAwZTYwNWNmNWU4YjA2NmNj
YzRiYzgxYTRiYmYyYWZmMmNkNTVmMjM0Li4zYmFiYTg1MmNiZTQ2YzkzZTkyMGE1OTAxZjlkNzYy
NjJkY2U2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmgKQEAgLTM0LDIzICszNCwzMCBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNr
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFi
bGUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFj
a0xpc3Q7CiBjbGFzcyBNZWRpYVNvdXJjZTsKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGU7Citj
bGFzcyBUZXh0VHJhY2tMaXN0OwogY2xhc3MgVGltZVJhbmdlczsKK2NsYXNzIFZpZGVvVHJhY2tM
aXN0OwogCi1jbGFzcyBTb3VyY2VCdWZmZXIgRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3Vy
Y2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQgeworY2xhc3MgU291cmNlQnVmZmVyIEZJTkFMIDogcHVibGljIFJlZkNvdW50
ZWQ8U291cmNlQnVmZmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LCBwdWJsaWMgQXVkaW9UcmFja0NsaWVudCwgcHVibGljIFZpZGVv
VHJhY2tDbGllbnQsIHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmPFNvdXJjZUJ1ZmZlcj4gY3JlYXRlKFBhc3NSZWY8U291cmNlQnVmZmVyUHJpdmF0
ZT4sIE1lZGlhU291cmNlKik7CiAKQEAgLTU5LDYgKzY2LDcgQEAgcHVibGljOgogICAgIC8vIFNv
dXJjZUJ1ZmZlci5pZGwgbWV0aG9kcwogICAgIGJvb2wgdXBkYXRpbmcoKSBjb25zdCB7IHJldHVy
biBtX3VwZGF0aW5nOyB9CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZChFeGNl
cHRpb25Db2RlJikgY29uc3Q7CisgICAgY29uc3QgUmVmUHRyPFRpbWVSYW5nZXM+JiBidWZmZXJl
ZCgpIGNvbnN0OwogICAgIGRvdWJsZSB0aW1lc3RhbXBPZmZzZXQoKSBjb25zdDsKICAgICB2b2lk
IHNldFRpbWVzdGFtcE9mZnNldChkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFw
cGVuZEJ1ZmZlcihQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBFeGNlcHRpb25Db2RlJik7
CkBAIC02OCw2ICs3NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhYm9ydElmVXBkYXRpbmcoKTsK
ICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKTsKIAorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja3MoKTsKKyAgICBBdWRpb1RyYWNr
TGlzdCogYXVkaW9UcmFja3MoKTsKKyAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tzKCk7Cisj
ZW5kaWYKKwogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBPVkVSUklERTsKQEAgLTg4LDI3ICsxMDIsNjggQEAgcHJpdmF0ZToKICAgICBTb3Vy
Y2VCdWZmZXIoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiwgTWVkaWFTb3VyY2UqKTsKIAog
ICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURp
ZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZSosIGNvbnN0IEluaXRp
YWxpemF0aW9uU2VnbWVudCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzc1JlZlB0
cjxNZWRpYVNhbXBsZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQ
cml2YXRlSGFzQXVkaW8oY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oY29uc3QgU291
cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0IE9WRVJSSURFOwogCisgICAgLy8gQXVkaW9UcmFja0Ns
aWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayopIE9WRVJSSURFOworCisgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKSBPVkVSUklERTsKKworICAg
IC8vIFRleHRUcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdl
ZChUZXh0VHJhY2sqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNo
YW5nZWQoVGV4dFRyYWNrKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0Fk
ZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRU
cmFja0N1ZT4pIE9WRVJSSURFOworCisgICAgc3RhdGljIGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBkZWNvZGVFcnJvcigpOworICAgIHN0YXRpYyBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmV0
d29ya0Vycm9yKCk7CisKICAgICBib29sIGlzUmVtb3ZlZCgpIGNvbnN0OwogICAgIHZvaWQgc2No
ZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CiAKICAgICB2b2lkIGFw
cGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgYXBwZW5kQnVmZmVyVGltZXJGaXJlZChUaW1lcjxTb3VyY2VCdWZmZXI+
Kik7CiAKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKKworICAgIGJvb2wgdmFsaWRhdGVJbml0
aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50Jik7CisKICAgICBS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBt
X3NvdXJjZTsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogICAg
IGJvb2wgbV91cGRhdGluZzsKLSAgICBkb3VibGUgbV90aW1lc3RhbXBPZmZzZXQ7CiAKICAgICBW
ZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBUaW1lcjxTb3Vy
Y2VCdWZmZXI+IG1fYXBwZW5kQnVmZmVyVGltZXI7CisKKyAgICBSZWZQdHI8VmlkZW9UcmFja0xp
c3Q+IG1fdmlkZW9UcmFja3M7CisgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJh
Y2tzOworICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisKKyAgICBWZWN0
b3I8QXRvbWljU3RyaW5nPiBtX3ZpZGVvQ29kZWNzOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+
IG1fYXVkaW9Db2RlY3M7CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gbV90ZXh0Q29kZWNzOwor
CisgICAgTWVkaWFUaW1lIG1fdGltZXN0YW1wT2Zmc2V0OworICAgIE1lZGlhVGltZSBtX2hpZ2hl
c3RQcmVzZW50YXRpb25FbmRUaW1lc3RhbXA7CisKKyAgICBzdHJ1Y3QgVHJhY2tCdWZmZXI7Cisg
ICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFRyYWNrQnVmZmVyPiBtX3RyYWNrQnVmZmVyTWFwOwor
ICAgIGJvb2wgbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBtX2J1ZmZlcmVkOworICAgIGJvb2wgbV9hY3RpdmU7CisKKyAgICBlbnVt
IEFwcGVuZFN0YXRlVHlwZSB7IFdhaXRpbmdGb3JTZWdtZW50LCBQYXJzaW5nSW5pdFNlZ21lbnQs
IFBhcnNpbmdNZWRpYVNlZ21lbnQgfTsKKyAgICBBcHBlbmRTdGF0ZVR5cGUgbV9hcHBlbmRTdGF0
ZTsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCmluZGV4IGFiZGYzYjYxZWZk
ZTJmNjZlZmUyOWRmMWUwNGJmNGQ4MGNlZjViZmMuLmY1N2E3MDdjYTUzMWUyNmI2Nzk5MTI2ZTYx
OTdjNDhkMzE0OTRjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKQEAgLTUyLDUgKzUyLDEwIEBACiAKICAgICAvLyBBYm9y
dCB0aGUgY3VycmVudCBzZWdtZW50IGFwcGVuZCBzZXF1ZW5jZS4KICAgICBbUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIGFib3J0KCk7CisgICAgCisgICAgLy8gVHJhY2sgc3VwcG9ydAorICAgIFtDb25k
aXRpb25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1
ZGlvVHJhY2tzOworICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0cmli
dXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJhY2tzOworICAgIFtDb25kaXRpb25hbD1WSURFT19U
UkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXJMaXN0LmgKaW5kZXggOTQ0YWQ3ZTVjOGJjZmE2NmNlYzQwMDIwYjA1ZGUyZmE4OWY4NzQzZi4u
MzdmNmVmYTRhZjE3N2VkNWY1ZDNlNmIzZWNhYzFjOGY4N2NmYzI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKQEAg
LTU5LDYgKzU5LDkgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMoU291cmNlQnVmZmVyKiBi
dWZmZXIpIHsgcmV0dXJuIG1fbGlzdC5maW5kKGJ1ZmZlcikgIT0gbm90Rm91bmQ7IH0KICAgICB2
b2lkIGNsZWFyKCk7CiAKKyAgICBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlcj4+OjppdGVyYXRv
ciBiZWdpbigpIHsgcmV0dXJuIG1fbGlzdC5iZWdpbigpOyB9CisgICAgVmVjdG9yPFJlZlB0cjxT
b3VyY2VCdWZmZXI+Pjo6aXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9saXN0LmVuZCgpOyB9CisK
ICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU291
cmNlQnVmZmVyTGlzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tNZWRpYVNvdXJjZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlZmQ0ZTg2YjVmMTY5ZTc0MTM1ZTcyMmRiODYxZjk3ZmU2ZTJmOWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRU
cmFja01lZGlhU291cmNlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVGV4
dFRyYWNrTWVkaWFTb3VyY2VfaAorI2RlZmluZSBUZXh0VHJhY2tNZWRpYVNvdXJjZV9oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJUZXh0VHJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZm
ZXI7CisKK2NsYXNzIFRleHRUcmFja01lZGlhU291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
U291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIoVGV4dFRyYWNrKiB0cmFjaykgeyByZXR1cm4gdHJh
Y2stPnNvdXJjZUJ1ZmZlcigpOyB9Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFT
b3VyY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tN
ZWRpYVNvdXJjZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3ZGQzNTA2ZDQ1ZWYwMzIyOWViZTI0MDc3NGEz
OGQzOTUzYjdhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFJlZJREVPX1RSQUNLLAorXQorcGFy
dGlhbCBpbnRlcmZhY2UgVGV4dFRyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNl
QnVmZmVyIHNvdXJjZUJ1ZmZlcjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MTk1NzA5OTJkMzkxYjkyZDEwNzU4ZGU5OTViOGYyNzkyNzMwZDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3Vy
Y2UuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWaWRlb1RyYWNrTWVkaWFT
b3VyY2VfaAorI2RlZmluZSBWaWRlb1RyYWNrTWVkaWFTb3VyY2VfaAorCisjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFj
ay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlcjsKKworY2xh
c3MgVmlkZW9UcmFja01lZGlhU291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU291cmNlQnVm
ZmVyKiBzb3VyY2VCdWZmZXIoVmlkZW9UcmFjayogdHJhY2spIHsgcmV0dXJuIHRyYWNrLT5zb3Vy
Y2VCdWZmZXIoKTsgfQorfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNv
dXJjZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg2NmEyOGIwN2E5ZmRhNTUwMjNiYjc5MzRjOTY5Y2Q0MGEy
ODYyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvVmlkZW9UcmFja01lZGlhU291cmNlLmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KK1sK
KyAgICBDb25kaXRpb25hbD1NRURJQV9TT1VSQ0UmVklERU9fVFJBQ0ssCitdCitwYXJ0aWFsIGlu
dGVyZmFjZSBWaWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlQnVmZmVy
IHNvdXJjZUJ1ZmZlcjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWFiYzBmYjZhZmI3N2E5MDJiYTEzOTI5ZTQxZWJmM2Y0
Yjg0OWQ3Mi4uNjAzZGU5NjIyOTJiM2ZmNTg4OTE4N2M4NjMzM2M1YWMwMWFiYmM5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTMyMyw2ICs1MzIzLDkgQEAKIAkJQ0Q1NERFNEIxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vz
c2lvbk1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLzsgfTsK
IAkJQ0Q2MUZFNjcxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBOTQyRTExNUI1
Q0UyMjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwICovOyB9OwogCQlDRDYxRkU2
ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBOTQyRTIxNUI1Q0UyMjAwRDUyNUQx
IC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCAqLzsgfTsKKworCQlDRDY0MUVCMzE4MThGNUVEMDBF
RTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlLmggKi87IH07CisJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VC
dWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICov
OyB9OwogCQlDRDY0MUVCRjE4MTlCMzYwMDBFRTRDNDEgLyogTWVkaWFUaW1lTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUJEMTgxOUIz
NTkwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuY3BwICovOyB9OwogCQlDRDY0MUVDMDE4MTlCMzYw
MDBFRTRDNDEgLyogTWVkaWFUaW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCRTE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1lTWFj
LmggKi87IH07CiAJCUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
ICovOyB9OwpAQCAtNTMzMiw2ICs1MzM1LDkgQEAKIAkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwOTEzOTVBQjZBMDBGOTU2
QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJ
Q0Q4MjAzMTAxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEUxMzk1QUNFNzAw
Rjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1t
ICovOyB9OworCQlDRDhCNUE0NjE4MERGRjRFMDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhC
NUE0NTE4MERGRjRFMDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggKi87IH07CisJ
CUNEOEI1QTQ5MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjVBNDgxODBFMTM4
QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggKi87IH07CisJCUNEOEI1QTRDMTgw
RTE3QzAwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEI1QTRCMTgwRTE3QzAwMDhCOEU2NSAv
KiBBdWRpb1RyYWNrTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0Q5REUxNzQxN0FBQzc0QzAwRUEz
ODZEIC8qIEpTTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q5REUxNzIxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2Uu
Y3BwICovOyB9OwogCQlDRDlERTE3NTE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5REUxNzMx
N0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0Q5REUxN0ExN0FB
Qzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOURFMTc2MTdBQUM3NUIwMEVBMzg2RCAvKiBKU1Nv
dXJjZUJ1ZmZlci5jcHAgKi87IH07CkBAIC01Mzg1LDYgKzUzOTEsNyBAQAogCQlDREVBN0M4NTEy
NzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyog
UmVuZGVyRnVsbFNjcmVlbi5jcHAgKi87IH07CiAJCUNERUUzOTM3MTc5NzQyNTkwMDFENzU4MCAv
KiBQdWJsaWNVUkxNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUUzOTM2MTc5NzQyNTkwMDFENzU4MCAvKiBQdWJsaWNVUkxNYW5hZ2Vy
LmNwcCAqLzsgfTsKIAkJQ0RFRjRGRDcxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUY0RkQ2MTdF
ODVDOEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RGMkIwMDQxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlh
RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9uLmggKi87IH07
CiAJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU0MTQ1NzY3ODcw
MDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3QUEgLyogTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZB
MzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsK
QEAgLTY3NTgsOCArNjc2NSw4IEBACiAJCTA3QzU5QjVBMTdGNEIyMDgwMDBGQkNCQiAvKiBKU0F1
ZGlvU3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRp
b1N0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjVCMTdG
NEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1N0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJl
YW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvU3RyZWFt
VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNjExN0Y0Q0Y4NzAw
MEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwOyBwYXRoID0gbW9jay9N
b2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
N0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBwYXRo
ID0gbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2MjE3RjRDRjg3
MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI2NjE3Rjc4NEJBMDAw
RkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTb3VyY2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdDNTlCNjcxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02OTQ0LDggKzY5NTEsOCBAQAogCQkwRkQzMDhENDExN0QxNjg0MDBBNzkx
RjcgLyogUmVuZGVySUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlcklGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ3MjM4MDBFQzhC
RDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZsb2F0UXVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ3MjM4MTBF
QzhCRDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZsb2F0UXVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGRTcxNDAzMTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDsg
cGF0aCA9IG1vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3JvbGxiYXJUaGVtZU1vY2suaDsg
cGF0aCA9IG1vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRTcxNDAzMTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFNzE0MDQxNDIxNzBCODAwREIz
M0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxiYXJUaGVtZU1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZFNzE0MTUxNDIxODlGQzAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNTkxMDJCQTkwMTAwNjZGMzlBIC8qIERPTVN0eWxl
TWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU3R5bGVNZWRpYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI1QTEwMkJBOTAxMDA2NkYzOUEg
LyogRE9NU3R5bGVNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTVN0eWxlTWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTA5
LDggKzg1MTYsOCBAQAogCQk1OTEwMkZCQTE0MzI3RDNCMDAzQzlEMDQgLyogQ29udGVudFNlYXJj
aFV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWFyY2hV
dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTEzQTIzRjEzRDQ5RUJBMDBG
NUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElkZW50aWZpZXJzRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU5MTNBMjQwMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3Rvcnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRlbnRpZmllcnNGYWN0b3J5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1v
Y2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTk1OEYxQ0IxMzQzOTE3QzAwODBCMzFGIC8qIFhNTFZpZXdlci5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LmNzczsgcGF0aCA9IFhNTFZpZXdlci5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU5NThGMUNDMTM0MzkxN0MwMDgwQjMxRiAvKiBYTUxWaWV3ZXIuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBYTUxWaWV3ZXIuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU5ODM2NURDMTM1NUY1M0MwMDFCMTg1RCAvKiBKU1Bvc2l0aW9u
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkNh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDczNSw4ICsxMDc0Miw4
IEBACiAJCUFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU5MTU3RTUwMkYw
MEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNh
bnZhc0luc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBQUUy
N0I3NDE2Q0JGQzBEMDA2MjMwNDMgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2suY3BwOyBwYXRoID0gbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFBRTI3Qjc1MTZDQkZDMEQwMDYy
MzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oOyBwYXRoID0g
bW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBQUUyN0I3NDE2Q0JGQzBEMDA2MjMwNDMgLyogUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBQUUyN0I3NTE2Q0JGQzBEMDA2MjMwNDMgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFGNUI3QjEx
NTI0QjRCRDAwMDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQUIyM0EzMjUwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCMjNB
MzI2MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjczLDggKzEyMjgwLDExIEBACiAJCUNENTRB
NzVFMTgwRjUzNTAwMEIwNzZDOSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25N
YW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0
REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJj
ZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VQ
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENjQxRUIyMTgxOEY1RUQw
MEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q2NDFFQkQxODE5QjM1OTAwRUU0QzQxIC8qIE1lZGlhVGltZU1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYVRpbWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDY0MUVCRTE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1lTWFjLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhVGltZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDY0
MUVDNzE4MUVENjAxMDBFRTRDNDEgLyogTWVkaWFTYW1wbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFTYW1wbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3RTA1MjAxNjUxQTg0
MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IG9iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEN0UwNTIxMTY1MUE4NDEw
MEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHBhdGggPSBvYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyODMsNiArMTIyOTMsMTIgQEAKIAkJ
Q0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYg
LyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDhCNUE0NDE4MEREOEQ2MDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBWaWRlb1RyYWNrTWVkaWFTb3VyY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRDhCNUE0NTE4MERGRjRFMDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tNZWRpYVNvdXJj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhCNUE0NzE4MEUxMzYxMDA4QjhF
NjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRUcmFja01lZGlhU291cmNl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4QjVBNDgxODBFMTM4QjAwOEI4
RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRUcmFja01lZGlhU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEOEI1QTRBMTgwRTE3QTMwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEOEI1QTRCMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVkaWFTb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja01lZGlhU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOURFMTcyMTdBQUM3NEMwMEVBMzg2
RCAvKiBKU01lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlE
RTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU01lZGlhU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEOURFMTc2MTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NvdXJjZUJ1ZmZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM2OSw2ICsxMjM4NSw3IEBACiAJCUNERUUz
OTM2MTc5NzQyNTkwMDFENzU4MCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1YmxpY1VSTE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzODE3OTc0Mjc0MDAxRDc1ODAgLyogVVJMUmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFRjRGRDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR3JpZExlbmd0aC5oOyBwYXRoID0gc3R5bGUvR3Jp
ZExlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwMzE4MUYwNTlD
MDBGMkI0MjQgLyogTWVkaWFEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdB
QSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQ5OTYsNyArMTUwMTMsNyBAQAogCQkJCTBGRTcxNDAzMTQyMTcwQjgwMERCMzNCQSAvKiBT
Y3JvbGxiYXJUaGVtZU1vY2suY3BwICovLAogCQkJCTBGRTcxNDA0MTQyMTcwQjgwMERCMzNCQSAv
KiBTY3JvbGxiYXJUaGVtZU1vY2suaCAqLywKIAkJCSk7Ci0JCQluYW1lID0gbW9jazsKKwkJCXBh
dGggPSBtb2NrOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJNURBNUUwRjkx
MDJCOTUwNDAwMDg4Q0Y5IC8qIFdlYlNvY2tldHMgKi8gPSB7CkBAIC0xODIyMSw2ICsxODIzOCw4
IEBACiAJCUIxQTk0MkREMTVCNUNFMjIwMEQ1MjVEMSAvKiBtZWRpYXNvdXJjZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0Q4QjVBNEIxODBFMTdDMDAw
OEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oICovLAorCQkJCUNEOEI1QTRBMTgwRTE3
QTMwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRsICovLAogCQkJCUNEOURFMTdF
MTdBQUQ2NEUwMEVBMzg2RCAvKiBET01VUkxNZWRpYVNvdXJjZS5jcHAgKi8sCiAJCQkJQ0Q5REUx
N0YxN0FBRDY0RTAwRUEzODZEIC8qIERPTVVSTE1lZGlhU291cmNlLmggKi8sCiAJCQkJQ0Q5REUx
ODAxN0FBRDY0RTAwRUEzODZEIC8qIERPTVVSTE1lZGlhU291cmNlLmlkbCAqLywKQEAgLTE4MjM3
LDYgKzE4MjU2LDEwIEBACiAJCQkJQ0QzQTQ5NUIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuY3BwICovLAogCQkJCUNEM0E0OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VC
dWZmZXJMaXN0LmggKi8sCiAJCQkJQ0QzQTQ5NUQxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaWRsICovLAorCQkJCUNEOEI1QTQ4MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJh
Y2tNZWRpYVNvdXJjZS5oICovLAorCQkJCUNEOEI1QTQ3MTgwRTEzNjEwMDhCOEU2NSAvKiBUZXh0
VHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8sCisJCQkJQ0Q4QjVBNDUxODBERkY0RTAwOEI4RTY1IC8q
IFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oICovLAorCQkJCUNEOEI1QTQ0MTgwREQ4RDYwMDhCOEU2
NSAvKiBWaWRlb1RyYWNrTWVkaWFTb3VyY2UuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSBtZWRp
YXNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xODkwOSw2ICsxODkzMiw4
IEBACiAJCUIyQTAxNTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0Q2NDFFQjExODE4RjVFRDAwRUU0
QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovLAorCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVF
NEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8sCiAJCQkJMDc2RjBEMDgxMkI4MTkyNzAw
QzI2QUE0IC8qIGF2Zm91bmRhdGlvbiAqLywKIAkJCQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIg
LyogY2EgKi8sCiAJCQkJQjI3NTM1MjkwQjA1MzgxNDAwMkNFNjRGIC8qIGNnICovLApAQCAtMTk4
ODEsNiArMTk5MDYsOCBAQAogCQkJCUE4MjM5REZFMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5n
LmNwcCAqLywKIAkJCQlBODIzOURGRjA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oICovLAog
CQkJCUUxODcwNTYyMTZFNTRBMEQwMDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oICovLAorCQkJ
CUNERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJ
Q0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmggKi8sCiAJCQkJNjU3RURB
MDYxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi8sCiAJCQkJ
NjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5oICovLAog
CQkJCUJDNzcyQzRDMEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNwcCAqLywK
QEAgLTIxNTk3LDYgKzIxNjI0LDcgQEAKIAkJCQkyOUE4MTI0MzBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eUxpc3RCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjQyMEZCQjlD
MUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDdCMDExM0YxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0MjQgLyogTWVk
aWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjMxMTAzREE2NjAwNjgw
NTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQy
RjcxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzZDREQyRjUxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNjcwLDYgKzIxNjk4LDcgQEAKIAkJ
CQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwMDgxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4MDEyQjAyNkY3MDBDMUEzNTkgLyog
QXVkaW9EU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUNENjQxRUIzMTgxOEY1RUQwMEVF
NEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgy
MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwODMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NEMxN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjI3MDQsNiArMjI3MzMs
NyBAQAogCQkJCUE4NzFERTI4MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MRnJhbWVTZXRFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREUyRDBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEhl
YWRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0NCODBBMTkyQjlDMDBBOEVGNUYg
LyogSFRNTEhlYWRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhCNUE0OTE4MEUx
MzhCMDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4RUE3Q0FGMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MSFJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODcxREUyNzBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEh0bWxFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODk1NzBBMDE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzNDAsNiArMjMzNzAsNyBAQAogCQkJCUIyRkEzRERE
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdNb3ZldG9BYnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRERGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdNb3ZldG9SZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDU4NTIxMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRy
YWNrQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q4QjVBNDYxODBERkY0RTAwOEI4
RTY1IC8qIFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNE
RTEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0dGVybkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1NDJBNzk1MEFFNUM5NDEwMERGNThERiAvKiBKU1NWR1BvaW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUQ3MTlDQTE4MTEwNkUwMDAxNkRDNTEgLyogSURCRGF0YWJhc2VDYWxsYmFj
a3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0NjUsNiArMjM0OTYsNyBAQAogCQkJCTI5MTdCNTYy
MTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyOTE3QjU2MzE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNzJBRjMxNjY2RURGQzAwMkEwMkJEIC8qIExheWVy
UG9vbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q4QjVBNEMxODBFMTdDMDAwOEI4RTY1IC8qIEF1
ZGlvVHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMwNTAxNjQ4MzRC
OTAwMzcxRTVBIC8qIExheW91dEJveEV4dGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxRDcy
RjYxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MURDMDUxMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRQb2ludC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNDA2OCw2ICsyNDEwMCw3IEBACiAJCQkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0MDEx
IC8qIFNpbmNSZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIw
MDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNEMEVG
ODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDY0MUVCNDE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE1MEY5RjExMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1i
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8q
IFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRkQwMEMwREFGMzM1NDAwRjVG
NTVDIC8qIFNNSUxUaW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCmluZGV4IDI5Mjk4MDc4NTliMjBiMTZj
NjQ5MWU2ZGYzYmUyOWM1OWIxNTNiZTYuLmViYmQ0NmI1ZWY2ZGRkNDdmMDJlNDA3YjBiOTRmMDQz
OGFlMWEyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcApAQCAtNDcsNiArNDcsMzQgQEAgdm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCgmYXVkaW9UcmFjaykpOwogfQogCit2b2lkIEpTQXVkaW9UcmFj
azo6c2V0S2luZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgY29uc3QgU3RyaW5n
JiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldEtpbmQobmF0aXZlVmFsdWUpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKKyNlbmRpZgorfQorCit2b2lkIEpT
QXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQor
eworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS5zZXRMYW5ndWFnZShuYXRpdmVW
YWx1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggOTg0NmZiOWEx
ZGMxYjYzY2JkOTk1YjhhNWU4YTMwYzYwZDcyMmIzNi4uMDc4ZjZmMjU2Yjk1OGIyYjFjNGRkM2Yy
YmI2YmI1YmM2MzUzYjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcApAQCAtNDgsNiArNDgsMzQgQEAgdm9pZCBKU1RleHRUcmFjazo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRl
eHRUcmFjay52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKK3ZvaWQgSlNUZXh0
VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIGNvbnN0IFN0
cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS5zZXRLaW5kKG5hdGl2ZVZhbHVlKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm47CisjZW5kaWYKK30KKwordm9p
ZCBKU1RleHRUcmFjazo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQor
ICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS5zZXRMYW5ndWFnZShuYXRp
dmVWYWx1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuOwor
I2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCBlYzNh
ZGNjMjRlZGM5ZWVmYmZlMTQ2Y2Q5MTk2MTAxYWFmYjk1ZGQ2Li5hODJlN2I4YmM0NzE1MTk0YWIw
NTQzOGZhN2E2ODA0YjljZThkOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDM0IEBAIHZvaWQgSlNWaWRl
b1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJnZpZGVvVHJhY2spKTsKIH0KIAordm9p
ZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQor
eworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS5zZXRLaW5kKG5hdGl2ZVZhbHVl
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm47CisjZW5kaWYK
K30KKwordm9pZCBKU1ZpZGVvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsKCkuc2V0TGFu
Z3VhZ2UobmF0aXZlVmFsdWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAg
IHJldHVybjsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmM1YzUzY2M4MWYw
ZTI1MzhiYjZjYTA3ZDFmZWMwMDVmNjdmNDQxZC4uMmEzNjhhNDU3ZGMwNjVmZmZmZjY5NzYwYTEy
NzlkMjE1MTJkZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJj
ZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgICAgICBt
X21lZGlhU291cmNlID0gSFRNTE1lZGlhU291cmNlOjpsb29rdXAodXJsLnN0cmluZygpKTsKIAog
ICAgIGlmIChtX21lZGlhU291cmNlKSB7Ci0gICAgICAgIGlmIChtX21lZGlhU291cmNlLT5hdHRh
Y2hUb0VsZW1lbnQoKSkKKyAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UtPmF0dGFjaFRvRWxlbWVu
dCh0aGlzKSkKICAgICAgICAgICAgIG1fcGxheWVyLT5sb2FkKHVybCwgY29udGVudFR5cGUsIG1f
bWVkaWFTb3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIEZvcmdldCBvdXIg
cmVmZXJlbmNlIHRvIHRoZSBNZWRpYVNvdXJjZSwgc28gd2UgbGVhdmUgaXQgYWxvbmUKQEAgLTI5
MDMsNiArMjkwMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRU
ZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2CiAgICAgLy8gNC44LjEwLjEy
LjIgU291cmNpbmcgaW4tYmFuZCB0ZXh0IHRyYWNrcwogICAgIC8vIDEuIEFzc29jaWF0ZSB0aGUg
cmVsZXZhbnQgZGF0YSB3aXRoIGEgbmV3IHRleHQgdHJhY2sgYW5kIGl0cyBjb3JyZXNwb25kaW5n
IG5ldyBUZXh0VHJhY2sgb2JqZWN0LgogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2s+IHRleHRU
cmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCB0aGlzLCBwcnBUcmFjayk7CisgICAgdGV4dFRyYWNrLT5zZXRNZWRp
YUVsZW1lbnQodGhpcyk7CiAgICAgCiAgICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydz
IGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3VhZ2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUg
cmVsZXZhbnQgZGF0YSwKICAgICAvLyBhcyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZp
Y2F0aW9uLiBJZiB0aGVyZSBpcyBubyBsYWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVs
IG11c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNvdXJjZS5oCmluZGV4IDE5OGZkZmUzNTdk
YzAxMGFkNDZlNDZhMjVmN2JiN2QzMjRlMzcwZjIuLmI0OTVjMjZmODk3YmZiMGI1YjY4ZWZiYmQ5
OGY4ZjM4OTRkN2YzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTb3VyY2UuaApAQCAt
MzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGU7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbHJlYWR5IGF0dGFjaGVkLCByZXR1
cm5zIGZhbHNlLiBPdGhlcndpc2UsIG11c3QgYmUgaW4KICAgICAvLyAnY2xvc2VkJyBzdGF0ZSwg
YW5kIHJldHVybnMgdHJ1ZSB0byBpbmRpY2F0ZSBhdHRhY2htZW50IHN1Y2Nlc3MuCiAgICAgLy8g
UmVhdHRhY2htZW50IGFsbG93ZWQgYnkgZmlyc3QgY2FsbGluZyBjbG9zZSgpIChldmVuIGlmIGFs
cmVhZHkgaW4gJ2Nsb3NlZCcpLgotICAgIHZpcnR1YWwgYm9vbCBhdHRhY2hUb0VsZW1lbnQoKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGF0dGFjaFRvRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihQYXNzUmVmPE1lZGlhU291
cmNlUHJpdmF0ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGlzQ2xvc2VkKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5j
cHAKaW5kZXggMTA5M2ZhZTc2NjM2ODAzMDgxMjNhOWZhZjU5MTI3ODZlY2E3NDkwOC4uYzU2OTYz
ZmMwOTFjMDBlODU0NGRiNWNiNWU1ZmQyMTY1YWM4YTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuY3BwCkBAIC0xNTcsMTEgKzE1NywxNiBAQCB2b2lkIFRpbWVSYW5nZXM6OmFkZChkb3Vi
bGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAKIGJvb2wgVGltZVJhbmdlczo6Y29udGFpbihkb3VibGUg
dGltZSkgY29uc3QKIHsKKyAgICByZXR1cm4gZmluZCh0aW1lKSAhPSBub3RGb3VuZDsKK30KKwor
c2l6ZV90IFRpbWVSYW5nZXM6OmZpbmQoZG91YmxlIHRpbWUpIGNvbnN0Cit7CiAgICAgZm9yICh1
bnNpZ25lZCBuID0gMDsgbiA8IGxlbmd0aCgpOyBuKyspIHsKICAgICAgICAgaWYgKHRpbWUgPj0g
c3RhcnQobiwgSUdOT1JFX0VYQ0VQVElPTikgJiYgdGltZSA8PSBlbmQobiwgSUdOT1JFX0VYQ0VQ
VElPTikpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG5vdEZvdW5kOwogfQogCiBkb3Vi
bGUgVGltZVJhbmdlczo6bmVhcmVzdChkb3VibGUgdGltZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
UmFuZ2VzLmgKaW5kZXggOTdmNGViN2ZhNTVmOGMyMzY0ZjFlMjQ3NTBkMGU4MDliMzU1YWE5MC4u
NzIyMzNiZTgzOTkzM2EyOGY5ZTQ0YmE2Y2I3ZDI5MjcxMjVlZTNkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmgKQEAgLTU0LDEwICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9CiAgICAgZG91YmxlIHN0YXJ0
KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgZG91YmxlIGVuZCh1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIAorCiAgICAgdm9pZCBh
ZGQoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICAKICAgICBib29sIGNvbnRhaW4oZG91
YmxlIHRpbWUpIGNvbnN0OworCisgICAgc2l6ZV90IGZpbmQoZG91YmxlIHRpbWUpIGNvbnN0Owog
ICAgIAogICAgIGRvdWJsZSBuZWFyZXN0KGRvdWJsZSB0aW1lKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKaW5kZXggZWQwMDU4MDQwZTA0YzkxYmMxMjgz
MzUxYzdhMjc1MmE2Mzc2MWI4OS4uZmVmZDQ0ZWE1ZmRmMzVlYTM3MmRjNjM4MzYzMTU0MTA2NWVh
MzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0zMCw5
ICszMCw5IEBACiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KIF0gaW50ZXJmYWNlIEF1ZGlvVHJh
Y2sgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBE
T01TdHJpbmcga2luZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisgICAgW0N1c3RvbVNl
dHRlcl0gYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKIAogICAgIGF0dHJpYnV0ZSBib29s
ZWFuIGVuYWJsZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmNwcAppbmRleCBlYjhjOWE3M2ZlN2YzZGEzNjczNTA0NmNhNGYzYTY5ZDdkYjFlOGM3Li5k
ZDI5YmQ4OTAwZGIxMWM4MTFhNWZkMTNhY2YyMzNiNjQyMGQxZTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApAQCAtODAsNCArODAsMTQgQEAgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgQXVkaW9UcmFja0xpc3Q6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QKICAgICByZXR1cm4gQXVkaW9UcmFja0xpc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
CiB9CiAKK2Jvb2wgQXVkaW9UcmFja0xpc3Q6OmlzQW55VHJhY2tFbmFibGVkKCkgY29uc3QKK3sK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEF1ZGlvVHJhY2sqIHRyYWNrID0gdG9BdWRpb1RyYWNrKG1faW5iYW5kVHJhY2tz
W2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5lbmFibGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaAppbmRleCA0NTQ4MjYyMjg2NDZj
MzE3OGFhN2RlMmVhYTk0OTdjYzBmMDI0NDJlLi5mMTU5ZmY0YzM3NjFhM2E0NjY3NTg2MmIwYTdh
YjFjZWQ5M2MwNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBBdWRpb1RyYWNrKiBsYXN0SXRlbSgp
IGNvbnN0IHsgcmV0dXJuIGl0ZW0obGVuZ3RoKCkgLSAxKTsgfQogICAgIHZvaWQgYXBwZW5kKFBh
c3NSZWZQdHI8QXVkaW9UcmFjaz4pOwogCisgICAgYm9vbCBpc0FueVRyYWNrRW5hYmxlZCgpIGNv
bnN0OworCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCAzMDlmMjgwODBiNzQ2YTExZmQ2ODMyNzZl
MjI5MTg0MzY4NTAzNjhjLi5mNGRjOTE5ZTY1Zjg0MjNlY2VmNzM4MzY4ZDMzZGMwNGE2YmJhZWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAj
aW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uTGlzdC5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIFRleHRU
cmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFj
a0NsaWVudCogY2xpZW50LCBjCiAgICAgLCBtX3JlbmRlcmVkVHJhY2tJbmRleChpbnZhbGlkVHJh
Y2tJbmRleCkKICAgICAsIG1faGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpCiB7Ci0gICAgc2V0S2lu
ZChraW5kKTsKKyAgICBzZXRLaW5kSW50ZXJuYWwoa2luZCk7CiB9CiAKIFRleHRUcmFjazo6flRl
eHRUcmFjaygpCkBAIC0xNzQsNyArMTc1LDI2IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNv
bnN0IEF0b21pY1N0cmluZyYgbmV3S2luZCkKIHsKICAgICBTdHJpbmcgb2xkS2luZCA9IGtpbmQo
KTsKIAotICAgIFRyYWNrQmFzZTo6c2V0S2luZChuZXdLaW5kKTsKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIC8vIDEwLjEga2luZCwgb24gc2V0dGluZzoKKyAgICAvLyAxLiBJZiB0aGUg
dmFsdWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUgZG9lcyBub3QgbWF0Y2ggb25l
IG9mIHRoZSB0ZXh0IHRyYWNrIGtpbmRzLAorICAgIC8vIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMu
CisgICAgaWYgKCFpc1ZhbGlkS2luZEtleXdvcmQobmV3S2luZCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIDIuIFVwZGF0ZSB0aGlzIGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgorICAg
IHNldEtpbmRJbnRlcm5hbChuZXdLaW5kKTsKKworICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZm
ZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNlQnVm
ZmVyLnRleHRUcmFja3MuCisgICAgaWYgKG1fc291cmNlQnVmZmVyKQorICAgICAgICBtX3NvdXJj
ZUJ1ZmZlci0+dGV4dFRyYWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKKyAgICAvLyA0
LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhl
IFRleHRUcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkKKyAgICAvLyB0aGUgdGV4dFRyYWNr
cyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgaWYgKG1lZGlhRWxlbWVu
dCgpKQorICAgICAgICBtZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrcygpLT5zY2hlZHVsZUNoYW5n
ZUV2ZW50KCk7CisjZW5kaWYKIAogICAgIGlmIChtX2NsaWVudCAmJiBvbGRLaW5kICE9IGtpbmQo
KSkKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRoaXMpOwpAQCAtNTQ5
LDYgKzU2OSwzMCBAQCBib29sIFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25z
dAogICAgIHJldHVybiBraW5kKCkgPT0gY2FwdGlvbnNLZXl3b3JkKCk7CiB9CiAKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQordm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbGFuZ3VhZ2UpCit7CisgICAgLy8gMTEuMSBsYW5ndWFnZSwgb24gc2V0dGluZzoK
KyAgICAvLyAxLiBJZiB0aGUgdmFsdWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUg
aXMgbm90IGFuIGVtcHR5IHN0cmluZyBvciBhIEJDUCA0NyBsYW5ndWFnZQorICAgIC8vIHRhZ1tC
Q1A0N10sIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgLy8gRklYTUU6IFZhbGlkYXRlIHRo
ZSBCQ1A0Ny1uZXNzIG9mIGxhbmdhZ3VlLgorICAgIGlmICghbGFuZ3VhZ2UuaXNOdWxsKCkgJiYg
IWxhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gMi4gVXBkYXRl
IHRoaXMgYXR0cmlidXRlIHRvIHRoZSBuZXcgdmFsdWUuCisgICAgVHJhY2tCYXNlOjpzZXRMYW5n
dWFnZShsYW5ndWFnZSk7CisKKyAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0
ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
c2ltcGxlCisgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci50ZXh0VHJh
Y2tzLgorICAgIGlmIChtX3NvdXJjZUJ1ZmZlcikKKyAgICAgICAgbV9zb3VyY2VCdWZmZXItPnRl
eHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworCisgICAgLy8gNC4gUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBUZXh0VHJhY2tM
aXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CisgICAgLy8gdGhlIHRleHRUcmFja3MgYXR0cmlidXRl
IG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgIG1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tz
KCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXgg
ZGFkMTRhZjI0NDU4YTEwNmE5NjdiMDEzZTBhMTMzZDgxMjI1OGE3ZC4uNmMxMjhmOWI4MTE5MDVh
Yjk1YTIzMGM5YzdlNTBjZmNlZDU2NzhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCkBAIC0xNTAsNiArMTUwLDEwIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBsYXRm
b3JtVGV4dFRyYWNrPiBwbGF0Zm9ybVRleHRUcmFjaygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNT
dHJpbmcmKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jh
c2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpkZXJlZjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCmluZGV4IGI4Yzc0MTZkNWYyYjhhYTk2
OWEzNTRhNDQ4MWMwNzhjYTgzY2M1YzguLmY2YjBlZGY0MGM3NzI1ZTBjYmVmMDlhOTBiZTZhM2Y1
MDBjNmFkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAgLTMx
LDkgKzMxLDkgQEAKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKICAgICBPcGVyYXRpb25zTm90
RGVsZXRhYmxlCiBdIGludGVyZmFjZSBUZXh0VHJhY2sgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcga2luZDsKKyAgICBbQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGtpbmQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1YWdlOworICAgIFtDdXN0b21TZXR0ZXJdIGF0
dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CiAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1v
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCmluZGV4
IGE0M2M4MmU5NzgxNzUxMjAzMTQyMjIyNTZkMGQxYjFmNTYzNjNiZGEuLjAzNzA1MTc0ZDVlODI5
MzNhNTRmYTUyNzdjMWRkMjA2ZWI5OTIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGludCBUZXh0VHJhY2tMaXN0
OjpnZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKFRleHRUcmFjayAqdGV4dFRy
YWNrKQogICAgIHJldHVybiAtMTsKIH0KIAotVGV4dFRyYWNrKiBUZXh0VHJhY2tMaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KQorVGV4dFRyYWNrKiBUZXh0VHJhY2tMaXN0OjppdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAogewogICAgIC8vIDQuOC4xMC4xMi4xIFRleHQgdHJhY2sgbW9kZWwKICAg
ICAvLyBUaGUgdGV4dCB0cmFja3MgYXJlIHNvcnRlZCBhcyBmb2xsb3dzOgpAQCAtMjI4LDQgKzIy
OCwxNCBAQCBFdmVudFRhcmdldEludGVyZmFjZSBUZXh0VHJhY2tMaXN0OjpldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRUcmFja0xpc3RFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7CiB9CiAKK2Jvb2wgVGV4dFRyYWNrTGlzdDo6aXNBbnlUcmFja0VuYWJsZWQoKSBj
b25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IHRvVGV4dFRyYWNrKG1faW5iYW5k
VHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNr
OjpzaG93aW5nS2V5d29yZCgpIHx8IHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpoaWRkZW5L
ZXl3b3JkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmgKaW5kZXggNDVhOTU3ZDk3MDIyZWFjMjY0ODE1MTAyNzlmMDg5NjlkZjQ2NzdkMi4uNzI0OTAz
MjgwOWRhZjFkZTIyYzY5MzBjNDJlYjA2OTA4N2I1NmVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmgKQEAgLTQ3LDEwICs0NywxNCBAQCBwdWJsaWM6CiAgICAg
aW50IGdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrKik7CiAg
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSopIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICBUZXh0VHJhY2sqIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIFRleHRUcmFjayogbGFzdEl0ZW0oKSBjb25zdCB7
IHJldHVybiBpdGVtKGxlbmd0aCgpIC0gMSk7IH0KKwogICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQ
dHI8VGV4dFRyYWNrPik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKSBPVkVS
UklERTsKIAorICAgIGJvb2wgaXNBbnlUcmFja0VuYWJsZWQoKSBjb25zdDsKKwogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
QmFzZS5jcHAKaW5kZXggYjkyOGE3M2Q3ZjhmNmJmNjViNDM4MjMzMDE4YzJjYTNjOTQyNjYxYy4u
NDk1ZTBhMzdjMzVkNjczZDM2NWFkOGI0Yzk2MzhhMzM1YjVkNzBmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fbWVkaWFF
bGVtZW50KDApCisgICAgLCBtX3NvdXJjZUJ1ZmZlcigwKQogICAgICwgbV9sYWJlbChsYWJlbCkK
ICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCiB7CkBAIC01Miw2ICs1MywxMSBAQCBFbGVtZW50
KiBUcmFja0Jhc2U6OmVsZW1lbnQoKQogCiB2b2lkIFRyYWNrQmFzZTo6c2V0S2luZChjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQpCiB7CisgICAgc2V0S2luZEludGVybmFsKGtpbmQpOworfQorCit2
b2lkIFRyYWNrQmFzZTo6c2V0S2luZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYga2luZCkK
K3sKICAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKIAogICAgIGlmIChpc1ZhbGlkS2luZChr
aW5kKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCmluZGV4IGE4MWNlMzE1YTVm
YzExMjk0YmYwZDdjZDE1NGM3ZDdhMzg3MzVmNTYuLjRmOTUxOWRmYzhhOWIzODdmYmRkMjRiZjhi
ZTZjYmRmNjU4MDIyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgU291cmNlQnVmZmVyOwogCiBjbGFzcyBUcmFja0Jh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+IHsKIHB1YmxpYzoKQEAgLTU0LDE4ICs1
NSwzMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBBdG9taWNTdHJpbmcmIGxh
YmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQogCiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkgeyBt
X2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgp
ID0gMDsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgU291cmNlQnVmZmVyKiBzb3Vy
Y2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlcjsgfQorICAgIHZvaWQgc2V0
U291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyKSB7IG1fc291cmNlQnVmZmVyID0gYnVm
ZmVyOyB9CisjZW5kaWYKKworCiBwcm90ZWN0ZWQ6CiAgICAgVHJhY2tCYXNlKFR5cGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpOwogCiAg
ICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3JkKCkg
Y29uc3QgPSAwOwogCisgICAgdm9pZCBzZXRLaW5kSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
Jik7CisKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKIAorI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgU291cmNlQnVmZmVyKiBtX3NvdXJjZUJ1ZmZlcjsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAppbmRleCBjZmEwODI2MmEx
OTg1ZWMwYmJiOGU2NGIzNTg3OWE2ZTJmZGEwOGIwLi5iNmJjMWEyN2MyMjkxM2Q3MjZiOGEzZDEw
MjU0ZjIxMWQ0MDlkZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5j
cHAKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAjaW5jbHVkZSAi
VmlkZW9UcmFja0xpc3QuaCIKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisjaW5jbHVkZSAi
U291cmNlQnVmZmVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCkBAIC05MCwyNSAr
OTQsMjUgQEAgVmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQs
IFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHQKIAogICAgIHN3aXRjaCAobV9wcml2YXRl
LT5raW5kKCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKLSAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAg
IHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRpb25zOgotICAgICAg
ICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2lu
ZEludGVybmFsKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChWaWRl
b1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJh
Y2s6Om1haW5LZXl3b3JkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpTaWduOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkp
OworICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKLSAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBz
ZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKLSAgICAgICAg
c2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2lu
ZEludGVybmFsKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgotICAgICAgICBzZXRLaW5kKGVt
cHR5U3RyaW5nKCkpOworICAgICAgICBzZXRLaW5kSW50ZXJuYWwoZW1wdHlTdHJpbmcoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMTYzLDYgKzE2Nyw1MSBAQCB2b2lkIFZpZGVvVHJhY2s6OndpbGxSZW1vdmVWaWRlb1Ry
YWNrUHJpdmF0ZShWaWRlb1RyYWNrUHJpdmF0ZSogdHJhY2tQcml2YXRlKQogICAgIG1lZGlhRWxl
bWVudCgpLT5yZW1vdmVWaWRlb1RyYWNrKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKK3ZvaWQgVmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQp
Cit7CisgICAgLy8gMTAuMSBraW5kLCBvbiBzZXR0aW5nOgorICAgIC8vIDEuIElmIHRoZSB2YWx1
ZSBiZWluZyBhc3NpZ25lZCB0byB0aGlzIGF0dHJpYnV0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgb2Yg
dGhlIHZpZGVvIHRyYWNrIGtpbmRzLAorICAgIC8vIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMuCisg
ICAgaWYgKCFpc1ZhbGlkS2luZChraW5kKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gMi4g
VXBkYXRlIHRoaXMgYXR0cmlidXRlIHRvIHRoZSBuZXcgdmFsdWUuCisgICAgc2V0S2luZEludGVy
bmFsKGtpbmQpOworCisgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24g
dGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZQorICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3Mu
CisgICAgaWYgKG1fc291cmNlQnVmZmVyKQorICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9U
cmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworCisgICAgLy8gNC4gUXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBWaWRlb1RyYWNrTGlz
dCBvYmplY3QgcmVmZXJlbmNlZCBieQorICAgIC8vIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1dGUg
b24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgbWVkaWFFbGVtZW50KCktPnZpZGVvVHJhY2tz
KCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRMYW5n
dWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQoreworICAgIC8vIDEwLjEgbGFuZ3Vh
Z2UsIG9uIHNldHRpbmc6CisgICAgLy8gMS4gSWYgdGhlIHZhbHVlIGJlaW5nIGFzc2lnbmVkIHRv
IHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcgb3IgYSBCQ1AgNDcgbGFuZ3Vh
Z2UKKyAgICAvLyB0YWdbQkNQNDddLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vIEZJ
WE1FOiBWYWxpZGF0ZSB0aGUgQkNQNDctbmVzcyBvZiBsYW5nYWd1ZS4KKyAgICBpZiAoIWxhbmd1
YWdlLmlzTnVsbCgpICYmICFsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIDIuIFVwZGF0ZSB0aGlzIGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgorICAgIFRy
YWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworCisgICAgLy8gMy4gSWYgdGhlIHNvdXJj
ZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZQorICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3Vy
Y2VCdWZmZXIudmlkZW9UcmFja3MuCisgICAgaWYgKG1fc291cmNlQnVmZmVyKQorICAgICAgICBt
X3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworCisg
ICAgLy8gNC4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdl
IGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQorICAgIC8vIHRoZSB2
aWRlb1RyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgbWVkaWFF
bGVtZW50KCktPnZpZGVvVHJhY2tzKCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaAppbmRleCBkM2E4ODQ2OTU1ODhiNTI2MDAxOTQ2MmRiYWQwYTFjN2Vm
MTFhMjhiLi5lMTViMjIxZTE3NjVmYzFkNjYzZjU4ZTQ4ZmNhMWJkYzdjZWI0YWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhRGVzY3JpcHRpb247CiBjbGFzcyBWaWRlb1Ry
YWNrOwogCiBjbGFzcyBWaWRlb1RyYWNrQ2xpZW50IHsKQEAgLTczLDYgKzc0LDEzIEBAIHB1Ymxp
YzoKIAogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKKyNlbmRpZgorCisgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24oKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0Ns
aWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHByaXZhdGVUcmFjayk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCmluZGV4IDFlNDFhOTAxMTkyNGI2
OTA1Y2MzNTgwZThiNDEzYmI5YzQ3MmU0NWQuLjUzZTBkYTYyZjRiZDgyMDU3MDBiMjE1YzcyZGJi
NGM0NzY4NjBlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApA
QCAtMzAsOSArMzAsOSBAQAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uCiBdIGludGVyZmFjZSBW
aWRlb1RyYWNrIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICBbQ3VzdG9tU2V0dGVyXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBs
YWJlbDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1YWdlOworICAgIFtD
dXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CiAKICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBzZWxlY3RlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuY3BwCmluZGV4IDU5NGNhMWIzYWQ4Y2EyNWQxMmE5OGIwYzMxMDQ0YzMzMDMx
NDY5ZmUuLjBlNWE5NjA3OTczNjIyOGNkODQ5MjczOWNmMzdkYzlhMmRiZjg4ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCkBAIC05NSw0ICs5NSwx
NCBAQCBFdmVudFRhcmdldEludGVyZmFjZSBWaWRlb1RyYWNrTGlzdDo6ZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdAogICAgIHJldHVybiBWaWRlb1RyYWNrTGlzdEV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsKIH0KIAorYm9vbCBWaWRlb1RyYWNrTGlzdDo6aXNBbnlUcmFja1NlbGVjdGVkKCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNrKG1faW5i
YW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKaW5kZXggNTg1
ZGI4YWNhMDlkYTgxZjkwYzZlNzY2Y2QwYjY0OTM5YzVmYzA2My4uYmM2MDgzNmYxZmNjMjNhMzg4
NDFiYjc0MWUxODRiMGMwMTU0NWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAgICAgVmlkZW9UcmFjayog
bGFzdEl0ZW0oKSBjb25zdCB7IHJldHVybiBpdGVtKGxlbmd0aCgpIC0gMSk7IH0KICAgICB2b2lk
IGFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+KTsKIAorICAgIGJvb2wgaXNBbnlUcmFja1Nl
bGVjdGVkKCkgY29uc3Q7CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFEZXNjcmlwdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFEZXNjcmlwdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
ZWM1MWZlYzRhYzM2OGYyNDAyNmZmNDcwYjQ2MTdjNzc4MDUwOTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYURlc2NyaXB0aW9uLmgKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFEZXNjcmlwdGlvbl9oCisjZGVmaW5lIE1lZGlh
RGVzY3JpcHRpb25faAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVkaWFEZXNjcmlwdGlvbj4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRp
b24oKSB7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGNvZGVjKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0F1ZGlvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RleHQoKSBjb25zdCA9IDA7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmY0MmM1MTI1MWM4YThmYjQ5Y2I3YzY3MDViYzUxYzljY2I4N2ZhOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTAs
MCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFTYW1wbGVfaAorI2RlZmluZSBNZWRp
YVNhbXBsZV9oCisKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrU2FtcGxlQm94
OworCitzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgeworICAgIGVudW0geworICAgICAgICBOb25lLAor
ICAgICAgICBNb2NrU2FtcGxlQm94VHlwZSwKKyAgICB9IHR5cGU7CisgICAgdW5pb24geworICAg
ICAgICBNb2NrU2FtcGxlQm94KiBtb2NrU2FtcGxlQm94OworICAgIH0gc2FtcGxlOworfTsKKwor
Y2xhc3MgTWVkaWFTYW1wbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNhbXBsZT4geworcHVi
bGljOgorICAgIHZpcnR1YWwgfk1lZGlhU2FtcGxlKCkgeyB9CisKKyAgICB2aXJ0dWFsIE1lZGlh
VGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGRlY29kZVRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0g
MDsKKworICAgIGVudW0gU2FtcGxlRmxhZ3MgeworICAgICAgICBOb25lID0gMCwKKyAgICAgICAg
SXNTeW5jID0gMSA8PCAwLAorICAgIH07CisgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
PSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRleCA5Mjk1YWVhZDg1
Nzc5MjQzNzNiYjA0OWRiZDEzNzc2MDY5M2I0YTIyLi5hMjhhZDM0YTUxMWUzZTAxMjQzMDVjNzAw
NzE3NDgwZTNiODdkMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw2ICszOSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEluYmFuZFRleHRUcmFja1ByaXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKKyAgICBlbnVtIEN1ZUZvcm1hdCB7CisgICAgICAgIEdlbmVyaWMsCisgICAgICAg
IFdlYlZUVAorICAgIH07CisgICAgc3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
PiBjcmVhdGUoQ3VlRm9ybWF0IGZvcm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlKCkgeyB9CiAKICAgICB2b2lkIHNldENsaWVudChJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KQEAgLTcwLDE0ICs3NSwxMSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIGVtcHR5QXRvbTsgfQogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBj
b25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgaW50IHRleHRUcmFja0luZGV4
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgZW51bSBDdWVGb3JtYXQgewotICAgICAgICBH
ZW5lcmljLAotICAgICAgICBXZWJWVFQKLSAgICB9OwogICAgIEN1ZUZvcm1hdCBjdWVGb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogCiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQ
cml2YXRlLmgKaW5kZXggZWVkNzc2ZjNkN2UxM2FkOThkODhhOTNhNzU4ODg2MjY0YzZiMzM1Zi4u
ZjMyYWI3YTgyMDk4Njg4NjgyZWY4MGVlOTIzMjk2MjlmNGQ3MzUyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAg
LTMyLDYgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01NSw2ICs1Niw5IEBAIHB1
YmxpYzoKICAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0d29y
a0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OwogICAgIHZpcnR1YWwgdm9pZCBtYXJrRW5kT2ZTdHJl
YW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrRW5kT2ZT
dHJlYW0oKSA9IDA7CisKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCA2NDkxZGE2
ZTc1Mjg1YWJjZjdiOGEzOWYxNjZhMzQ1N2EzYzlmNjI3Li5lYzIxOGYwOTM5OWFmNjRlM2RjZDYx
MTYzMmE1ZmYyZjY3MWU4OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNs
dWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDUs
MTEgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCkg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQqKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpID0gMDsKIH07CiAKIH0K
</data>
<flag name="review"
          id="238255"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216239</attachid>
            <date>2013-11-06 16:36:22 -0800</date>
            <delta_ts>2013-11-06 17:13:02 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-123374-20131106163622.patch</filename>
            <type>text/plain</type>
            <size>133748</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIwODdkMGExOTJlOTZi
YTVjY2FlNjRkMjhkMzhiZjM4Y2FiMjRmYy4uZmM5YWU1NWY3NmZmZmEwM2U4NWU1YmYzYzc1YjU0
ZjVlYTg1Mjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEzLTEwLTI1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNU0VdIEFkZCBNZWRpYVNv
dXJjZSBleHRlbnNpb25zIHRvIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2ssIGFuZCBUZXh0VHJhY2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzQK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTm8gdGVzdHMg
YWRkZWQ7IHRlc3RzIHdpbGwgYmUgYWRkZWQgd2hlbiBNb2NrIGltcGxlbWVudGF0aW9ucyBhcmUg
YWRkZWQgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgQWRkIG5ldyBwYXJ0aWFsIGludGVy
ZmFjZXMgZm9yIGFkZGVkIG1ldGhvZHMgb24gQXVkaW9UcmFjaywgVGV4dFRyYWNrLCBhbmQgVmlk
ZW9UcmFjazoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRpYVNv
dXJjZS5pZGw6IEFkZCByZWFkLW9ubHkgc291cmNlQnVmZmVyIGF0dHJpYnV0ZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNlLmlkbDogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3VyY2UuaWRsOiBE
aXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRpYVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja01lZGlhU291cmNlOjpzb3VyY2VCdWZm
ZXIpOiBBZGRlZCBzdGF0aWMgd3JhcHBlciBhcm91bmQgbm9uLXN0YXRpYyBzb3VyY2VCdWZmZXIo
KS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tNZWRpYVNvdXJjZTo6c291cmNlQnVmZmVyKTog
RGl0dG8uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tNZWRpYVNvdXJjZTo6c291cmNlQnVm
ZmVyKTogRGl0dG8uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdyaXRhYmxlIGtpbmQgJiBs
YW5ndWFnZSBhdHRyaWJ1dGVzIHRocm91Z2ggYSBjdXN0b20gc2V0dGVyOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1
ZGlvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRM
YW5ndWFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRL
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5pZGw6CisKKyAg
ICAgICAgQWRkIHNldHRlciBtZXRob2RzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0S2lu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAg
KiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jh
c2U6OnNldEtpbmRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tCYXNlOjpzb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oOgor
CisgICAgICAgIEltcGxlbWVudCB0aGUgdW5pbXBsZW1lbnRlZCBwb3J0aW9ucyBvZiBNZWRpYVNv
dXJjZSBhbmQgU291cmNlQnVmZmVyOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJj
ZUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VCYXNlOjpNZWRpYVNvdXJjZUJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VCYXNlOjpzZXRQcml2YXRlQW5kT3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUJhc2U6OnNldFJlYWR5U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VCYXNlOjphdHRhY2hUb0VsZW1lbnQpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUJhc2U6Om1lZGlhRWxlbWVudCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRBZGRB
dWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZEFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbDoKKworICAgICAgICBBZGQgbmV3
IGZpbGVzIHRvIHRoZSBwcm9qZWN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgIEFu
ZCBhIHNtb3JnYXNib3JkIG9mIG90aGVyIHV0aWxpdHkgY2hhbmdlczoKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bG9hZFJlc291cmNlKTogUGFzcyB0aGlzIHdoZW4gYXR0YWNoaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOiBEaXR0
by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5jcHA6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjppdGVtKTogTWFr
ZSBjb25zdC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6Omxhc3RJdGVtKTogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKwog
MjAxMy0xMS0wNiAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgcmVnaW9uIGxpbmUgb2Zmc2V0IG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDYyNjJmM2NkOTFhMmI0YjQ2YTdlZGJiMWMyZDJhOGQ2ODRlYTQ5ODEuLmY5
N2JhMDk4NTRkMGFiNGZiMDdiMjZmMmI2MzUzY2FmMTg1MjhhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtOTQsOSArOTQsMTQgQEAgQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9pbmRpZXVpL1VJUmVxdWVzdEV2ZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291cmNlLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAogCSQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNlLmlkbCBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9BdWRpb1Ry
YWNrTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjFhYjk3ZTdiMjZkMTJhNjBhYTg2NWQyMjA5
NTMwZWZkNjY2N2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBBdWRpb1RyYWNrTWVkaWFTb3VyY2VfaAorI2RlZmluZSBBdWRpb1RyYWNr
TWVkaWFTb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgRU5BQkxFKFZJREVP
X1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNvdXJjZUJ1ZmZlcjsKKworY2xhc3MgQXVkaW9UcmFja01lZGlhU291cmNlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgU291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIoQXVkaW9UcmFj
ayogdHJhY2spIHsgcmV0dXJuIHRyYWNrLT5zb3VyY2VCdWZmZXIoKTsgfQorfTsKKworfQorCisj
ZW5kaWYKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291cmNlLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTFj
YjRhMDQ4OGU0NzUzOTk0MGNkNTU5ZjIwMmZhZDFjNmRlOWU5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2Uu
aWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFf
U09VUkNFJlZJREVPX1RSQUNLLAorXQorcGFydGlhbCBpbnRlcmZhY2UgQXVkaW9UcmFjayB7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFNvdXJjZUJ1ZmZlciBzb3VyY2VCdWZmZXI7Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCA1YjNmZjQwMTVjNzRmM2UwZmJkMDY1YTkyMDkxMDU1MGIzN2RjYTZiLi5kMzM0NDM3YjY1
ODRiOGZhNTQ1YzY0ZTI0OTBmY2YzYzllYjhhYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMzMsMTUgKzMzLDIyIEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgor
I2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJHZW5lcmljRXZl
bnRRdWV1ZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNvdXJj
ZUJ1ZmZlclByaXZhdGUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJh
Y2suaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvVWlu
dDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTM2LDggKzE0
MywxMjYgQEAgdm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZl
ciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVm
ZmVyLnVwZGF0aW5nIGF0dHJpYnV0ZSBlcXVhbHMgdHJ1ZSwgdGhlbiBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczogLi4uCiAgICAgYnVmZmVyLT5hYm9ydElmVXBkYXRpbmcoKTsKIAotICAgIC8vIFN0
ZXBzIDQtOSBhcmUgcmVsYXRlZCB0byB1cGRhdGluZyBhdWRpb1RyYWNrcywgdmlkZW9UcmFja3Ms
IGFuZCB0ZXh0VHJhY2tzIHdoaWNoIGFyZW4ndCBpbXBsbWVudGVkIHlldC4KLSAgICAvLyBGSVhN
RSg5MTY0OSk6IHN1cHBvcnQgdHJhY2sgc2VsZWN0aW9uCisgICAgLy8gNC4gTGV0IFNvdXJjZUJ1
ZmZlciBhdWRpb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QgcmV0
dXJuZWQgYnkgc291cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLgorICAgIFJlZlB0cjxBdWRpb1RyYWNr
TGlzdD4gYXVkaW9UcmFja3MgPSBidWZmZXItPmF1ZGlvVHJhY2tzKCk7CisKKyAgICAvLyA1LiBJ
ZiB0aGUgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QgaXMgbm90IGVtcHR5LCB0aGVuIHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlmIChhdWRpb1RyYWNrcy0+bGVuZ3RoKCkpIHsK
KyAgICAgICAgLy8gNS4xIExldCBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QgZXF1
YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgYXVkaW9UcmFja3MK
KyAgICAgICAgLy8gYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAv
LyA1LjIgTGV0IHRoZSByZW1vdmVkIGVuYWJsZWQgYXVkaW8gdHJhY2sgZmxhZyBlcXVhbCBmYWxz
ZS4KKyAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSBmYWxzZTsKKworICAg
ICAgICAvLyA1LjMgRm9yIGVhY2ggQXVkaW9UcmFjayBvYmplY3QgaW4gdGhlIFNvdXJjZUJ1ZmZl
ciBhdWRpb1RyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgd2hp
bGUgKGF1ZGlvVHJhY2tzLT5sZW5ndGgoKSkgeworICAgICAgICAgICAgQXVkaW9UcmFjayogdHJh
Y2sgPSBhdWRpb1RyYWNrcy0+bGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgLy8gNS4zLjEgU2V0
IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9iamVjdCB0byBu
dWxsLgorICAgICAgICAgICAgdHJhY2stPnNldFNvdXJjZUJ1ZmZlcigwKTsKKworICAgICAgICAg
ICAgLy8gNS4zLjIgSWYgdGhlIGVuYWJsZWQgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9i
amVjdCBpcyB0cnVlLCB0aGVuIHNldCB0aGUgcmVtb3ZlZCBlbmFibGVkCisgICAgICAgICAgICAv
LyBhdWRpbyB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAodHJhY2stPmVuYWJs
ZWQoKSkKKyAgICAgICAgICAgICAgICByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSB0cnVlOwor
CisgICAgICAgICAgICAvLyA1LjMuMyBSZW1vdmUgdGhlIEF1ZGlvVHJhY2sgb2JqZWN0IGZyb20g
dGhlIEhUTUxNZWRpYUVsZW1lbnQgYXVkaW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgIC8vIDUu
My40IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFj
aywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAgLy8gY2FuY2Vs
YWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1M
TWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZUF1ZGlvVHJhY2so
dHJhY2spOworCisgICAgICAgICAgICAvLyA1LjMuNSBSZW1vdmUgdGhlIEF1ZGlvVHJhY2sgb2Jq
ZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAg
Ly8gNS4zLjYgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92
ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAvLyBj
YW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhl
IFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgYXVkaW9UcmFja3Mt
PnJlbW92ZSh0cmFjayk7CisgICAgICAgIH0KKworICAgICAgICAvLyA1LjQgSWYgdGhlIHJlbW92
ZWQgZW5hYmxlZCBhdWRpbyB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50CisgICAgICAgIC8vIG5hbWVkIGNoYW5nZSBhdCB0aGUg
SFRNTE1lZGlhRWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICBpZiAocmVtb3ZlZEVu
YWJsZWRBdWRpb1RyYWNrKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmF1ZGlvVHJhY2tz
KCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICB9CisKKyAgICAvLyA2LiBMZXQgU291cmNl
QnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCBy
ZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCisgICAgUmVmUHRyPFZpZGVvVHJh
Y2tMaXN0PiB2aWRlb1RyYWNrcyA9IGJ1ZmZlci0+dmlkZW9UcmFja3MoKTsKKworICAgIC8vIDcu
IElmIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4g
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKHZpZGVvVHJhY2tzLT5sZW5ndGgoKSkg
eworICAgICAgICAvLyA3LjEgTGV0IEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdCBl
cXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSB2aWRlb1RyYWNr
cworICAgICAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgICAg
IC8vIDcuMiBMZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQgdmlkZW8gdHJhY2sgZmxhZyBlcXVhbCBm
YWxzZS4KKyAgICAgICAgYm9vbCByZW1vdmVkU2VsZWN0ZWRWaWRlb1RyYWNrID0gZmFsc2U7CisK
KyAgICAgICAgLy8gNy4zIEZvciBlYWNoIFZpZGVvVHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VC
dWZmZXIgdmlkZW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAg
IHdoaWxlICh2aWRlb1RyYWNrcy0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIFZpZGVvVHJhY2sq
IHRyYWNrID0gdmlkZW9UcmFja3MtPmxhc3RJdGVtKCk7CisKKyAgICAgICAgICAgIC8vIDcuMy4x
IFNldCB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGUgVmlkZW9UcmFjayBvYmplY3Qg
dG8gbnVsbC4KKyAgICAgICAgICAgIHRyYWNrLT5zZXRTb3VyY2VCdWZmZXIoMCk7CisKKyAgICAg
ICAgICAgIC8vIDcuMy4yIElmIHRoZSBzZWxlY3RlZCBhdHRyaWJ1dGUgb24gdGhlIFZpZGVvVHJh
Y2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0IHRoZSByZW1vdmVkIHNlbGVjdGVkCisgICAgICAg
ICAgICAvLyB2aWRlbyB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAodHJhY2st
PnNlbGVjdGVkKCkpCisgICAgICAgICAgICAgICAgcmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFjayA9
IHRydWU7CisKKyAgICAgICAgICAgIC8vIDcuMy4zIFJlbW92ZSB0aGUgVmlkZW9UcmFjayBvYmpl
Y3QgZnJvbSB0aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICAg
ICAgLy8gNy4zLjQgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJl
bW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAv
LyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQg
dGhlIEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgIGlmICht
ZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlVmlk
ZW9UcmFjayh0cmFjayk7CisKKyAgICAgICAgICAgIC8vIDcuMy41IFJlbW92ZSB0aGUgVmlkZW9U
cmFjayBvYmplY3QgZnJvbSB0aGUgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QuCisgICAg
ICAgICAgICAvLyA3LjMuNiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFt
ZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKKyAgICAgICAg
ICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNl
LCBhdCB0aGUgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICB2aWRl
b1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDcuNCBJZiB0
aGUgcmVtb3ZlZCBzZWxlY3RlZCB2aWRlbyB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50CisgICAgICAgIC8vIG5hbWVkIGNoYW5n
ZSBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICBpZiAo
cmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFjaykKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT52
aWRlb1RyYWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisgICAgfQorCisgICAgLy8gOC4g
TGV0IFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qg
b2JqZWN0IHJldHVybmVkIGJ5IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgorICAgIFJlZlB0cjxU
ZXh0VHJhY2tMaXN0PiB0ZXh0VHJhY2tzID0gYnVmZmVyLT50ZXh0VHJhY2tzKCk7CisKKyAgICAv
LyA5LiBJZiB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRo
ZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKHRleHRUcmFja3MtPmxlbmd0aCgp
KSB7CisgICAgICAgIC8vIDkuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3Qg
ZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSB0ZXh0VHJhY2tz
CisgICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAgICAg
Ly8gOS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBlcXVhbCBmYWxz
ZS4KKyAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZFRleHRUcmFjayA9IGZhbHNlOworCisgICAg
ICAgIC8vIDkuMyBGb3IgZWFjaCBUZXh0VHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VCdWZmZXIg
dGV4dFRyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgd2hpbGUg
KHRleHRUcmFja3MtPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0g
dGV4dFRyYWNrcy0+bGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgLy8gOS4zLjEgU2V0IHRoZSBz
b3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBUZXh0VHJhY2sgb2JqZWN0IHRvIG51bGwuCisg
ICAgICAgICAgICB0cmFjay0+c2V0U291cmNlQnVmZmVyKDApOworCisgICAgICAgICAgICAvLyA5
LjMuMiBJZiB0aGUgbW9kZSBhdHRyaWJ1dGUgb24gdGhlIFRleHRUcmFjayBvYmplY3QgaXMgc2V0
IHRvICJzaG93aW5nIiBvciAiaGlkZGVuIiwgdGhlbgorICAgICAgICAgICAgLy8gc2V0IHRoZSBy
ZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAo
dHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkgfHwgdHJhY2stPm1v
ZGUoKSA9PSBUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSkKKyAgICAgICAgICAgICAgICByZW1v
dmVkRW5hYmxlZFRleHRUcmFjayA9IHRydWU7CisKKyAgICAgICAgICAgIC8vIDkuMy4zIFJlbW92
ZSB0aGUgVGV4dFRyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFj
a3MgbGlzdC4KKyAgICAgICAgICAgIC8vIDkuMy40IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1
c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlz
IG5vdAorICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tF
dmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4K
KyAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+cmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKworICAgICAgICAgICAgLy8gOS4zLjUg
UmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJh
Y2tzIGxpc3QuCisgICAgICAgICAgICAvLyA5LjMuNiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRy
dXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBp
cyBub3QKKyAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNr
RXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdC4KKyAg
ICAgICAgICAgIHRleHRUcmFja3MtPnJlbW92ZSh0cmFjayk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyA5LjQgSWYgdGhlIHJlbW92ZWQgZW5hYmxlZCB0ZXh0IHRyYWNrIGZsYWcgZXF1YWxzIHRy
dWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKKyAgICAgICAgLy8g
bmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4KKyAg
ICAgICAgaWYgKHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrKQorICAgICAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworICAgIH0KKwogCiAg
ICAgLy8gMTAuIElmIHNvdXJjZUJ1ZmZlciBpcyBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLCB0aGVu
IHJlbW92ZSBzb3VyY2VCdWZmZXIgZnJvbSBhY3RpdmVTb3VyY2VCdWZmZXJzIC4uLgogICAgIG1f
YWN0aXZlU291cmNlQnVmZmVycy0+cmVtb3ZlKGJ1ZmZlcik7CkBAIC0yMTYsNiArMzQxLDExOCBA
QCBFdmVudFRhcmdldEludGVyZmFjZSBNZWRpYVNvdXJjZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAogICAgIHJldHVybiBNZWRpYVNvdXJjZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsK
IH0KIAordm9pZCBNZWRpYVNvdXJjZTo6c291cmNlQnVmZmVyRGlkQ2hhbmdlQWNpdHZlU3RhdGUo
U291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIsIGJvb2wgYWN0aXZlKQoreworICAgIGlmIChhY3Rp
dmUgJiYgIW1fYWN0aXZlU291cmNlQnVmZmVycy0+Y29udGFpbnMoc291cmNlQnVmZmVyKSkKKyAg
ICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5hZGQoc291cmNlQnVmZmVyKTsKKyAgICBlbHNl
IGlmICghYWN0aXZlICYmIG1fYWN0aXZlU291cmNlQnVmZmVycy0+Y29udGFpbnMoc291cmNlQnVm
ZmVyKSkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5yZW1vdmUoc291cmNlQnVmZmVy
KTsKK30KKworY2xhc3MgU291cmNlQnVmZmVyQnVmZmVyZWREb2VzTm90Q29udGFpblRpbWUgewor
cHVibGljOgorICAgIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkRG9lc05vdENvbnRhaW5UaW1lKGRvdWJs
ZSB0aW1lKSA6IG1fdGltZSh0aW1lKSB7IH0KKyAgICBib29sIG9wZXJhdG9yKCkoUmVmUHRyPFNv
dXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFzb3VyY2VC
dWZmZXItPmJ1ZmZlcmVkKCktPmNvbnRhaW4obV90aW1lKTsKKyAgICB9CisKKyAgICBkb3VibGUg
bV90aW1lOworfTsKKworY2xhc3MgU291cmNlQnVmZmVyQnVmZmVyZWRIYXNFbm91Z2ggeworcHVi
bGljOgorICAgIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkSGFzRW5vdWdoKGRvdWJsZSB0aW1lLCBkb3Vi
bGUgZHVyYXRpb24pIDogbV90aW1lKHRpbWUpLCBtX2R1cmF0aW9uKGR1cmF0aW9uKSB7IH0KKyAg
ICBib29sIG9wZXJhdG9yKCkoUmVmUHRyPFNvdXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKQorICAg
IHsKKyAgICAgICAgc2l6ZV90IHJhbmdlUG9zID0gc291cmNlQnVmZmVyLT5idWZmZXJlZCgpLT5m
aW5kKG1fdGltZSk7CisgICAgICAgIGlmIChyYW5nZVBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBkb3VibGUgZW5kVGltZSA9IHNvdXJjZUJ1ZmZl
ci0+YnVmZmVyZWQoKS0+ZW5kKHJhbmdlUG9zLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAg
cmV0dXJuIG1fZHVyYXRpb24gLSBlbmRUaW1lIDwgMTsKKyAgICB9CisKKyAgICBkb3VibGUgbV90
aW1lOworICAgIGRvdWJsZSBtX2R1cmF0aW9uOworfTsKKworY2xhc3MgU291cmNlQnVmZmVyQnVm
ZmVyZWRIYXNGdXR1cmUgeworcHVibGljOgorICAgIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkSGFzRnV0
dXJlKGRvdWJsZSB0aW1lKSA6IG1fdGltZSh0aW1lKSB7IH0KKyAgICBib29sIG9wZXJhdG9yKCko
UmVmUHRyPFNvdXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKQorICAgIHsKKyAgICAgICAgc2l6ZV90
IHJhbmdlUG9zID0gc291cmNlQnVmZmVyLT5idWZmZXJlZCgpLT5maW5kKG1fdGltZSk7CisgICAg
ICAgIGlmIChyYW5nZVBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBkb3VibGUgZW5kVGltZSA9IHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWQoKS0+ZW5k
KHJhbmdlUG9zLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgcmV0dXJuIGVuZFRpbWUgLSBt
X3RpbWUgPiAxOworICAgIH0KKworICAgIGRvdWJsZSBtX3RpbWU7Cit9OworCit2b2lkIE1lZGlh
U291cmNlOjptb25pdG9yU291cmNlQnVmZmVycygpCit7CisgICAgZG91YmxlIGN1cnJlbnRUaW1l
ID0gbWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCk7CisKKyAgICAvLyAyLjQuNCBTb3VyY2VC
dWZmZXIgTW9uaXRvcmluZworICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYWxsIG9iamVjdHMg
aW4gYWN0aXZlU291cmNlQnVmZmVycyBkbyBub3QgY29udGFpbiBUaW1lUmFuZ2VzIGZvciB0aGUg
Y3VycmVudAorICAgIC8vIHBsYXliYWNrIHBvc2l0aW9uOgorICAgIGF1dG8gYmVnaW4gPSBtX2Fj
dGl2ZVNvdXJjZUJ1ZmZlcnMtPmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMtPmVuZCgpOworICAgIGlmIChzdGQ6OmFsbF9vZihiZWdpbiwgZW5kLCBTb3VyY2VC
dWZmZXJCdWZmZXJlZERvZXNOb3RDb250YWluVGltZShjdXJyZW50VGltZSkpKSB7CisgICAgICAg
IC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBI
QVZFX01FVEFEQVRBLgorICAgICAgICAvLyAyLiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0cmFuc2l0
aW9uIHRvIEhBVkVfTUVUQURBVEEsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUg
ZXZlbnQKKyAgICAgICAgLy8gbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQgdGhlIG1lZGlhIGVsZW1l
bnQuCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU1l
dGFkYXRhKTsKKworICAgICAgICAvLyAzLiBBYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYWxsIG9iamVjdHMgaW4g
YWN0aXZlU291cmNlQnVmZmVycyBjb250YWluIFRpbWVSYW5nZXMgdGhhdCBpbmNsdWRlIHRoZSBj
dXJyZW50CisgICAgLy8gcGxheWJhY2sgcG9zaXRpb24gYW5kIGVub3VnaCBkYXRhIHRvIGVuc3Vy
ZSB1bmludGVycnVwdGVkIHBsYXliYWNrOgorICAgIGlmIChzdGQ6OmFsbF9vZihiZWdpbiwgZW5k
LCBTb3VyY2VCdWZmZXJCdWZmZXJlZEhhc0Vub3VnaChjdXJyZW50VGltZSwgbWVkaWFFbGVtZW50
KCktPmR1cmF0aW9uKCkpKSkgeworICAgICAgICAvLyAxLiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1l
bnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9FTk9VR0hfREFUQS4KKyAgICAgICAgLy8g
Mi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2FucGxheXRocm91
Z2ggYXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIC8vIDMuIFBsYXliYWNrIG1heSByZXN1
bWUgYXQgdGhpcyBwb2ludCBpZiBpdCB3YXMgcHJldmlvdXNseSBzdXNwZW5kZWQgYnkgYSB0cmFu
c2l0aW9uIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhKTsKKworICAgICAgICAvLyA0LiBBYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIOKGsyBJZiBi
dWZmZXJlZCBmb3IgYXQgbGVhc3Qgb25lIG9iamVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzIGNv
bnRhaW5zIGEgVGltZVJhbmdlIHRoYXQgaW5jbHVkZXMKKyAgICAvLyB0aGUgY3VycmVudCBwbGF5
YmFjayBwb3NpdGlvbiBidXQgbm90IGVub3VnaCBkYXRhIHRvIGVuc3VyZSB1bmludGVycnVwdGVk
IHBsYXliYWNrOgorICAgIGlmIChzdGQ6OmFueV9vZihiZWdpbiwgZW5kLCBTb3VyY2VCdWZmZXJC
dWZmZXJlZEhhc0Z1dHVyZShjdXJyZW50VGltZSkpKSB7CisgICAgICAgIC8vIDEuIFNldCB0aGUg
SFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX0ZVVFVSRV9EQVRB
LgorICAgICAgICAvLyAyLiBJZiB0aGUgcHJldmlvdXMgdmFsdWUgb2YgSFRNTE1lZGlhRWxlbWVu
dC5yZWFkeVN0YXRlIHdhcyBsZXNzIHRoYW4gSEFWRV9GVVRVUkVfREFUQSwgdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjYW5wbGF5IGF0IHRoZSBtZWRpYSBl
bGVtZW50LgorICAgICAgICAvLyAzLiBQbGF5YmFjayBtYXkgcmVzdW1lIGF0IHRoaXMgcG9pbnQg
aWYgaXQgd2FzIHByZXZpb3VzbHkgc3VzcGVuZGVkIGJ5IGEgdHJhbnNpdGlvbiB0byBIQVZFX0NV
UlJFTlRfREFUQS4KKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVy
OjpIYXZlRnV0dXJlRGF0YSk7CisKKyAgICAgICAgLy8gNC4gQWJvcnQgdGhlc2Ugc3RlcHMuCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyDihrMgSWYgYnVmZmVyZWQgZm9yIGF0IGxl
YXN0IG9uZSBvYmplY3QgaW4gYWN0aXZlU291cmNlQnVmZmVycyBjb250YWlucyBhIFRpbWVSYW5n
ZSB0aGF0IGVuZHMKKyAgICAvLyBhdCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBhbmQg
ZG9lcyBub3QgaGF2ZSBhIHJhbmdlIGNvdmVyaW5nIHRoZSB0aW1lIGltbWVkaWF0ZWx5CisgICAg
Ly8gYWZ0ZXIgdGhlIGN1cnJlbnQgcG9zaXRpb246CisgICAgLy8gTk9URTogTG9naWNhbGx5LCAh
KGFsbCBvYmplY3RzIGRvIG5vdCBjb250YWluIGN1cnJlbnRUaW1lKSA9PSAoc29tZSBvYmplY3Rz
IGNvbnRhaW4gY3VycmVudCB0aW1lKQorCisgICAgLy8gMS4gU2V0IHRoZSBIVE1MTWVkaWFFbGVt
ZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgorICAgIC8vIDIu
IElmIHRoaXMgaXMgdGhlIGZpcnN0IHRyYW5zaXRpb24gdG8gSEFWRV9DVVJSRU5UX0RBVEEsIHRo
ZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVudCBuYW1lZCBsb2Fk
ZWRkYXRhIGF0IHRoZSBtZWRpYSBlbGVtZW50LgorICAgIC8vIDMuIFBsYXliYWNrIGlzIHN1c3Bl
bmRlZCBhdCB0aGlzIHBvaW50IHNpbmNlIHRoZSBtZWRpYSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBl
bm91Z2ggZGF0YSB0bworICAgIC8vIGFkdmFuY2UgdGhlIG1lZGlhIHRpbWVsaW5lLgorICAgIG1f
cHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKTsKKwor
ICAgIC8vIDQuIEFib3J0IHRoZXNlIHN0ZXBzLgorfQorCisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuaAppbmRleCAwNjZkYjZkMjljMTlhZjEyYmI3ZTFjMzhjN2Q2YWQxZDdlZDMx
ZGYyLi42N2Q1ZjNjMjY0MWRmZTZiM2U2ZDE5YjRjODJmODZlODI3OGQ4YWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC01OSw2
ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVNvdXJjZUJhc2U+
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVNvdXJjZUJhc2U+OjpkZXJlZjsKIAor
ICAgIHZvaWQgc291cmNlQnVmZmVyRGlkQ2hhbmdlQWNpdHZlU3RhdGUoU291cmNlQnVmZmVyKiwg
Ym9vbCk7CisKKyAgICB2b2lkIG1vbml0b3JTb3VyY2VCdWZmZXJzKCk7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgTWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFz
ZS5jcHAKaW5kZXggYzRlMWQ4NDM2MWYyODlkYzFlZTYwOTdiMGU5Yzc3ODdjYjg5NWFlMy4uZjFl
NDZlZmE1NDBmZDA4NmQwZDZiNzM4YjRkYTgyNDkxOGNlNzY4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcApAQCAt
NDcsOSArNDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU291cmNlQmFzZTo6TWVk
aWFTb3VyY2VCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX21lZGlhRWxlbWVudCgwKQogICAgICwgbV9y
ZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQoKSkKICAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlz
KQotICAgICwgbV9hdHRhY2hlZChmYWxzZSkKIHsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlQmFzZTo6ZW5kZWRLZXl3b3JkKCkKIHZvaWQgTWVk
aWFTb3VyY2VCYXNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNzUmVmPE1lZGlhU291cmNlUHJpdmF0
ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQogewogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKLSAgICBB
U1NFUlQobV9hdHRhY2hlZCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICBtX3By
aXZhdGUgPSBzdGQ6Om1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKICAgICBzZXRSZWFkeVN0YXRl
KG9wZW5LZXl3b3JkKCkpOwogfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTWVkaWFTb3VyY2VC
YXNlOjpzZXRSZWFkeVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RhdGUpCiAKICAgICBpZiAo
c3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIG1fcHJpdmF0ZS5jbGVhcigpOwot
ICAgICAgICBtX2F0dGFjaGVkID0gZmFsc2U7CisgICAgICAgIG1fbWVkaWFFbGVtZW50ID0gMDsK
ICAgICB9CiAKICAgICBpZiAob2xkU3RhdGUgPT0gc3RhdGUpCkBAIC0yMjIsMTQgKzIyMiwxNCBA
QCB2b2lkIE1lZGlhU291cmNlQmFzZTo6Y2xvc2UoKQogICAgIHNldFJlYWR5U3RhdGUoY2xvc2Vk
S2V5d29yZCgpKTsKIH0KIAotYm9vbCBNZWRpYVNvdXJjZUJhc2U6OmF0dGFjaFRvRWxlbWVudCgp
Citib29sIE1lZGlhU291cmNlQmFzZTo6YXR0YWNoVG9FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpCiB7Ci0gICAgaWYgKG1fYXR0YWNoZWQpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoaXNDbG9zZWQoKSk7CiAKLSAg
ICBtX2F0dGFjaGVkID0gdHJ1ZTsKKyAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlQmFzZS5oCmluZGV4IDFlMzg5NDZjYTdlNWE4ZTA0ODcwZjQyNjEz
NjQ5NmZmZjFmNWNjNTguLjA5OGZjNDkzYjU3YjdkOGUyNTIzZDU5OTlkOGZhODBkZmNiNTQyNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZUJhc2UuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09wZW4oKSBj
b25zdDsKIAogICAgIC8vIEhUTUxNZWRpYVNvdXJjZQotICAgIHZpcnR1YWwgYm9vbCBhdHRhY2hU
b0VsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXR0YWNoVG9FbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFu
ZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJjZVByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWQoKSBjb25z
dCBPVkVSUklERTsKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVhZHlT
dGF0ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGVuZE9mU3RyZWFtKGNvbnN0IEF0
b21pY1N0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTAxLDExICsxMDIsMTAgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSk7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUmIGFzeW5jRXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1f
YXN5bmNFdmVudFF1ZXVlOyB9CiAKLXByaXZhdGU6CiAgICAgUmVmUHRyPE1lZGlhU291cmNlUHJp
dmF0ZT4gbV9wcml2YXRlOworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50Owog
ICAgIEF0b21pY1N0cmluZyBtX3JlYWR5U3RhdGU7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9h
c3luY0V2ZW50UXVldWU7Ci0gICAgYm9vbCBtX2F0dGFjaGVkOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4
IDQ1NzhmZTRjZThjNGVjNWVhYjNlZTZiOWFiNGI1YzNkNTZiOWQwOGYuLjJkNDljNGJmMjRiNmMw
YTI2OWIxOWE2NTM5MTJkN2VjMjg0N2FkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTMzLDE2ICszMyw0NSBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2suaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2lu
Y2x1ZGUgIlRpbWVSYW5nZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorI2luY2x1
ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdHJ1Y3QgU291cmNlQnVmZmVyOjpUcmFja0J1ZmZlciB7CisgICAgTWVkaWFU
aW1lIGxhc3REZWNvZGVUaW1lc3RhbXA7CisgICAgTWVkaWFUaW1lIGxhc3RGcmFtZUR1cmF0aW9u
OworICAgIE1lZGlhVGltZSBoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wOworICAgIE1lZGlh
VGltZSBsYXN0RW5xdWV1ZWRQcmVzZW50YXRpb25UaW1lOworICAgIGJvb2wgbmVlZFJhbmRvbUFj
Y2Vzc0ZsYWc7CisgICAgdHlwZWRlZiBzdGQ6Om11bHRpbWFwPE1lZGlhVGltZSwgUmVmUHRyPE1l
ZGlhU2FtcGxlPj4gU2FtcGxlTWFwOworICAgIFNhbXBsZU1hcCBzYW1wbGVzOworICAgIFNhbXBs
ZU1hcCBkZWNvZGVRdWV1ZTsKKyAgICBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4gZGVzY3JpcHRp
b247CisKKyAgICBUcmFja0J1ZmZlcigpCisgICAgICAgIDogbGFzdERlY29kZVRpbWVzdGFtcChN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCisgICAgICAgICwgbGFzdEZyYW1lRHVyYXRpb24oTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIGhpZ2hlc3RQcmVzZW50YXRpb25UaW1l
c3RhbXAoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIGxhc3RFbnF1ZXVlZFBy
ZXNlbnRhdGlvblRpbWUoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIG5lZWRS
YW5kb21BY2Nlc3NGbGFnKGZhbHNlKQorICAgIHsKKyAgICB9Cit9OworCiBQYXNzUmVmPFNvdXJj
ZUJ1ZmZlcj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRl
PiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQogewogICAgIFJlZlB0
cjxTb3VyY2VCdWZmZXI+IHNvdXJjZUJ1ZmZlcihhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyKHN0
ZDo6bW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSwgc291cmNlKSkpOwpAQCAtNTYsOCArODUsMTIg
QEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRl
PiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWQKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAs
IG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV91cGRhdGluZyhmYWxzZSkKLSAgICAs
IG1fdGltZXN0YW1wT2Zmc2V0KDApCiAgICAgLCBtX2FwcGVuZEJ1ZmZlclRpbWVyKHRoaXMsICZT
b3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQpCisgICAgLCBtX2hpZ2hlc3RQcmVz
ZW50YXRpb25FbmRUaW1lc3RhbXAoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICwgbV9y
ZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50KGZhbHNlKQorICAgICwgbV9idWZmZXJl
ZChUaW1lUmFuZ2VzOjpjcmVhdGUoKSkKKyAgICAsIG1fYWN0aXZlKGZhbHNlKQorICAgICwgbV9h
cHBlbmRTdGF0ZShXYWl0aW5nRm9yU2VnbWVudCkKIHsKICAgICBBU1NFUlQobV9wcml2YXRlKTsK
ICAgICBBU1NFUlQobV9zb3VyY2UpOwpAQCAtODMsMTIgKzExNiwxNyBAQCBQYXNzUmVmUHRyPFRp
bWVSYW5nZXM+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgfQogCiAgICAgLy8gMi4gUmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVS
YW5nZXMgb2JqZWN0IGZvciB0aGUgbWVkaWEgc2VnbWVudHMgYnVmZmVyZWQuCi0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKKyAgICByZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwor
fQorCitjb25zdCBSZWZQdHI8VGltZVJhbmdlcz4mIFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcmVkOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVy
Ojp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdAogewotICAgIHJldHVybiBtX3RpbWVzdGFtcE9mZnNl
dDsKKyAgICByZXR1cm4gbV90aW1lc3RhbXBPZmZzZXQudG9Eb3VibGUoKTsKIH0KIAogdm9pZCBT
b3VyY2VCdWZmZXI6OnNldFRpbWVzdGFtcE9mZnNldChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTExMiw5ICsxNTAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0VGltZXN0
YW1wT2Zmc2V0KGRvdWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIDQuMiBR
dWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBzb3VyY2VvcGVuIGF0IHRo
ZSBwYXJlbnQgbWVkaWEgc291cmNlLgogICAgIG1fc291cmNlLT5vcGVuSWZJbkVuZGVkU3RhdGUo
KTsKIAotICAgIC8vIDUuIElmIHRoaXMgb2JqZWN0IGlzIHdhaXRpbmcgZm9yIHRoZSBlbmQgb2Yg
YSBtZWRpYSBzZWdtZW50IHRvIGJlIGFwcGVuZGVkLCB0aGVuIHRocm93IGFuIElOVkFMSURfU1RB
VEVfRVJSCi0gICAgLy8gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9wcml2YXRl
LT5zZXRUaW1lc3RhbXBPZmZzZXQob2Zmc2V0KSkgeworICAgIC8vIDUuIElmIHRoZSBhcHBlbmQg
c3RhdGUgZXF1YWxzIFBBUlNJTkdfTUVESUFfU0VHTUVOVCwgdGhlbiB0aHJvdyBhbiBJTlZBTElE
X1NUQVRFX0VSUiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1fYXBwZW5kU3RhdGUg
PT0gUGFyc2luZ01lZGlhU2VnbWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjg1LDYgKzMyMiw2MiBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZChUaW1lcjxTb3VyY2VCdWZmZXI+KikKIAog
ICAgIC8vIDUuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHVwZGF0
ZWVuZCBhdCB0aGlzIFNvdXJjZUJ1ZmZlciBvYmplY3QuCiAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOworCisgICAgbV9zb3VyY2UtPm1vbml0b3JTb3VyY2VC
dWZmZXJzKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgU291cmNlQnVmZmVyOjpkZWNvZGVF
cnJvcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVjb2Rl
KCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gZGVjb2RlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUJ1ZmZlcjo6bmV0d29y
a0Vycm9yKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXR3
b3JrKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
cmV0dXJuIG5ldHdvcms7Cit9CisKK1ZpZGVvVHJhY2tMaXN0KiBTb3VyY2VCdWZmZXI6OnZpZGVv
VHJhY2tzKCkKK3sKKyAgICBpZiAoIW1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIG1fdmlkZW9UcmFj
a3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSwgQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgcmV0dXJuIG1f
dmlkZW9UcmFja3MuZ2V0KCk7Cit9CisKK0F1ZGlvVHJhY2tMaXN0KiBTb3VyY2VCdWZmZXI6OmF1
ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAoIW1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIG1fYXVkaW9U
cmFja3MgPSBBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSwg
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgcmV0dXJu
IG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKK1RleHRUcmFja0xpc3QqIFNvdXJjZUJ1ZmZlcjo6
dGV4dFRyYWNrcygpCit7CisgICAgaWYgKCFtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRy
YWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCksIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBt
X3RleHRUcmFja3MuZ2V0KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCit7CisgICAgaWYgKG1fYWN0aXZlID09IGFjdGl2ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlckRp
ZENoYW5nZUFjaXR2ZVN0YXRlKHRoaXMsIGFjdGl2ZSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXJyb3IpCkBAIC0yOTIsMjIgKzM4NSw2MjEgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRFbmRTdHJlYW0oU291cmNlQnVm
ZmVyUHJpdmF0ZSosIGNvbnN0IFcKICAgICBtX3NvdXJjZS0+ZW5kT2ZTdHJlYW0oZXJyb3IsIEln
bm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQ
cml2YXRlKiwgY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikKK3ZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3Vy
Y2VCdWZmZXJQcml2YXRlKiwgY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQog
eworICAgIG1fYXBwZW5kU3RhdGUgPSBQYXJzaW5nSW5pdFNlZ21lbnQ7CisKKyAgICAvLyAzLjUu
NyBJbml0aWFsaXphdGlvbiBTZWdtZW50IFJlY2VpdmVkCisgICAgLy8gMS4gVXBkYXRlIHRoZSBk
dXJhdGlvbiBhdHRyaWJ1dGUgaWYgaXQgY3VycmVudGx5IGVxdWFscyBOYU46CisgICAgaWYgKHN0
ZDo6aXNuYW4obV9zb3VyY2UtPmR1cmF0aW9uKCkpICYmIHNlZ21lbnQuZHVyYXRpb24uaXNWYWxp
ZCgpKQorICAgICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb24oc2VnbWVudC5kdXJhdGlvbi50b0Rv
dWJsZSgpLCBJR05PUkVfRVhDRVBUSU9OKTsKKworICAgIC8vIDIuIElmIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGhhcyBubyBhdWRpbywgdmlkZW8sIG9yIHRleHQgdHJhY2tzLCB0aGVuIHJ1
biB0aGUgZW5kIG9mIHN0cmVhbQorICAgIC8vIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJh
bWV0ZXIgc2V0IHRvICJkZWNvZGUiIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIXNl
Z21lbnQuYXVkaW9UcmFja3Muc2l6ZSgpICYmICFzZWdtZW50LnZpZGVvVHJhY2tzLnNpemUoKSAm
JiAhc2VnbWVudC50ZXh0VHJhY2tzLnNpemUoKSkKKyAgICAgICAgbV9zb3VyY2UtPmVuZE9mU3Ry
ZWFtKGRlY29kZUVycm9yKCksIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSk7CisKKworICAgIC8v
IDMuIElmIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50IGZsYWcgaXMgdHJ1ZSwgdGhl
biBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAobV9yZWNlaXZlZEZpcnN0SW5pdGlh
bGl6YXRpb25TZWdtZW50KSB7CisgICAgICAgIGlmICghdmFsaWRhdGVJbml0aWFsaXphdGlvblNl
Z21lbnQoc2VnbWVudCkpIHsKKyAgICAgICAgICAgIG1fc291cmNlLT5lbmRPZlN0cmVhbShkZWNv
ZGVFcnJvcigpLCBJZ25vcmFibGVFeGNlcHRpb25Db2RlKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIC8vIDMuMiBBZGQgdGhlIGFwcHJvcHJpYXRlIHRyYWNrIGRl
c2NyaXB0aW9ucyBmcm9tIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VnbWVudCB0byBlYWNoIG9mIHRo
ZSB0cmFjayBidWZmZXJzLgorICAgICAgICAvLyBOT1RFOiBObyBjaGFuZ2VzIHRvIG1ha2UKKyAg
ICB9CisKKyAgICAvLyA0LiBMZXQgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWwgZmFsc2UuCisgICAg
Ym9vbCBhY3RpdmVUcmFja0ZsYWcgPSBmYWxzZTsKKworICAgIC8vIDUuIElmIHRoZSBmaXJzdCBp
bml0aWFsaXphdGlvbiBzZWdtZW50IGZsYWcgaXMgZmFsc2UsIHRoZW4gcnVuIHRoZSBmb2xsb3dp
bmcgc3RlcHM6CisgICAgaWYgKCFtX3JlY2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQp
IHsKKyAgICAgICAgLy8gNS4xIElmIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGNvbnRhaW5z
IHRyYWNrcyB3aXRoIGNvZGVjcyB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCBzdXBwb3J0LAorICAg
ICAgICAvLyB0aGVuIHJ1biB0aGUgZW5kIG9mIHN0cmVhbSBhbGdvcml0aG0gd2l0aCB0aGUgZXJy
b3IgcGFyYW1ldGVyIHNldCB0byAiZGVjb2RlIiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAg
ICAgIC8vIE5PVEU6IFRoaXMgY2hlY2sgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBTb3Vy
Y2VCdWZmZXJQcml2YXRlLgorCisgICAgICAgIC8vIDUuMiBGb3IgZWFjaCBhdWRpbyB0cmFjayBp
biB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKKyAgICAg
ICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC5hdWRpb1RyYWNrcy5iZWdpbigpOyBpdCAhPSBzZWdt
ZW50LmF1ZGlvVHJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBBdWRpb1RyYWNrUHJp
dmF0ZSogYXVkaW9UcmFja1ByaXZhdGUgPSBpdC0+dHJhY2suZ2V0KCk7CisKKyAgICAgICAgICAg
IC8vIDUuMi4xIExldCBuZXcgYXVkaW8gdHJhY2sgYmUgYSBuZXcgQXVkaW9UcmFjayBvYmplY3Qu
CisgICAgICAgICAgICAvLyA1LjIuMiBHZW5lcmF0ZSBhIHVuaXF1ZSBJRCBhbmQgYXNzaWduIGl0
IHRvIHRoZSBpZCBwcm9wZXJ0eSBvbiBuZXcgdmlkZW8gdHJhY2suCisgICAgICAgICAgICBSZWZQ
dHI8QXVkaW9UcmFjaz4gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBh
dWRpb1RyYWNrUHJpdmF0ZSk7CisgICAgICAgICAgICBuZXdBdWRpb1RyYWNrLT5zZXRTb3VyY2VC
dWZmZXIodGhpcyk7CisKKyAgICAgICAgICAgIC8vIDUuMi4zIElmIGF1ZGlvVHJhY2tzLmxlbmd0
aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgICAgIGlm
ICghYXVkaW9UcmFja3MoKS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyA1LjIuMy4x
IFNldCB0aGUgZW5hYmxlZCBwcm9wZXJ0eSBvbiBuZXcgYXVkaW8gdHJhY2sgdG8gdHJ1ZS4KKyAg
ICAgICAgICAgICAgICBuZXdBdWRpb1RyYWNrLT5zZXRFbmFibGVkKHRydWUpOworCisgICAgICAg
ICAgICAgICAgLy8gNS4yLjMuMiBTZXQgYWN0aXZlIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAg
ICAgICAgICAgICBhY3RpdmVUcmFja0ZsYWcgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyA1LjIuNCBBZGQgbmV3IGF1ZGlvIHRyYWNrIHRvIHRoZSBhdWRpb1RyYWNrcyBh
dHRyaWJ1dGUgb24gdGhpcyBTb3VyY2VCdWZmZXIgb2JqZWN0LgorICAgICAgICAgICAgLy8gNS4y
LjUgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0
aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxl
LCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIEF1ZGlvVHJh
Y2tMaXN0IG9iamVjdAorICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgYXVkaW9UcmFj
a3MgYXR0cmlidXRlIG9uIHRoaXMgU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIGF1
ZGlvVHJhY2tzKCktPmFwcGVuZChuZXdBdWRpb1RyYWNrKTsKKworICAgICAgICAgICAgLy8gNS4y
LjYgQWRkIG5ldyBhdWRpbyB0cmFjayB0byB0aGUgYXVkaW9UcmFja3MgYXR0cmlidXRlIG9uIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAgICAgLy8gNS4yLjcgUXVldWUgYSB0YXNrIHRv
IGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJs
ZSBhbmQgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRo
ZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdAorICAg
ICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgYXVkaW9UcmFja3MgYXR0cmlidXRlIG9uIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT5hdWRpb1RyYWNrcygpLT5hcHBlbmQobmV3QXVkaW9UcmFjayk7CisKKyAgICAgICAgICAgIC8v
IDUuMi44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZv
ciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgQVNTRVJUKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRh
aW5zKG5ld0F1ZGlvVHJhY2stPmlkKCkpKTsKKyAgICAgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFj
a0J1ZmZlciA9IG1fdHJhY2tCdWZmZXJNYXAuYWRkKG5ld0F1ZGlvVHJhY2stPmlkKCksIFRyYWNr
QnVmZmVyKCkpLml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAgICAgICAgLy8gNS4yLjkgQWRkIHRo
ZSB0cmFjayBkZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgor
ICAgICAgICAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBpdC0+ZGVzY3JpcHRpb247Cisg
ICAgICAgIH0KKworICAgICAgICAvLyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4gdGhlIGlu
aXRpYWxpemF0aW9uIHNlZ21lbnQsIHJ1biBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGZvciAo
YXV0byBpdCA9IHNlZ21lbnQudmlkZW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC52aWRl
b1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgVmlkZW9UcmFja1ByaXZhdGUqIHZp
ZGVvVHJhY2tQcml2YXRlID0gaXQtPnRyYWNrLmdldCgpOworCisgICAgICAgICAgICAvLyA1LjMu
MSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0LgorICAgICAg
ICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBpdCB0byB0aGUg
aWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgorICAgICAgICAgICAgUmVmUHRyPFZpZGVv
VHJhY2s+IG5ld1ZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhpcywgdmlkZW9UcmFj
a1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VmlkZW9UcmFjay0+c2V0U291cmNlQnVmZmVyKHRo
aXMpOworCisgICAgICAgICAgICAvLyA1LjMuMyBJZiB2aWRlb1RyYWNrcy5sZW5ndGggZXF1YWxz
IDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICBpZiAoIXZpZGVv
VHJhY2tzKCktPmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gNS4zLjMuMSBTZXQgdGhl
IHNlbGVjdGVkIHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjayB0byB0cnVlLgorICAgICAgICAg
ICAgICAgIG5ld1ZpZGVvVHJhY2stPnNldFNlbGVjdGVkKHRydWUpOworCisgICAgICAgICAgICAg
ICAgLy8gNS4zLjMuMiBTZXQgYWN0aXZlIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAg
ICAgICBhY3RpdmVUcmFja0ZsYWcgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyA1LjMuNCBBZGQgbmV3IHZpZGVvIHRyYWNrIHRvIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1
dGUgb24gdGhpcyBTb3VyY2VCdWZmZXIgb2JqZWN0LgorICAgICAgICAgICAgLy8gNS4zLjUgUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRv
ZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQg
dGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0
IG9iamVjdAorICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0
cmlidXRlIG9uIHRoaXMgU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIHZpZGVvVHJh
Y2tzKCktPmFwcGVuZChuZXdWaWRlb1RyYWNrKTsKKworICAgICAgICAgICAgLy8gNS4zLjYgQWRk
IG5ldyB2aWRlbyB0cmFjayB0byB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1M
TWVkaWFFbGVtZW50LgorICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUg
YSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQg
aXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFj
a0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAorICAgICAgICAg
ICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1M
TWVkaWFFbGVtZW50LgorICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT52aWRl
b1RyYWNrcygpLT5hcHBlbmQobmV3VmlkZW9UcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuMy44
IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlz
IHRyYWNrLgorICAgICAgICAgICAgQVNTRVJUKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRhaW5zKG5l
d1ZpZGVvVHJhY2stPmlkKCkpKTsKKyAgICAgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZl
ciA9IG1fdHJhY2tCdWZmZXJNYXAuYWRkKG5ld1ZpZGVvVHJhY2stPmlkKCksIFRyYWNrQnVmZmVy
KCkpLml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAgICAgICAgLy8gNS4zLjkgQWRkIHRoZSB0cmFj
ayBkZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgorICAgICAg
ICAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBpdC0+ZGVzY3JpcHRpb247CisgICAgICAg
IH0KKworICAgICAgICAvLyA1LjQgRm9yIGVhY2ggdGV4dCB0cmFjayBpbiB0aGUgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgZm9yIChhdXRvIGl0
ID0gc2VnbWVudC50ZXh0VHJhY2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQudGV4dFRyYWNrcy5l
bmQoKTsgKytpdCkgeworICAgICAgICAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSogdGV4dFRy
YWNrUHJpdmF0ZSA9IGl0LT50cmFjay5nZXQoKTsKKworICAgICAgICAgICAgLy8gNS40LjEgTGV0
IG5ldyB0ZXh0IHRyYWNrIGJlIGEgbmV3IFRleHRUcmFjayBvYmplY3Qgd2l0aCBpdHMgcHJvcGVy
dGllcyBwb3B1bGF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgIC8vIGFwcHJvcHJpYXRlIGluZm9y
bWF0aW9uIGZyb20gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisgICAgICAgICAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrPiBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHRleHRUcmFja1ByaXZhdGUpOworCisg
ICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBuZXcgdGV4dCB0cmFj
ayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3RpdmUKKyAgICAgICAg
ICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAgIGlmICh0ZXh0VHJhY2tQcml2
YXRlLT5tb2RlKCkgIT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJsZWQpCisgICAgICAg
ICAgICAgICAgYWN0aXZlVHJhY2tGbGFnID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gNS40LjMg
QWRkIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGlzIFNv
dXJjZUJ1ZmZlciBvYmplY3QuCisgICAgICAgICAgICAvLyA1LjQuNCBRdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxl
IGFuZCBpcworICAgICAgICAgICAgLy8gbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhl
IFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGlzCisg
ICAgICAgICAgICAvLyBTb3VyY2VCdWZmZXIgb2JqZWN0LgorICAgICAgICAgICAgdGV4dFRyYWNr
cygpLT5hcHBlbmQobmV3VGV4dFRyYWNrKTsKKworICAgICAgICAgICAgLy8gNS40LjUgQWRkIG5l
dyB0ZXh0IHRyYWNrIHRvIHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KKyAgICAgICAgICAgIC8vIDUuNC42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1
c3RlZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCisg
ICAgICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVu
dCBpbnRlcmZhY2UsIGF0IHRoZSBUZXh0VHJhY2tMaXN0IG9iamVjdAorICAgICAgICAgICAgLy8g
cmVmZXJlbmNlZCBieSB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVs
ZW1lbnQuCisgICAgICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja3Mo
KS0+YXBwZW5kKG5ld1RleHRUcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuNC43IENyZWF0ZSBh
IG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgor
ICAgICAgICAgICAgQVNTRVJUKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRhaW5zKHRleHRUcmFja1By
aXZhdGUtPmlkKCkpKTsKKyAgICAgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciA9IG1f
dHJhY2tCdWZmZXJNYXAuYWRkKHRleHRUcmFja1ByaXZhdGUtPmlkKCksIFRyYWNrQnVmZmVyKCkp
Lml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAgICAgICAgLy8gNS40LjggQWRkIHRoZSB0cmFjayBk
ZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgorICAgICAgICAg
ICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBpdC0+ZGVzY3JpcHRpb247CisgICAgICAgIH0K
KworICAgICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4g
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGlmIChhY3RpdmVUcmFja0ZsYWcpIHsK
KyAgICAgICAgICAgIC8vIDUuNS4xIEFkZCB0aGlzIFNvdXJjZUJ1ZmZlciB0byBhY3RpdmVTb3Vy
Y2VCdWZmZXJzLgorICAgICAgICAgICAgc2V0QWN0aXZlKHRydWUpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gNS42IFNldCBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50IGZsYWcgdG8gdHJ1
ZS4KKyAgICAgICAgbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsK
KyAgICB9CisKKyAgICAvLyA2LiBJZiB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0
dHJpYnV0ZSBpcyBIQVZFX05PVEhJTkcsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cisg
ICAgaWYgKG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhUGxheWVyOjpIYXZlTm90aGlu
ZykgeworICAgICAgICAvLyA2LjEgSWYgb25lIG9yIG1vcmUgb2JqZWN0cyBpbiBzb3VyY2VCdWZm
ZXJzIGhhdmUgZmlyc3QgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmbGFnIHNldCB0byBmYWxzZSwg
dGhlbiBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb25nIGkgPSAw
OyBpIDwgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlcnMoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCFtX3NvdXJjZS0+c291cmNlQnVmZmVycygpLT5pdGVtKGkpLT5tX3JlY2VpdmVk
Rmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gNi4yIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0
YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBLgorICAgICAgICAvLyA2LjMgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQgdGhlIG1l
ZGlhIGVsZW1lbnQuCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhKTsKKyAgICB9CisKKyAgICAvLyA3LiBJZiB0aGUgYWN0aXZlIHRyYWNr
IGZsYWcgZXF1YWxzIHRydWUgYW5kIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUKKyAg
ICAvLyBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhBVkVfQ1VSUkVOVF9EQVRBLCB0aGVuIHNl
dCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlCisgICAgLy8gYXR0cmlidXRlIHRvIEhB
VkVfTUVUQURBVEEuCisgICAgaWYgKGFjdGl2ZVRyYWNrRmxhZyAmJiBtX3ByaXZhdGUtPnJlYWR5
U3RhdGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGEpCisgICAgICAgIG1fcHJpdmF0
ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKTsKIH0KIAotdm9pZCBT
b3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1
ZmZlclByaXZhdGUqLCBQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPikKK2Jvb2wgU291cmNlQnVmZmVy
Ojp2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21l
bnQmIHNlZ21lbnQpCiB7CisgICAgLy8gMy4xLiBWZXJpZnkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzLiBJZiBhbnkgb2YgdGhlIGNoZWNrcyBmYWlsIHRoZW4gcnVuIHRoZSBlbmQgb2Ygc3RyZWFt
CisgICAgLy8gYWxnb3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gImRlY29k
ZSIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vICAgKiBUaGUgbnVtYmVyIG9mIGF1ZGlv
LCB2aWRlbywgYW5kIHRleHQgdHJhY2tzIG1hdGNoIHdoYXQgd2FzIGluIHRoZSBmaXJzdCBpbml0
aWFsaXphdGlvbiBzZWdtZW50LgorICAgIGlmIChzZWdtZW50LmF1ZGlvVHJhY2tzLnNpemUoKSAh
PSBhdWRpb1RyYWNrcygpLT5sZW5ndGgoKQorICAgICAgICB8fCBzZWdtZW50LnZpZGVvVHJhY2tz
LnNpemUoKSAhPSB2aWRlb1RyYWNrcygpLT5sZW5ndGgoKQorICAgICAgICB8fCBzZWdtZW50LnRl
eHRUcmFja3Muc2l6ZSgpICE9IHRleHRUcmFja3MoKS0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vICAgKiBUaGUgY29kZWNzIGZvciBlYWNoIHRyYWNrLCBtYXRjaCB3
aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIGZpcnN0IGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisg
ICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC5hdWRpb1RyYWNrcy5iZWdpbigpOyBpdCAhPSBzZWdt
ZW50LmF1ZGlvVHJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICghbV92aWRlb0NvZGVj
cy5jb250YWlucyhpdC0+ZGVzY3JpcHRpb24tPmNvZGVjKCkpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGZvciAoYXV0byBpdCA9IHNlZ21lbnQudmlkZW9UcmFja3Mu
YmVnaW4oKTsgaXQgIT0gc2VnbWVudC52aWRlb1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAg
ICBpZiAoIW1fYXVkaW9Db2RlY3MuY29udGFpbnMoaXQtPmRlc2NyaXB0aW9uLT5jb2RlYygpKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gaXQgPSBz
ZWdtZW50LnZpZGVvVHJhY2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQudmlkZW9UcmFja3MuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgaWYgKCFtX3RleHRDb2RlY3MuY29udGFpbnMoaXQtPmRlc2Ny
aXB0aW9uLT5jb2RlYygpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyAgICogSWYgbW9yZSB0aGFuIG9uZSB0cmFjayBmb3IgYSBzaW5nbGUgdHlwZSBhcmUgcHJl
c2VudCAoaWUgMiBhdWRpbyB0cmFja3MpLCB0aGVuIHRoZSBUcmFjaworICAgIC8vICAgSURzIG1h
dGNoIHRoZSBvbmVzIGluIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50LgorICAgIGlm
IChzZWdtZW50LmF1ZGlvVHJhY2tzLnNpemUoKSA+PSAyKSB7CisgICAgICAgIGZvciAoYXV0byBp
dCA9IHNlZ21lbnQuYXVkaW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC5hdWRpb1RyYWNr
cy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRh
aW5zKGl0LT50cmFjay0+aWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHNlZ21lbnQudmlkZW9UcmFja3Muc2l6ZSgpID49IDIp
IHsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC52aWRlb1RyYWNrcy5iZWdpbigpOyBp
dCAhPSBzZWdtZW50LnZpZGVvVHJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAo
IW1fdHJhY2tCdWZmZXJNYXAuY29udGFpbnMoaXQtPnRyYWNrLT5pZCgpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2VnbWVudC50
ZXh0VHJhY2tzLnNpemUoKSA+PSAyKSB7CisgICAgICAgIGZvciAoYXV0byBpdCA9IHNlZ21lbnQu
dmlkZW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC52aWRlb1RyYWNrcy5lbmQoKTsgKytp
dCkgeworICAgICAgICAgICAgaWYgKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRhaW5zKGl0LT50cmFj
ay0+aWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NsYXNzIFNhbXBsZUxlc3NUaGFuQ29tcGFyYXRv
ciB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKHN0ZDo6cGFpcjxNZWRpYVRpbWUsIFJl
ZlB0cjxNZWRpYVNhbXBsZT4+IHZhbHVlMSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1l
ZGlhU2FtcGxlPj4gdmFsdWUyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlMS5maXJzdCA8
IHZhbHVlMi5maXJzdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yKCkoTWVkaWFUaW1lIHZh
bHVlMSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlMSA8IHZhbHVlMi5maXJzdDsKKyAgICB9CisKKyAg
ICBib29sIG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxl
Pj4gdmFsdWUxLCBNZWRpYVRpbWUgdmFsdWUyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
MS5maXJzdCA8IHZhbHVlMjsKKyAgICB9Cit9OworCitjbGFzcyBTYW1wbGVDb250YWluc01lZGlh
VGltZUNvbXBhcmF0b3IgeworcHVibGljOgorICAgIGJvb2wgY29udGFpbnMoTWVkaWFTYW1wbGUq
IHNhbXBsZSwgTWVkaWFUaW1lIHRpbWUpCisgICAgeworICAgICAgICBNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uU3RhcnRUaW1lID0gc2FtcGxlLT5wcmVzZW50YXRpb25UaW1lKCk7CisgICAgICAgIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25FbmRUaW1lID0gcHJlc2VudGF0aW9uU3RhcnRUaW1lICsgc2Ft
cGxlLT5kdXJhdGlvbigpOworICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uU3RhcnRUaW1lIDw9
IHRpbWUgJiYgcHJlc2VudGF0aW9uRW5kVGltZSA+IHRpbWU7CisgICAgfQorICAgIGJvb2wgb3Bl
cmF0b3IoKShzdGQ6OnBhaXI8TWVkaWFUaW1lLCBSZWZQdHI8TWVkaWFTYW1wbGU+PiB2YWx1ZSwg
TWVkaWFUaW1lIHRpbWUpCisgICAgeworICAgICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uU3Rh
cnRUaW1lID0gdmFsdWUuc2Vjb25kLT5wcmVzZW50YXRpb25UaW1lKCk7CisgICAgICAgIE1lZGlh
VGltZSBwcmVzZW50YXRpb25FbmRUaW1lID0gcHJlc2VudGF0aW9uU3RhcnRUaW1lICsgdmFsdWUu
c2Vjb25kLT5kdXJhdGlvbigpOworICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uU3RhcnRUaW1l
IDwgdGltZSAmJiBwcmVzZW50YXRpb25FbmRUaW1lIDw9IHRpbWU7CisgICAgfQorfTsKKworY2xh
c3MgU2FtcGxlUHJlc2VudGF0aW9uVGltZUlzV2l0aGluUmFuZ2VDb21wYXJhdG9yIHsKK3B1Ymxp
YzoKKyAgICBib29sIG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgTWVkaWFUaW1lPiBy
YW5nZSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gcmFuZ2Uuc2Vjb25kIDwgdmFsdWUuZmlyc3Q7CisgICAgfQor
ICAgIGJvb2wgb3BlcmF0b3IoKShzdGQ6OnBhaXI8TWVkaWFUaW1lLCBSZWZQdHI8TWVkaWFTYW1w
bGU+PiB2YWx1ZSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgTWVkaWFUaW1lPiByYW5nZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2YWx1ZS5maXJzdCA8IHJhbmdlLmZpcnN0OworICAgIH0KK307CisK
K2NsYXNzIFNhbXBsZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRlIHsKK3B1YmxpYzoKKyAgICBib29s
IG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUuc2Vjb25kLT5mbGFncygpID09IE1lZGlh
U2FtcGxlOjpJc1N5bmM7CisgICAgfQorfTsKKwordm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQYXNzUmVm
UHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUpCit7CisgICAgLy8gMy41LjggQ29kZWQgRnJhbWUgUHJv
Y2Vzc2luZworICAgIC8vIFdoZW4gY29tcGxldGUgY29kZWQgZnJhbWVzIGhhdmUgYmVlbiBwYXJz
ZWQgYnkgdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgdGhlbiB0aGUgZm9sbG93aW5nIHN0ZXBzCisg
ICAgLy8gYXJlIHJ1bjoKKyAgICAvLyAxLiBGb3IgZWFjaCBjb2RlZCBmcmFtZSBpbiB0aGUgbWVk
aWEgc2VnbWVudCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIExvb3AgVG9w
CisgICAgZG8geworICAgICAgICAvLyAxLjEgKGN0ZCkgTGV0IHByZXNlbnRhdGlvbiB0aW1lc3Rh
bXAgYmUgYSBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHJlcHJlc2VudGF0aW9uIG9m
CisgICAgICAgIC8vIHRoZSBjb2RlZCBmcmFtZSdzIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgaW4g
c2Vjb25kcy4KKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWVzdGFtcCA9IHNhbXBs
ZS0+cHJlc2VudGF0aW9uVGltZSgpOworCisgICAgICAgIC8vIDEuMiBMZXQgZGVjb2RlIHRpbWVz
dGFtcCBiZSBhIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGNvZGVkIGZyYW1lJ3MKKyAgICAgICAgLy8gZGVjb2RlIHRpbWVzdGFtcCBpbiBzZWNv
bmRzLgorICAgICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZXN0YW1wID0gc2FtcGxlLT5kZWNvZGVU
aW1lKCk7CisKKyAgICAgICAgLy8gMS4zIExldCBmcmFtZSBkdXJhdGlvbiBiZSBhIGRvdWJsZSBw
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvZGVkIGZyYW1l
J3MKKyAgICAgICAgLy8gZHVyYXRpb24gaW4gc2Vjb25kcy4KKyAgICAgICAgTWVkaWFUaW1lIGZy
YW1lRHVyYXRpb24gPSBzYW1wbGUtPmR1cmF0aW9uKCk7CisKKyAgICAgICAgLy8gMS40IElmIG1v
ZGUgZXF1YWxzICJzZXF1ZW5jZSIgYW5kIGdyb3VwIHN0YXJ0IHRpbWVzdGFtcCBpcyBzZXQsIHRo
ZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9y
dCBmb3IgInNlcXVlbmNlIiBtb2RlCisKKyAgICAgICAgLy8gMS41IElmIHRpbWVzdGFtcE9mZnNl
dCBpcyBub3QgMCwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgaWYgKG1f
dGltZXN0YW1wT2Zmc2V0ICE9IE1lZGlhVGltZTo6emVyb1RpbWUoKSkgeworICAgICAgICAgICAg
Ly8gMS41LjEgQWRkIHRpbWVzdGFtcE9mZnNldCB0byB0aGUgcHJlc2VudGF0aW9uIHRpbWVzdGFt
cC4KKyAgICAgICAgICAgIHByZXNlbnRhdGlvblRpbWVzdGFtcCArPSBtX3RpbWVzdGFtcE9mZnNl
dDsKKworICAgICAgICAgICAgLy8gMS41LjIgQWRkIHRpbWVzdGFtcE9mZnNldCB0byB0aGUgZGVj
b2RlIHRpbWVzdGFtcC4KKyAgICAgICAgICAgIGRlY29kZVRpbWVzdGFtcCArPSBtX3RpbWVzdGFt
cE9mZnNldDsKKworICAgICAgICAgICAgLy8gMS41LjMgSWYgdGhlIHByZXNlbnRhdGlvbiB0aW1l
c3RhbXAgb3IgZGVjb2RlIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gdGhlIHByZXNlbnRhdGlvbiBz
dGFydAorICAgICAgICAgICAgLy8gdGltZSwgdGhlbiBydW4gdGhlIGVuZCBvZiBzdHJlYW0gYWxn
b3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gImRlY29kZSIsIGFuZAorICAg
ICAgICAgICAgLy8gYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgICAgICAgICBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uU3RhcnRUaW1lID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworICAgICAgICAgICAg
aWYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCA8IHByZXNlbnRhdGlvblN0YXJ0VGltZSB8fCBkZWNv
ZGVUaW1lc3RhbXAgPCBwcmVzZW50YXRpb25TdGFydFRpbWUpIHsKKyAgICAgICAgICAgICAgICBt
X3NvdXJjZS0+ZW5kT2ZTdHJlYW0oZGVjb2RlRXJyb3IoKSwgSWdub3JhYmxlRXhjZXB0aW9uQ29k
ZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyAxLjYgTGV0IHRyYWNrIGJ1ZmZlciBlcXVhbCB0aGUgdHJhY2sgYnVmZmVy
IHRoYXQgdGhlIGNvZGVkIGZyYW1lIHdpbGwgYmUgYWRkZWQgdG8uCisgICAgICAgIEF0b21pY1N0
cmluZyB0cmFja0lEID0gc2FtcGxlLT50cmFja0lEKCk7CisgICAgICAgIGF1dG8gaXQgPSBtX3Ry
YWNrQnVmZmVyTWFwLmZpbmQodHJhY2tJRCk7CisgICAgICAgIGlmIChpdCA9PSBtX3RyYWNrQnVm
ZmVyTWFwLmVuZCgpKQorICAgICAgICAgICAgaXQgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFj
a0lELCBUcmFja0J1ZmZlcigpKS5pdGVyYXRvcjsKKyAgICAgICAgVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyID0gaXQtPnZhbHVlOworCisgICAgICAgIC8vIDEuNyBJZiBsYXN0IGRlY29kZSB0aW1l
c3RhbXAgZm9yIHRyYWNrIGJ1ZmZlciBpcyBzZXQgYW5kIGRlY29kZSB0aW1lc3RhbXAgaXMgbGVz
cyB0aGFuIGxhc3QKKyAgICAgICAgLy8gZGVjb2RlIHRpbWVzdGFtcDoKKyAgICAgICAgLy8gT1IK
KyAgICAgICAgLy8gSWYgbGFzdCBkZWNvZGUgdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgaXMg
c2V0IGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRlY29kZSB0aW1lc3RhbXAgYW5kCisgICAg
ICAgIC8vIGxhc3QgZGVjb2RlIHRpbWVzdGFtcCBpcyBncmVhdGVyIHRoYW4gMiB0aW1lcyBsYXN0
IGZyYW1lIGR1cmF0aW9uOgorICAgICAgICBpZiAodHJhY2tCdWZmZXIubGFzdERlY29kZVRpbWVz
dGFtcC5pc1ZhbGlkKCkgJiYgKGRlY29kZVRpbWVzdGFtcCA8IHRyYWNrQnVmZmVyLmxhc3REZWNv
ZGVUaW1lc3RhbXAKKyAgICAgICAgICAgIHx8IGFicyhkZWNvZGVUaW1lc3RhbXAgLSB0cmFja0J1
ZmZlci5sYXN0RGVjb2RlVGltZXN0YW1wKSA+ICh0cmFja0J1ZmZlci5sYXN0RnJhbWVEdXJhdGlv
biAqIDIpKSkgeworICAgICAgICAgICAgLy8gMS43LjEgSWYgbW9kZSBlcXVhbHMgInNlZ21lbnRz
IjoKKyAgICAgICAgICAgIC8vIFNldCBoaWdoZXN0IHByZXNlbnRhdGlvbiBlbmQgdGltZXN0YW1w
IHRvIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAuCisgICAgICAgICAgICBtX2hpZ2hlc3RQcmVzZW50
YXRpb25FbmRUaW1lc3RhbXAgPSBwcmVzZW50YXRpb25UaW1lc3RhbXA7CisKKyAgICAgICAgICAg
IC8vIElmIG1vZGUgZXF1YWxzICJzZXF1ZW5jZSI6CisgICAgICAgICAgICAvLyBTZXQgZ3JvdXAg
c3RhcnQgdGltZXN0YW1wIGVxdWFsIHRvIHRoZSBoaWdoZXN0IHByZXNlbnRhdGlvbiBlbmQgdGlt
ZXN0YW1wLgorICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciAic2VxdWVuY2Ui
IG1vZGUuCisKKyAgICAgICAgICAgIGZvciAoYXV0byBpID0gbV90cmFja0J1ZmZlck1hcC52YWx1
ZXMoKS5iZWdpbigpOyBpICE9IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkuZW5kKCk7ICsraSkg
eworICAgICAgICAgICAgICAgIC8vIDEuNy4yIFVuc2V0IHRoZSBsYXN0IGRlY29kZSB0aW1lc3Rh
bXAgb24gYWxsIHRyYWNrIGJ1ZmZlcnMuCisgICAgICAgICAgICAgICAgaS0+bGFzdERlY29kZVRp
bWVzdGFtcCA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKyAgICAgICAgICAgICAgICAvLyAx
LjcuMyBVbnNldCB0aGUgbGFzdCBmcmFtZSBkdXJhdGlvbiBvbiBhbGwgdHJhY2sgYnVmZmVycy4K
KyAgICAgICAgICAgICAgICBpLT5sYXN0RnJhbWVEdXJhdGlvbiA9IE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKTsKKyAgICAgICAgICAgICAgICAvLyAxLjcuNCBVbnNldCB0aGUgaGlnaGVzdCBwcmVz
ZW50YXRpb24gdGltZXN0YW1wIG9uIGFsbCB0cmFjayBidWZmZXJzLgorICAgICAgICAgICAgICAg
IGktPmhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCk7CisgICAgICAgICAgICAgICAgLy8gMS43LjUgU2V0IHRoZSBuZWVkIHJhbmRvbSBhY2Nlc3Mg
cG9pbnQgZmxhZyBvbiBhbGwgdHJhY2sgYnVmZmVycyB0byB0cnVlLgorICAgICAgICAgICAgICAg
IGktPm5lZWRSYW5kb21BY2Nlc3NGbGFnID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gMS43LjYgSnVtcCB0byB0aGUgTG9vcCBUb3Agc3RlcCBhYm92ZSB0byByZXN0YXJ0
IHByb2Nlc3Npbmcgb2YgdGhlIGN1cnJlbnQgY29kZWQgZnJhbWUuCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDEuOCBMZXQgZnJhbWUgZW5kIHRpbWVzdGFt
cCBlcXVhbCB0aGUgc3VtIG9mIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgYW5kIGZyYW1lIGR1cmF0
aW9uLgorICAgICAgICBNZWRpYVRpbWUgZnJhbWVFbmRUaW1lc3RhbXAgPSBwcmVzZW50YXRpb25U
aW1lc3RhbXAgKyBmcmFtZUR1cmF0aW9uOworCisgICAgICAgIC8vIDEuOSBJZiBwcmVzZW50YXRp
b24gdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBhcHBlbmRXaW5kb3dTdGFydCwgdGhlbiBzZXQgdGhl
IG5lZWQgcmFuZG9tIGFjY2VzcworICAgICAgICAvLyBwb2ludCBmbGFnIHRvIHRydWUsIGRyb3Ag
dGhlIGNvZGVkIGZyYW1lLCBhbmQganVtcCB0byB0aGUgdG9wIG9mIHRoZSBsb29wIHRvIHN0YXJ0
IHByb2Nlc3NpbmcKKyAgICAgICAgLy8gdGhlIG5leHQgY29kZWQgZnJhbWUuCisgICAgICAgIC8v
IDEuMTAgSWYgZnJhbWUgZW5kIHRpbWVzdGFtcCBpcyBncmVhdGVyIHRoYW4gYXBwZW5kV2luZG93
RW5kLCB0aGVuIHNldCB0aGUgbmVlZCByYW5kb20gYWNjZXNzCisgICAgICAgIC8vIHBvaW50IGZs
YWcgdG8gdHJ1ZSwgZHJvcCB0aGUgY29kZWQgZnJhbWUsIGFuZCBqdW1wIHRvIHRoZSB0b3Agb2Yg
dGhlIGxvb3AgdG8gc3RhcnQgcHJvY2Vzc2luZworICAgICAgICAvLyB0aGUgbmV4dCBjb2RlZCBm
cmFtZS4KKyAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhcHBlbmQgd2luZG93cworCisgICAg
ICAgIC8vIDEuMTEgSWYgdGhlIG5lZWQgcmFuZG9tIGFjY2VzcyBwb2ludCBmbGFnIG9uIHRyYWNr
IGJ1ZmZlciBlcXVhbHMgdHJ1ZSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAg
ICAgLy8gMS4xMS4xIElmIHRoZSBjb2RlZCBmcmFtZSBpcyBub3QgYSByYW5kb20gYWNjZXNzIHBv
aW50LCB0aGVuIGRyb3AgdGhlIGNvZGVkIGZyYW1lIGFuZCBqdW1wCisgICAgICAgIC8vIHRvIHRo
ZSB0b3Agb2YgdGhlIGxvb3AgdG8gc3RhcnQgcHJvY2Vzc2luZyB0aGUgbmV4dCBjb2RlZCBmcmFt
ZS4KKyAgICAgICAgLy8gMS4xMS4yIFNldCB0aGUgbmVlZCByYW5kb20gYWNjZXNzIHBvaW50IGZs
YWcgb24gdHJhY2sgYnVmZmVyIHRvIGZhbHNlLgorICAgICAgICAvLyBOT1RFOiBNb2NrU2FtcGxl
Qm94ZXMgYXJlIG5vdCBkZWNvZGFibGUuCisKKyAgICAgICAgLy8gMS4xMiBMZXQgc3BsaWNlZCBh
dWRpbyBmcmFtZSBiZSBhbiB1bnNldCB2YXJpYWJsZSBmb3IgaG9sZGluZyBhdWRpbyBzcGxpY2Ug
aW5mb3JtYXRpb24KKyAgICAgICAgLy8gMS4xMyBMZXQgc3BsaWNlZCB0aW1lZCB0ZXh0IGZyYW1l
IGJlIGFuIHVuc2V0IHZhcmlhYmxlIGZvciBob2xkaW5nIHRpbWVkIHRleHQgc3BsaWNlIGluZm9y
bWF0aW9uCisgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc2FtcGxlIHNwbGljaW5n
LgorCisgICAgICAgIFRyYWNrQnVmZmVyOjpTYW1wbGVNYXAgZXJhc2VkU2FtcGxlczsKKyAgICAg
ICAgTWVkaWFUaW1lIG1pY3Jvc2Vjb25kKDEsIDEwMDAwMDApOworCisgICAgICAgIC8vIDEuMTQg
SWYgbGFzdCBkZWNvZGUgdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgaXMgdW5zZXQgYW5kIHRo
ZXJlIGlzIGEgY29kZWQgZnJhbWUgaW4KKyAgICAgICAgLy8gdHJhY2sgYnVmZmVyIHdpdGggYSBw
cmVzZW50YXRpb24gdGltZXN0YW1wIGxlc3MgdGhhbiBvciBlcXVhbCB0byBwcmVzZW50YXRpb24g
dGltZXN0YW1wCisgICAgICAgIC8vIGFuZCBwcmVzZW50YXRpb24gdGltZXN0YW1wIGlzIGxlc3Mg
dGhhbiB0aGlzIGNvZGVkIGZyYW1lJ3MgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBwbHVzCisgICAg
ICAgIC8vIGl0cyBmcmFtZSBkdXJhdGlvbiwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
KyAgICAgICAgaWYgKHRyYWNrQnVmZmVyLmxhc3REZWNvZGVUaW1lc3RhbXAuaXNJbnZhbGlkKCkp
IHsKKyAgICAgICAgICAgIFNhbXBsZUNvbnRhaW5zTWVkaWFUaW1lQ29tcGFyYXRvciBjb21wYXJh
dG9yOworICAgICAgICAgICAgYXV0byBpdGVyID0gc3RkOjpsb3dlcl9ib3VuZCh0cmFja0J1ZmZl
ci5zYW1wbGVzLmJlZ2luKCksIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksIHByZXNlbnRhdGlv
blRpbWVzdGFtcCwgY29tcGFyYXRvcik7CisgICAgICAgICAgICBpZiAoaXRlciAhPSB0cmFja0J1
ZmZlci5zYW1wbGVzLmVuZCgpICYmIGNvbXBhcmF0b3IuY29udGFpbnMoaXRlci0+c2Vjb25kLmdl
dCgpLCBwcmVzZW50YXRpb25UaW1lc3RhbXApKSB7CisgICAgICAgICAgICAgICAgLy8gMS4xNC4x
IExldCBvdmVybGFwcGVkIGZyYW1lIGJlIHRoZSBjb2RlZCBmcmFtZSBpbiB0cmFjayBidWZmZXIg
dGhhdCBtYXRjaGVzIHRoZSBjb25kaXRpb24gYWJvdmUuCisgICAgICAgICAgICAgICAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBvdmVybGFwcGVkRnJhbWUgPSBpdGVyLT5zZWNvbmQ7CisKKyAgICAgICAg
ICAgICAgICAvLyAxLjE0LjIgSWYgdHJhY2sgYnVmZmVyIGNvbnRhaW5zIGF1ZGlvIGNvZGVkIGZy
YW1lczoKKyAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIGF1ZGlvIHNwbGljZSBmcmFtZSBhbGdv
cml0aG0gYW5kIGlmIGEgc3BsaWNlIGZyYW1lIGlzIHJldHVybmVkLCBhc3NpZ24gaXQgdG8KKyAg
ICAgICAgICAgICAgICAvLyBzcGxpY2VkIGF1ZGlvIGZyYW1lLgorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc2FtcGxlIHNwbGljaW5nLgorCisgICAgICAgICAgICAg
ICAgLy8gSWYgdHJhY2sgYnVmZmVyIGNvbnRhaW5zIHZpZGVvIGNvZGVkIGZyYW1lczoKKyAgICAg
ICAgICAgICAgICBpZiAodHJhY2tCdWZmZXIuZGVzY3JpcHRpb24tPmlzVmlkZW8oKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyAxLjE0LjIuMSBMZXQgb3ZlcmxhcHBlZCBmcmFtZSBwcmVzZW50
YXRpb24gdGltZXN0YW1wIGVxdWFsIHRoZSBwcmVzZW50YXRpb24gdGltZXN0YW1wCisgICAgICAg
ICAgICAgICAgICAgIC8vIG9mIG92ZXJsYXBwZWQgZnJhbWUuCisgICAgICAgICAgICAgICAgICAg
IE1lZGlhVGltZSBvdmVybGFwcGVkRnJhbWVQcmVzZW50YXRpb25UaW1lc3RhbXAgPSBvdmVybGFw
cGVkRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyAx
LjE0LjIuMiBMZXQgcmVtb3ZlIHdpbmRvdyB0aW1lc3RhbXAgZXF1YWwgb3ZlcmxhcHBlZCBmcmFt
ZSBwcmVzZW50YXRpb24gdGltZXN0YW1wCisgICAgICAgICAgICAgICAgICAgIC8vIHBsdXMgMSBt
aWNyb3NlY29uZC4KKyAgICAgICAgICAgICAgICAgICAgTWVkaWFUaW1lIHJlbW92ZVdpbmRvd1Rp
bWVzdGFtcCA9IG92ZXJsYXBwZWRGcmFtZVByZXNlbnRhdGlvblRpbWVzdGFtcCArIG1pY3Jvc2Vj
b25kOworCisgICAgICAgICAgICAgICAgICAgIC8vIDEuMTQuMi4zIElmIHRoZSBwcmVzZW50YXRp
b24gdGltZXN0YW1wIGlzIGxlc3MgdGhhbiB0aGUgcmVtb3ZlIHdpbmRvdyB0aW1lc3RhbXAsCisg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gcmVtb3ZlIG92ZXJsYXBwZWQgZnJhbWUgYW5kIGFu
eSBjb2RlZCBmcmFtZXMgdGhhdCBkZXBlbmQgb24gaXQgZnJvbSB0cmFjayBidWZmZXIuCisgICAg
ICAgICAgICAgICAgICAgIGlmIChwcmVzZW50YXRpb25UaW1lc3RhbXAgPCByZW1vdmVXaW5kb3dU
aW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IE1vY2tTYW1wbGVC
b3hlcyBkb24ndCBoYXZlIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgICAgICAgICAgZXJh
c2VkU2FtcGxlcy5pbnNlcnQoKml0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tC
dWZmZXIuc2FtcGxlcy5lcmFzZShpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRyYWNrIGJ1ZmZlciBjb250YWlu
cyB0aW1lZCB0ZXh0IGNvZGVkIGZyYW1lczoKKyAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIHRl
eHQgc3BsaWNlIGZyYW1lIGFsZ29yaXRobSBhbmQgaWYgYSBzcGxpY2UgZnJhbWUgaXMgcmV0dXJu
ZWQsIGFzc2lnbiBpdCB0byBzcGxpY2VkIHRpbWVkIHRleHQgZnJhbWUuCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzYW1wbGUgc3BsaWNpbmcuCisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyAxLjE1IFJlbW92ZSBleGlzdGluZyBjb2RlZCBm
cmFtZXMgaW4gdHJhY2sgYnVmZmVyOgorICAgICAgICAvLyBJZiBoaWdoZXN0IHByZXNlbnRhdGlv
biB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1ZmZlciBpcyBub3Qgc2V0OgorICAgICAgICBpZiAodHJh
Y2tCdWZmZXIuaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcC5pc0ludmFsaWQoKSkgeworICAg
ICAgICAgICAgLy8gUmVtb3ZlIGFsbCBjb2RlZCBmcmFtZXMgZnJvbSB0cmFjayBidWZmZXIgdGhh
dCBoYXZlIGEgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBncmVhdGVyIHRoYW4gb3IKKyAgICAgICAg
ICAgIC8vIGVxdWFsIHRvIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgYW5kIGxlc3MgdGhhbiBmcmFt
ZSBlbmQgdGltZXN0YW1wLgorICAgICAgICAgICAgU2FtcGxlUHJlc2VudGF0aW9uVGltZUlzV2l0
aGluUmFuZ2VDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisgICAgICAgICAgICBzdGQ6OnBhaXI8TWVk
aWFUaW1lLCBNZWRpYVRpbWU+IHJhbmdlKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgZnJhbWVFbmRU
aW1lc3RhbXApOworICAgICAgICAgICAgYXV0byBpdGVyX3BhaXIgPSBzdGQ6OmVxdWFsX3Jhbmdl
KHRyYWNrQnVmZmVyLnNhbXBsZXMuYmVnaW4oKSwgdHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSwg
cmFuZ2UsIGNvbXBhcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0ZXJfcGFpci5maXJzdCAhPSB0
cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgZXJhc2VkU2FtcGxl
cy5pbnNlcnQoaXRlcl9wYWlyLmZpcnN0LCBpdGVyX3BhaXIuc2Vjb25kKTsKKyAgICAgICAgICAg
ICAgICB0cmFja0J1ZmZlci5zYW1wbGVzLmVyYXNlKGl0ZXJfcGFpci5maXJzdCwgaXRlcl9wYWly
LnNlY29uZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBoaWdo
ZXN0IHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1ZmZlciBpcyBzZXQgYW5kIGxl
c3MgdGhhbiBwcmVzZW50YXRpb24gdGltZXN0YW1wCisgICAgICAgIGlmICh0cmFja0J1ZmZlci5o
aWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wLmlzVmFsaWQoKSAmJiB0cmFja0J1ZmZlci5oaWdo
ZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wIDwgcHJlc2VudGF0aW9uVGltZXN0YW1wKSB7CisgICAg
ICAgICAgICAvLyBSZW1vdmUgYWxsIGNvZGVkIGZyYW1lcyBmcm9tIHRyYWNrIGJ1ZmZlciB0aGF0
IGhhdmUgYSBwcmVzZW50YXRpb24gdGltZXN0YW1wIGdyZWF0ZXIgdGhhbiBoaWdoZXN0CisgICAg
ICAgICAgICAvLyBwcmVzZW50YXRpb24gdGltZXN0YW1wIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwg
dG8gZnJhbWUgZW5kIHRpbWVzdGFtcC4KKyAgICAgICAgICAgIFNhbXBsZVByZXNlbnRhdGlvblRp
bWVJc1dpdGhpblJhbmdlQ29tcGFyYXRvciBjb21wYXJhdG9yOworICAgICAgICAgICAgc3RkOjpw
YWlyPE1lZGlhVGltZSwgTWVkaWFUaW1lPiByYW5nZSh0cmFja0J1ZmZlci5oaWdoZXN0UHJlc2Vu
dGF0aW9uVGltZXN0YW1wLCBmcmFtZUVuZFRpbWVzdGFtcCk7CisgICAgICAgICAgICBhdXRvIGl0
ZXJfcGFpciA9IHN0ZDo6ZXF1YWxfcmFuZ2UodHJhY2tCdWZmZXIuc2FtcGxlcy5iZWdpbigpLCB0
cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCByYW5nZSwgY29tcGFyYXRvcik7CisgICAgICAgICAg
ICBpZiAoaXRlcl9wYWlyLmZpcnN0ICE9IHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICBlcmFzZWRTYW1wbGVzLmluc2VydChpdGVyX3BhaXIuZmlyc3QsIGl0ZXJf
cGFpci5zZWNvbmQpOworICAgICAgICAgICAgICAgIHRyYWNrQnVmZmVyLnNhbXBsZXMuZXJhc2Uo
aXRlcl9wYWlyLmZpcnN0LCBpdGVyX3BhaXIuc2Vjb25kKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIDEuMTYgUmVtb3ZlIGRlY29kaW5nIGRlcGVuZGVuY2llcyBvZiB0
aGUgY29kZWQgZnJhbWVzIHJlbW92ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXA6CisgICAgICAgIGlm
ICghZXJhc2VkU2FtcGxlcy5lbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBJZiBkZXRhaWxlZCBp
bmZvcm1hdGlvbiBhYm91dCBkZWNvZGluZyBkZXBlbmRlbmNpZXMgaXMgYXZhaWxhYmxlOgorICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBkZXRhaWxlZCBkZXBlbmRlbmN5IGlu
Zm9ybWF0aW9uCisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZTogUmVtb3ZlIGFsbCBjb2RlZCBm
cmFtZXMgYmV0d2VlbiB0aGUgY29kZWQgZnJhbWVzIHJlbW92ZWQgaW4gdGhlIHByZXZpb3VzIHN0
ZXAKKyAgICAgICAgICAgIC8vIGFuZCB0aGUgbmV4dCByYW5kb20gYWNjZXNzIHBvaW50IGFmdGVy
IHRob3NlIHJlbW92ZWQgZnJhbWVzLgorICAgICAgICAgICAgYXV0byBmaXJzdF9pdGVyID0gc3Rk
Ojp1cHBlcl9ib3VuZCh0cmFja0J1ZmZlci5zYW1wbGVzLmJlZ2luKCksIHRyYWNrQnVmZmVyLnNh
bXBsZXMuZW5kKCksICplcmFzZWRTYW1wbGVzLmJlZ2luKCksIFNhbXBsZUxlc3NUaGFuQ29tcGFy
YXRvcigpKTsKKyAgICAgICAgICAgIGF1dG8gc2Vjb25kX2l0ZXIgPSBzdGQ6OmZpbmRfaWYoZmly
c3RfaXRlciwgdHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSwgU2FtcGxlSXNSYW5kb21BY2Nlc3NQ
cmVkaWNhdGUoKSk7CisgICAgICAgICAgICBpZiAoZmlyc3RfaXRlciAhPSB0cmFja0J1ZmZlci5z
YW1wbGVzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgdHJhY2tCdWZmZXIuc2FtcGxlcy5lcmFz
ZShmaXJzdF9pdGVyLCBzZWNvbmRfaXRlcik7CisgICAgICAgICAgICAgICAgZXJhc2VkU2FtcGxl
cy5pbnNlcnQoZmlyc3RfaXRlciwgc2Vjb25kX2l0ZXIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgLy8gMS4xNyBJZiBzcGxpY2VkIGF1ZGlvIGZyYW1lIGlzIHNldDoKKyAg
ICAgICAgLy8gQWRkIHNwbGljZWQgYXVkaW8gZnJhbWUgdG8gdGhlIHRyYWNrIGJ1ZmZlci4KKyAg
ICAgICAgLy8gSWYgc3BsaWNlZCB0aW1lZCB0ZXh0IGZyYW1lIGlzIHNldDoKKyAgICAgICAgLy8g
QWRkIHNwbGljZWQgdGltZWQgdGV4dCBmcmFtZSB0byB0aGUgdHJhY2sgYnVmZmVyLgorICAgICAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHNhbXBsZSBzcGxpY2luZy4KKworICAgICAgICAv
LyBPdGhlcndpc2U6CisgICAgICAgIC8vIEFkZCB0aGUgY29kZWQgZnJhbWUgd2l0aCB0aGUgcHJl
c2VudGF0aW9uIHRpbWVzdGFtcCwgZGVjb2RlIHRpbWVzdGFtcCwgYW5kIGZyYW1lIGR1cmF0aW9u
IHRvIHRoZSB0cmFjayBidWZmZXIuCisgICAgICAgIHRyYWNrQnVmZmVyLnNhbXBsZXMuaW5zZXJ0
KFRyYWNrQnVmZmVyOjpTYW1wbGVNYXA6OnZhbHVlX3R5cGUocHJlc2VudGF0aW9uVGltZXN0YW1w
LCBzYW1wbGUpKTsKKyAgICAgICAgdHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuaW5zZXJ0KFRyYWNr
QnVmZmVyOjpTYW1wbGVNYXA6OnZhbHVlX3R5cGUoZGVjb2RlVGltZXN0YW1wLCBzYW1wbGUpKTsK
KworICAgICAgICAvLyAxLjE4IFNldCBsYXN0IGRlY29kZSB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1
ZmZlciB0byBkZWNvZGUgdGltZXN0YW1wLgorICAgICAgICB0cmFja0J1ZmZlci5sYXN0RGVjb2Rl
VGltZXN0YW1wID0gZGVjb2RlVGltZXN0YW1wOworCisgICAgICAgIC8vIDEuMTkgU2V0IGxhc3Qg
ZnJhbWUgZHVyYXRpb24gZm9yIHRyYWNrIGJ1ZmZlciB0byBmcmFtZSBkdXJhdGlvbi4KKyAgICAg
ICAgdHJhY2tCdWZmZXIubGFzdEZyYW1lRHVyYXRpb24gPSBmcmFtZUR1cmF0aW9uOworCisgICAg
ICAgIC8vIDEuMjAgSWYgaGlnaGVzdCBwcmVzZW50YXRpb24gdGltZXN0YW1wIGZvciB0cmFjayBi
dWZmZXIgaXMgdW5zZXQgb3IgZnJhbWUgZW5kIHRpbWVzdGFtcCBpcyBncmVhdGVyCisgICAgICAg
IC8vIHRoYW4gaGlnaGVzdCBwcmVzZW50YXRpb24gdGltZXN0YW1wLCB0aGVuIHNldCBoaWdoZXN0
IHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1ZmZlcgorICAgICAgICAvLyB0byBm
cmFtZSBlbmQgdGltZXN0YW1wLgorICAgICAgICBpZiAodHJhY2tCdWZmZXIuaGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcC5pc0ludmFsaWQoKSB8fCBmcmFtZUVuZFRpbWVzdGFtcCA+IHRyYWNr
QnVmZmVyLmhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXApCisgICAgICAgICAgICB0cmFja0J1
ZmZlci5oaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wID0gZnJhbWVFbmRUaW1lc3RhbXA7CisK
KyAgICAgICAgaWYgKGVyYXNlZFNhbXBsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICBSZWZQdHI8
VGltZVJhbmdlcz4gZXJhc2VkUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IGVyYXNlZFNhbXBsZXMuYmVnaW4oKTsgaXRlciAhPSBlcmFz
ZWRTYW1wbGVzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgc3RhcnQg
PSBpdGVyLT5maXJzdC50b0RvdWJsZSgpOworICAgICAgICAgICAgICAgIGRvdWJsZSBlbmQgPSAo
KGl0ZXItPmZpcnN0ICsgaXRlci0+c2Vjb25kLT5kdXJhdGlvbigpKSArIG1pY3Jvc2Vjb25kKS50
b0RvdWJsZSgpOworICAgICAgICAgICAgICAgIGVyYXNlZFJhbmdlcy0+YWRkKHN0YXJ0LCBlbmQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJhc2VkUmFuZ2VzLT5pbnZlcnQoKTsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2VjdFdpdGgoZXJhc2VkUmFuZ2VzLmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIG1fYnVmZmVyZWQtPmFkZChwcmVzZW50YXRpb25UaW1lc3Rh
bXAudG9Eb3VibGUoKSwgKHByZXNlbnRhdGlvblRpbWVzdGFtcCArIGZyYW1lRHVyYXRpb24gKyBt
aWNyb3NlY29uZCkudG9Eb3VibGUoKSk7CisKKyAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAo
MSk7CiB9CiAKIGJvb2wgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8o
Y29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKTsKIH0KIAogYm9vbCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRl
KikgY29uc3QKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fdmlkZW9UcmFja3Mt
Pmxlbmd0aCgpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hh
bmdlZChWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyAyLjQuNSBDaGFuZ2VzIHRvIHNlbGVj
dGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKKyAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgdmlkZW8gdHJh
Y2sgY2hhbmdlcywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiB0
aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB2
aWRlbyB0cmFjayBpcyBub3QgYXNzb2NpYXRlZCB3aXRoCisgICAgLy8gYW55IG90aGVyIGVuYWJs
ZWQgdHJhY2tzLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodHJhY2stPnNlbGVj
dGVkKCkKKyAgICAgICAgJiYgKCFtX3ZpZGVvVHJhY2tzIHx8ICFtX3ZpZGVvVHJhY2tzLT5pc0Fu
eVRyYWNrRW5hYmxlZCgpKQorICAgICAgICAmJiAoIW1fYXVkaW9UcmFja3MgfHwgIW1fYXVkaW9U
cmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCisgICAgICAgICYmICghbV90ZXh0VHJhY2tzIHx8
ICFtX3RleHRUcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpKSB7CisgICAgICAgIC8vIDEuMSBS
ZW1vdmUgdGhlIFNvdXJjZUJ1ZmZlciBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCisgICAgICAg
IC8vIDEuMiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByZW1vdmVz
b3VyY2VidWZmZXIgYXQgYWN0aXZlU291cmNlQnVmZmVycworICAgICAgICBzZXRBY3RpdmUoZmFs
c2UpOworICAgIH0gZWxzZSBpZiAoIXRyYWNrLT5zZWxlY3RlZCgpKSB7CisgICAgICAgIC8vIDIu
IElmIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXdseSBzZWxlY3RlZCB2
aWRlbyB0cmFjayBpcyBub3QgYWxyZWFkeSBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLAorICAgICAg
ICAvLyBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgLy8gMi4xIEFkZCB0aGUgU291
cmNlQnVmZmVyIHRvIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCisgICAgICAgIC8vIDIuMiBRdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBhZGRzb3VyY2VidWZmZXIgYXQgYWN0
aXZlU291cmNlQnVmZmVycworICAgICAgICBzZXRBY3RpdmUodHJ1ZSk7CisgICAgfQorCisgICAg
aWYgKCFpc1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT52aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRyYWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1
ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyAyLjQu
NSBDaGFuZ2VzIHRvIHNlbGVjdGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKKyAgICAvLyBJZiBhbiBh
dWRpbyB0cmFjayBiZWNvbWVzIGRpc2FibGVkIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIHRyYWNrIGlzIG5vdAorICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbnkgb3Ro
ZXIgZW5hYmxlZCBvciBzZWxlY3RlZCB0cmFjaywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKKyAgICBpZiAodHJhY2stPmVuYWJsZWQoKQorICAgICAgICAmJiAoIW1fdmlkZW9UcmFja3Mg
fHwgIW1fdmlkZW9UcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCisgICAgICAgICYmICghbV9h
dWRpb1RyYWNrcyB8fCAhbV9hdWRpb1RyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgJiYgKCFtX3RleHRUcmFja3MgfHwgIW1fdGV4dFRyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQo
KSkpIHsKKyAgICAgICAgLy8gMS4gUmVtb3ZlIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2NpYXRlZCB3
aXRoIHRoZSBhdWRpbyB0cmFjayBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgLy8g
Mi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmVtb3Zlc291cmNl
YnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgc2V0QWN0aXZlKGZhbHNlKTsK
KyAgICB9IGVsc2UgaWYgKCF0cmFjay0+ZW5hYmxlZCgpKSB7CisgICAgICAgIC8vIElmIGFuIGF1
ZGlvIHRyYWNrIGJlY29tZXMgZW5hYmxlZCBhbmQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVk
IHdpdGggdGhpcyB0cmFjayBpcworICAgICAgICAvLyBub3QgYWxyZWFkeSBpbiBhY3RpdmVTb3Vy
Y2VCdWZmZXJzLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyAxLiBB
ZGQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIGF1ZGlvIHRyYWNrIHRvIGFj
dGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgYWRkc291cmNlYnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMK
KyAgICAgICAgc2V0QWN0aXZlKHRydWUpOworICAgIH0KKworICAgIGlmICghaXNSZW1vdmVkKCkp
CisgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja0VuYWJsZWRDaGFu
Z2VkKHRyYWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayogdHJhY2spCit7CisgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9l
bmFibGVkIHRyYWNrIHN0YXRlCisgICAgLy8gSWYgYSB0ZXh0IHRyYWNrIG1vZGUgYmVjb21lcyAi
ZGlzYWJsZWQiIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYWNr
IGlzIG5vdAorICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbnkgb3RoZXIgZW5hYmxlZCBvciBzZWxl
Y3RlZCB0cmFjaywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpCisgICAgICAgICYmICghbV92
aWRlb1RyYWNrcyB8fCAhbV92aWRlb1RyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgJiYgKCFtX2F1ZGlvVHJhY2tzIHx8ICFtX2F1ZGlvVHJhY2tzLT5pc0FueVRyYWNrRW5hYmxl
ZCgpKQorICAgICAgICAmJiAoIW1fdGV4dFRyYWNrcyB8fCAhbV90ZXh0VHJhY2tzLT5pc0FueVRy
YWNrRW5hYmxlZCgpKSkgeworICAgICAgICAvLyAxLiBSZW1vdmUgdGhlIFNvdXJjZUJ1ZmZlciBh
c3NvY2lhdGVkIHdpdGggdGhlIGF1ZGlvIHRyYWNrIGZyb20gYWN0aXZlU291cmNlQnVmZmVycwor
ICAgICAgICAvLyAyLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBy
ZW1vdmVzb3VyY2VidWZmZXIgYXQgYWN0aXZlU291cmNlQnVmZmVycworICAgICAgICBzZXRBY3Rp
dmUoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIElmIGEgdGV4dCB0cmFjayBtb2Rl
IGJlY29tZXMgInNob3dpbmciIG9yICJoaWRkZW4iIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29j
aWF0ZWQgd2l0aCB0aGlzCisgICAgICAgIC8vIHRyYWNrIGlzIG5vdCBhbHJlYWR5IGluIGFjdGl2
ZVNvdXJjZUJ1ZmZlcnMsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8v
IDEuIEFkZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dCB0cmFjayB0
byBhY3RpdmVTb3VyY2VCdWZmZXJzCisgICAgICAgIC8vIDIuIFF1ZXVlIGEgdGFzayB0byBmaXJl
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIGFkZHNvdXJjZWJ1ZmZlciBhdCBhY3RpdmVTb3VyY2VCdWZm
ZXJzCisgICAgICAgIHNldEFjdGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICBpZiAoIWlzUmVtb3Zl
ZCgpKQorICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja01vZGVDaGFu
Z2VkKHRyYWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja0FkZEN1ZShUZXh0
VHJhY2sqIHRyYWNrLCBXVEY6OlBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAg
aWYgKCFpc1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0
VHJhY2tBZGRDdWUodHJhY2ssIGN1ZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJh
Y2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIFRleHRUcmFja0N1ZUxpc3QgY29uc3QqIGN1ZUxp
c3QpCit7CisgICAgaWYgKCFpc1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxl
bWVudCgpLT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVMaXN0KTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXI6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqIHRyYWNrLCBXVEY6OlBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKCFpc1JlbW92ZWQoKSkKKyAgICAg
ICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1
ZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFj
ayogdHJhY2ssIFRleHRUcmFja0N1ZUxpc3QgY29uc3QqIGN1ZUxpc3QpCit7CisgICAgaWYgKCFp
c1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tS
ZW1vdmVDdWVzKHRyYWNrLCBjdWVMaXN0KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRU
cmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKCFpc1JlbW92ZWQo
KSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tLaW5kQ2hhbmdl
ZCh0cmFjayk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDBlNjA1Y2Y1ZThi
MDY2Y2NjNGJjODFhNGJiZjJhZmYyY2Q1NWYyMzQuLjNiYWJhODUyY2JlNDZjOTNlOTIwYTU5MDFm
OWQ3NjI2MmRjZTZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMzQsMjMgKzM0LDMwIEBACiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkF1ZGlv
VHJhY2suaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlZpZGVvVHJh
Y2suaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1RyYWNrTGlzdDsKIGNsYXNzIE1lZGlhU291cmNlOwogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZTsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOworY2xhc3MgVmlkZW9U
cmFja0xpc3Q7CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlciBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudCB7CitjbGFzcyBTb3VyY2VCdWZmZXIgRklOQUwgOiBwdWJsaWMgUmVm
Q291bnRlZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQsIHB1YmxpYyBBdWRpb1RyYWNrQ2xpZW50LCBwdWJsaWMg
VmlkZW9UcmFja0NsaWVudCwgcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQ
cml2YXRlPiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtNTksNiArNjYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gU291cmNlQnVmZmVyLmlkbCBtZXRob2RzCiAgICAgYm9vbCB1cGRhdGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdXBkYXRpbmc7IH0KICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBjb25zdCBSZWZQdHI8VGltZVJhbmdlcz4mIGJ1
ZmZlcmVkKCkgY29uc3Q7CiAgICAgZG91YmxlIHRpbWVzdGFtcE9mZnNldCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgYXBwZW5kQnVmZmVyKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTY4LDYgKzc2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGFib3J0SWZVcGRhdGlu
ZygpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwogCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworICAgIEF1ZGlv
VHJhY2tMaXN0KiBhdWRpb1RyYWNrcygpOworICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja3Mo
KTsKKyNlbmRpZgorCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQogICAgIHZpcnR1
YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwpAQCAtODgsMjcgKzEwMiw2OCBAQCBwcml2YXRlOgogICAg
IFNvdXJjZUJ1ZmZlcihQYXNzUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNvdXJjZSop
OwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25zdCBXVEY6OkF0b21pY1N0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3Qg
SW5pdGlhbGl6YXRpb25TZWdtZW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQYXNz
UmVmUHRyPE1lZGlhU2FtcGxlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUJ1
ZmZlclByaXZhdGVIYXNBdWRpbyhjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlKikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhjb25z
dCBTb3VyY2VCdWZmZXJQcml2YXRlKikgY29uc3QgT1ZFUlJJREU7CiAKKyAgICAvLyBBdWRpb1Ry
YWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRp
b1RyYWNrKikgT1ZFUlJJREU7CisKKyAgICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdmlydHVh
bCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopIE9WRVJSSURFOwor
CisgICAgLy8gVGV4dFRyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRD
aGFuZ2VkKFRleHRUcmFjayopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tN
b2RlQ2hhbmdlZChUZXh0VHJhY2sqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPikgT1ZFUlJJREU7CisKKyAgICBzdGF0aWMgY29uc3QgV1RGOjpBdG9taWNT
dHJpbmcmIGRlY29kZUVycm9yKCk7CisgICAgc3RhdGljIGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBuZXR3b3JrRXJyb3IoKTsKKwogICAgIGJvb2wgaXNSZW1vdmVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIAogICAgIHZv
aWQgYXBwZW5kQnVmZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBhcHBlbmRCdWZmZXJUaW1lckZpcmVkKFRpbWVyPFNvdXJjZUJ1
ZmZlcj4qKTsKIAorICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOworCisgICAgYm9vbCB2YWxpZGF0
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKKwog
ICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwog
CiAgICAgYm9vbCBtX3VwZGF0aW5nOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcE9mZnNldDsKIAog
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX3BlbmRpbmdBcHBlbmREYXRhOwogICAgIFRpbWVy
PFNvdXJjZUJ1ZmZlcj4gbV9hcHBlbmRCdWZmZXJUaW1lcjsKKworICAgIFJlZlB0cjxWaWRlb1Ry
YWNrTGlzdD4gbV92aWRlb1RyYWNrczsKKyAgICBSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVk
aW9UcmFja3M7CisgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKworICAg
IFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fdmlkZW9Db2RlY3M7CisgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gbV9hdWRpb0NvZGVjczsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3RleHRDb2Rl
Y3M7CisKKyAgICBNZWRpYVRpbWUgbV90aW1lc3RhbXBPZmZzZXQ7CisgICAgTWVkaWFUaW1lIG1f
aGlnaGVzdFByZXNlbnRhdGlvbkVuZFRpbWVzdGFtcDsKKworICAgIHN0cnVjdCBUcmFja0J1ZmZl
cjsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgVHJhY2tCdWZmZXI+IG1fdHJhY2tCdWZmZXJN
YXA7CisgICAgYm9vbCBtX3JlY2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAg
UmVmUHRyPFRpbWVSYW5nZXM+IG1fYnVmZmVyZWQ7CisgICAgYm9vbCBtX2FjdGl2ZTsKKworICAg
IGVudW0gQXBwZW5kU3RhdGVUeXBlIHsgV2FpdGluZ0ZvclNlZ21lbnQsIFBhcnNpbmdJbml0U2Vn
bWVudCwgUGFyc2luZ01lZGlhU2VnbWVudCB9OworICAgIEFwcGVuZFN0YXRlVHlwZSBtX2FwcGVu
ZFN0YXRlOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggYWJkZjNi
NjFlZmRlMmY2NmVmZTI5ZGYxZTA0YmY0ZDgwY2VmNWJmYy4uZjU3YTcwN2NhNTMxZTI2YjY3OTkx
MjZlNjE5N2M0OGQzMTQ5NGNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbApAQCAtNTIsNSArNTIsMTAgQEAKIAogICAgIC8v
IEFib3J0IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgogICAgIFtSYWlzZXNF
eGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKKyAgICAKKyAgICAvLyBUcmFjayBzdXBwb3J0CisgICAg
W0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9UcmFja0xp
c3QgYXVkaW9UcmFja3M7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSByZWFkb25seSBh
dHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CisgICAgW0NvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLXSByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlzdCB0ZXh0VHJhY2tzOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlckxpc3QuaAppbmRleCA5NDRhZDdlNWM4YmNmYTY2Y2VjNDAwMjBiMDVkZTJmYTg5Zjg3
NDNmLi4zN2Y2ZWZhNGFmMTc3ZWQ1ZjVkM2U2YjNlY2FjMWM4Zjg3Y2ZjMjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aApAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhTb3VyY2VCdWZm
ZXIqIGJ1ZmZlcikgeyByZXR1cm4gbV9saXN0LmZpbmQoYnVmZmVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj46Oml0
ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9saXN0LmJlZ2luKCk7IH0KKyAgICBWZWN0b3I8UmVm
UHRyPFNvdXJjZUJ1ZmZlcj4+OjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2xpc3QuZW5kKCk7
IH0KKwogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBTb3VyY2VCdWZmZXJMaXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291
cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGVmZDRlODZiNWYxNjllNzQxMzVlNzIyZGI4NjFmOTdmZTZlMmY5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
VGV4dFRyYWNrTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBUZXh0VHJhY2tNZWRpYVNvdXJjZV9oCisjZGVmaW5lIFRleHRUcmFja01lZGlhU291cmNlX2gK
KworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJj
ZUJ1ZmZlcjsKKworY2xhc3MgVGV4dFRyYWNrTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIHN0
YXRpYyBTb3VyY2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcihUZXh0VHJhY2sqIHRyYWNrKSB7IHJldHVy
biB0cmFjay0+c291cmNlQnVmZmVyKCk7IH0KK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tN
ZWRpYVNvdXJjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRU
cmFja01lZGlhU291cmNlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjdkZDM1MDZkNDVlZjAzMjI5ZWJlMjQw
Nzc0YTM4ZDM5NTNiN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tNZWRpYVNvdXJjZS5pZGwKQEAgLTAsMCArMSwzMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TT1VSQ0UmVklERU9fVFJBQ0ssCitd
CitwYXJ0aWFsIGludGVyZmFjZSBUZXh0VHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
b3VyY2VCdWZmZXIgc291cmNlQnVmZmVyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxOTU3MDk5MmQzOTFiOTJkMTA3NThkZTk5NWI4ZjI3OTI3MzBkOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRp
YVNvdXJjZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tN
ZWRpYVNvdXJjZV9oCisjZGVmaW5lIFZpZGVvVHJhY2tNZWRpYVNvdXJjZV9oCisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRl
b1RyYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyOwor
CitjbGFzcyBWaWRlb1RyYWNrTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyBTb3Vy
Y2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcihWaWRlb1RyYWNrKiB0cmFjaykgeyByZXR1cm4gdHJhY2st
PnNvdXJjZUJ1ZmZlcigpOyB9Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291
cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01l
ZGlhU291cmNlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODY2YTI4YjA3YTlmZGE1NTAyM2JiNzkzNGM5Njlj
ZDQwYTI4NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3VyY2UuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NPVVJDRSZWSURFT19UUkFDSywKK10KK3BhcnRp
YWwgaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTb3VyY2VC
dWZmZXIgc291cmNlQnVmZmVyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Yjc5NWUxMGNiNjdlZjU2MzVlNTEyNjllZjY3
MTA0YzYzYTBiMDE5Li5hNTAzZmMxOGJlM2RmNDc5NTEwYzZhMDg1N2ExYTI1ODExZTI0ZDhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MzMzLDYgKzUzMzMsOSBAQAogCQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICov
OyB9OwogCQlDRDYxRkU2NzE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUE5NDJF
MTE1QjVDRTIyMDBENTI1RDEgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNE
NjFGRTY4MTc5NEFBREIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUE5NDJFMjE1QjVDRTIyMDBE
NTI1RDEgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oICovOyB9OworCisJCUNENjQxRUIzMTgxOEY1
RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRp
YVNvdXJjZVByaXZhdGUuaCAqLzsgfTsKKwkJQ0Q2NDFFQjQxODE4RjVFRDAwRUU0QzQxIC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
LmggKi87IH07CiAJCUNENjQxRUJGMTgxOUIzNjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQkQx
ODE5QjM1OTAwRUU0QzQxIC8qIE1lZGlhVGltZU1hYy5jcHAgKi87IH07CiAJCUNENjQxRUMwMTgx
OUIzNjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUJFMTgxOUIzNTkwMEVFNEM0MSAvKiBNZWRpYVRp
bWVNYWMuaCAqLzsgfTsKIAkJQ0Q3RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8qIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEN0UwNTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0gKi87IH07CkBAIC01MzQyLDYgKzUzNDUsOSBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBG
OTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEw
MEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9
OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVB
Q0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8q
IFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRp
b24ubW0gKi87IH07CisJCUNEOEI1QTQ2MTgwREZGNEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVk
aWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEOEI1QTQ1MTgwREZGNEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFTb3VyY2UuaCAqLzsg
fTsKKwkJQ0Q4QjVBNDkxODBFMTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0ODE4
MEUxMzhCMDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaCAqLzsgfTsKKwkJQ0Q4QjVB
NEMxODBFMTdDMDAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjVBNEIxODBFMTdDMDAwOEI4
RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDlERTE3NDE3QUFDNzRD
MDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNv
dXJjZS5jcHAgKi87IH07CiAJCUNEOURFMTc1MTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlE
RTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDlERTE3
QTE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5REUxNzYxN0FBQzc1QjAwRUEzODZEIC8q
IEpTU291cmNlQnVmZmVyLmNwcCAqLzsgfTsKQEAgLTUzOTUsNiArNTQwMSw3IEBACiAJCUNERUE3
Qzg1MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgzMTI3NjIzMDQwMEI4NDZE
RCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLzsgfTsKIAkJQ0RFRTM5MzcxNzk3NDI1OTAwMUQ3
NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1h
bmFnZXIuY3BwICovOyB9OwogCQlDREVGNEZENzE3RTg1QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFRjRG
RDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0MjQgLyog
TWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRpb24uaCAq
LzsgfTsKIAkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTQxNDU3
Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICov
OyB9OwpAQCAtNjgxMCw4ICs2ODE3LDggQEAKIAkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8q
IEpTQXVkaW9TdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1ZGlvU3RyZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlC
NUIxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI1QzE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRl
b1N0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmlkZW9T
dHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0M1OUI2MTE3RjRD
Rjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHA7IHBhdGggPSBt
b2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTA3QzU5QjYyMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmg7
IHBhdGggPSBtb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI2MTE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tNZWRpYVN0
cmVhbUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjYyMTdG
NENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0
YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNvdXJj
ZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjY2MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OTYsOCArNzAwMyw4IEBACiAJCTBGRDMwOEQ0MTE3RDE2ODQw
MEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVySUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDcyMzgw
MEVDOEJEOTMwMENBNURENyAvKiBGbG9hdFF1YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmxvYXRRdWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDcy
MzgxMEVDOEJEOTMwMENBNURENyAvKiBGbG9hdFF1YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRRdWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTY3JvbGxiYXJUaGVtZU1vY2su
Y3BwOyBwYXRoID0gbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVN
b2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGJhclRoZW1lTW9j
ay5oOyBwYXRoID0gbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVt
ZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU3MTQwNDE0MjE3MEI4
MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkU3MTQxNTE0MjE4OUZDMDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI1OTEwMkJBOTAxMDA2NkYzOUEgLyogRE9N
U3R5bGVNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TdHlsZU1l
ZGlhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjUwMjVBMTAyQkE5MDEwMDY2
RjM5QSAvKiBET01TdHlsZU1lZGlhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NU3R5bGVNZWRpYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg1NzMsOCArODU4MCw4IEBACiAJCTU5MTAyRkJBMTQzMjdEM0IwMDNDOUQwNCAvKiBDb250ZW50
U2VhcmNoVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFNl
YXJjaFV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MTNBMjNGMTNENDlF
QkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSWRlbnRpZmllcnNGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTkxM0EyNDAxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZpZXJzRmFj
dG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVyc0ZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTkzMDlBMTAxMUY0QUU1ODAwMjUw
NjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRo
ID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAw
MjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyog
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1OTU4RjFDQjEzNDM5MTdDMDA4MEIzMUYgLyogWE1MVmlld2VyLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gWE1MVmlld2VyLmNzczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTk1OEYxQ0MxMzQzOTE3QzAwODBCMzFGIC8qIFhNTFZpZXdlci5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFhNTFZpZXdlci5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4MzY1REMxMzU1RjUzQzAwMUIxODVEIC8qIEpTUG9z
aXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0
aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzk5LDggKzEw
ODA2LDggQEAKIAkJQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNh
bnZhc0FnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTkxNTdF
NTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJ
bnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUFBRTI3Qjc0MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5jcHA7IHBhdGggPSBtb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQUFFMjdCNzUxNkNCRkMw
RDAwNjIzMDQzIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmg7IHBh
dGggPSBtb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFBRTI3Qjc0MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFBRTI3Qjc1MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUY1
QjdCMTE1MjRCNEJEMDAwNENCNDkgLyogV2ViU29ja2V0RnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQjIzQTMyNTA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QUIyM0EzMjYwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzMzUsOCArMTIzNDIsMTEgQEAKIAkJ
Q0Q1NEE3NUUxODBGNTM1MDAwQjA3NkM5IC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlvU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlh
U291cmNlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNv
dXJjZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q2NDFFQjIxODE4
RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDY0MUVCRDE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1lTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVGltZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENjQxRUJFMTgxOUIzNTkwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFUaW1lTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNhbXBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDdFMDUyMDE2
NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3RTA1MjExNjUx
QTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbTsgcGF0aCA9IG9iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgy
MDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0NSw2ICsxMjM1NSwxMiBA
QAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmlt
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEOEI1QTQ0MTgwREQ4RDYwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFTb3Vy
Y2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEOEI1QTQ1MTgwREZGNEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja01lZGlh
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOEI1QTQ3MTgwRTEzNjEw
MDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dFRyYWNrTWVkaWFT
b3VyY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhCNUE0ODE4MEUxMzhC
MDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGV4dFRyYWNrTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0Q4QjVBNEExODBFMTdBMzAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJj
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQXVkaW9UcmFja01lZGlhU291cmNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0Q4QjVBNEIxODBFMTdDMDAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNv
dXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrTWVkaWFT
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5REUxNzIxN0FBQzc0QzAw
RUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEOURFMTczMTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q5REUxNzYxN0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU291cmNlQnVmZmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDMxLDYgKzEyNDQ3LDcgQEAKIAkJ
Q0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVibGljVVJMTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUUzOTM4MTc5NzQyNzQwMDFENzU4MCAvKiBVUkxS
ZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREVGNEZENjE3RTg1QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmlkTGVuZ3RoLmg7IHBhdGggPSBzdHls
ZS9HcmlkTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDAzMTgx
RjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhRGVzY3JpcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGNjVDQ0MxNDVCNkFGRTAw
QzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTExNCw3ICsxNTEzMSw3IEBACiAJCQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JB
IC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8sCiAJCQkJMEZFNzE0MDQxNDIxNzBCODAwREIz
M0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovLAogCQkJKTsKLQkJCW5hbWUgPSBtb2NrOwor
CQkJcGF0aCA9IG1vY2s7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1REE1
RTBGOTEwMkI5NTA0MDAwODhDRjkgLyogV2ViU29ja2V0cyAqLyA9IHsKQEAgLTE4MzQ1LDYgKzE4
MzYyLDggQEAKIAkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDhCNUE0QjE4MEUx
N0MwMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmggKi8sCisJCQkJQ0Q4QjVBNEEx
ODBFMTdBMzAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8sCiAJCQkJQ0Q5
REUxN0UxN0FBRDY0RTAwRUEzODZEIC8qIERPTVVSTE1lZGlhU291cmNlLmNwcCAqLywKIAkJCQlD
RDlERTE3RjE3QUFENjRFMDBFQTM4NkQgLyogRE9NVVJMTWVkaWFTb3VyY2UuaCAqLywKIAkJCQlD
RDlERTE4MDE3QUFENjRFMDBFQTM4NkQgLyogRE9NVVJMTWVkaWFTb3VyY2UuaWRsICovLApAQCAt
MTgzNjEsNiArMTgzODAsMTAgQEAKIAkJCQlDRDNBNDk1QjE3QTlEMDFCMDAyNzRFNDIgLyogU291
cmNlQnVmZmVyTGlzdC5jcHAgKi8sCiAJCQkJQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNv
dXJjZUJ1ZmZlckxpc3QuaCAqLywKIAkJCQlDRDNBNDk1RDE3QTlEMDFCMDAyNzRFNDIgLyogU291
cmNlQnVmZmVyTGlzdC5pZGwgKi8sCisJCQkJQ0Q4QjVBNDgxODBFMTM4QjAwOEI4RTY1IC8qIFRl
eHRUcmFja01lZGlhU291cmNlLmggKi8sCisJCQkJQ0Q4QjVBNDcxODBFMTM2MTAwOEI4RTY1IC8q
IFRleHRUcmFja01lZGlhU291cmNlLmlkbCAqLywKKwkJCQlDRDhCNUE0NTE4MERGRjRFMDA4QjhF
NjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggKi8sCisJCQkJQ0Q4QjVBNDQxODBERDhENjAw
OEI4RTY1IC8qIFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IG1lZGlhc291cmNlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5MDMzLDYgKzE5
MDU2LDggQEAKIAkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDY0MUVCMTE4MThGNUVE
MDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi8sCisJCQkJQ0Q2NDFFQjIxODE4RjVF
RDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQkwNzZGMEQwODEyQjgx
OTI3MDBDMjZBQTQgLyogYXZmb3VuZGF0aW9uICovLAogCQkJCTQ5OUIzRUMwMTI4Q0NDMTgwMEU3
MjZDMiAvKiBjYSAqLywKIAkJCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8sCkBA
IC0yMDAwNSw2ICsyMDAzMCw4IEBACiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAwQjYwNjQxIC8qIExv
Z2dpbmcuY3BwICovLAogCQkJCUE4MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmgg
Ki8sCiAJCQkJRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi8s
CisJCQkJQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRpb24uaCAqLywK
KwkJCQlDRDY0MUVDNzE4MUVENjAxMDBFRTRDNDEgLyogTWVkaWFTYW1wbGUuaCAqLywKIAkJCQk2
NTdFREEwNjEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywK
IAkJCQk2NTdFREEwNzEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8sCiAJCQkJQkM3NzJDNEMwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuY3Bw
ICovLApAQCAtMjE3OTMsNiArMjE4MjAsNyBAQAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5
MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDIw
RkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNERjJCMDA0MTgxRjA1OUMwMEYyQjQyNCAv
KiBNZWRpYURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJGMzExMDNEQTY2
MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NkNERDJGNzExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJGNTExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjE4NjcsNiArMjE4OTUsNyBA
QAogCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q2NDFFQjMxODE4RjVF
RDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjA4MzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDk0QzE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkxMCw2ICsy
MjkzOSw3IEBACiAJCQkJQTg3MURFMjgwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxGcmFtZVNldEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJEMEExNTJBQzgwMEIxMkE2OCAvKiBI
VE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3Q0I4MEExOTJCOUMwMEE4
RUY1RiAvKiBIVE1MSGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEOEI1QTQ5
MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThFQTdDQUYwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxIUkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4NzFERTI3MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSHRtbEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4OTU3MEEwMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU1Myw2ICsyMzU4Myw3IEBACiAJCQkJQjJG
QTNEREQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNEREYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0
b1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1l
ZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhCNUE0NjE4MERGRjRF
MDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkZBM0RFMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0MTAwREY1OERGIC8qIEpTU1ZHUG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxRDcxOUNBMTgxMTA2RTAwMDE2REM1MSAvKiBJREJEYXRhYmFzZUNh
bGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzY3OCw2ICsyMzcwOSw3IEBACiAJCQkJMjkx
N0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y3MkFGMzE2NjZFREZDMDAyQTAyQkQgLyog
TGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhCNUE0QzE4MEUxN0MwMDA4QjhFNjUg
LyogQXVkaW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA1MDE2
NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0Qm94RXh0ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQxREMwNTExNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFBvaW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0Mjg2LDYgKzI0MzE4LDcgQEAKIAkJCQlGRDAwRDdBNTE0QTNGNjE5MDA3
MzQwMTEgLyogU2luY1Jlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzMjdENjAxMUEz
M0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEx
Q0QwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVy
VGh1bWJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZGQTZGNDBDMzlFNDhDMDAwODcw
MTEgLyogU21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGRDAwQzBEQUYzMzU0
MDBGNUY1NUMgLyogU01JTFRpbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXggMjkyOTgwNzg1OWIy
MGIxNmM2NDkxZTZkZjNiZTI5YzU5YjE1M2JlNi4uZWJiZDQ2YjVlZjZkZGQ0N2YwMmU0MDdiMGI5
NGYwNDM4YWUxYTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC00Nyw2ICs0NywzNCBAQCB2b2lkIEpTQXVkaW9UcmFjazo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZhdWRpb1RyYWNrKSk7CiB9CiAKK3ZvaWQgSlNBdWRp
b1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBjb25zdCBT
dHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpbXBsKCkuc2V0S2luZChuYXRpdmVWYWx1ZSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuOworI2VuZGlmCit9CisKK3Zv
aWQgSlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldExhbmd1YWdlKG5h
dGl2ZVZhbHVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm47
CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAppbmRleCA5ODQ2
ZmI5YTFkYzFiNjNjYmQ5OTViOGE1ZThhMzBjNjBkNzIyYjM2Li4wNzhmNmYyNTZiOTU4YjJiMWM0
ZGQzZjJiYjZiYjViYzYzNTNiNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCkBAIC00OCw2ICs0OCwzNCBAQCB2b2lkIEpTVGV4dFRy
YWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdGV4dFRyYWNrLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAordm9pZCBK
U1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgY29u
c3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldEtpbmQobmF0aXZlVmFsdWUpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKKyNlbmRpZgorfQor
Cit2b2lkIEpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJp
bmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldExhbmd1YWdl
KG5hdGl2ZVZhbHVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1
cm47CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCmluZGV4
IGVjM2FkY2MyNGVkYzllZWZiZmUxNDZjZDkxOTYxMDFhYWZiOTVkZDYuLmE4MmU3YjhiYzQ3MTUx
OTRhYjA1NDM4ZmE3YTY4MDRiOWNlOGQ4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApAQCAtNDcsNiArNDcsMzQgQEAgdm9pZCBK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmdmlkZW9UcmFjaykpOwogfQog
Cit2b2lkIEpTVmlkZW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldEtpbmQobmF0aXZl
VmFsdWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKKyNl
bmRpZgorfQorCit2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS5z
ZXRMYW5ndWFnZShuYXRpdmVWYWx1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
CisgICAgcmV0dXJuOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0YjBjNWM3
Y2MzYzMxNTVhYzBmYmQ0N2VjM2Q4NjZjYTg4MGU4NmYyLi4xYWViYmRlOWZiZDIzMDI5YzNiZjkz
NmQ2ZDkyYzlkYjA1ODIyYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAg
ICAgIG1fbWVkaWFTb3VyY2UgPSBIVE1MTWVkaWFTb3VyY2U6Omxvb2t1cCh1cmwuc3RyaW5nKCkp
OwogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKLSAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2Ut
PmF0dGFjaFRvRWxlbWVudCgpKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJjZS0+YXR0YWNoVG9F
bGVtZW50KHRoaXMpKQogICAgICAgICAgICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlw
ZSwgbV9tZWRpYVNvdXJjZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRm9yZ2V0
IG91ciByZWZlcmVuY2UgdG8gdGhlIE1lZGlhU291cmNlLCBzbyB3ZSBsZWF2ZSBpdCBhbG9uZQpA
QCAtMjg5Myw2ICsyODkzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXYKICAgICAvLyA0Ljgu
MTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQgdHJhY2tzCiAgICAgLy8gMS4gQXNzb2NpYXRl
IHRoZSByZWxldmFudCBkYXRhIHdpdGggYSBuZXcgdGV4dCB0cmFjayBhbmQgaXRzIGNvcnJlc3Bv
bmRpbmcgbmV3IFRleHRUcmFjayBvYmplY3QuCiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFjaz4g
dGV4dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHBycFRyYWNrKTsKKyAgICB0ZXh0VHJhY2stPnNl
dE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICAKICAgICAvLyAyLiBTZXQgdGhlIG5ldyB0ZXh0IHRy
YWNrJ3Mga2luZCwgbGFiZWwsIGFuZCBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgc2VtYW50aWNzIG9m
IHRoZSByZWxldmFudCBkYXRhLAogICAgIC8vIGFzIGRlZmluZWQgYnkgdGhlIHJlbGV2YW50IHNw
ZWNpZmljYXRpb24uIElmIHRoZXJlIGlzIG5vIGxhYmVsIGluIHRoYXQgZGF0YSwgdGhlbiB0aGUg
bGFiZWwgbXVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU291cmNlLmgKaW5kZXggMTk4ZmRm
ZTM1N2RjMDEwYWQ0NmU0NmEyNWY3YmI3ZDMyNGUzNzBmMi4uYjQ5NWMyNmY4OTdiZmIwYjViNjhl
ZmJiZDk4ZjhmMzg5NGQ3ZjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNvdXJjZS5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZTsKIGNsYXNzIFRpbWVSYW5nZXM7
CiAKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIElmIGFscmVhZHkgYXR0YWNoZWQs
IHJldHVybnMgZmFsc2UuIE90aGVyd2lzZSwgbXVzdCBiZSBpbgogICAgIC8vICdjbG9zZWQnIHN0
YXRlLCBhbmQgcmV0dXJucyB0cnVlIHRvIGluZGljYXRlIGF0dGFjaG1lbnQgc3VjY2Vzcy4KICAg
ICAvLyBSZWF0dGFjaG1lbnQgYWxsb3dlZCBieSBmaXJzdCBjYWxsaW5nIGNsb3NlKCkgKGV2ZW4g
aWYgYWxyZWFkeSBpbiAnY2xvc2VkJykuCi0gICAgdmlydHVhbCBib29sIGF0dGFjaFRvRWxlbWVu
dCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXR0YWNoVG9FbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFBhc3NSZWY8TWVk
aWFTb3VyY2VQcml2YXRlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmNwcAppbmRleCAxMDkzZmFlNzY2MzY4MDMwODEyM2E5ZmFmNTkxMjc4NmVjYTc0OTA4Li5j
NTY5NjNmYzA5MWMwMGU4NTQ0ZGI1Y2I1ZTVmZDIxNjVhYzhhMWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKQEAgLTE1NywxMSArMTU3LDE2IEBAIHZvaWQgVGltZVJhbmdlczo6YWRk
KGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKIAogYm9vbCBUaW1lUmFuZ2VzOjpjb250YWluKGRv
dWJsZSB0aW1lKSBjb25zdAogeworICAgIHJldHVybiBmaW5kKHRpbWUpICE9IG5vdEZvdW5kOwor
fQorCitzaXplX3QgVGltZVJhbmdlczo6ZmluZChkb3VibGUgdGltZSkgY29uc3QKK3sKICAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbGVuZ3RoKCk7IG4rKykgewogICAgICAgICBpZiAodGlt
ZSA+PSBzdGFydChuLCBJR05PUkVfRVhDRVBUSU9OKSAmJiB0aW1lIDw9IGVuZChuLCBJR05PUkVf
RVhDRVBUSU9OKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IG47CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAK
IGRvdWJsZSBUaW1lUmFuZ2VzOjpuZWFyZXN0KGRvdWJsZSB0aW1lKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RpbWVSYW5nZXMuaAppbmRleCA5N2Y0ZWI3ZmE1NWY4YzIzNjRmMWUyNDc1MGQwZTgwOWIzNTVh
YTkwLi43MjIzM2JlODM5OTMzYTI4ZjllNDRiYTZjYjdkMjkyNzEyNWVlM2Q2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVSYW5nZXMuaApAQCAtNTQsMTAgKzU0LDEyIEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KICAgICBkb3VibGUg
c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBkb3VibGUg
ZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgCisKICAgICB2
b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIAogICAgIGJvb2wgY29udGFp
bihkb3VibGUgdGltZSkgY29uc3Q7CisKKyAgICBzaXplX3QgZmluZChkb3VibGUgdGltZSkgY29u
c3Q7CiAgICAgCiAgICAgZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCmluZGV4IGQ4MjljNjIwYzZmZWFhOGUzZTdm
MzI2NDMzMjVkNTczNzI5ZTE3N2IuLjA3N2VjYTA0MjNkYTNiYTc4NjQ0OTE3ZWM5NTY1ODFkN2Nh
YWE2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5
S2V5d29yZCgpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtl
eXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0KIAotICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoY29uc3QgYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJD
bGllbnQoKSBPVkVSUklERSB7IG1fY2xpZW50ID0gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwKaW5kZXggZWQwMDU4MDQwZTA0YzkxYmMxMjgzMzUxYzdhMjc1MmE2
Mzc2MWI4OS4uZmVmZDQ0ZWE1ZmRmMzVlYTM3MmRjNjM4MzYzMTU0MTA2NWVhMzUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0zMCw5ICszMCw5IEBACiAg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KIF0gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBraW5kOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcga2lu
ZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisgICAgW0N1c3RvbVNldHRlcl0gYXR0cmli
dXRlIERPTVN0cmluZyBsYW5ndWFnZTsKIAogICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDViMzQ3NjQ1
NDZmM2MzMDdlNDkzZTY2YWZhMjE2OGE5MTZhZWVjNjQuLjUyYjU3YjMyYzdhOWJmZGNlY2ViNzE4
NmRjYjhiMTZlYjFjMzM0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAi
VGV4dFRyYWNrUmVnaW9uTGlzdC5oIgpAQCAtMTI2LDcgKzEyNyw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCog
Y2xpZW50LCBjCiAgICAgLCBtX3JlbmRlcmVkVHJhY2tJbmRleChpbnZhbGlkVHJhY2tJbmRleCkK
ICAgICAsIG1faGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpCiB7Ci0gICAgc2V0S2luZChraW5kKTsK
KyAgICBzZXRLaW5kSW50ZXJuYWwoa2luZCk7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygp
CkBAIC0xNTAsNiArMTUxLDExIEBAIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBUZXh0VHJhY2s6OmlzVmFsaWRL
aW5kS2V5d29yZCh2YWx1ZSk7CiB9CiAKK2Jvb2wgVGV4dFRyYWNrOjplbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9tb2RlICE9IGRpc2FibGVkS2V5d29yZCgpOworfQorCiBib29sIFRl
eHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKQEAgLTE3Miw3ICsxNzgsMjgg
QEAgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdLaW5kKQog
ewogICAgIFN0cmluZyBvbGRLaW5kID0ga2luZCgpOwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKyAgICAvLyAxMC4xIGtpbmQsIG9uIHNldHRpbmc6CisgICAgLy8gMS4gSWYgdGhlIHZhbHVl
IGJlaW5nIGFzc2lnbmVkIHRvIHRoaXMgYXR0cmlidXRlIGRvZXMgbm90IG1hdGNoIG9uZSBvZiB0
aGUgdGV4dCB0cmFjayBraW5kcywKKyAgICAvLyB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
IGlmICghaXNWYWxpZEtpbmRLZXl3b3JkKG5ld0tpbmQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KKyAgICBzZXRL
aW5kSW50ZXJuYWwobmV3S2luZCk7CisKKyAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0
dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlCisgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci50
ZXh0VHJhY2tzLgorICAgIGlmIChtX3NvdXJjZUJ1ZmZlcikKKyAgICAgICAgbV9zb3VyY2VCdWZm
ZXItPnRleHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworCisgICAgLy8gNC4gUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBUZXh0
VHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CisgICAgLy8gdGhlIHRleHRUcmFja3MgYXR0
cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgIGlmIChtZWRpYUVsZW1lbnQoKSkK
KyAgICAgICAgbWVkaWFFbGVtZW50KCktPnRleHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVu
dCgpOworI2Vsc2UKICAgICBUcmFja0Jhc2U6OnNldEtpbmQobmV3S2luZCk7CisjZW5kaWYKIAog
ICAgIGlmIChtX2NsaWVudCAmJiBvbGRLaW5kICE9IGtpbmQoKSkKICAgICAgICAgbV9jbGllbnQt
PnRleHRUcmFja0tpbmRDaGFuZ2VkKHRoaXMpOwpAQCAtNTQ3LDYgKzU3NCwyOSBAQCBib29sIFRl
eHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBraW5kKCkg
PT0gY2FwdGlvbnNLZXl3b3JkKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9p
ZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCit7
CisgICAgLy8gMTEuMSBsYW5ndWFnZSwgb24gc2V0dGluZzoKKyAgICAvLyAxLiBJZiB0aGUgdmFs
dWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGFuIGVtcHR5IHN0cmlu
ZyBvciBhIEJDUCA0NyBsYW5ndWFnZQorICAgIC8vIHRhZ1tCQ1A0N10sIHRoZW4gYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgLy8gRklYTUUoMTIzOTI2KTogVmFsaWRhdGUgdGhlIEJDUDQ3LW5lc3Mg
b2YgbGFuZ2FndWUuCisKKyAgICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5l
dyB2YWx1ZS4KKyAgICBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGxhbmd1YWdlKTsKKworICAgIC8v
IDMuIElmIHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51
bGwsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVudCBuYW1l
ZCBjaGFuZ2UgYXQgc291cmNlQnVmZmVyLnRleHRUcmFja3MuCisgICAgaWYgKG1fc291cmNlQnVm
ZmVyKQorICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLT5zY2hlZHVsZUNoYW5n
ZUV2ZW50KCk7CisKKyAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkK
KyAgICAvLyB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQu
CisgICAgaWYgKG1lZGlhRWxlbWVudCgpKQorICAgICAgICBtZWRpYUVsZW1lbnQoKS0+dGV4dFRy
YWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmlu
ZGV4IDgwYTg4YjdlMjYwYTc2NjE3NzA3MTlhMWZhYTY1ZTY1ZTBhOWZhMTcuLjNhMzZmNmQ0OTUx
MTBhODAxZDhjZTBhYWJhOWM2M2M2Y2ZmZTMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaApAQCAtMTUwLDYgKzE1MCwxMCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UZXh0VHJhY2soKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRv
bWljU3RyaW5nJikgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJh
Y2tCYXNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7CiAK
QEAgLTE2NCw2ICsxNjgsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKIAorICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCmluZGV4IGEyMjI4MDRmMWNjNTc2
YzRmMTgwNTViNjJhOGQ1M2QwMWZmMGM1MDUuLjdjMTRhNmI4ZmEzNzc2ZWEwNTkxN2IzODFjMmU4
MTRjNTM5NTE2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAg
LTMyLDkgKzMyLDkgQEAKICAgICBPcGVyYXRpb25zTm90RGVsZXRhYmxlCiBdIGludGVyZmFjZSBU
ZXh0VHJhY2sgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJp
YnV0ZSBET01TdHJpbmcga2luZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxh
YmVsOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisgICAgW0N1
c3RvbVNldHRlcl0gYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKIAogICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgbW9kZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5jcHAKaW5kZXggNzBjY2E0N2ZlYWIwYTVhZDMyNDZiNWFiOTEzZGVmZTcwN2RjMjBhNS4u
NGE5YWExOThmMzUyNWM0NmNkNTAxODI2ZDhhZDhiYTk3NzBkMTczOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgaW50
IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4
dFRyYWNrICp0ZXh0VHJhY2spCiAgICAgcmV0dXJuIC0xOwogfQogCi1UZXh0VHJhY2sqIFRleHRU
cmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6
Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgLy8gNC44LjEwLjEyLjEgVGV4dCB0
cmFjayBtb2RlbAogICAgIC8vIFRoZSB0ZXh0IHRyYWNrcyBhcmUgc29ydGVkIGFzIGZvbGxvd3M6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IDQ1YTk1N2Q5
NzAyMmVhYzI2NDgxNTEwMjc5ZjA4OTY5ZGY0Njc3ZDIuLmQ5ZDg5Zjc5NmU3Mzg0NzU2N2UwOTMy
NDhhZDk0YzM0NzFhNjhlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5oCkBAIC00Nyw3ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJl
bGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sqKTsKICAgICB2aXJ0dWFsIGJvb2wgY29u
dGFpbnMoVHJhY2tCYXNlKikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICBUZXh0VHJhY2sqIGl0ZW0o
dW5zaWduZWQgaW5kZXgpOworICAgIFRleHRUcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CisgICAgVGV4dFRyYWNrKiBsYXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIGl0ZW0obGVuZ3Ro
KCkgLSAxKTsgfQorCiAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKaW5kZXggMTQwOWNjMGYzZDhjYTZhNzBmMDY2ZDI5
Mzg3MWY2YTA4NzYyYWE1YS4uOWE1M2YzNDBhN2Q2NjFhMTEwNDcyMGVjMDExNjVhNTE3Y2ViOTc1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29u
c3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fbWVkaWFFbGVtZW50KDApCisgICAg
LCBtX3NvdXJjZUJ1ZmZlcigwKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwp
CiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtNTMsNiArNTQsMTEgQEAgRWxlbWVudCog
VHJhY2tCYXNlOjplbGVtZW50KCkKIAogdm9pZCBUcmFja0Jhc2U6OnNldEtpbmQoY29uc3QgQXRv
bWljU3RyaW5nJiBraW5kKQogeworICAgIHNldEtpbmRJbnRlcm5hbChraW5kKTsKK30KKwordm9p
ZCBUcmFja0Jhc2U6OnNldEtpbmRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCit7
CiAgICAgU3RyaW5nIG9sZEtpbmQgPSBtX2tpbmQ7CiAKICAgICBpZiAoaXNWYWxpZEtpbmQoa2lu
ZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAppbmRleCBhMGQyMGFiMjc0OTVk
Nzc3NTRjOTZkNGRiMjcyMTI5NjNlM2ExNzczLi41MDlmN2E2MWYzNTkyY2Q0YjQ3MGFjY2U3YThj
MTMwYjNhMmJkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
SFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFNvdXJjZUJ1ZmZlcjsKIAogY2xhc3MgVHJhY2tCYXNl
IDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPiB7CiBwdWJsaWM6CkBAIC01NywxOCArNTgs
MzEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJl
bCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KIAogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0
b21pY1N0cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpIHsgbV9s
YW5ndWFnZSA9IGxhbmd1YWdlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSA9
IDA7CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIFNvdXJjZUJ1ZmZlciogc291cmNl
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VCdWZmZXI7IH0KKyAgICB2b2lkIHNldFNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlcikgeyBtX3NvdXJjZUJ1ZmZlciA9IGJ1ZmZl
cjsgfQorI2VuZGlmCisKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsKKwog
cHJvdGVjdGVkOgogICAgIFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBj
b25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29y
ZCgpIGNvbnN0ID0gMDsKIAorICAgIHZvaWQgc2V0S2luZEludGVybmFsKGNvbnN0IEF0b21pY1N0
cmluZyYpOworCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorICAgIFNvdXJjZUJ1ZmZlciogbV9zb3VyY2VCdWZmZXI7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBBdG9taWNTdHJpbmcgbV9p
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCmluZGV4IDhi
ZjZjNGM2OTIxZjlhZGM5M2E4ZWIyYzlmYjQxNmZiMDliYjEwODQuLmMzZGY5ZTZlZWU3NDk4YmEy
YjI5ODYxZjE0ZGJmNzFhMzdmYzE0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcApAQCAtMTc5LDQgKzE3OSwxNCBAQCB2b2lkIFRyYWNrTGlzdEJhc2U6
OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRyYWNrTGlzdEJhc2U+KikKICAgICAtLW1fZGlz
cGF0Y2hpbmdFdmVudHM7CiB9CiAKK2Jvb2wgVHJhY2tMaXN0QmFzZTo6aXNBbnlUcmFja0VuYWJs
ZWQoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Mu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IG1faW5iYW5kVHJhY2tz
W2ldLmdldCgpOworICAgICAgICBpZiAodHJhY2stPmVuYWJsZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAppbmRleCBiNzJiYzI0MjJiM2FmMDZl
YmNiOGFhMzhlODYzMWJjOGQ5ODAyOWQ2Li43YTc2NWUxOTNmMjYzYWQ3ZTY0NzBmNTcwNjY1ZDVi
YTc5MzcwNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlz
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApA
QCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgLy8gTmVlZHMgdG8gYmUgcHVibGljIHNvIHRy
YWNrcyBjYW4gY2FsbCBpdAogICAgIHZvaWQgc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogCisgICAg
Ym9vbCBpc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgVHJhY2tM
aXN0QmFzZShIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAppbmRleCA0ZTUyNzQ0ZTI4ZDhm
MDZjYWQ0N2EyYzllODM2MGMxNzg4NTMzYjkwLi5jMDQ4MGZlZTI4NTg2ZTMxYWRmYTUwMmY5ZmE5
MTRlNzIyMTQ5NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
QEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1
ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQpAQCAtODcs
MjUgKzkxLDI1IEBAIFZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCogY2xp
ZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0CiAKICAgICBzd2l0Y2ggKG1fcHJp
dmF0ZS0+a2luZCgpKSB7CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6
Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAg
ICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIHNl
dEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46Ci0gICAgICAgIHNldEtpbmQo
VmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRl
b1RyYWNrOjptYWluS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWaWRlb1Ry
YWNrUHJpdmF0ZTo6U2lnbjoKLSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5d29y
ZCgpKTsKKyAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTdWJ0aXRsZXM6
Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAg
ICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNl
dEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToKLSAgICAgICAgc2V0S2lu
ZChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgc2V0S2luZEludGVybmFsKGVtcHR5U3RyaW5nKCkp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE4NCw2ICsxODgsNDkgQEAgdm9pZCBWaWRlb1RyYWNrOjp3aWxsUmVtb3ZlKFRy
YWNrUHJpdmF0ZUJhc2UqIHRyYWNrUHJpdmF0ZSkKICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3Zl
VmlkZW9UcmFjayh0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2b2lkIFZp
ZGVvVHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQoreworICAgIC8vIDEw
LjEga2luZCwgb24gc2V0dGluZzoKKyAgICAvLyAxLiBJZiB0aGUgdmFsdWUgYmVpbmcgYXNzaWdu
ZWQgdG8gdGhpcyBhdHRyaWJ1dGUgZG9lcyBub3QgbWF0Y2ggb25lIG9mIHRoZSB2aWRlbyB0cmFj
ayBraW5kcywKKyAgICAvLyB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghaXNWYWxp
ZEtpbmQoa2luZCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIDIuIFVwZGF0ZSB0aGlzIGF0
dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgorICAgIHNldEtpbmRJbnRlcm5hbChraW5kKTsKKwor
ICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMg
bm90IG51bGwsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVu
dCBuYW1lZCBjaGFuZ2UgYXQgc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLgorICAgIGlmIChtX3Nv
dXJjZUJ1ZmZlcikKKyAgICAgICAgbV9zb3VyY2VCdWZmZXItPnZpZGVvVHJhY2tzKCktPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKKworICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJlZmVy
ZW5jZWQgYnkKKyAgICAvLyB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVk
aWFFbGVtZW50LgorICAgIG1lZGlhRWxlbWVudCgpLT52aWRlb1RyYWNrcygpLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRv
bWljU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICAvLyAxMC4xIGxhbmd1YWdlLCBvbiBzZXR0aW5n
OgorICAgIC8vIDEuIElmIHRoZSB2YWx1ZSBiZWluZyBhc3NpZ25lZCB0byB0aGlzIGF0dHJpYnV0
ZSBpcyBub3QgYW4gZW1wdHkgc3RyaW5nIG9yIGEgQkNQIDQ3IGxhbmd1YWdlCisgICAgLy8gdGFn
W0JDUDQ3XSwgdGhlbiBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyBGSVhNRSgxMjM5MjYpOiBW
YWxpZGF0ZSB0aGUgQkNQNDctbmVzcyBvZiBsYW5nYWd1ZS4KKworICAgIC8vIDIuIFVwZGF0ZSB0
aGlzIGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgorICAgIFRyYWNrQmFzZTo6c2V0TGFuZ3Vh
Z2UobGFuZ3VhZ2UpOworCisgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUg
b24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZQorICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFj
a3MuCisgICAgaWYgKG1fc291cmNlQnVmZmVyKQorICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlk
ZW9UcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworCisgICAgLy8gNC4gUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBWaWRlb1RyYWNr
TGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQorICAgIC8vIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1
dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgbWVkaWFFbGVtZW50KCktPnZpZGVvVHJh
Y2tzKCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApp
bmRleCAxMjY4Y2UzMGMxY2NiYWEzYmM0OTU0ZjU4MTliNzMyY2I1OThkYjIyLi5iMDk3ZDhhOThj
M2Y2NzBmOTYyNmJlYWVkZjc5ZjNiZDc2Mzc0MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIE1lZGlhRGVzY3JpcHRpb247CiBjbGFzcyBWaWRlb1RyYWNrOwogCiBjbGFzcyBWaWRl
b1RyYWNrQ2xpZW50IHsKQEAgLTcwLDYgKzcxLDEzIEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBp
bmJhbmRUcmFja0luZGV4KCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1
YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKKyNlbmRp
ZgorCisgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24oKSBjb25zdDsKKwog
cHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8
VmlkZW9UcmFja1ByaXZhdGU+IHByaXZhdGVUcmFjayk7CiAKQEAgLTgyLDYgKzkwLDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKFRyYWNrUHJpdmF0ZUJhc2Uq
LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZShU
cmFja1ByaXZhdGVCYXNlKikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHNlbGVjdGVkKCk7IH0KKwogICAgIGJvb2wgbV9zZWxl
Y3RlZDsKICAgICBWaWRlb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKaW5kZXggMWU0MWE5MDExOTI0YjY5MDVjYzM1ODBlOGI0
MTNiYjljNDcyZTQ1ZC4uNTNlMGRhNjJmNGJkODIwNTcwMGIyMTVjNzJkYmI0YzQ3Njg2MGUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCkBAIC0zMCw5ICszMCw5
IEBACiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KIF0gaW50ZXJmYWNlIFZpZGVvVHJhY2sgewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBraW5kOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJp
bmcga2luZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisgICAgW0N1c3RvbVNldHRlcl0g
YXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKIAogICAgIGF0dHJpYnV0ZSBib29sZWFuIHNl
bGVjdGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhRGVz
Y3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhRGVzY3JpcHRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45Y2VjNTFmZWM0YWMzNjhmMjQwMjZmZjQ3MGI0NjE3Yzc3ODA1MDk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFEZXNjcmlwdGlvbi5o
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhRGVzY3JpcHRpb25faAor
I2RlZmluZSBNZWRpYURlc2NyaXB0aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFEZXNjcmlwdGlvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhRGVzY3JpcHRpb24+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5N
ZWRpYURlc2NyaXB0aW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBjb2RlYygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNBdWRpbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
KCkgY29uc3QgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRp
YVNhbXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNDJjNTEyNTFjOGE4ZmI0OWNiN2M2NzA1YmM1MWM5Y2Ni
ODdmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhU2FtcGxlX2gK
KyNkZWZpbmUgTWVkaWFTYW1wbGVfaAorCisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TW9ja1NhbXBsZUJveDsKKworc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKKyAgICBlbnVtIHsKKyAg
ICAgICAgTm9uZSwKKyAgICAgICAgTW9ja1NhbXBsZUJveFR5cGUsCisgICAgfSB0eXBlOworICAg
IHVuaW9uIHsKKyAgICAgICAgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICB9IHNh
bXBsZTsKK307CisKK2NsYXNzIE1lZGlhU2FtcGxlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFT
YW1wbGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYVNhbXBsZSgpIHsgfQorCisgICAg
dmlydHVhbCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFU
aW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIHRyYWNr
SUQoKSBjb25zdCA9IDA7CisKKyAgICBlbnVtIFNhbXBsZUZsYWdzIHsKKyAgICAgICAgTm9uZSA9
IDAsCisgICAgICAgIElzU3luYyA9IDEgPDwgMCwKKyAgICB9OworICAgIHZpcnR1YWwgU2FtcGxl
RmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKaW5k
ZXggZjNhNjBmOGI5NTczMWM0ZjkyMGQ5NjdiMDViMmI3ZjM5OWIzMmVhYi4uN2Q3YTQ4ODQyNWY0
ZTc2M2Y4NzkzMzMxOGNhMjQ5ZTE2NTBkZDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaApAQCAtMzQs
NiArMzQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlIDogcHVibGljIFRyYWNrUHJpdmF0ZUJhc2UgewogcHVibGljOgorICAgIGVudW0gQ3Vl
Rm9ybWF0IHsKKyAgICAgICAgR2VuZXJpYywKKyAgICAgICAgV2ViVlRUCisgICAgfTsKKyAgICBz
dGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9y
bWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQp
KTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRUcmFja1ByaXZhdGUoKSB7IH0KIAogICAgIHZv
aWQgc2V0Q2xpZW50KEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQpAQCAtNjMsMTEgKzY4LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAg
ICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRv
bTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gZW1wdHlB
dG9tOyB9CisKKyAgICB2aXJ0dWFsIGludCB0ZXh0VHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KIAotICAgIGVudW0gQ3VlRm9ybWF0IHsKLSAgICAgICAgR2VuZXJpYywKLSAgICAgICAg
V2ViVlRUCi0gICAgfTsKICAgICBDdWVGb3JtYXQgY3VlRm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXQ7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAppbmRleCBlZWQ3NzZmM2Q3ZTEzYWQ5
OGQ4OGE5M2E3NTg4ODYyNjRjNmIzMzVmLi5mMzJhYjdhODIwOTg2ODg2ODJlZjgwZWU5MjMyOTYy
OWY0ZDczNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKIAorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTU1LDYgKzU2LDkgQEAgcHVibGljOgogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0
dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CiAgICAg
dmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpID0gMDsKKworICAgIHZpcnR1YWwgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IDY0OTFkYTZlNzUyODVhYmNmN2I4YTM5ZjE2NmEzNDU3YTNjOWY2
MjcuLmVjMjE4ZjA5Mzk5YWY2NGUzZGNkNjExNjMyYTVmZjJmNjcxZTg4ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRl
LmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNs
dWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCkBAIC00NSwxMSArNDYsMTIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGll
bnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNl
dChkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgp
ID0gMDsKKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSkgPSAwOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216252</attachid>
            <date>2013-11-06 18:03:05 -0800</date>
            <delta_ts>2013-11-06 21:24:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-123374-20131106180305.patch</filename>
            <type>text/plain</type>
            <size>133782</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIwODdkMGExOTJlOTZi
YTVjY2FlNjRkMjhkMzhiZjM4Y2FiMjRmYy4uZmM5YWU1NWY3NmZmZmEwM2U4NWU1YmYzYzc1YjU0
ZjVlYTg1Mjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEzLTEwLTI1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNU0VdIEFkZCBNZWRpYVNv
dXJjZSBleHRlbnNpb25zIHRvIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2ssIGFuZCBUZXh0VHJhY2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzQK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTm8gdGVzdHMg
YWRkZWQ7IHRlc3RzIHdpbGwgYmUgYWRkZWQgd2hlbiBNb2NrIGltcGxlbWVudGF0aW9ucyBhcmUg
YWRkZWQgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgQWRkIG5ldyBwYXJ0aWFsIGludGVy
ZmFjZXMgZm9yIGFkZGVkIG1ldGhvZHMgb24gQXVkaW9UcmFjaywgVGV4dFRyYWNrLCBhbmQgVmlk
ZW9UcmFjazoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRpYVNv
dXJjZS5pZGw6IEFkZCByZWFkLW9ubHkgc291cmNlQnVmZmVyIGF0dHJpYnV0ZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNlLmlkbDogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3VyY2UuaWRsOiBE
aXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRpYVNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja01lZGlhU291cmNlOjpzb3VyY2VCdWZm
ZXIpOiBBZGRlZCBzdGF0aWMgd3JhcHBlciBhcm91bmQgbm9uLXN0YXRpYyBzb3VyY2VCdWZmZXIo
KS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tNZWRpYVNvdXJjZTo6c291cmNlQnVmZmVyKTog
RGl0dG8uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tNZWRpYVNvdXJjZTo6c291cmNlQnVm
ZmVyKTogRGl0dG8uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdyaXRhYmxlIGtpbmQgJiBs
YW5ndWFnZSBhdHRyaWJ1dGVzIHRocm91Z2ggYSBjdXN0b20gc2V0dGVyOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1
ZGlvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRM
YW5ndWFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRL
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5pZGw6CisKKyAg
ICAgICAgQWRkIHNldHRlciBtZXRob2RzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0S2lu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAg
KiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jh
c2U6OnNldEtpbmRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tCYXNlOjpzb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oOgor
CisgICAgICAgIEltcGxlbWVudCB0aGUgdW5pbXBsZW1lbnRlZCBwb3J0aW9ucyBvZiBNZWRpYVNv
dXJjZSBhbmQgU291cmNlQnVmZmVyOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJj
ZUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VCYXNlOjpNZWRpYVNvdXJjZUJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VCYXNlOjpzZXRQcml2YXRlQW5kT3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUJhc2U6OnNldFJlYWR5U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VCYXNlOjphdHRhY2hUb0VsZW1lbnQpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUJhc2U6Om1lZGlhRWxlbWVudCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRBZGRB
dWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZEFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbDoKKworICAgICAgICBBZGQgbmV3
IGZpbGVzIHRvIHRoZSBwcm9qZWN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgIEFu
ZCBhIHNtb3JnYXNib3JkIG9mIG90aGVyIHV0aWxpdHkgY2hhbmdlczoKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bG9hZFJlc291cmNlKTogUGFzcyB0aGlzIHdoZW4gYXR0YWNoaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOiBEaXR0
by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5jcHA6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjppdGVtKTogTWFr
ZSBjb25zdC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6Omxhc3RJdGVtKTogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKwog
MjAxMy0xMS0wNiAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgcmVnaW9uIGxpbmUgb2Zmc2V0IG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDYyNjJmM2NkOTFhMmI0YjQ2YTdlZGJiMWMyZDJhOGQ2ODRlYTQ5ODEuLmY5
N2JhMDk4NTRkMGFiNGZiMDdiMjZmMmI2MzUzY2FmMTg1MjhhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtOTQsOSArOTQsMTQgQEAgQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9pbmRpZXVpL1VJUmVxdWVzdEV2ZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291cmNlLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAogCSQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNlLmlkbCBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9BdWRpb1Ry
YWNrTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjFhYjk3ZTdiMjZkMTJhNjBhYTg2NWQyMjA5
NTMwZWZkNjY2N2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBBdWRpb1RyYWNrTWVkaWFTb3VyY2VfaAorI2RlZmluZSBBdWRpb1RyYWNr
TWVkaWFTb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgRU5BQkxFKFZJREVP
X1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNvdXJjZUJ1ZmZlcjsKKworY2xhc3MgQXVkaW9UcmFja01lZGlhU291cmNlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgU291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIoQXVkaW9UcmFj
ayogdHJhY2spIHsgcmV0dXJuIHRyYWNrLT5zb3VyY2VCdWZmZXIoKTsgfQorfTsKKworfQorCisj
ZW5kaWYKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFja01lZGlhU291cmNlLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTFj
YjRhMDQ4OGU0NzUzOTk0MGNkNTU5ZjIwMmZhZDFjNmRlOWU5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2Uu
aWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFf
U09VUkNFJlZJREVPX1RSQUNLLAorXQorcGFydGlhbCBpbnRlcmZhY2UgQXVkaW9UcmFjayB7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFNvdXJjZUJ1ZmZlciBzb3VyY2VCdWZmZXI7Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCA1YjNmZjQwMTVjNzRmM2UwZmJkMDY1YTkyMDkxMDU1MGIzN2RjYTZiLi5kMzM0NDM3YjY1
ODRiOGZhNTQ1YzY0ZTI0OTBmY2YzYzllYjhhYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMzMsMTUgKzMzLDIyIEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgor
I2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJHZW5lcmljRXZl
bnRRdWV1ZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNvdXJj
ZUJ1ZmZlclByaXZhdGUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJh
Y2suaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvVWlu
dDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTM2LDggKzE0
MywxMjYgQEAgdm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZl
ciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVm
ZmVyLnVwZGF0aW5nIGF0dHJpYnV0ZSBlcXVhbHMgdHJ1ZSwgdGhlbiBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczogLi4uCiAgICAgYnVmZmVyLT5hYm9ydElmVXBkYXRpbmcoKTsKIAotICAgIC8vIFN0
ZXBzIDQtOSBhcmUgcmVsYXRlZCB0byB1cGRhdGluZyBhdWRpb1RyYWNrcywgdmlkZW9UcmFja3Ms
IGFuZCB0ZXh0VHJhY2tzIHdoaWNoIGFyZW4ndCBpbXBsbWVudGVkIHlldC4KLSAgICAvLyBGSVhN
RSg5MTY0OSk6IHN1cHBvcnQgdHJhY2sgc2VsZWN0aW9uCisgICAgLy8gNC4gTGV0IFNvdXJjZUJ1
ZmZlciBhdWRpb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QgcmV0
dXJuZWQgYnkgc291cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLgorICAgIFJlZlB0cjxBdWRpb1RyYWNr
TGlzdD4gYXVkaW9UcmFja3MgPSBidWZmZXItPmF1ZGlvVHJhY2tzKCk7CisKKyAgICAvLyA1LiBJ
ZiB0aGUgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QgaXMgbm90IGVtcHR5LCB0aGVuIHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlmIChhdWRpb1RyYWNrcy0+bGVuZ3RoKCkpIHsK
KyAgICAgICAgLy8gNS4xIExldCBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QgZXF1
YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgYXVkaW9UcmFja3MK
KyAgICAgICAgLy8gYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAv
LyA1LjIgTGV0IHRoZSByZW1vdmVkIGVuYWJsZWQgYXVkaW8gdHJhY2sgZmxhZyBlcXVhbCBmYWxz
ZS4KKyAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSBmYWxzZTsKKworICAg
ICAgICAvLyA1LjMgRm9yIGVhY2ggQXVkaW9UcmFjayBvYmplY3QgaW4gdGhlIFNvdXJjZUJ1ZmZl
ciBhdWRpb1RyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgd2hp
bGUgKGF1ZGlvVHJhY2tzLT5sZW5ndGgoKSkgeworICAgICAgICAgICAgQXVkaW9UcmFjayogdHJh
Y2sgPSBhdWRpb1RyYWNrcy0+bGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgLy8gNS4zLjEgU2V0
IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9iamVjdCB0byBu
dWxsLgorICAgICAgICAgICAgdHJhY2stPnNldFNvdXJjZUJ1ZmZlcigwKTsKKworICAgICAgICAg
ICAgLy8gNS4zLjIgSWYgdGhlIGVuYWJsZWQgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9i
amVjdCBpcyB0cnVlLCB0aGVuIHNldCB0aGUgcmVtb3ZlZCBlbmFibGVkCisgICAgICAgICAgICAv
LyBhdWRpbyB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAodHJhY2stPmVuYWJs
ZWQoKSkKKyAgICAgICAgICAgICAgICByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSB0cnVlOwor
CisgICAgICAgICAgICAvLyA1LjMuMyBSZW1vdmUgdGhlIEF1ZGlvVHJhY2sgb2JqZWN0IGZyb20g
dGhlIEhUTUxNZWRpYUVsZW1lbnQgYXVkaW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgIC8vIDUu
My40IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFj
aywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAgLy8gY2FuY2Vs
YWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1M
TWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZUF1ZGlvVHJhY2so
dHJhY2spOworCisgICAgICAgICAgICAvLyA1LjMuNSBSZW1vdmUgdGhlIEF1ZGlvVHJhY2sgb2Jq
ZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAg
Ly8gNS4zLjYgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92
ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAvLyBj
YW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhl
IFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgYXVkaW9UcmFja3Mt
PnJlbW92ZSh0cmFjayk7CisgICAgICAgIH0KKworICAgICAgICAvLyA1LjQgSWYgdGhlIHJlbW92
ZWQgZW5hYmxlZCBhdWRpbyB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50CisgICAgICAgIC8vIG5hbWVkIGNoYW5nZSBhdCB0aGUg
SFRNTE1lZGlhRWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICBpZiAocmVtb3ZlZEVu
YWJsZWRBdWRpb1RyYWNrKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmF1ZGlvVHJhY2tz
KCktPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICB9CisKKyAgICAvLyA2LiBMZXQgU291cmNl
QnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCBy
ZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCisgICAgUmVmUHRyPFZpZGVvVHJh
Y2tMaXN0PiB2aWRlb1RyYWNrcyA9IGJ1ZmZlci0+dmlkZW9UcmFja3MoKTsKKworICAgIC8vIDcu
IElmIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4g
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKHZpZGVvVHJhY2tzLT5sZW5ndGgoKSkg
eworICAgICAgICAvLyA3LjEgTGV0IEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdCBl
cXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSB2aWRlb1RyYWNr
cworICAgICAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgICAg
IC8vIDcuMiBMZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQgdmlkZW8gdHJhY2sgZmxhZyBlcXVhbCBm
YWxzZS4KKyAgICAgICAgYm9vbCByZW1vdmVkU2VsZWN0ZWRWaWRlb1RyYWNrID0gZmFsc2U7CisK
KyAgICAgICAgLy8gNy4zIEZvciBlYWNoIFZpZGVvVHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VC
dWZmZXIgdmlkZW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAg
IHdoaWxlICh2aWRlb1RyYWNrcy0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIFZpZGVvVHJhY2sq
IHRyYWNrID0gdmlkZW9UcmFja3MtPmxhc3RJdGVtKCk7CisKKyAgICAgICAgICAgIC8vIDcuMy4x
IFNldCB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGUgVmlkZW9UcmFjayBvYmplY3Qg
dG8gbnVsbC4KKyAgICAgICAgICAgIHRyYWNrLT5zZXRTb3VyY2VCdWZmZXIoMCk7CisKKyAgICAg
ICAgICAgIC8vIDcuMy4yIElmIHRoZSBzZWxlY3RlZCBhdHRyaWJ1dGUgb24gdGhlIFZpZGVvVHJh
Y2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0IHRoZSByZW1vdmVkIHNlbGVjdGVkCisgICAgICAg
ICAgICAvLyB2aWRlbyB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAodHJhY2st
PnNlbGVjdGVkKCkpCisgICAgICAgICAgICAgICAgcmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFjayA9
IHRydWU7CisKKyAgICAgICAgICAgIC8vIDcuMy4zIFJlbW92ZSB0aGUgVmlkZW9UcmFjayBvYmpl
Y3QgZnJvbSB0aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICAg
ICAgLy8gNy4zLjQgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJl
bW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAv
LyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQg
dGhlIEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgIGlmICht
ZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlVmlk
ZW9UcmFjayh0cmFjayk7CisKKyAgICAgICAgICAgIC8vIDcuMy41IFJlbW92ZSB0aGUgVmlkZW9U
cmFjayBvYmplY3QgZnJvbSB0aGUgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QuCisgICAg
ICAgICAgICAvLyA3LjMuNiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFt
ZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKKyAgICAgICAg
ICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNl
LCBhdCB0aGUgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICB2aWRl
b1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDcuNCBJZiB0
aGUgcmVtb3ZlZCBzZWxlY3RlZCB2aWRlbyB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50CisgICAgICAgIC8vIG5hbWVkIGNoYW5n
ZSBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICBpZiAo
cmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFjaykKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT52
aWRlb1RyYWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisgICAgfQorCisgICAgLy8gOC4g
TGV0IFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qg
b2JqZWN0IHJldHVybmVkIGJ5IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgorICAgIFJlZlB0cjxU
ZXh0VHJhY2tMaXN0PiB0ZXh0VHJhY2tzID0gYnVmZmVyLT50ZXh0VHJhY2tzKCk7CisKKyAgICAv
LyA5LiBJZiB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRo
ZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKHRleHRUcmFja3MtPmxlbmd0aCgp
KSB7CisgICAgICAgIC8vIDkuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3Qg
ZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSB0ZXh0VHJhY2tz
CisgICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAgICAg
Ly8gOS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBlcXVhbCBmYWxz
ZS4KKyAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZFRleHRUcmFjayA9IGZhbHNlOworCisgICAg
ICAgIC8vIDkuMyBGb3IgZWFjaCBUZXh0VHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VCdWZmZXIg
dGV4dFRyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgd2hpbGUg
KHRleHRUcmFja3MtPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0g
dGV4dFRyYWNrcy0+bGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgLy8gOS4zLjEgU2V0IHRoZSBz
b3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBUZXh0VHJhY2sgb2JqZWN0IHRvIG51bGwuCisg
ICAgICAgICAgICB0cmFjay0+c2V0U291cmNlQnVmZmVyKDApOworCisgICAgICAgICAgICAvLyA5
LjMuMiBJZiB0aGUgbW9kZSBhdHRyaWJ1dGUgb24gdGhlIFRleHRUcmFjayBvYmplY3QgaXMgc2V0
IHRvICJzaG93aW5nIiBvciAiaGlkZGVuIiwgdGhlbgorICAgICAgICAgICAgLy8gc2V0IHRoZSBy
ZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICBpZiAo
dHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkgfHwgdHJhY2stPm1v
ZGUoKSA9PSBUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSkKKyAgICAgICAgICAgICAgICByZW1v
dmVkRW5hYmxlZFRleHRUcmFjayA9IHRydWU7CisKKyAgICAgICAgICAgIC8vIDkuMy4zIFJlbW92
ZSB0aGUgVGV4dFRyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFj
a3MgbGlzdC4KKyAgICAgICAgICAgIC8vIDkuMy40IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1
c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlz
IG5vdAorICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tF
dmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4K
KyAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+cmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKworICAgICAgICAgICAgLy8gOS4zLjUg
UmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJh
Y2tzIGxpc3QuCisgICAgICAgICAgICAvLyA5LjMuNiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRy
dXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBp
cyBub3QKKyAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNr
RXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdC4KKyAg
ICAgICAgICAgIHRleHRUcmFja3MtPnJlbW92ZSh0cmFjayk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyA5LjQgSWYgdGhlIHJlbW92ZWQgZW5hYmxlZCB0ZXh0IHRyYWNrIGZsYWcgZXF1YWxzIHRy
dWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKKyAgICAgICAgLy8g
bmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4KKyAg
ICAgICAgaWYgKHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrKQorICAgICAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworICAgIH0KKwogCiAg
ICAgLy8gMTAuIElmIHNvdXJjZUJ1ZmZlciBpcyBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLCB0aGVu
IHJlbW92ZSBzb3VyY2VCdWZmZXIgZnJvbSBhY3RpdmVTb3VyY2VCdWZmZXJzIC4uLgogICAgIG1f
YWN0aXZlU291cmNlQnVmZmVycy0+cmVtb3ZlKGJ1ZmZlcik7CkBAIC0yMTYsNiArMzQxLDExOCBA
QCBFdmVudFRhcmdldEludGVyZmFjZSBNZWRpYVNvdXJjZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAogICAgIHJldHVybiBNZWRpYVNvdXJjZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsK
IH0KIAordm9pZCBNZWRpYVNvdXJjZTo6c291cmNlQnVmZmVyRGlkQ2hhbmdlQWNpdHZlU3RhdGUo
U291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIsIGJvb2wgYWN0aXZlKQoreworICAgIGlmIChhY3Rp
dmUgJiYgIW1fYWN0aXZlU291cmNlQnVmZmVycy0+Y29udGFpbnMoc291cmNlQnVmZmVyKSkKKyAg
ICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5hZGQoc291cmNlQnVmZmVyKTsKKyAgICBlbHNl
IGlmICghYWN0aXZlICYmIG1fYWN0aXZlU291cmNlQnVmZmVycy0+Y29udGFpbnMoc291cmNlQnVm
ZmVyKSkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5yZW1vdmUoc291cmNlQnVmZmVy
KTsKK30KKworY2xhc3MgU291cmNlQnVmZmVyQnVmZmVyZWREb2VzTm90Q29udGFpblRpbWUgewor
cHVibGljOgorICAgIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkRG9lc05vdENvbnRhaW5UaW1lKGRvdWJs
ZSB0aW1lKSA6IG1fdGltZSh0aW1lKSB7IH0KKyAgICBib29sIG9wZXJhdG9yKCkoUmVmUHRyPFNv
dXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFzb3VyY2VC
dWZmZXItPmJ1ZmZlcmVkKCktPmNvbnRhaW4obV90aW1lKTsKKyAgICB9CisKKyAgICBkb3VibGUg
bV90aW1lOworfTsKKworY2xhc3MgU291cmNlQnVmZmVyQnVmZmVyZWRIYXNFbm91Z2ggeworcHVi
bGljOgorICAgIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkSGFzRW5vdWdoKGRvdWJsZSB0aW1lLCBkb3Vi
bGUgZHVyYXRpb24pIDogbV90aW1lKHRpbWUpLCBtX2R1cmF0aW9uKGR1cmF0aW9uKSB7IH0KKyAg
ICBib29sIG9wZXJhdG9yKCkoUmVmUHRyPFNvdXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKQorICAg
IHsKKyAgICAgICAgc2l6ZV90IHJhbmdlUG9zID0gc291cmNlQnVmZmVyLT5idWZmZXJlZCgpLT5m
aW5kKG1fdGltZSk7CisgICAgICAgIGlmIChyYW5nZVBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBkb3VibGUgZW5kVGltZSA9IHNvdXJjZUJ1ZmZl
ci0+YnVmZmVyZWQoKS0+ZW5kKHJhbmdlUG9zLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAg
cmV0dXJuIG1fZHVyYXRpb24gLSBlbmRUaW1lIDwgMTsKKyAgICB9CisKKyAgICBkb3VibGUgbV90
aW1lOworICAgIGRvdWJsZSBtX2R1cmF0aW9uOworfTsKKworY2xhc3MgU291cmNlQnVmZmVyQnVm
ZmVyZWRIYXNGdXR1cmUgeworcHVibGljOgorICAgIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkSGFzRnV0
dXJlKGRvdWJsZSB0aW1lKSA6IG1fdGltZSh0aW1lKSB7IH0KKyAgICBib29sIG9wZXJhdG9yKCko
UmVmUHRyPFNvdXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKQorICAgIHsKKyAgICAgICAgc2l6ZV90
IHJhbmdlUG9zID0gc291cmNlQnVmZmVyLT5idWZmZXJlZCgpLT5maW5kKG1fdGltZSk7CisgICAg
ICAgIGlmIChyYW5nZVBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBkb3VibGUgZW5kVGltZSA9IHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWQoKS0+ZW5k
KHJhbmdlUG9zLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgcmV0dXJuIGVuZFRpbWUgLSBt
X3RpbWUgPiAxOworICAgIH0KKworICAgIGRvdWJsZSBtX3RpbWU7Cit9OworCit2b2lkIE1lZGlh
U291cmNlOjptb25pdG9yU291cmNlQnVmZmVycygpCit7CisgICAgZG91YmxlIGN1cnJlbnRUaW1l
ID0gbWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCk7CisKKyAgICAvLyAyLjQuNCBTb3VyY2VC
dWZmZXIgTW9uaXRvcmluZworICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYWxsIG9iamVjdHMg
aW4gYWN0aXZlU291cmNlQnVmZmVycyBkbyBub3QgY29udGFpbiBUaW1lUmFuZ2VzIGZvciB0aGUg
Y3VycmVudAorICAgIC8vIHBsYXliYWNrIHBvc2l0aW9uOgorICAgIGF1dG8gYmVnaW4gPSBtX2Fj
dGl2ZVNvdXJjZUJ1ZmZlcnMtPmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMtPmVuZCgpOworICAgIGlmIChzdGQ6OmFsbF9vZihiZWdpbiwgZW5kLCBTb3VyY2VC
dWZmZXJCdWZmZXJlZERvZXNOb3RDb250YWluVGltZShjdXJyZW50VGltZSkpKSB7CisgICAgICAg
IC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBI
QVZFX01FVEFEQVRBLgorICAgICAgICAvLyAyLiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0cmFuc2l0
aW9uIHRvIEhBVkVfTUVUQURBVEEsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUg
ZXZlbnQKKyAgICAgICAgLy8gbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQgdGhlIG1lZGlhIGVsZW1l
bnQuCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU1l
dGFkYXRhKTsKKworICAgICAgICAvLyAzLiBBYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYWxsIG9iamVjdHMgaW4g
YWN0aXZlU291cmNlQnVmZmVycyBjb250YWluIFRpbWVSYW5nZXMgdGhhdCBpbmNsdWRlIHRoZSBj
dXJyZW50CisgICAgLy8gcGxheWJhY2sgcG9zaXRpb24gYW5kIGVub3VnaCBkYXRhIHRvIGVuc3Vy
ZSB1bmludGVycnVwdGVkIHBsYXliYWNrOgorICAgIGlmIChzdGQ6OmFsbF9vZihiZWdpbiwgZW5k
LCBTb3VyY2VCdWZmZXJCdWZmZXJlZEhhc0Vub3VnaChjdXJyZW50VGltZSwgbWVkaWFFbGVtZW50
KCktPmR1cmF0aW9uKCkpKSkgeworICAgICAgICAvLyAxLiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1l
bnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9FTk9VR0hfREFUQS4KKyAgICAgICAgLy8g
Mi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2FucGxheXRocm91
Z2ggYXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIC8vIDMuIFBsYXliYWNrIG1heSByZXN1
bWUgYXQgdGhpcyBwb2ludCBpZiBpdCB3YXMgcHJldmlvdXNseSBzdXNwZW5kZWQgYnkgYSB0cmFu
c2l0aW9uIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhKTsKKworICAgICAgICAvLyA0LiBBYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIOKGsyBJZiBi
dWZmZXJlZCBmb3IgYXQgbGVhc3Qgb25lIG9iamVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzIGNv
bnRhaW5zIGEgVGltZVJhbmdlIHRoYXQgaW5jbHVkZXMKKyAgICAvLyB0aGUgY3VycmVudCBwbGF5
YmFjayBwb3NpdGlvbiBidXQgbm90IGVub3VnaCBkYXRhIHRvIGVuc3VyZSB1bmludGVycnVwdGVk
IHBsYXliYWNrOgorICAgIGlmIChzdGQ6OmFueV9vZihiZWdpbiwgZW5kLCBTb3VyY2VCdWZmZXJC
dWZmZXJlZEhhc0Z1dHVyZShjdXJyZW50VGltZSkpKSB7CisgICAgICAgIC8vIDEuIFNldCB0aGUg
SFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX0ZVVFVSRV9EQVRB
LgorICAgICAgICAvLyAyLiBJZiB0aGUgcHJldmlvdXMgdmFsdWUgb2YgSFRNTE1lZGlhRWxlbWVu
dC5yZWFkeVN0YXRlIHdhcyBsZXNzIHRoYW4gSEFWRV9GVVRVUkVfREFUQSwgdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjYW5wbGF5IGF0IHRoZSBtZWRpYSBl
bGVtZW50LgorICAgICAgICAvLyAzLiBQbGF5YmFjayBtYXkgcmVzdW1lIGF0IHRoaXMgcG9pbnQg
aWYgaXQgd2FzIHByZXZpb3VzbHkgc3VzcGVuZGVkIGJ5IGEgdHJhbnNpdGlvbiB0byBIQVZFX0NV
UlJFTlRfREFUQS4KKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVy
OjpIYXZlRnV0dXJlRGF0YSk7CisKKyAgICAgICAgLy8gNC4gQWJvcnQgdGhlc2Ugc3RlcHMuCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyDihrMgSWYgYnVmZmVyZWQgZm9yIGF0IGxl
YXN0IG9uZSBvYmplY3QgaW4gYWN0aXZlU291cmNlQnVmZmVycyBjb250YWlucyBhIFRpbWVSYW5n
ZSB0aGF0IGVuZHMKKyAgICAvLyBhdCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBhbmQg
ZG9lcyBub3QgaGF2ZSBhIHJhbmdlIGNvdmVyaW5nIHRoZSB0aW1lIGltbWVkaWF0ZWx5CisgICAg
Ly8gYWZ0ZXIgdGhlIGN1cnJlbnQgcG9zaXRpb246CisgICAgLy8gTk9URTogTG9naWNhbGx5LCAh
KGFsbCBvYmplY3RzIGRvIG5vdCBjb250YWluIGN1cnJlbnRUaW1lKSA9PSAoc29tZSBvYmplY3Rz
IGNvbnRhaW4gY3VycmVudCB0aW1lKQorCisgICAgLy8gMS4gU2V0IHRoZSBIVE1MTWVkaWFFbGVt
ZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgorICAgIC8vIDIu
IElmIHRoaXMgaXMgdGhlIGZpcnN0IHRyYW5zaXRpb24gdG8gSEFWRV9DVVJSRU5UX0RBVEEsIHRo
ZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVudCBuYW1lZCBsb2Fk
ZWRkYXRhIGF0IHRoZSBtZWRpYSBlbGVtZW50LgorICAgIC8vIDMuIFBsYXliYWNrIGlzIHN1c3Bl
bmRlZCBhdCB0aGlzIHBvaW50IHNpbmNlIHRoZSBtZWRpYSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBl
bm91Z2ggZGF0YSB0bworICAgIC8vIGFkdmFuY2UgdGhlIG1lZGlhIHRpbWVsaW5lLgorICAgIG1f
cHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKTsKKwor
ICAgIC8vIDQuIEFib3J0IHRoZXNlIHN0ZXBzLgorfQorCisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuaAppbmRleCAwNjZkYjZkMjljMTlhZjEyYmI3ZTFjMzhjN2Q2YWQxZDdlZDMx
ZGYyLi42N2Q1ZjNjMjY0MWRmZTZiM2U2ZDE5YjRjODJmODZlODI3OGQ4YWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC01OSw2
ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVNvdXJjZUJhc2U+
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVNvdXJjZUJhc2U+OjpkZXJlZjsKIAor
ICAgIHZvaWQgc291cmNlQnVmZmVyRGlkQ2hhbmdlQWNpdHZlU3RhdGUoU291cmNlQnVmZmVyKiwg
Ym9vbCk7CisKKyAgICB2b2lkIG1vbml0b3JTb3VyY2VCdWZmZXJzKCk7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgTWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFz
ZS5jcHAKaW5kZXggYzRlMWQ4NDM2MWYyODlkYzFlZTYwOTdiMGU5Yzc3ODdjYjg5NWFlMy4uZjFl
NDZlZmE1NDBmZDA4NmQwZDZiNzM4YjRkYTgyNDkxOGNlNzY4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcApAQCAt
NDcsOSArNDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU291cmNlQmFzZTo6TWVk
aWFTb3VyY2VCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX21lZGlhRWxlbWVudCgwKQogICAgICwgbV9y
ZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQoKSkKICAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlz
KQotICAgICwgbV9hdHRhY2hlZChmYWxzZSkKIHsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlQmFzZTo6ZW5kZWRLZXl3b3JkKCkKIHZvaWQgTWVk
aWFTb3VyY2VCYXNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNzUmVmPE1lZGlhU291cmNlUHJpdmF0
ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQogewogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKLSAgICBB
U1NFUlQobV9hdHRhY2hlZCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICBtX3By
aXZhdGUgPSBzdGQ6Om1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKICAgICBzZXRSZWFkeVN0YXRl
KG9wZW5LZXl3b3JkKCkpOwogfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTWVkaWFTb3VyY2VC
YXNlOjpzZXRSZWFkeVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RhdGUpCiAKICAgICBpZiAo
c3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIG1fcHJpdmF0ZS5jbGVhcigpOwot
ICAgICAgICBtX2F0dGFjaGVkID0gZmFsc2U7CisgICAgICAgIG1fbWVkaWFFbGVtZW50ID0gMDsK
ICAgICB9CiAKICAgICBpZiAob2xkU3RhdGUgPT0gc3RhdGUpCkBAIC0yMjIsMTQgKzIyMiwxNCBA
QCB2b2lkIE1lZGlhU291cmNlQmFzZTo6Y2xvc2UoKQogICAgIHNldFJlYWR5U3RhdGUoY2xvc2Vk
S2V5d29yZCgpKTsKIH0KIAotYm9vbCBNZWRpYVNvdXJjZUJhc2U6OmF0dGFjaFRvRWxlbWVudCgp
Citib29sIE1lZGlhU291cmNlQmFzZTo6YXR0YWNoVG9FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpCiB7Ci0gICAgaWYgKG1fYXR0YWNoZWQpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoaXNDbG9zZWQoKSk7CiAKLSAg
ICBtX2F0dGFjaGVkID0gdHJ1ZTsKKyAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlQmFzZS5oCmluZGV4IDFlMzg5NDZjYTdlNWE4ZTA0ODcwZjQyNjEz
NjQ5NmZmZjFmNWNjNTguLjA5OGZjNDkzYjU3YjdkOGUyNTIzZDU5OTlkOGZhODBkZmNiNTQyNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZUJhc2UuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09wZW4oKSBj
b25zdDsKIAogICAgIC8vIEhUTUxNZWRpYVNvdXJjZQotICAgIHZpcnR1YWwgYm9vbCBhdHRhY2hU
b0VsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXR0YWNoVG9FbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFu
ZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJjZVByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWQoKSBjb25z
dCBPVkVSUklERTsKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVhZHlT
dGF0ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGVuZE9mU3RyZWFtKGNvbnN0IEF0
b21pY1N0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTAxLDExICsxMDIsMTAgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSk7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUmIGFzeW5jRXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1f
YXN5bmNFdmVudFF1ZXVlOyB9CiAKLXByaXZhdGU6CiAgICAgUmVmUHRyPE1lZGlhU291cmNlUHJp
dmF0ZT4gbV9wcml2YXRlOworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50Owog
ICAgIEF0b21pY1N0cmluZyBtX3JlYWR5U3RhdGU7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9h
c3luY0V2ZW50UXVldWU7Ci0gICAgYm9vbCBtX2F0dGFjaGVkOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4
IDQ1NzhmZTRjZThjNGVjNWVhYjNlZTZiOWFiNGI1YzNkNTZiOWQwOGYuLjJkNDljNGJmMjRiNmMw
YTI2OWIxOWE2NTM5MTJkN2VjMjg0N2FkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTMzLDE2ICszMyw0NSBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2suaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2lu
Y2x1ZGUgIlRpbWVSYW5nZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorI2luY2x1
ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdHJ1Y3QgU291cmNlQnVmZmVyOjpUcmFja0J1ZmZlciB7CisgICAgTWVkaWFU
aW1lIGxhc3REZWNvZGVUaW1lc3RhbXA7CisgICAgTWVkaWFUaW1lIGxhc3RGcmFtZUR1cmF0aW9u
OworICAgIE1lZGlhVGltZSBoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wOworICAgIE1lZGlh
VGltZSBsYXN0RW5xdWV1ZWRQcmVzZW50YXRpb25UaW1lOworICAgIGJvb2wgbmVlZFJhbmRvbUFj
Y2Vzc0ZsYWc7CisgICAgdHlwZWRlZiBzdGQ6Om11bHRpbWFwPE1lZGlhVGltZSwgUmVmUHRyPE1l
ZGlhU2FtcGxlPj4gU2FtcGxlTWFwOworICAgIFNhbXBsZU1hcCBzYW1wbGVzOworICAgIFNhbXBs
ZU1hcCBkZWNvZGVRdWV1ZTsKKyAgICBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4gZGVzY3JpcHRp
b247CisKKyAgICBUcmFja0J1ZmZlcigpCisgICAgICAgIDogbGFzdERlY29kZVRpbWVzdGFtcChN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCisgICAgICAgICwgbGFzdEZyYW1lRHVyYXRpb24oTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIGhpZ2hlc3RQcmVzZW50YXRpb25UaW1l
c3RhbXAoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIGxhc3RFbnF1ZXVlZFBy
ZXNlbnRhdGlvblRpbWUoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIG5lZWRS
YW5kb21BY2Nlc3NGbGFnKGZhbHNlKQorICAgIHsKKyAgICB9Cit9OworCiBQYXNzUmVmPFNvdXJj
ZUJ1ZmZlcj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRl
PiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQogewogICAgIFJlZlB0
cjxTb3VyY2VCdWZmZXI+IHNvdXJjZUJ1ZmZlcihhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyKHN0
ZDo6bW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSwgc291cmNlKSkpOwpAQCAtNTYsOCArODUsMTIg
QEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRl
PiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWQKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAs
IG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV91cGRhdGluZyhmYWxzZSkKLSAgICAs
IG1fdGltZXN0YW1wT2Zmc2V0KDApCiAgICAgLCBtX2FwcGVuZEJ1ZmZlclRpbWVyKHRoaXMsICZT
b3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQpCisgICAgLCBtX2hpZ2hlc3RQcmVz
ZW50YXRpb25FbmRUaW1lc3RhbXAoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICwgbV9y
ZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50KGZhbHNlKQorICAgICwgbV9idWZmZXJl
ZChUaW1lUmFuZ2VzOjpjcmVhdGUoKSkKKyAgICAsIG1fYWN0aXZlKGZhbHNlKQorICAgICwgbV9h
cHBlbmRTdGF0ZShXYWl0aW5nRm9yU2VnbWVudCkKIHsKICAgICBBU1NFUlQobV9wcml2YXRlKTsK
ICAgICBBU1NFUlQobV9zb3VyY2UpOwpAQCAtODMsMTIgKzExNiwxNyBAQCBQYXNzUmVmUHRyPFRp
bWVSYW5nZXM+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgfQogCiAgICAgLy8gMi4gUmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVS
YW5nZXMgb2JqZWN0IGZvciB0aGUgbWVkaWEgc2VnbWVudHMgYnVmZmVyZWQuCi0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKKyAgICByZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwor
fQorCitjb25zdCBSZWZQdHI8VGltZVJhbmdlcz4mIFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcmVkOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVy
Ojp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdAogewotICAgIHJldHVybiBtX3RpbWVzdGFtcE9mZnNl
dDsKKyAgICByZXR1cm4gbV90aW1lc3RhbXBPZmZzZXQudG9Eb3VibGUoKTsKIH0KIAogdm9pZCBT
b3VyY2VCdWZmZXI6OnNldFRpbWVzdGFtcE9mZnNldChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTExMiw5ICsxNTAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0VGltZXN0
YW1wT2Zmc2V0KGRvdWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIDQuMiBR
dWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBzb3VyY2VvcGVuIGF0IHRo
ZSBwYXJlbnQgbWVkaWEgc291cmNlLgogICAgIG1fc291cmNlLT5vcGVuSWZJbkVuZGVkU3RhdGUo
KTsKIAotICAgIC8vIDUuIElmIHRoaXMgb2JqZWN0IGlzIHdhaXRpbmcgZm9yIHRoZSBlbmQgb2Yg
YSBtZWRpYSBzZWdtZW50IHRvIGJlIGFwcGVuZGVkLCB0aGVuIHRocm93IGFuIElOVkFMSURfU1RB
VEVfRVJSCi0gICAgLy8gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9wcml2YXRl
LT5zZXRUaW1lc3RhbXBPZmZzZXQob2Zmc2V0KSkgeworICAgIC8vIDUuIElmIHRoZSBhcHBlbmQg
c3RhdGUgZXF1YWxzIFBBUlNJTkdfTUVESUFfU0VHTUVOVCwgdGhlbiB0aHJvdyBhbiBJTlZBTElE
X1NUQVRFX0VSUiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1fYXBwZW5kU3RhdGUg
PT0gUGFyc2luZ01lZGlhU2VnbWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjg1LDYgKzMyMiw2MiBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZChUaW1lcjxTb3VyY2VCdWZmZXI+KikKIAog
ICAgIC8vIDUuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHVwZGF0
ZWVuZCBhdCB0aGlzIFNvdXJjZUJ1ZmZlciBvYmplY3QuCiAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOworCisgICAgbV9zb3VyY2UtPm1vbml0b3JTb3VyY2VC
dWZmZXJzKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgU291cmNlQnVmZmVyOjpkZWNvZGVF
cnJvcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVjb2Rl
KCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gZGVjb2RlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUJ1ZmZlcjo6bmV0d29y
a0Vycm9yKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXR3
b3JrKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
cmV0dXJuIG5ldHdvcms7Cit9CisKK1ZpZGVvVHJhY2tMaXN0KiBTb3VyY2VCdWZmZXI6OnZpZGVv
VHJhY2tzKCkKK3sKKyAgICBpZiAoIW1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIG1fdmlkZW9UcmFj
a3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSwgQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgcmV0dXJuIG1f
dmlkZW9UcmFja3MuZ2V0KCk7Cit9CisKK0F1ZGlvVHJhY2tMaXN0KiBTb3VyY2VCdWZmZXI6OmF1
ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAoIW1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIG1fYXVkaW9U
cmFja3MgPSBBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSwg
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgcmV0dXJu
IG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKK1RleHRUcmFja0xpc3QqIFNvdXJjZUJ1ZmZlcjo6
dGV4dFRyYWNrcygpCit7CisgICAgaWYgKCFtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRy
YWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCksIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBt
X3RleHRUcmFja3MuZ2V0KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCit7CisgICAgaWYgKG1fYWN0aXZlID09IGFjdGl2ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlckRp
ZENoYW5nZUFjaXR2ZVN0YXRlKHRoaXMsIGFjdGl2ZSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXJyb3IpCkBAIC0yOTIsMjIgKzM4NSw2MjEgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRFbmRTdHJlYW0oU291cmNlQnVm
ZmVyUHJpdmF0ZSosIGNvbnN0IFcKICAgICBtX3NvdXJjZS0+ZW5kT2ZTdHJlYW0oZXJyb3IsIEln
bm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQ
cml2YXRlKiwgY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikKK3ZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3Vy
Y2VCdWZmZXJQcml2YXRlKiwgY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQog
eworICAgIG1fYXBwZW5kU3RhdGUgPSBQYXJzaW5nSW5pdFNlZ21lbnQ7CisKKyAgICAvLyAzLjUu
NyBJbml0aWFsaXphdGlvbiBTZWdtZW50IFJlY2VpdmVkCisgICAgLy8gMS4gVXBkYXRlIHRoZSBk
dXJhdGlvbiBhdHRyaWJ1dGUgaWYgaXQgY3VycmVudGx5IGVxdWFscyBOYU46CisgICAgaWYgKHN0
ZDo6aXNuYW4obV9zb3VyY2UtPmR1cmF0aW9uKCkpICYmIHNlZ21lbnQuZHVyYXRpb24uaXNWYWxp
ZCgpKQorICAgICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb24oc2VnbWVudC5kdXJhdGlvbi50b0Rv
dWJsZSgpLCBJR05PUkVfRVhDRVBUSU9OKTsKKworICAgIC8vIDIuIElmIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGhhcyBubyBhdWRpbywgdmlkZW8sIG9yIHRleHQgdHJhY2tzLCB0aGVuIHJ1
biB0aGUgZW5kIG9mIHN0cmVhbQorICAgIC8vIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJh
bWV0ZXIgc2V0IHRvICJkZWNvZGUiIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIXNl
Z21lbnQuYXVkaW9UcmFja3Muc2l6ZSgpICYmICFzZWdtZW50LnZpZGVvVHJhY2tzLnNpemUoKSAm
JiAhc2VnbWVudC50ZXh0VHJhY2tzLnNpemUoKSkKKyAgICAgICAgbV9zb3VyY2UtPmVuZE9mU3Ry
ZWFtKGRlY29kZUVycm9yKCksIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSk7CisKKworICAgIC8v
IDMuIElmIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50IGZsYWcgaXMgdHJ1ZSwgdGhl
biBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAobV9yZWNlaXZlZEZpcnN0SW5pdGlh
bGl6YXRpb25TZWdtZW50KSB7CisgICAgICAgIGlmICghdmFsaWRhdGVJbml0aWFsaXphdGlvblNl
Z21lbnQoc2VnbWVudCkpIHsKKyAgICAgICAgICAgIG1fc291cmNlLT5lbmRPZlN0cmVhbShkZWNv
ZGVFcnJvcigpLCBJZ25vcmFibGVFeGNlcHRpb25Db2RlKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIC8vIDMuMiBBZGQgdGhlIGFwcHJvcHJpYXRlIHRyYWNrIGRl
c2NyaXB0aW9ucyBmcm9tIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VnbWVudCB0byBlYWNoIG9mIHRo
ZSB0cmFjayBidWZmZXJzLgorICAgICAgICAvLyBOT1RFOiBObyBjaGFuZ2VzIHRvIG1ha2UKKyAg
ICB9CisKKyAgICAvLyA0LiBMZXQgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWwgZmFsc2UuCisgICAg
Ym9vbCBhY3RpdmVUcmFja0ZsYWcgPSBmYWxzZTsKKworICAgIC8vIDUuIElmIHRoZSBmaXJzdCBp
bml0aWFsaXphdGlvbiBzZWdtZW50IGZsYWcgaXMgZmFsc2UsIHRoZW4gcnVuIHRoZSBmb2xsb3dp
bmcgc3RlcHM6CisgICAgaWYgKCFtX3JlY2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQp
IHsKKyAgICAgICAgLy8gNS4xIElmIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGNvbnRhaW5z
IHRyYWNrcyB3aXRoIGNvZGVjcyB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCBzdXBwb3J0LAorICAg
ICAgICAvLyB0aGVuIHJ1biB0aGUgZW5kIG9mIHN0cmVhbSBhbGdvcml0aG0gd2l0aCB0aGUgZXJy
b3IgcGFyYW1ldGVyIHNldCB0byAiZGVjb2RlIiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAg
ICAgIC8vIE5PVEU6IFRoaXMgY2hlY2sgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBTb3Vy
Y2VCdWZmZXJQcml2YXRlLgorCisgICAgICAgIC8vIDUuMiBGb3IgZWFjaCBhdWRpbyB0cmFjayBp
biB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKKyAgICAg
ICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC5hdWRpb1RyYWNrcy5iZWdpbigpOyBpdCAhPSBzZWdt
ZW50LmF1ZGlvVHJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBBdWRpb1RyYWNrUHJp
dmF0ZSogYXVkaW9UcmFja1ByaXZhdGUgPSBpdC0+dHJhY2suZ2V0KCk7CisKKyAgICAgICAgICAg
IC8vIDUuMi4xIExldCBuZXcgYXVkaW8gdHJhY2sgYmUgYSBuZXcgQXVkaW9UcmFjayBvYmplY3Qu
CisgICAgICAgICAgICAvLyA1LjIuMiBHZW5lcmF0ZSBhIHVuaXF1ZSBJRCBhbmQgYXNzaWduIGl0
IHRvIHRoZSBpZCBwcm9wZXJ0eSBvbiBuZXcgdmlkZW8gdHJhY2suCisgICAgICAgICAgICBSZWZQ
dHI8QXVkaW9UcmFjaz4gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBh
dWRpb1RyYWNrUHJpdmF0ZSk7CisgICAgICAgICAgICBuZXdBdWRpb1RyYWNrLT5zZXRTb3VyY2VC
dWZmZXIodGhpcyk7CisKKyAgICAgICAgICAgIC8vIDUuMi4zIElmIGF1ZGlvVHJhY2tzLmxlbmd0
aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgICAgIGlm
ICghYXVkaW9UcmFja3MoKS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyA1LjIuMy4x
IFNldCB0aGUgZW5hYmxlZCBwcm9wZXJ0eSBvbiBuZXcgYXVkaW8gdHJhY2sgdG8gdHJ1ZS4KKyAg
ICAgICAgICAgICAgICBuZXdBdWRpb1RyYWNrLT5zZXRFbmFibGVkKHRydWUpOworCisgICAgICAg
ICAgICAgICAgLy8gNS4yLjMuMiBTZXQgYWN0aXZlIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAg
ICAgICAgICAgICBhY3RpdmVUcmFja0ZsYWcgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyA1LjIuNCBBZGQgbmV3IGF1ZGlvIHRyYWNrIHRvIHRoZSBhdWRpb1RyYWNrcyBh
dHRyaWJ1dGUgb24gdGhpcyBTb3VyY2VCdWZmZXIgb2JqZWN0LgorICAgICAgICAgICAgLy8gNS4y
LjUgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0
aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxl
LCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIEF1ZGlvVHJh
Y2tMaXN0IG9iamVjdAorICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgYXVkaW9UcmFj
a3MgYXR0cmlidXRlIG9uIHRoaXMgU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIGF1
ZGlvVHJhY2tzKCktPmFwcGVuZChuZXdBdWRpb1RyYWNrKTsKKworICAgICAgICAgICAgLy8gNS4y
LjYgQWRkIG5ldyBhdWRpbyB0cmFjayB0byB0aGUgYXVkaW9UcmFja3MgYXR0cmlidXRlIG9uIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAgICAgLy8gNS4yLjcgUXVldWUgYSB0YXNrIHRv
IGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJs
ZSBhbmQgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRo
ZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdAorICAg
ICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgYXVkaW9UcmFja3MgYXR0cmlidXRlIG9uIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT5hdWRpb1RyYWNrcygpLT5hcHBlbmQobmV3QXVkaW9UcmFjayk7CisKKyAgICAgICAgICAgIC8v
IDUuMi44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZv
ciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgQVNTRVJUKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRh
aW5zKG5ld0F1ZGlvVHJhY2stPmlkKCkpKTsKKyAgICAgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFj
a0J1ZmZlciA9IG1fdHJhY2tCdWZmZXJNYXAuYWRkKG5ld0F1ZGlvVHJhY2stPmlkKCksIFRyYWNr
QnVmZmVyKCkpLml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAgICAgICAgLy8gNS4yLjkgQWRkIHRo
ZSB0cmFjayBkZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgor
ICAgICAgICAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBpdC0+ZGVzY3JpcHRpb247Cisg
ICAgICAgIH0KKworICAgICAgICAvLyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4gdGhlIGlu
aXRpYWxpemF0aW9uIHNlZ21lbnQsIHJ1biBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGZvciAo
YXV0byBpdCA9IHNlZ21lbnQudmlkZW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC52aWRl
b1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgVmlkZW9UcmFja1ByaXZhdGUqIHZp
ZGVvVHJhY2tQcml2YXRlID0gaXQtPnRyYWNrLmdldCgpOworCisgICAgICAgICAgICAvLyA1LjMu
MSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0LgorICAgICAg
ICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBpdCB0byB0aGUg
aWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgorICAgICAgICAgICAgUmVmUHRyPFZpZGVv
VHJhY2s+IG5ld1ZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhpcywgdmlkZW9UcmFj
a1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VmlkZW9UcmFjay0+c2V0U291cmNlQnVmZmVyKHRo
aXMpOworCisgICAgICAgICAgICAvLyA1LjMuMyBJZiB2aWRlb1RyYWNrcy5sZW5ndGggZXF1YWxz
IDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICBpZiAoIXZpZGVv
VHJhY2tzKCktPmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gNS4zLjMuMSBTZXQgdGhl
IHNlbGVjdGVkIHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjayB0byB0cnVlLgorICAgICAgICAg
ICAgICAgIG5ld1ZpZGVvVHJhY2stPnNldFNlbGVjdGVkKHRydWUpOworCisgICAgICAgICAgICAg
ICAgLy8gNS4zLjMuMiBTZXQgYWN0aXZlIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAg
ICAgICBhY3RpdmVUcmFja0ZsYWcgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyA1LjMuNCBBZGQgbmV3IHZpZGVvIHRyYWNrIHRvIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1
dGUgb24gdGhpcyBTb3VyY2VCdWZmZXIgb2JqZWN0LgorICAgICAgICAgICAgLy8gNS4zLjUgUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRv
ZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQg
dGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0
IG9iamVjdAorICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0
cmlidXRlIG9uIHRoaXMgU291cmNlQnVmZmVyIG9iamVjdC4KKyAgICAgICAgICAgIHZpZGVvVHJh
Y2tzKCktPmFwcGVuZChuZXdWaWRlb1RyYWNrKTsKKworICAgICAgICAgICAgLy8gNS4zLjYgQWRk
IG5ldyB2aWRlbyB0cmFjayB0byB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1M
TWVkaWFFbGVtZW50LgorICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUg
YSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQg
aXMKKyAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFj
a0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAorICAgICAgICAg
ICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1M
TWVkaWFFbGVtZW50LgorICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT52aWRl
b1RyYWNrcygpLT5hcHBlbmQobmV3VmlkZW9UcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuMy44
IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlz
IHRyYWNrLgorICAgICAgICAgICAgQVNTRVJUKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRhaW5zKG5l
d1ZpZGVvVHJhY2stPmlkKCkpKTsKKyAgICAgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZl
ciA9IG1fdHJhY2tCdWZmZXJNYXAuYWRkKG5ld1ZpZGVvVHJhY2stPmlkKCksIFRyYWNrQnVmZmVy
KCkpLml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAgICAgICAgLy8gNS4zLjkgQWRkIHRoZSB0cmFj
ayBkZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgorICAgICAg
ICAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBpdC0+ZGVzY3JpcHRpb247CisgICAgICAg
IH0KKworICAgICAgICAvLyA1LjQgRm9yIGVhY2ggdGV4dCB0cmFjayBpbiB0aGUgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgZm9yIChhdXRvIGl0
ID0gc2VnbWVudC50ZXh0VHJhY2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQudGV4dFRyYWNrcy5l
bmQoKTsgKytpdCkgeworICAgICAgICAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSogdGV4dFRy
YWNrUHJpdmF0ZSA9IGl0LT50cmFjay5nZXQoKTsKKworICAgICAgICAgICAgLy8gNS40LjEgTGV0
IG5ldyB0ZXh0IHRyYWNrIGJlIGEgbmV3IFRleHRUcmFjayBvYmplY3Qgd2l0aCBpdHMgcHJvcGVy
dGllcyBwb3B1bGF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgIC8vIGFwcHJvcHJpYXRlIGluZm9y
bWF0aW9uIGZyb20gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisgICAgICAgICAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrPiBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHRleHRUcmFja1ByaXZhdGUpOworCisg
ICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBuZXcgdGV4dCB0cmFj
ayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3RpdmUKKyAgICAgICAg
ICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAgIGlmICh0ZXh0VHJhY2tQcml2
YXRlLT5tb2RlKCkgIT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJsZWQpCisgICAgICAg
ICAgICAgICAgYWN0aXZlVHJhY2tGbGFnID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gNS40LjMg
QWRkIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGlzIFNv
dXJjZUJ1ZmZlciBvYmplY3QuCisgICAgICAgICAgICAvLyA1LjQuNCBRdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxl
IGFuZCBpcworICAgICAgICAgICAgLy8gbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhl
IFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGlzCisg
ICAgICAgICAgICAvLyBTb3VyY2VCdWZmZXIgb2JqZWN0LgorICAgICAgICAgICAgdGV4dFRyYWNr
cygpLT5hcHBlbmQobmV3VGV4dFRyYWNrKTsKKworICAgICAgICAgICAgLy8gNS40LjUgQWRkIG5l
dyB0ZXh0IHRyYWNrIHRvIHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KKyAgICAgICAgICAgIC8vIDUuNC42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1
c3RlZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCisg
ICAgICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVu
dCBpbnRlcmZhY2UsIGF0IHRoZSBUZXh0VHJhY2tMaXN0IG9iamVjdAorICAgICAgICAgICAgLy8g
cmVmZXJlbmNlZCBieSB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVs
ZW1lbnQuCisgICAgICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja3Mo
KS0+YXBwZW5kKG5ld1RleHRUcmFjayk7CisKKyAgICAgICAgICAgIC8vIDUuNC43IENyZWF0ZSBh
IG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgor
ICAgICAgICAgICAgQVNTRVJUKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRhaW5zKHRleHRUcmFja1By
aXZhdGUtPmlkKCkpKTsKKyAgICAgICAgICAgIFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciA9IG1f
dHJhY2tCdWZmZXJNYXAuYWRkKHRleHRUcmFja1ByaXZhdGUtPmlkKCksIFRyYWNrQnVmZmVyKCkp
Lml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAgICAgICAgLy8gNS40LjggQWRkIHRoZSB0cmFjayBk
ZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgorICAgICAgICAg
ICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBpdC0+ZGVzY3JpcHRpb247CisgICAgICAgIH0K
KworICAgICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4g
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGlmIChhY3RpdmVUcmFja0ZsYWcpIHsK
KyAgICAgICAgICAgIC8vIDUuNS4xIEFkZCB0aGlzIFNvdXJjZUJ1ZmZlciB0byBhY3RpdmVTb3Vy
Y2VCdWZmZXJzLgorICAgICAgICAgICAgc2V0QWN0aXZlKHRydWUpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gNS42IFNldCBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50IGZsYWcgdG8gdHJ1
ZS4KKyAgICAgICAgbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsK
KyAgICB9CisKKyAgICAvLyA2LiBJZiB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0
dHJpYnV0ZSBpcyBIQVZFX05PVEhJTkcsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cisg
ICAgaWYgKG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhUGxheWVyOjpIYXZlTm90aGlu
ZykgeworICAgICAgICAvLyA2LjEgSWYgb25lIG9yIG1vcmUgb2JqZWN0cyBpbiBzb3VyY2VCdWZm
ZXJzIGhhdmUgZmlyc3QgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmbGFnIHNldCB0byBmYWxzZSwg
dGhlbiBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb25nIGkgPSAw
OyBpIDwgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlcnMoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCFtX3NvdXJjZS0+c291cmNlQnVmZmVycygpLT5pdGVtKGkpLT5tX3JlY2VpdmVk
Rmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gNi4yIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0
YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBLgorICAgICAgICAvLyA2LjMgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQgdGhlIG1l
ZGlhIGVsZW1lbnQuCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhKTsKKyAgICB9CisKKyAgICAvLyA3LiBJZiB0aGUgYWN0aXZlIHRyYWNr
IGZsYWcgZXF1YWxzIHRydWUgYW5kIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUKKyAg
ICAvLyBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhBVkVfQ1VSUkVOVF9EQVRBLCB0aGVuIHNl
dCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlCisgICAgLy8gYXR0cmlidXRlIHRvIEhB
VkVfTUVUQURBVEEuCisgICAgaWYgKGFjdGl2ZVRyYWNrRmxhZyAmJiBtX3ByaXZhdGUtPnJlYWR5
U3RhdGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGEpCisgICAgICAgIG1fcHJpdmF0
ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKTsKIH0KIAotdm9pZCBT
b3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1
ZmZlclByaXZhdGUqLCBQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPikKK2Jvb2wgU291cmNlQnVmZmVy
Ojp2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21l
bnQmIHNlZ21lbnQpCiB7CisgICAgLy8gMy4xLiBWZXJpZnkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzLiBJZiBhbnkgb2YgdGhlIGNoZWNrcyBmYWlsIHRoZW4gcnVuIHRoZSBlbmQgb2Ygc3RyZWFt
CisgICAgLy8gYWxnb3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gImRlY29k
ZSIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vICAgKiBUaGUgbnVtYmVyIG9mIGF1ZGlv
LCB2aWRlbywgYW5kIHRleHQgdHJhY2tzIG1hdGNoIHdoYXQgd2FzIGluIHRoZSBmaXJzdCBpbml0
aWFsaXphdGlvbiBzZWdtZW50LgorICAgIGlmIChzZWdtZW50LmF1ZGlvVHJhY2tzLnNpemUoKSAh
PSBhdWRpb1RyYWNrcygpLT5sZW5ndGgoKQorICAgICAgICB8fCBzZWdtZW50LnZpZGVvVHJhY2tz
LnNpemUoKSAhPSB2aWRlb1RyYWNrcygpLT5sZW5ndGgoKQorICAgICAgICB8fCBzZWdtZW50LnRl
eHRUcmFja3Muc2l6ZSgpICE9IHRleHRUcmFja3MoKS0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vICAgKiBUaGUgY29kZWNzIGZvciBlYWNoIHRyYWNrLCBtYXRjaCB3
aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIGZpcnN0IGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisg
ICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC5hdWRpb1RyYWNrcy5iZWdpbigpOyBpdCAhPSBzZWdt
ZW50LmF1ZGlvVHJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICghbV92aWRlb0NvZGVj
cy5jb250YWlucyhpdC0+ZGVzY3JpcHRpb24tPmNvZGVjKCkpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGZvciAoYXV0byBpdCA9IHNlZ21lbnQudmlkZW9UcmFja3Mu
YmVnaW4oKTsgaXQgIT0gc2VnbWVudC52aWRlb1RyYWNrcy5lbmQoKTsgKytpdCkgeworICAgICAg
ICBpZiAoIW1fYXVkaW9Db2RlY3MuY29udGFpbnMoaXQtPmRlc2NyaXB0aW9uLT5jb2RlYygpKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gaXQgPSBz
ZWdtZW50LnZpZGVvVHJhY2tzLmJlZ2luKCk7IGl0ICE9IHNlZ21lbnQudmlkZW9UcmFja3MuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgaWYgKCFtX3RleHRDb2RlY3MuY29udGFpbnMoaXQtPmRlc2Ny
aXB0aW9uLT5jb2RlYygpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyAgICogSWYgbW9yZSB0aGFuIG9uZSB0cmFjayBmb3IgYSBzaW5nbGUgdHlwZSBhcmUgcHJl
c2VudCAoaWUgMiBhdWRpbyB0cmFja3MpLCB0aGVuIHRoZSBUcmFjaworICAgIC8vICAgSURzIG1h
dGNoIHRoZSBvbmVzIGluIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50LgorICAgIGlm
IChzZWdtZW50LmF1ZGlvVHJhY2tzLnNpemUoKSA+PSAyKSB7CisgICAgICAgIGZvciAoYXV0byBp
dCA9IHNlZ21lbnQuYXVkaW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC5hdWRpb1RyYWNr
cy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRh
aW5zKGl0LT50cmFjay0+aWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHNlZ21lbnQudmlkZW9UcmFja3Muc2l6ZSgpID49IDIp
IHsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0gc2VnbWVudC52aWRlb1RyYWNrcy5iZWdpbigpOyBp
dCAhPSBzZWdtZW50LnZpZGVvVHJhY2tzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAo
IW1fdHJhY2tCdWZmZXJNYXAuY29udGFpbnMoaXQtPnRyYWNrLT5pZCgpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2VnbWVudC50
ZXh0VHJhY2tzLnNpemUoKSA+PSAyKSB7CisgICAgICAgIGZvciAoYXV0byBpdCA9IHNlZ21lbnQu
dmlkZW9UcmFja3MuYmVnaW4oKTsgaXQgIT0gc2VnbWVudC52aWRlb1RyYWNrcy5lbmQoKTsgKytp
dCkgeworICAgICAgICAgICAgaWYgKCFtX3RyYWNrQnVmZmVyTWFwLmNvbnRhaW5zKGl0LT50cmFj
ay0+aWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NsYXNzIFNhbXBsZUxlc3NUaGFuQ29tcGFyYXRv
ciB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKHN0ZDo6cGFpcjxNZWRpYVRpbWUsIFJl
ZlB0cjxNZWRpYVNhbXBsZT4+IHZhbHVlMSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1l
ZGlhU2FtcGxlPj4gdmFsdWUyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlMS5maXJzdCA8
IHZhbHVlMi5maXJzdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yKCkoTWVkaWFUaW1lIHZh
bHVlMSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlMSA8IHZhbHVlMi5maXJzdDsKKyAgICB9CisKKyAg
ICBib29sIG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxl
Pj4gdmFsdWUxLCBNZWRpYVRpbWUgdmFsdWUyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
MS5maXJzdCA8IHZhbHVlMjsKKyAgICB9Cit9OworCitjbGFzcyBTYW1wbGVDb250YWluc01lZGlh
VGltZUNvbXBhcmF0b3IgeworcHVibGljOgorICAgIGJvb2wgY29udGFpbnMoTWVkaWFTYW1wbGUq
IHNhbXBsZSwgTWVkaWFUaW1lIHRpbWUpCisgICAgeworICAgICAgICBNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uU3RhcnRUaW1lID0gc2FtcGxlLT5wcmVzZW50YXRpb25UaW1lKCk7CisgICAgICAgIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25FbmRUaW1lID0gcHJlc2VudGF0aW9uU3RhcnRUaW1lICsgc2Ft
cGxlLT5kdXJhdGlvbigpOworICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uU3RhcnRUaW1lIDw9
IHRpbWUgJiYgcHJlc2VudGF0aW9uRW5kVGltZSA+IHRpbWU7CisgICAgfQorICAgIGJvb2wgb3Bl
cmF0b3IoKShzdGQ6OnBhaXI8TWVkaWFUaW1lLCBSZWZQdHI8TWVkaWFTYW1wbGU+PiB2YWx1ZSwg
TWVkaWFUaW1lIHRpbWUpCisgICAgeworICAgICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uU3Rh
cnRUaW1lID0gdmFsdWUuc2Vjb25kLT5wcmVzZW50YXRpb25UaW1lKCk7CisgICAgICAgIE1lZGlh
VGltZSBwcmVzZW50YXRpb25FbmRUaW1lID0gcHJlc2VudGF0aW9uU3RhcnRUaW1lICsgdmFsdWUu
c2Vjb25kLT5kdXJhdGlvbigpOworICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uU3RhcnRUaW1l
IDwgdGltZSAmJiBwcmVzZW50YXRpb25FbmRUaW1lIDw9IHRpbWU7CisgICAgfQorfTsKKworY2xh
c3MgU2FtcGxlUHJlc2VudGF0aW9uVGltZUlzV2l0aGluUmFuZ2VDb21wYXJhdG9yIHsKK3B1Ymxp
YzoKKyAgICBib29sIG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgTWVkaWFUaW1lPiBy
YW5nZSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gcmFuZ2Uuc2Vjb25kIDwgdmFsdWUuZmlyc3Q7CisgICAgfQor
ICAgIGJvb2wgb3BlcmF0b3IoKShzdGQ6OnBhaXI8TWVkaWFUaW1lLCBSZWZQdHI8TWVkaWFTYW1w
bGU+PiB2YWx1ZSwgc3RkOjpwYWlyPE1lZGlhVGltZSwgTWVkaWFUaW1lPiByYW5nZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2YWx1ZS5maXJzdCA8IHJhbmdlLmZpcnN0OworICAgIH0KK307CisK
K2NsYXNzIFNhbXBsZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRlIHsKK3B1YmxpYzoKKyAgICBib29s
IG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlhVGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUuc2Vjb25kLT5mbGFncygpID09IE1lZGlh
U2FtcGxlOjpJc1N5bmM7CisgICAgfQorfTsKKwordm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQYXNzUmVm
UHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUpCit7CisgICAgLy8gMy41LjggQ29kZWQgRnJhbWUgUHJv
Y2Vzc2luZworICAgIC8vIFdoZW4gY29tcGxldGUgY29kZWQgZnJhbWVzIGhhdmUgYmVlbiBwYXJz
ZWQgYnkgdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgdGhlbiB0aGUgZm9sbG93aW5nIHN0ZXBzCisg
ICAgLy8gYXJlIHJ1bjoKKyAgICAvLyAxLiBGb3IgZWFjaCBjb2RlZCBmcmFtZSBpbiB0aGUgbWVk
aWEgc2VnbWVudCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIExvb3AgVG9w
CisgICAgZG8geworICAgICAgICAvLyAxLjEgKGN0ZCkgTGV0IHByZXNlbnRhdGlvbiB0aW1lc3Rh
bXAgYmUgYSBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHJlcHJlc2VudGF0aW9uIG9m
CisgICAgICAgIC8vIHRoZSBjb2RlZCBmcmFtZSdzIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgaW4g
c2Vjb25kcy4KKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWVzdGFtcCA9IHNhbXBs
ZS0+cHJlc2VudGF0aW9uVGltZSgpOworCisgICAgICAgIC8vIDEuMiBMZXQgZGVjb2RlIHRpbWVz
dGFtcCBiZSBhIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGNvZGVkIGZyYW1lJ3MKKyAgICAgICAgLy8gZGVjb2RlIHRpbWVzdGFtcCBpbiBzZWNv
bmRzLgorICAgICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZXN0YW1wID0gc2FtcGxlLT5kZWNvZGVU
aW1lKCk7CisKKyAgICAgICAgLy8gMS4zIExldCBmcmFtZSBkdXJhdGlvbiBiZSBhIGRvdWJsZSBw
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvZGVkIGZyYW1l
J3MKKyAgICAgICAgLy8gZHVyYXRpb24gaW4gc2Vjb25kcy4KKyAgICAgICAgTWVkaWFUaW1lIGZy
YW1lRHVyYXRpb24gPSBzYW1wbGUtPmR1cmF0aW9uKCk7CisKKyAgICAgICAgLy8gMS40IElmIG1v
ZGUgZXF1YWxzICJzZXF1ZW5jZSIgYW5kIGdyb3VwIHN0YXJ0IHRpbWVzdGFtcCBpcyBzZXQsIHRo
ZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9y
dCBmb3IgInNlcXVlbmNlIiBtb2RlCisKKyAgICAgICAgLy8gMS41IElmIHRpbWVzdGFtcE9mZnNl
dCBpcyBub3QgMCwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgaWYgKG1f
dGltZXN0YW1wT2Zmc2V0ICE9IE1lZGlhVGltZTo6emVyb1RpbWUoKSkgeworICAgICAgICAgICAg
Ly8gMS41LjEgQWRkIHRpbWVzdGFtcE9mZnNldCB0byB0aGUgcHJlc2VudGF0aW9uIHRpbWVzdGFt
cC4KKyAgICAgICAgICAgIHByZXNlbnRhdGlvblRpbWVzdGFtcCArPSBtX3RpbWVzdGFtcE9mZnNl
dDsKKworICAgICAgICAgICAgLy8gMS41LjIgQWRkIHRpbWVzdGFtcE9mZnNldCB0byB0aGUgZGVj
b2RlIHRpbWVzdGFtcC4KKyAgICAgICAgICAgIGRlY29kZVRpbWVzdGFtcCArPSBtX3RpbWVzdGFt
cE9mZnNldDsKKworICAgICAgICAgICAgLy8gMS41LjMgSWYgdGhlIHByZXNlbnRhdGlvbiB0aW1l
c3RhbXAgb3IgZGVjb2RlIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gdGhlIHByZXNlbnRhdGlvbiBz
dGFydAorICAgICAgICAgICAgLy8gdGltZSwgdGhlbiBydW4gdGhlIGVuZCBvZiBzdHJlYW0gYWxn
b3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gImRlY29kZSIsIGFuZAorICAg
ICAgICAgICAgLy8gYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgICAgICAgICBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uU3RhcnRUaW1lID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworICAgICAgICAgICAg
aWYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCA8IHByZXNlbnRhdGlvblN0YXJ0VGltZSB8fCBkZWNv
ZGVUaW1lc3RhbXAgPCBwcmVzZW50YXRpb25TdGFydFRpbWUpIHsKKyAgICAgICAgICAgICAgICBt
X3NvdXJjZS0+ZW5kT2ZTdHJlYW0oZGVjb2RlRXJyb3IoKSwgSWdub3JhYmxlRXhjZXB0aW9uQ29k
ZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyAxLjYgTGV0IHRyYWNrIGJ1ZmZlciBlcXVhbCB0aGUgdHJhY2sgYnVmZmVy
IHRoYXQgdGhlIGNvZGVkIGZyYW1lIHdpbGwgYmUgYWRkZWQgdG8uCisgICAgICAgIEF0b21pY1N0
cmluZyB0cmFja0lEID0gc2FtcGxlLT50cmFja0lEKCk7CisgICAgICAgIGF1dG8gaXQgPSBtX3Ry
YWNrQnVmZmVyTWFwLmZpbmQodHJhY2tJRCk7CisgICAgICAgIGlmIChpdCA9PSBtX3RyYWNrQnVm
ZmVyTWFwLmVuZCgpKQorICAgICAgICAgICAgaXQgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFj
a0lELCBUcmFja0J1ZmZlcigpKS5pdGVyYXRvcjsKKyAgICAgICAgVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyID0gaXQtPnZhbHVlOworCisgICAgICAgIC8vIDEuNyBJZiBsYXN0IGRlY29kZSB0aW1l
c3RhbXAgZm9yIHRyYWNrIGJ1ZmZlciBpcyBzZXQgYW5kIGRlY29kZSB0aW1lc3RhbXAgaXMgbGVz
cyB0aGFuIGxhc3QKKyAgICAgICAgLy8gZGVjb2RlIHRpbWVzdGFtcDoKKyAgICAgICAgLy8gT1IK
KyAgICAgICAgLy8gSWYgbGFzdCBkZWNvZGUgdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgaXMg
c2V0IGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRlY29kZSB0aW1lc3RhbXAgYW5kCisgICAg
ICAgIC8vIGxhc3QgZGVjb2RlIHRpbWVzdGFtcCBpcyBncmVhdGVyIHRoYW4gMiB0aW1lcyBsYXN0
IGZyYW1lIGR1cmF0aW9uOgorICAgICAgICBpZiAodHJhY2tCdWZmZXIubGFzdERlY29kZVRpbWVz
dGFtcC5pc1ZhbGlkKCkgJiYgKGRlY29kZVRpbWVzdGFtcCA8IHRyYWNrQnVmZmVyLmxhc3REZWNv
ZGVUaW1lc3RhbXAKKyAgICAgICAgICAgIHx8IGFicyhkZWNvZGVUaW1lc3RhbXAgLSB0cmFja0J1
ZmZlci5sYXN0RGVjb2RlVGltZXN0YW1wKSA+ICh0cmFja0J1ZmZlci5sYXN0RnJhbWVEdXJhdGlv
biAqIDIpKSkgeworICAgICAgICAgICAgLy8gMS43LjEgSWYgbW9kZSBlcXVhbHMgInNlZ21lbnRz
IjoKKyAgICAgICAgICAgIC8vIFNldCBoaWdoZXN0IHByZXNlbnRhdGlvbiBlbmQgdGltZXN0YW1w
IHRvIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAuCisgICAgICAgICAgICBtX2hpZ2hlc3RQcmVzZW50
YXRpb25FbmRUaW1lc3RhbXAgPSBwcmVzZW50YXRpb25UaW1lc3RhbXA7CisKKyAgICAgICAgICAg
IC8vIElmIG1vZGUgZXF1YWxzICJzZXF1ZW5jZSI6CisgICAgICAgICAgICAvLyBTZXQgZ3JvdXAg
c3RhcnQgdGltZXN0YW1wIGVxdWFsIHRvIHRoZSBoaWdoZXN0IHByZXNlbnRhdGlvbiBlbmQgdGlt
ZXN0YW1wLgorICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciAic2VxdWVuY2Ui
IG1vZGUuCisKKyAgICAgICAgICAgIGZvciAoYXV0byBpID0gbV90cmFja0J1ZmZlck1hcC52YWx1
ZXMoKS5iZWdpbigpOyBpICE9IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkuZW5kKCk7ICsraSkg
eworICAgICAgICAgICAgICAgIC8vIDEuNy4yIFVuc2V0IHRoZSBsYXN0IGRlY29kZSB0aW1lc3Rh
bXAgb24gYWxsIHRyYWNrIGJ1ZmZlcnMuCisgICAgICAgICAgICAgICAgaS0+bGFzdERlY29kZVRp
bWVzdGFtcCA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKyAgICAgICAgICAgICAgICAvLyAx
LjcuMyBVbnNldCB0aGUgbGFzdCBmcmFtZSBkdXJhdGlvbiBvbiBhbGwgdHJhY2sgYnVmZmVycy4K
KyAgICAgICAgICAgICAgICBpLT5sYXN0RnJhbWVEdXJhdGlvbiA9IE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKTsKKyAgICAgICAgICAgICAgICAvLyAxLjcuNCBVbnNldCB0aGUgaGlnaGVzdCBwcmVz
ZW50YXRpb24gdGltZXN0YW1wIG9uIGFsbCB0cmFjayBidWZmZXJzLgorICAgICAgICAgICAgICAg
IGktPmhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCk7CisgICAgICAgICAgICAgICAgLy8gMS43LjUgU2V0IHRoZSBuZWVkIHJhbmRvbSBhY2Nlc3Mg
cG9pbnQgZmxhZyBvbiBhbGwgdHJhY2sgYnVmZmVycyB0byB0cnVlLgorICAgICAgICAgICAgICAg
IGktPm5lZWRSYW5kb21BY2Nlc3NGbGFnID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gMS43LjYgSnVtcCB0byB0aGUgTG9vcCBUb3Agc3RlcCBhYm92ZSB0byByZXN0YXJ0
IHByb2Nlc3Npbmcgb2YgdGhlIGN1cnJlbnQgY29kZWQgZnJhbWUuCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDEuOCBMZXQgZnJhbWUgZW5kIHRpbWVzdGFt
cCBlcXVhbCB0aGUgc3VtIG9mIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgYW5kIGZyYW1lIGR1cmF0
aW9uLgorICAgICAgICBNZWRpYVRpbWUgZnJhbWVFbmRUaW1lc3RhbXAgPSBwcmVzZW50YXRpb25U
aW1lc3RhbXAgKyBmcmFtZUR1cmF0aW9uOworCisgICAgICAgIC8vIDEuOSBJZiBwcmVzZW50YXRp
b24gdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBhcHBlbmRXaW5kb3dTdGFydCwgdGhlbiBzZXQgdGhl
IG5lZWQgcmFuZG9tIGFjY2VzcworICAgICAgICAvLyBwb2ludCBmbGFnIHRvIHRydWUsIGRyb3Ag
dGhlIGNvZGVkIGZyYW1lLCBhbmQganVtcCB0byB0aGUgdG9wIG9mIHRoZSBsb29wIHRvIHN0YXJ0
IHByb2Nlc3NpbmcKKyAgICAgICAgLy8gdGhlIG5leHQgY29kZWQgZnJhbWUuCisgICAgICAgIC8v
IDEuMTAgSWYgZnJhbWUgZW5kIHRpbWVzdGFtcCBpcyBncmVhdGVyIHRoYW4gYXBwZW5kV2luZG93
RW5kLCB0aGVuIHNldCB0aGUgbmVlZCByYW5kb20gYWNjZXNzCisgICAgICAgIC8vIHBvaW50IGZs
YWcgdG8gdHJ1ZSwgZHJvcCB0aGUgY29kZWQgZnJhbWUsIGFuZCBqdW1wIHRvIHRoZSB0b3Agb2Yg
dGhlIGxvb3AgdG8gc3RhcnQgcHJvY2Vzc2luZworICAgICAgICAvLyB0aGUgbmV4dCBjb2RlZCBm
cmFtZS4KKyAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhcHBlbmQgd2luZG93cworCisgICAg
ICAgIC8vIDEuMTEgSWYgdGhlIG5lZWQgcmFuZG9tIGFjY2VzcyBwb2ludCBmbGFnIG9uIHRyYWNr
IGJ1ZmZlciBlcXVhbHMgdHJ1ZSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAg
ICAgLy8gMS4xMS4xIElmIHRoZSBjb2RlZCBmcmFtZSBpcyBub3QgYSByYW5kb20gYWNjZXNzIHBv
aW50LCB0aGVuIGRyb3AgdGhlIGNvZGVkIGZyYW1lIGFuZCBqdW1wCisgICAgICAgIC8vIHRvIHRo
ZSB0b3Agb2YgdGhlIGxvb3AgdG8gc3RhcnQgcHJvY2Vzc2luZyB0aGUgbmV4dCBjb2RlZCBmcmFt
ZS4KKyAgICAgICAgLy8gMS4xMS4yIFNldCB0aGUgbmVlZCByYW5kb20gYWNjZXNzIHBvaW50IGZs
YWcgb24gdHJhY2sgYnVmZmVyIHRvIGZhbHNlLgorICAgICAgICAvLyBOT1RFOiBNb2NrU2FtcGxl
Qm94ZXMgYXJlIG5vdCBkZWNvZGFibGUuCisKKyAgICAgICAgLy8gMS4xMiBMZXQgc3BsaWNlZCBh
dWRpbyBmcmFtZSBiZSBhbiB1bnNldCB2YXJpYWJsZSBmb3IgaG9sZGluZyBhdWRpbyBzcGxpY2Ug
aW5mb3JtYXRpb24KKyAgICAgICAgLy8gMS4xMyBMZXQgc3BsaWNlZCB0aW1lZCB0ZXh0IGZyYW1l
IGJlIGFuIHVuc2V0IHZhcmlhYmxlIGZvciBob2xkaW5nIHRpbWVkIHRleHQgc3BsaWNlIGluZm9y
bWF0aW9uCisgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc2FtcGxlIHNwbGljaW5n
LgorCisgICAgICAgIFRyYWNrQnVmZmVyOjpTYW1wbGVNYXAgZXJhc2VkU2FtcGxlczsKKyAgICAg
ICAgTWVkaWFUaW1lIG1pY3Jvc2Vjb25kKDEsIDEwMDAwMDApOworCisgICAgICAgIC8vIDEuMTQg
SWYgbGFzdCBkZWNvZGUgdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgaXMgdW5zZXQgYW5kIHRo
ZXJlIGlzIGEgY29kZWQgZnJhbWUgaW4KKyAgICAgICAgLy8gdHJhY2sgYnVmZmVyIHdpdGggYSBw
cmVzZW50YXRpb24gdGltZXN0YW1wIGxlc3MgdGhhbiBvciBlcXVhbCB0byBwcmVzZW50YXRpb24g
dGltZXN0YW1wCisgICAgICAgIC8vIGFuZCBwcmVzZW50YXRpb24gdGltZXN0YW1wIGlzIGxlc3Mg
dGhhbiB0aGlzIGNvZGVkIGZyYW1lJ3MgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBwbHVzCisgICAg
ICAgIC8vIGl0cyBmcmFtZSBkdXJhdGlvbiwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
KyAgICAgICAgaWYgKHRyYWNrQnVmZmVyLmxhc3REZWNvZGVUaW1lc3RhbXAuaXNJbnZhbGlkKCkp
IHsKKyAgICAgICAgICAgIFNhbXBsZUNvbnRhaW5zTWVkaWFUaW1lQ29tcGFyYXRvciBjb21wYXJh
dG9yOworICAgICAgICAgICAgYXV0byBpdGVyID0gc3RkOjpsb3dlcl9ib3VuZCh0cmFja0J1ZmZl
ci5zYW1wbGVzLmJlZ2luKCksIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksIHByZXNlbnRhdGlv
blRpbWVzdGFtcCwgY29tcGFyYXRvcik7CisgICAgICAgICAgICBpZiAoaXRlciAhPSB0cmFja0J1
ZmZlci5zYW1wbGVzLmVuZCgpICYmIGNvbXBhcmF0b3IuY29udGFpbnMoaXRlci0+c2Vjb25kLmdl
dCgpLCBwcmVzZW50YXRpb25UaW1lc3RhbXApKSB7CisgICAgICAgICAgICAgICAgLy8gMS4xNC4x
IExldCBvdmVybGFwcGVkIGZyYW1lIGJlIHRoZSBjb2RlZCBmcmFtZSBpbiB0cmFjayBidWZmZXIg
dGhhdCBtYXRjaGVzIHRoZSBjb25kaXRpb24gYWJvdmUuCisgICAgICAgICAgICAgICAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBvdmVybGFwcGVkRnJhbWUgPSBpdGVyLT5zZWNvbmQ7CisKKyAgICAgICAg
ICAgICAgICAvLyAxLjE0LjIgSWYgdHJhY2sgYnVmZmVyIGNvbnRhaW5zIGF1ZGlvIGNvZGVkIGZy
YW1lczoKKyAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIGF1ZGlvIHNwbGljZSBmcmFtZSBhbGdv
cml0aG0gYW5kIGlmIGEgc3BsaWNlIGZyYW1lIGlzIHJldHVybmVkLCBhc3NpZ24gaXQgdG8KKyAg
ICAgICAgICAgICAgICAvLyBzcGxpY2VkIGF1ZGlvIGZyYW1lLgorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc2FtcGxlIHNwbGljaW5nLgorCisgICAgICAgICAgICAg
ICAgLy8gSWYgdHJhY2sgYnVmZmVyIGNvbnRhaW5zIHZpZGVvIGNvZGVkIGZyYW1lczoKKyAgICAg
ICAgICAgICAgICBpZiAodHJhY2tCdWZmZXIuZGVzY3JpcHRpb24tPmlzVmlkZW8oKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyAxLjE0LjIuMSBMZXQgb3ZlcmxhcHBlZCBmcmFtZSBwcmVzZW50
YXRpb24gdGltZXN0YW1wIGVxdWFsIHRoZSBwcmVzZW50YXRpb24gdGltZXN0YW1wCisgICAgICAg
ICAgICAgICAgICAgIC8vIG9mIG92ZXJsYXBwZWQgZnJhbWUuCisgICAgICAgICAgICAgICAgICAg
IE1lZGlhVGltZSBvdmVybGFwcGVkRnJhbWVQcmVzZW50YXRpb25UaW1lc3RhbXAgPSBvdmVybGFw
cGVkRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyAx
LjE0LjIuMiBMZXQgcmVtb3ZlIHdpbmRvdyB0aW1lc3RhbXAgZXF1YWwgb3ZlcmxhcHBlZCBmcmFt
ZSBwcmVzZW50YXRpb24gdGltZXN0YW1wCisgICAgICAgICAgICAgICAgICAgIC8vIHBsdXMgMSBt
aWNyb3NlY29uZC4KKyAgICAgICAgICAgICAgICAgICAgTWVkaWFUaW1lIHJlbW92ZVdpbmRvd1Rp
bWVzdGFtcCA9IG92ZXJsYXBwZWRGcmFtZVByZXNlbnRhdGlvblRpbWVzdGFtcCArIG1pY3Jvc2Vj
b25kOworCisgICAgICAgICAgICAgICAgICAgIC8vIDEuMTQuMi4zIElmIHRoZSBwcmVzZW50YXRp
b24gdGltZXN0YW1wIGlzIGxlc3MgdGhhbiB0aGUgcmVtb3ZlIHdpbmRvdyB0aW1lc3RhbXAsCisg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gcmVtb3ZlIG92ZXJsYXBwZWQgZnJhbWUgYW5kIGFu
eSBjb2RlZCBmcmFtZXMgdGhhdCBkZXBlbmQgb24gaXQgZnJvbSB0cmFjayBidWZmZXIuCisgICAg
ICAgICAgICAgICAgICAgIGlmIChwcmVzZW50YXRpb25UaW1lc3RhbXAgPCByZW1vdmVXaW5kb3dU
aW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IE1vY2tTYW1wbGVC
b3hlcyBkb24ndCBoYXZlIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgICAgICAgICAgZXJh
c2VkU2FtcGxlcy5pbnNlcnQoKml0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tC
dWZmZXIuc2FtcGxlcy5lcmFzZShpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRyYWNrIGJ1ZmZlciBjb250YWlu
cyB0aW1lZCB0ZXh0IGNvZGVkIGZyYW1lczoKKyAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIHRl
eHQgc3BsaWNlIGZyYW1lIGFsZ29yaXRobSBhbmQgaWYgYSBzcGxpY2UgZnJhbWUgaXMgcmV0dXJu
ZWQsIGFzc2lnbiBpdCB0byBzcGxpY2VkIHRpbWVkIHRleHQgZnJhbWUuCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzYW1wbGUgc3BsaWNpbmcuCisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyAxLjE1IFJlbW92ZSBleGlzdGluZyBjb2RlZCBm
cmFtZXMgaW4gdHJhY2sgYnVmZmVyOgorICAgICAgICAvLyBJZiBoaWdoZXN0IHByZXNlbnRhdGlv
biB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1ZmZlciBpcyBub3Qgc2V0OgorICAgICAgICBpZiAodHJh
Y2tCdWZmZXIuaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcC5pc0ludmFsaWQoKSkgeworICAg
ICAgICAgICAgLy8gUmVtb3ZlIGFsbCBjb2RlZCBmcmFtZXMgZnJvbSB0cmFjayBidWZmZXIgdGhh
dCBoYXZlIGEgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBncmVhdGVyIHRoYW4gb3IKKyAgICAgICAg
ICAgIC8vIGVxdWFsIHRvIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgYW5kIGxlc3MgdGhhbiBmcmFt
ZSBlbmQgdGltZXN0YW1wLgorICAgICAgICAgICAgU2FtcGxlUHJlc2VudGF0aW9uVGltZUlzV2l0
aGluUmFuZ2VDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisgICAgICAgICAgICBzdGQ6OnBhaXI8TWVk
aWFUaW1lLCBNZWRpYVRpbWU+IHJhbmdlKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgZnJhbWVFbmRU
aW1lc3RhbXApOworICAgICAgICAgICAgYXV0byBpdGVyX3BhaXIgPSBzdGQ6OmVxdWFsX3Jhbmdl
KHRyYWNrQnVmZmVyLnNhbXBsZXMuYmVnaW4oKSwgdHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSwg
cmFuZ2UsIGNvbXBhcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0ZXJfcGFpci5maXJzdCAhPSB0
cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgZXJhc2VkU2FtcGxl
cy5pbnNlcnQoaXRlcl9wYWlyLmZpcnN0LCBpdGVyX3BhaXIuc2Vjb25kKTsKKyAgICAgICAgICAg
ICAgICB0cmFja0J1ZmZlci5zYW1wbGVzLmVyYXNlKGl0ZXJfcGFpci5maXJzdCwgaXRlcl9wYWly
LnNlY29uZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBoaWdo
ZXN0IHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1ZmZlciBpcyBzZXQgYW5kIGxl
c3MgdGhhbiBwcmVzZW50YXRpb24gdGltZXN0YW1wCisgICAgICAgIGlmICh0cmFja0J1ZmZlci5o
aWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wLmlzVmFsaWQoKSAmJiB0cmFja0J1ZmZlci5oaWdo
ZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wIDwgcHJlc2VudGF0aW9uVGltZXN0YW1wKSB7CisgICAg
ICAgICAgICAvLyBSZW1vdmUgYWxsIGNvZGVkIGZyYW1lcyBmcm9tIHRyYWNrIGJ1ZmZlciB0aGF0
IGhhdmUgYSBwcmVzZW50YXRpb24gdGltZXN0YW1wIGdyZWF0ZXIgdGhhbiBoaWdoZXN0CisgICAg
ICAgICAgICAvLyBwcmVzZW50YXRpb24gdGltZXN0YW1wIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwg
dG8gZnJhbWUgZW5kIHRpbWVzdGFtcC4KKyAgICAgICAgICAgIFNhbXBsZVByZXNlbnRhdGlvblRp
bWVJc1dpdGhpblJhbmdlQ29tcGFyYXRvciBjb21wYXJhdG9yOworICAgICAgICAgICAgc3RkOjpw
YWlyPE1lZGlhVGltZSwgTWVkaWFUaW1lPiByYW5nZSh0cmFja0J1ZmZlci5oaWdoZXN0UHJlc2Vu
dGF0aW9uVGltZXN0YW1wLCBmcmFtZUVuZFRpbWVzdGFtcCk7CisgICAgICAgICAgICBhdXRvIGl0
ZXJfcGFpciA9IHN0ZDo6ZXF1YWxfcmFuZ2UodHJhY2tCdWZmZXIuc2FtcGxlcy5iZWdpbigpLCB0
cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCByYW5nZSwgY29tcGFyYXRvcik7CisgICAgICAgICAg
ICBpZiAoaXRlcl9wYWlyLmZpcnN0ICE9IHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICBlcmFzZWRTYW1wbGVzLmluc2VydChpdGVyX3BhaXIuZmlyc3QsIGl0ZXJf
cGFpci5zZWNvbmQpOworICAgICAgICAgICAgICAgIHRyYWNrQnVmZmVyLnNhbXBsZXMuZXJhc2Uo
aXRlcl9wYWlyLmZpcnN0LCBpdGVyX3BhaXIuc2Vjb25kKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIDEuMTYgUmVtb3ZlIGRlY29kaW5nIGRlcGVuZGVuY2llcyBvZiB0
aGUgY29kZWQgZnJhbWVzIHJlbW92ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXA6CisgICAgICAgIGlm
ICghZXJhc2VkU2FtcGxlcy5lbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBJZiBkZXRhaWxlZCBp
bmZvcm1hdGlvbiBhYm91dCBkZWNvZGluZyBkZXBlbmRlbmNpZXMgaXMgYXZhaWxhYmxlOgorICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBkZXRhaWxlZCBkZXBlbmRlbmN5IGlu
Zm9ybWF0aW9uCisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZTogUmVtb3ZlIGFsbCBjb2RlZCBm
cmFtZXMgYmV0d2VlbiB0aGUgY29kZWQgZnJhbWVzIHJlbW92ZWQgaW4gdGhlIHByZXZpb3VzIHN0
ZXAKKyAgICAgICAgICAgIC8vIGFuZCB0aGUgbmV4dCByYW5kb20gYWNjZXNzIHBvaW50IGFmdGVy
IHRob3NlIHJlbW92ZWQgZnJhbWVzLgorICAgICAgICAgICAgYXV0byBmaXJzdF9pdGVyID0gc3Rk
Ojp1cHBlcl9ib3VuZCh0cmFja0J1ZmZlci5zYW1wbGVzLmJlZ2luKCksIHRyYWNrQnVmZmVyLnNh
bXBsZXMuZW5kKCksICplcmFzZWRTYW1wbGVzLmJlZ2luKCksIFNhbXBsZUxlc3NUaGFuQ29tcGFy
YXRvcigpKTsKKyAgICAgICAgICAgIGF1dG8gc2Vjb25kX2l0ZXIgPSBzdGQ6OmZpbmRfaWYoZmly
c3RfaXRlciwgdHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSwgU2FtcGxlSXNSYW5kb21BY2Nlc3NQ
cmVkaWNhdGUoKSk7CisgICAgICAgICAgICBpZiAoZmlyc3RfaXRlciAhPSB0cmFja0J1ZmZlci5z
YW1wbGVzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgdHJhY2tCdWZmZXIuc2FtcGxlcy5lcmFz
ZShmaXJzdF9pdGVyLCBzZWNvbmRfaXRlcik7CisgICAgICAgICAgICAgICAgZXJhc2VkU2FtcGxl
cy5pbnNlcnQoZmlyc3RfaXRlciwgc2Vjb25kX2l0ZXIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgLy8gMS4xNyBJZiBzcGxpY2VkIGF1ZGlvIGZyYW1lIGlzIHNldDoKKyAg
ICAgICAgLy8gQWRkIHNwbGljZWQgYXVkaW8gZnJhbWUgdG8gdGhlIHRyYWNrIGJ1ZmZlci4KKyAg
ICAgICAgLy8gSWYgc3BsaWNlZCB0aW1lZCB0ZXh0IGZyYW1lIGlzIHNldDoKKyAgICAgICAgLy8g
QWRkIHNwbGljZWQgdGltZWQgdGV4dCBmcmFtZSB0byB0aGUgdHJhY2sgYnVmZmVyLgorICAgICAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHNhbXBsZSBzcGxpY2luZy4KKworICAgICAgICAv
LyBPdGhlcndpc2U6CisgICAgICAgIC8vIEFkZCB0aGUgY29kZWQgZnJhbWUgd2l0aCB0aGUgcHJl
c2VudGF0aW9uIHRpbWVzdGFtcCwgZGVjb2RlIHRpbWVzdGFtcCwgYW5kIGZyYW1lIGR1cmF0aW9u
IHRvIHRoZSB0cmFjayBidWZmZXIuCisgICAgICAgIHRyYWNrQnVmZmVyLnNhbXBsZXMuaW5zZXJ0
KFRyYWNrQnVmZmVyOjpTYW1wbGVNYXA6OnZhbHVlX3R5cGUocHJlc2VudGF0aW9uVGltZXN0YW1w
LCBzYW1wbGUpKTsKKyAgICAgICAgdHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuaW5zZXJ0KFRyYWNr
QnVmZmVyOjpTYW1wbGVNYXA6OnZhbHVlX3R5cGUoZGVjb2RlVGltZXN0YW1wLCBzYW1wbGUpKTsK
KworICAgICAgICAvLyAxLjE4IFNldCBsYXN0IGRlY29kZSB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1
ZmZlciB0byBkZWNvZGUgdGltZXN0YW1wLgorICAgICAgICB0cmFja0J1ZmZlci5sYXN0RGVjb2Rl
VGltZXN0YW1wID0gZGVjb2RlVGltZXN0YW1wOworCisgICAgICAgIC8vIDEuMTkgU2V0IGxhc3Qg
ZnJhbWUgZHVyYXRpb24gZm9yIHRyYWNrIGJ1ZmZlciB0byBmcmFtZSBkdXJhdGlvbi4KKyAgICAg
ICAgdHJhY2tCdWZmZXIubGFzdEZyYW1lRHVyYXRpb24gPSBmcmFtZUR1cmF0aW9uOworCisgICAg
ICAgIC8vIDEuMjAgSWYgaGlnaGVzdCBwcmVzZW50YXRpb24gdGltZXN0YW1wIGZvciB0cmFjayBi
dWZmZXIgaXMgdW5zZXQgb3IgZnJhbWUgZW5kIHRpbWVzdGFtcCBpcyBncmVhdGVyCisgICAgICAg
IC8vIHRoYW4gaGlnaGVzdCBwcmVzZW50YXRpb24gdGltZXN0YW1wLCB0aGVuIHNldCBoaWdoZXN0
IHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgZm9yIHRyYWNrIGJ1ZmZlcgorICAgICAgICAvLyB0byBm
cmFtZSBlbmQgdGltZXN0YW1wLgorICAgICAgICBpZiAodHJhY2tCdWZmZXIuaGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcC5pc0ludmFsaWQoKSB8fCBmcmFtZUVuZFRpbWVzdGFtcCA+IHRyYWNr
QnVmZmVyLmhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXApCisgICAgICAgICAgICB0cmFja0J1
ZmZlci5oaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wID0gZnJhbWVFbmRUaW1lc3RhbXA7CisK
KyAgICAgICAgaWYgKGVyYXNlZFNhbXBsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICBSZWZQdHI8
VGltZVJhbmdlcz4gZXJhc2VkUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IGVyYXNlZFNhbXBsZXMuYmVnaW4oKTsgaXRlciAhPSBlcmFz
ZWRTYW1wbGVzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgc3RhcnQg
PSBpdGVyLT5maXJzdC50b0RvdWJsZSgpOworICAgICAgICAgICAgICAgIGRvdWJsZSBlbmQgPSAo
KGl0ZXItPmZpcnN0ICsgaXRlci0+c2Vjb25kLT5kdXJhdGlvbigpKSArIG1pY3Jvc2Vjb25kKS50
b0RvdWJsZSgpOworICAgICAgICAgICAgICAgIGVyYXNlZFJhbmdlcy0+YWRkKHN0YXJ0LCBlbmQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJhc2VkUmFuZ2VzLT5pbnZlcnQoKTsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2VjdFdpdGgoZXJhc2VkUmFuZ2VzLmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIG1fYnVmZmVyZWQtPmFkZChwcmVzZW50YXRpb25UaW1lc3Rh
bXAudG9Eb3VibGUoKSwgKHByZXNlbnRhdGlvblRpbWVzdGFtcCArIGZyYW1lRHVyYXRpb24gKyBt
aWNyb3NlY29uZCkudG9Eb3VibGUoKSk7CisKKyAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAo
MSk7CiB9CiAKIGJvb2wgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8o
Y29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKTsKIH0KIAogYm9vbCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRl
KikgY29uc3QKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fdmlkZW9UcmFja3Mt
Pmxlbmd0aCgpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hh
bmdlZChWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyAyLjQuNSBDaGFuZ2VzIHRvIHNlbGVj
dGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKKyAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgdmlkZW8gdHJh
Y2sgY2hhbmdlcywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiB0
aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB2
aWRlbyB0cmFjayBpcyBub3QgYXNzb2NpYXRlZCB3aXRoCisgICAgLy8gYW55IG90aGVyIGVuYWJs
ZWQgdHJhY2tzLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodHJhY2stPnNlbGVj
dGVkKCkKKyAgICAgICAgJiYgKCFtX3ZpZGVvVHJhY2tzIHx8ICFtX3ZpZGVvVHJhY2tzLT5pc0Fu
eVRyYWNrRW5hYmxlZCgpKQorICAgICAgICAmJiAoIW1fYXVkaW9UcmFja3MgfHwgIW1fYXVkaW9U
cmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCisgICAgICAgICYmICghbV90ZXh0VHJhY2tzIHx8
ICFtX3RleHRUcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpKSB7CisgICAgICAgIC8vIDEuMSBS
ZW1vdmUgdGhlIFNvdXJjZUJ1ZmZlciBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCisgICAgICAg
IC8vIDEuMiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByZW1vdmVz
b3VyY2VidWZmZXIgYXQgYWN0aXZlU291cmNlQnVmZmVycworICAgICAgICBzZXRBY3RpdmUoZmFs
c2UpOworICAgIH0gZWxzZSBpZiAoIXRyYWNrLT5zZWxlY3RlZCgpKSB7CisgICAgICAgIC8vIDIu
IElmIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXdseSBzZWxlY3RlZCB2
aWRlbyB0cmFjayBpcyBub3QgYWxyZWFkeSBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLAorICAgICAg
ICAvLyBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgLy8gMi4xIEFkZCB0aGUgU291
cmNlQnVmZmVyIHRvIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCisgICAgICAgIC8vIDIuMiBRdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBhZGRzb3VyY2VidWZmZXIgYXQgYWN0
aXZlU291cmNlQnVmZmVycworICAgICAgICBzZXRBY3RpdmUodHJ1ZSk7CisgICAgfQorCisgICAg
aWYgKCFpc1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT52aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRyYWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1
ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyAyLjQu
NSBDaGFuZ2VzIHRvIHNlbGVjdGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKKyAgICAvLyBJZiBhbiBh
dWRpbyB0cmFjayBiZWNvbWVzIGRpc2FibGVkIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIHRyYWNrIGlzIG5vdAorICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbnkgb3Ro
ZXIgZW5hYmxlZCBvciBzZWxlY3RlZCB0cmFjaywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKKyAgICBpZiAodHJhY2stPmVuYWJsZWQoKQorICAgICAgICAmJiAoIW1fdmlkZW9UcmFja3Mg
fHwgIW1fdmlkZW9UcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCisgICAgICAgICYmICghbV9h
dWRpb1RyYWNrcyB8fCAhbV9hdWRpb1RyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgJiYgKCFtX3RleHRUcmFja3MgfHwgIW1fdGV4dFRyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQo
KSkpIHsKKyAgICAgICAgLy8gMS4gUmVtb3ZlIHRoZSBTb3VyY2VCdWZmZXIgYXNzb2NpYXRlZCB3
aXRoIHRoZSBhdWRpbyB0cmFjayBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgLy8g
Mi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmVtb3Zlc291cmNl
YnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgc2V0QWN0aXZlKGZhbHNlKTsK
KyAgICB9IGVsc2UgaWYgKCF0cmFjay0+ZW5hYmxlZCgpKSB7CisgICAgICAgIC8vIElmIGFuIGF1
ZGlvIHRyYWNrIGJlY29tZXMgZW5hYmxlZCBhbmQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVk
IHdpdGggdGhpcyB0cmFjayBpcworICAgICAgICAvLyBub3QgYWxyZWFkeSBpbiBhY3RpdmVTb3Vy
Y2VCdWZmZXJzLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyAxLiBB
ZGQgdGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIGF1ZGlvIHRyYWNrIHRvIGFj
dGl2ZVNvdXJjZUJ1ZmZlcnMKKyAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgYWRkc291cmNlYnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMK
KyAgICAgICAgc2V0QWN0aXZlKHRydWUpOworICAgIH0KKworICAgIGlmICghaXNSZW1vdmVkKCkp
CisgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja0VuYWJsZWRDaGFu
Z2VkKHRyYWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayogdHJhY2spCit7CisgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9l
bmFibGVkIHRyYWNrIHN0YXRlCisgICAgLy8gSWYgYSB0ZXh0IHRyYWNrIG1vZGUgYmVjb21lcyAi
ZGlzYWJsZWQiIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYWNr
IGlzIG5vdAorICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbnkgb3RoZXIgZW5hYmxlZCBvciBzZWxl
Y3RlZCB0cmFjaywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBpZiAodHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpCisgICAgICAgICYmICghbV92
aWRlb1RyYWNrcyB8fCAhbV92aWRlb1RyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgJiYgKCFtX2F1ZGlvVHJhY2tzIHx8ICFtX2F1ZGlvVHJhY2tzLT5pc0FueVRyYWNrRW5hYmxl
ZCgpKQorICAgICAgICAmJiAoIW1fdGV4dFRyYWNrcyB8fCAhbV90ZXh0VHJhY2tzLT5pc0FueVRy
YWNrRW5hYmxlZCgpKSkgeworICAgICAgICAvLyAxLiBSZW1vdmUgdGhlIFNvdXJjZUJ1ZmZlciBh
c3NvY2lhdGVkIHdpdGggdGhlIGF1ZGlvIHRyYWNrIGZyb20gYWN0aXZlU291cmNlQnVmZmVycwor
ICAgICAgICAvLyAyLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBy
ZW1vdmVzb3VyY2VidWZmZXIgYXQgYWN0aXZlU291cmNlQnVmZmVycworICAgICAgICBzZXRBY3Rp
dmUoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIElmIGEgdGV4dCB0cmFjayBtb2Rl
IGJlY29tZXMgInNob3dpbmciIG9yICJoaWRkZW4iIGFuZCB0aGUgU291cmNlQnVmZmVyIGFzc29j
aWF0ZWQgd2l0aCB0aGlzCisgICAgICAgIC8vIHRyYWNrIGlzIG5vdCBhbHJlYWR5IGluIGFjdGl2
ZVNvdXJjZUJ1ZmZlcnMsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8v
IDEuIEFkZCB0aGUgU291cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dCB0cmFjayB0
byBhY3RpdmVTb3VyY2VCdWZmZXJzCisgICAgICAgIC8vIDIuIFF1ZXVlIGEgdGFzayB0byBmaXJl
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIGFkZHNvdXJjZWJ1ZmZlciBhdCBhY3RpdmVTb3VyY2VCdWZm
ZXJzCisgICAgICAgIHNldEFjdGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICBpZiAoIWlzUmVtb3Zl
ZCgpKQorICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja01vZGVDaGFu
Z2VkKHRyYWNrKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja0FkZEN1ZShUZXh0
VHJhY2sqIHRyYWNrLCBXVEY6OlBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAg
aWYgKCFpc1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0
VHJhY2tBZGRDdWUodHJhY2ssIGN1ZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJh
Y2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIFRleHRUcmFja0N1ZUxpc3QgY29uc3QqIGN1ZUxp
c3QpCit7CisgICAgaWYgKCFpc1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxl
bWVudCgpLT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVMaXN0KTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXI6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqIHRyYWNrLCBXVEY6OlBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKCFpc1JlbW92ZWQoKSkKKyAgICAg
ICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1
ZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFj
ayogdHJhY2ssIFRleHRUcmFja0N1ZUxpc3QgY29uc3QqIGN1ZUxpc3QpCit7CisgICAgaWYgKCFp
c1JlbW92ZWQoKSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tS
ZW1vdmVDdWVzKHRyYWNrLCBjdWVMaXN0KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRU
cmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKCFpc1JlbW92ZWQo
KSkKKyAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tLaW5kQ2hhbmdl
ZCh0cmFjayk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDBlNjA1Y2Y1ZThi
MDY2Y2NjNGJjODFhNGJiZjJhZmYyY2Q1NWYyMzQuLjNiYWJhODUyY2JlNDZjOTNlOTIwYTU5MDFm
OWQ3NjI2MmRjZTZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMzQsMjMgKzM0LDMwIEBACiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkF1ZGlv
VHJhY2suaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlZpZGVvVHJh
Y2suaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1RyYWNrTGlzdDsKIGNsYXNzIE1lZGlhU291cmNlOwogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZTsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOworY2xhc3MgVmlkZW9U
cmFja0xpc3Q7CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlciBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudCB7CitjbGFzcyBTb3VyY2VCdWZmZXIgRklOQUwgOiBwdWJsaWMgUmVm
Q291bnRlZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQsIHB1YmxpYyBBdWRpb1RyYWNrQ2xpZW50LCBwdWJsaWMg
VmlkZW9UcmFja0NsaWVudCwgcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQ
cml2YXRlPiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtNTksNiArNjYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gU291cmNlQnVmZmVyLmlkbCBtZXRob2RzCiAgICAgYm9vbCB1cGRhdGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdXBkYXRpbmc7IH0KICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBjb25zdCBSZWZQdHI8VGltZVJhbmdlcz4mIGJ1
ZmZlcmVkKCkgY29uc3Q7CiAgICAgZG91YmxlIHRpbWVzdGFtcE9mZnNldCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgYXBwZW5kQnVmZmVyKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTY4LDYgKzc2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGFib3J0SWZVcGRhdGlu
ZygpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwogCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworICAgIEF1ZGlv
VHJhY2tMaXN0KiBhdWRpb1RyYWNrcygpOworICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja3Mo
KTsKKyNlbmRpZgorCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQogICAgIHZpcnR1
YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwpAQCAtODgsMjcgKzEwMiw2OCBAQCBwcml2YXRlOgogICAg
IFNvdXJjZUJ1ZmZlcihQYXNzUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNvdXJjZSop
OwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlRGlkRW5kU3RyZWFtKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25zdCBXVEY6OkF0b21pY1N0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3Qg
SW5pdGlhbGl6YXRpb25TZWdtZW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQYXNz
UmVmUHRyPE1lZGlhU2FtcGxlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUJ1
ZmZlclByaXZhdGVIYXNBdWRpbyhjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlKikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhjb25z
dCBTb3VyY2VCdWZmZXJQcml2YXRlKikgY29uc3QgT1ZFUlJJREU7CiAKKyAgICAvLyBBdWRpb1Ry
YWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRp
b1RyYWNrKikgT1ZFUlJJREU7CisKKyAgICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdmlydHVh
bCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopIE9WRVJSSURFOwor
CisgICAgLy8gVGV4dFRyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRD
aGFuZ2VkKFRleHRUcmFjayopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tN
b2RlQ2hhbmdlZChUZXh0VHJhY2sqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPikgT1ZFUlJJREU7CisKKyAgICBzdGF0aWMgY29uc3QgV1RGOjpBdG9taWNT
dHJpbmcmIGRlY29kZUVycm9yKCk7CisgICAgc3RhdGljIGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBuZXR3b3JrRXJyb3IoKTsKKwogICAgIGJvb2wgaXNSZW1vdmVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIAogICAgIHZv
aWQgYXBwZW5kQnVmZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBhcHBlbmRCdWZmZXJUaW1lckZpcmVkKFRpbWVyPFNvdXJjZUJ1
ZmZlcj4qKTsKIAorICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOworCisgICAgYm9vbCB2YWxpZGF0
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKKwog
ICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwog
CiAgICAgYm9vbCBtX3VwZGF0aW5nOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcE9mZnNldDsKIAog
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX3BlbmRpbmdBcHBlbmREYXRhOwogICAgIFRpbWVy
PFNvdXJjZUJ1ZmZlcj4gbV9hcHBlbmRCdWZmZXJUaW1lcjsKKworICAgIFJlZlB0cjxWaWRlb1Ry
YWNrTGlzdD4gbV92aWRlb1RyYWNrczsKKyAgICBSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVk
aW9UcmFja3M7CisgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKworICAg
IFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fdmlkZW9Db2RlY3M7CisgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gbV9hdWRpb0NvZGVjczsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3RleHRDb2Rl
Y3M7CisKKyAgICBNZWRpYVRpbWUgbV90aW1lc3RhbXBPZmZzZXQ7CisgICAgTWVkaWFUaW1lIG1f
aGlnaGVzdFByZXNlbnRhdGlvbkVuZFRpbWVzdGFtcDsKKworICAgIHN0cnVjdCBUcmFja0J1ZmZl
cjsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgVHJhY2tCdWZmZXI+IG1fdHJhY2tCdWZmZXJN
YXA7CisgICAgYm9vbCBtX3JlY2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAg
UmVmUHRyPFRpbWVSYW5nZXM+IG1fYnVmZmVyZWQ7CisgICAgYm9vbCBtX2FjdGl2ZTsKKworICAg
IGVudW0gQXBwZW5kU3RhdGVUeXBlIHsgV2FpdGluZ0ZvclNlZ21lbnQsIFBhcnNpbmdJbml0U2Vn
bWVudCwgUGFyc2luZ01lZGlhU2VnbWVudCB9OworICAgIEFwcGVuZFN0YXRlVHlwZSBtX2FwcGVu
ZFN0YXRlOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggYWJkZjNi
NjFlZmRlMmY2NmVmZTI5ZGYxZTA0YmY0ZDgwY2VmNWJmYy4uZjU3YTcwN2NhNTMxZTI2YjY3OTkx
MjZlNjE5N2M0OGQzMTQ5NGNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbApAQCAtNTIsNSArNTIsMTAgQEAKIAogICAgIC8v
IEFib3J0IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgogICAgIFtSYWlzZXNF
eGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKKyAgICAKKyAgICAvLyBUcmFjayBzdXBwb3J0CisgICAg
W0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9UcmFja0xp
c3QgYXVkaW9UcmFja3M7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSByZWFkb25seSBh
dHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CisgICAgW0NvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLXSByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlzdCB0ZXh0VHJhY2tzOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlckxpc3QuaAppbmRleCA5NDRhZDdlNWM4YmNmYTY2Y2VjNDAwMjBiMDVkZTJmYTg5Zjg3
NDNmLi4zN2Y2ZWZhNGFmMTc3ZWQ1ZjVkM2U2YjNlY2FjMWM4Zjg3Y2ZjMjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aApAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhTb3VyY2VCdWZm
ZXIqIGJ1ZmZlcikgeyByZXR1cm4gbV9saXN0LmZpbmQoYnVmZmVyKSAhPSBub3RGb3VuZDsgfQog
ICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj46Oml0
ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9saXN0LmJlZ2luKCk7IH0KKyAgICBWZWN0b3I8UmVm
UHRyPFNvdXJjZUJ1ZmZlcj4+OjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2xpc3QuZW5kKCk7
IH0KKwogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBTb3VyY2VCdWZmZXJMaXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlhU291
cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGVmZDRlODZiNWYxNjllNzQxMzVlNzIyZGI4NjFmOTdmZTZlMmY5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
VGV4dFRyYWNrTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBUZXh0VHJhY2tNZWRpYVNvdXJjZV9oCisjZGVmaW5lIFRleHRUcmFja01lZGlhU291cmNlX2gK
KworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJj
ZUJ1ZmZlcjsKKworY2xhc3MgVGV4dFRyYWNrTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIHN0
YXRpYyBTb3VyY2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcihUZXh0VHJhY2sqIHRyYWNrKSB7IHJldHVy
biB0cmFjay0+c291cmNlQnVmZmVyKCk7IH0KK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tN
ZWRpYVNvdXJjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRU
cmFja01lZGlhU291cmNlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjdkZDM1MDZkNDVlZjAzMjI5ZWJlMjQw
Nzc0YTM4ZDM5NTNiN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9UZXh0VHJhY2tNZWRpYVNvdXJjZS5pZGwKQEAgLTAsMCArMSwzMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TT1VSQ0UmVklERU9fVFJBQ0ssCitd
CitwYXJ0aWFsIGludGVyZmFjZSBUZXh0VHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
b3VyY2VCdWZmZXIgc291cmNlQnVmZmVyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxOTU3MDk5MmQzOTFiOTJkMTA3NThkZTk5NWI4ZjI3OTI3MzBkOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvVHJhY2tNZWRp
YVNvdXJjZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tN
ZWRpYVNvdXJjZV9oCisjZGVmaW5lIFZpZGVvVHJhY2tNZWRpYVNvdXJjZV9oCisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRl
b1RyYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyOwor
CitjbGFzcyBWaWRlb1RyYWNrTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyBTb3Vy
Y2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcihWaWRlb1RyYWNrKiB0cmFjaykgeyByZXR1cm4gdHJhY2st
PnNvdXJjZUJ1ZmZlcigpOyB9Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291
cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01l
ZGlhU291cmNlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODY2YTI4YjA3YTlmZGE1NTAyM2JiNzkzNGM5Njlj
ZDQwYTI4NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9WaWRlb1RyYWNrTWVkaWFTb3VyY2UuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NPVVJDRSZWSURFT19UUkFDSywKK10KK3BhcnRp
YWwgaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTb3VyY2VC
dWZmZXIgc291cmNlQnVmZmVyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Yjc5NWUxMGNiNjdlZjU2MzVlNTEyNjllZjY3
MTA0YzYzYTBiMDE5Li5hNTAzZmMxOGJlM2RmNDc5NTEwYzZhMDg1N2ExYTI1ODExZTI0ZDhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MzMzLDYgKzUzMzMsOSBAQAogCQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICov
OyB9OwogCQlDRDYxRkU2NzE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUE5NDJF
MTE1QjVDRTIyMDBENTI1RDEgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNE
NjFGRTY4MTc5NEFBREIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUE5NDJFMjE1QjVDRTIyMDBE
NTI1RDEgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oICovOyB9OworCisJCUNENjQxRUIzMTgxOEY1
RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRp
YVNvdXJjZVByaXZhdGUuaCAqLzsgfTsKKwkJQ0Q2NDFFQjQxODE4RjVFRDAwRUU0QzQxIC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
LmggKi87IH07CiAJCUNENjQxRUJGMTgxOUIzNjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQkQx
ODE5QjM1OTAwRUU0QzQxIC8qIE1lZGlhVGltZU1hYy5jcHAgKi87IH07CiAJCUNENjQxRUMwMTgx
OUIzNjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUJFMTgxOUIzNTkwMEVFNEM0MSAvKiBNZWRpYVRp
bWVNYWMuaCAqLzsgfTsKIAkJQ0Q3RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8qIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEN0UwNTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0gKi87IH07CkBAIC01MzQyLDYgKzUzNDUsOSBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBG
OTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEw
MEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9
OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVB
Q0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8q
IFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRp
b24ubW0gKi87IH07CisJCUNEOEI1QTQ2MTgwREZGNEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVk
aWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEOEI1QTQ1MTgwREZGNEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFTb3VyY2UuaCAqLzsg
fTsKKwkJQ0Q4QjVBNDkxODBFMTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0ODE4
MEUxMzhCMDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaCAqLzsgfTsKKwkJQ0Q4QjVB
NEMxODBFMTdDMDAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjVBNEIxODBFMTdDMDAwOEI4
RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDlERTE3NDE3QUFDNzRD
MDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNv
dXJjZS5jcHAgKi87IH07CiAJCUNEOURFMTc1MTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlE
RTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDlERTE3
QTE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5REUxNzYxN0FBQzc1QjAwRUEzODZEIC8q
IEpTU291cmNlQnVmZmVyLmNwcCAqLzsgfTsKQEAgLTUzOTUsNiArNTQwMSw3IEBACiAJCUNERUE3
Qzg1MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgzMTI3NjIzMDQwMEI4NDZE
RCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLzsgfTsKIAkJQ0RFRTM5MzcxNzk3NDI1OTAwMUQ3
NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1h
bmFnZXIuY3BwICovOyB9OwogCQlDREVGNEZENzE3RTg1QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFRjRG
RDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0MjQgLyog
TWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRpb24uaCAq
LzsgfTsKIAkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTQxNDU3
Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICov
OyB9OwpAQCAtNjgxMCw4ICs2ODE3LDggQEAKIAkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8q
IEpTQXVkaW9TdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1ZGlvU3RyZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlC
NUIxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI1QzE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRl
b1N0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmlkZW9T
dHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0M1OUI2MTE3RjRD
Rjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHA7IHBhdGggPSBt
b2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTA3QzU5QjYyMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmg7
IHBhdGggPSBtb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI2MTE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tNZWRpYVN0
cmVhbUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjYyMTdG
NENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0
YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNvdXJj
ZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjY2MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OTYsOCArNzAwMyw4IEBACiAJCTBGRDMwOEQ0MTE3RDE2ODQw
MEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVySUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDcyMzgw
MEVDOEJEOTMwMENBNURENyAvKiBGbG9hdFF1YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmxvYXRRdWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDcy
MzgxMEVDOEJEOTMwMENBNURENyAvKiBGbG9hdFF1YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRRdWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTY3JvbGxiYXJUaGVtZU1vY2su
Y3BwOyBwYXRoID0gbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVN
b2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGJhclRoZW1lTW9j
ay5oOyBwYXRoID0gbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVt
ZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU3MTQwNDE0MjE3MEI4
MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkU3MTQxNTE0MjE4OUZDMDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI1OTEwMkJBOTAxMDA2NkYzOUEgLyogRE9N
U3R5bGVNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TdHlsZU1l
ZGlhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjUwMjVBMTAyQkE5MDEwMDY2
RjM5QSAvKiBET01TdHlsZU1lZGlhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NU3R5bGVNZWRpYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg1NzMsOCArODU4MCw4IEBACiAJCTU5MTAyRkJBMTQzMjdEM0IwMDNDOUQwNCAvKiBDb250ZW50
U2VhcmNoVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFNl
YXJjaFV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MTNBMjNGMTNENDlF
QkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSWRlbnRpZmllcnNGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTkxM0EyNDAxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZpZXJzRmFj
dG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVyc0ZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTkzMDlBMTAxMUY0QUU1ODAwMjUw
NjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRo
ID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAw
MjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyog
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1OTU4RjFDQjEzNDM5MTdDMDA4MEIzMUYgLyogWE1MVmlld2VyLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gWE1MVmlld2VyLmNzczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTk1OEYxQ0MxMzQzOTE3QzAwODBCMzFGIC8qIFhNTFZpZXdlci5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFhNTFZpZXdlci5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4MzY1REMxMzU1RjUzQzAwMUIxODVEIC8qIEpTUG9z
aXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0
aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzk5LDggKzEw
ODA2LDggQEAKIAkJQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNh
bnZhc0FnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTkxNTdF
NTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJ
bnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUFBRTI3Qjc0MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5jcHA7IHBhdGggPSBtb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQUFFMjdCNzUxNkNCRkMw
RDAwNjIzMDQzIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmg7IHBh
dGggPSBtb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFBRTI3Qjc0MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFBRTI3Qjc1MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUY1
QjdCMTE1MjRCNEJEMDAwNENCNDkgLyogV2ViU29ja2V0RnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQjIzQTMyNTA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QUIyM0EzMjYwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzMzUsOCArMTIzNDIsMTEgQEAKIAkJ
Q0Q1NEE3NUUxODBGNTM1MDAwQjA3NkM5IC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlvU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlh
U291cmNlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNv
dXJjZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q2NDFFQjIxODE4
RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDY0MUVCRDE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1lTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVGltZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENjQxRUJFMTgxOUIzNTkwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFUaW1lTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNENjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNhbXBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDdFMDUyMDE2
NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3RTA1MjExNjUx
QTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbTsgcGF0aCA9IG9iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgy
MDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0NSw2ICsxMjM1NSwxMiBA
QAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmlt
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEOEI1QTQ0MTgwREQ4RDYwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFTb3Vy
Y2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEOEI1QTQ1MTgwREZGNEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja01lZGlh
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOEI1QTQ3MTgwRTEzNjEw
MDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dFRyYWNrTWVkaWFT
b3VyY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhCNUE0ODE4MEUxMzhC
MDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGV4dFRyYWNrTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0Q4QjVBNEExODBFMTdBMzAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJj
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQXVkaW9UcmFja01lZGlhU291cmNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0Q4QjVBNEIxODBFMTdDMDAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNv
dXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrTWVkaWFT
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5REUxNzIxN0FBQzc0QzAw
RUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEOURFMTczMTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q5REUxNzYxN0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU291cmNlQnVmZmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDMxLDYgKzEyNDQ3LDcgQEAKIAkJ
Q0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVibGljVVJMTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUUzOTM4MTc5NzQyNzQwMDFENzU4MCAvKiBVUkxS
ZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREVGNEZENjE3RTg1QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmlkTGVuZ3RoLmg7IHBhdGggPSBzdHls
ZS9HcmlkTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDAzMTgx
RjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhRGVzY3JpcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGNjVDQ0MxNDVCNkFGRTAw
QzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTExNCw3ICsxNTEzMSw3IEBACiAJCQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JB
IC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8sCiAJCQkJMEZFNzE0MDQxNDIxNzBCODAwREIz
M0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovLAogCQkJKTsKLQkJCW5hbWUgPSBtb2NrOwor
CQkJcGF0aCA9IG1vY2s7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1REE1
RTBGOTEwMkI5NTA0MDAwODhDRjkgLyogV2ViU29ja2V0cyAqLyA9IHsKQEAgLTE4MzQ1LDYgKzE4
MzYyLDggQEAKIAkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDhCNUE0QjE4MEUx
N0MwMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmggKi8sCisJCQkJQ0Q4QjVBNEEx
ODBFMTdBMzAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8sCiAJCQkJQ0Q5
REUxN0UxN0FBRDY0RTAwRUEzODZEIC8qIERPTVVSTE1lZGlhU291cmNlLmNwcCAqLywKIAkJCQlD
RDlERTE3RjE3QUFENjRFMDBFQTM4NkQgLyogRE9NVVJMTWVkaWFTb3VyY2UuaCAqLywKIAkJCQlD
RDlERTE4MDE3QUFENjRFMDBFQTM4NkQgLyogRE9NVVJMTWVkaWFTb3VyY2UuaWRsICovLApAQCAt
MTgzNjEsNiArMTgzODAsMTAgQEAKIAkJCQlDRDNBNDk1QjE3QTlEMDFCMDAyNzRFNDIgLyogU291
cmNlQnVmZmVyTGlzdC5jcHAgKi8sCiAJCQkJQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNv
dXJjZUJ1ZmZlckxpc3QuaCAqLywKIAkJCQlDRDNBNDk1RDE3QTlEMDFCMDAyNzRFNDIgLyogU291
cmNlQnVmZmVyTGlzdC5pZGwgKi8sCisJCQkJQ0Q4QjVBNDgxODBFMTM4QjAwOEI4RTY1IC8qIFRl
eHRUcmFja01lZGlhU291cmNlLmggKi8sCisJCQkJQ0Q4QjVBNDcxODBFMTM2MTAwOEI4RTY1IC8q
IFRleHRUcmFja01lZGlhU291cmNlLmlkbCAqLywKKwkJCQlDRDhCNUE0NTE4MERGRjRFMDA4QjhF
NjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggKi8sCisJCQkJQ0Q4QjVBNDQxODBERDhENjAw
OEI4RTY1IC8qIFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IG1lZGlhc291cmNlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5MDMzLDYgKzE5
MDU2LDggQEAKIAkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDY0MUVCMTE4MThGNUVE
MDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi8sCisJCQkJQ0Q2NDFFQjIxODE4RjVF
RDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQkwNzZGMEQwODEyQjgx
OTI3MDBDMjZBQTQgLyogYXZmb3VuZGF0aW9uICovLAogCQkJCTQ5OUIzRUMwMTI4Q0NDMTgwMEU3
MjZDMiAvKiBjYSAqLywKIAkJCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8sCkBA
IC0yMDAwNSw2ICsyMDAzMCw4IEBACiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAwQjYwNjQxIC8qIExv
Z2dpbmcuY3BwICovLAogCQkJCUE4MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmgg
Ki8sCiAJCQkJRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi8s
CisJCQkJQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRpb24uaCAqLywK
KwkJCQlDRDY0MUVDNzE4MUVENjAxMDBFRTRDNDEgLyogTWVkaWFTYW1wbGUuaCAqLywKIAkJCQk2
NTdFREEwNjEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywK
IAkJCQk2NTdFREEwNzEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8sCiAJCQkJQkM3NzJDNEMwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuY3Bw
ICovLApAQCAtMjE3OTMsNiArMjE4MjAsNyBAQAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5
MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDIw
RkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNERjJCMDA0MTgxRjA1OUMwMEYyQjQyNCAv
KiBNZWRpYURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJGMzExMDNEQTY2
MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NkNERDJGNzExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJGNTExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjE4NjcsNiArMjE4OTUsNyBA
QAogCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q2NDFFQjMxODE4RjVF
RDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjA4MzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDk0QzE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkxMCw2ICsy
MjkzOSw3IEBACiAJCQkJQTg3MURFMjgwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxGcmFtZVNldEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJEMEExNTJBQzgwMEIxMkE2OCAvKiBI
VE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3Q0I4MEExOTJCOUMwMEE4
RUY1RiAvKiBIVE1MSGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEOEI1QTQ5
MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThFQTdDQUYwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxIUkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4NzFERTI3MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSHRtbEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4OTU3MEEwMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU1Myw2ICsyMzU4Myw3IEBACiAJCQkJQjJG
QTNEREQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNEREYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0
b1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1l
ZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhCNUE0NjE4MERGRjRF
MDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkZBM0RFMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0MTAwREY1OERGIC8qIEpTU1ZHUG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxRDcxOUNBMTgxMTA2RTAwMDE2REM1MSAvKiBJREJEYXRhYmFzZUNh
bGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzY3OCw2ICsyMzcwOSw3IEBACiAJCQkJMjkx
N0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y3MkFGMzE2NjZFREZDMDAyQTAyQkQgLyog
TGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhCNUE0QzE4MEUxN0MwMDA4QjhFNjUg
LyogQXVkaW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA1MDE2
NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0Qm94RXh0ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQxREMwNTExNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFBvaW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0Mjg2LDYgKzI0MzE4LDcgQEAKIAkJCQlGRDAwRDdBNTE0QTNGNjE5MDA3
MzQwMTEgLyogU2luY1Jlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzMjdENjAxMUEz
M0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEx
Q0QwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVy
VGh1bWJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZGQTZGNDBDMzlFNDhDMDAwODcw
MTEgLyogU21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGRDAwQzBEQUYzMzU0
MDBGNUY1NUMgLyogU01JTFRpbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXggMjkyOTgwNzg1OWIy
MGIxNmM2NDkxZTZkZjNiZTI5YzU5YjE1M2JlNi4uZWJiZDQ2YjVlZjZkZGQ0N2YwMmU0MDdiMGI5
NGYwNDM4YWUxYTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC00Nyw2ICs0NywzNCBAQCB2b2lkIEpTQXVkaW9UcmFjazo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZhdWRpb1RyYWNrKSk7CiB9CiAKK3ZvaWQgSlNBdWRp
b1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBjb25zdCBT
dHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpbXBsKCkuc2V0S2luZChuYXRpdmVWYWx1ZSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuOworI2VuZGlmCit9CisKK3Zv
aWQgSlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldExhbmd1YWdlKG5h
dGl2ZVZhbHVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm47
CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAppbmRleCA5ODQ2
ZmI5YTFkYzFiNjNjYmQ5OTViOGE1ZThhMzBjNjBkNzIyYjM2Li4wNzhmNmYyNTZiOTU4YjJiMWM0
ZGQzZjJiYjZiYjViYzYzNTNiNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCkBAIC00OCw2ICs0OCwzNCBAQCB2b2lkIEpTVGV4dFRy
YWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdGV4dFRyYWNrLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAordm9pZCBK
U1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgY29u
c3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldEtpbmQobmF0aXZlVmFsdWUpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKKyNlbmRpZgorfQor
Cit2b2lkIEpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJp
bmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldExhbmd1YWdl
KG5hdGl2ZVZhbHVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1
cm47CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCmluZGV4
IGVjM2FkY2MyNGVkYzllZWZiZmUxNDZjZDkxOTYxMDFhYWZiOTVkZDYuLmE4MmU3YjhiYzQ3MTUx
OTRhYjA1NDM4ZmE3YTY4MDRiOWNlOGQ4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApAQCAtNDcsNiArNDcsMzQgQEAgdm9pZCBK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmdmlkZW9UcmFjaykpOwogfQog
Cit2b2lkIEpTVmlkZW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLnNldEtpbmQobmF0aXZl
VmFsdWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKKyNl
bmRpZgorfQorCit2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS5z
ZXRMYW5ndWFnZShuYXRpdmVWYWx1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
CisgICAgcmV0dXJuOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0YjBjNWM3
Y2MzYzMxNTVhYzBmYmQ0N2VjM2Q4NjZjYTg4MGU4NmYyLi4xYWViYmRlOWZiZDIzMDI5YzNiZjkz
NmQ2ZDkyYzlkYjA1ODIyYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAg
ICAgIG1fbWVkaWFTb3VyY2UgPSBIVE1MTWVkaWFTb3VyY2U6Omxvb2t1cCh1cmwuc3RyaW5nKCkp
OwogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKLSAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2Ut
PmF0dGFjaFRvRWxlbWVudCgpKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJjZS0+YXR0YWNoVG9F
bGVtZW50KHRoaXMpKQogICAgICAgICAgICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlw
ZSwgbV9tZWRpYVNvdXJjZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRm9yZ2V0
IG91ciByZWZlcmVuY2UgdG8gdGhlIE1lZGlhU291cmNlLCBzbyB3ZSBsZWF2ZSBpdCBhbG9uZQpA
QCAtMjg5Myw2ICsyODkzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXYKICAgICAvLyA0Ljgu
MTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQgdHJhY2tzCiAgICAgLy8gMS4gQXNzb2NpYXRl
IHRoZSByZWxldmFudCBkYXRhIHdpdGggYSBuZXcgdGV4dCB0cmFjayBhbmQgaXRzIGNvcnJlc3Bv
bmRpbmcgbmV3IFRleHRUcmFjayBvYmplY3QuCiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFjaz4g
dGV4dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHBycFRyYWNrKTsKKyAgICB0ZXh0VHJhY2stPnNl
dE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICAKICAgICAvLyAyLiBTZXQgdGhlIG5ldyB0ZXh0IHRy
YWNrJ3Mga2luZCwgbGFiZWwsIGFuZCBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgc2VtYW50aWNzIG9m
IHRoZSByZWxldmFudCBkYXRhLAogICAgIC8vIGFzIGRlZmluZWQgYnkgdGhlIHJlbGV2YW50IHNw
ZWNpZmljYXRpb24uIElmIHRoZXJlIGlzIG5vIGxhYmVsIGluIHRoYXQgZGF0YSwgdGhlbiB0aGUg
bGFiZWwgbXVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU291cmNlLmgKaW5kZXggMTk4ZmRm
ZTM1N2RjMDEwYWQ0NmU0NmEyNWY3YmI3ZDMyNGUzNzBmMi4uYjQ5NWMyNmY4OTdiZmIwYjViNjhl
ZmJiZDk4ZjhmMzg5NGQ3ZjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNvdXJjZS5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZTsKIGNsYXNzIFRpbWVSYW5nZXM7
CiAKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIElmIGFscmVhZHkgYXR0YWNoZWQs
IHJldHVybnMgZmFsc2UuIE90aGVyd2lzZSwgbXVzdCBiZSBpbgogICAgIC8vICdjbG9zZWQnIHN0
YXRlLCBhbmQgcmV0dXJucyB0cnVlIHRvIGluZGljYXRlIGF0dGFjaG1lbnQgc3VjY2Vzcy4KICAg
ICAvLyBSZWF0dGFjaG1lbnQgYWxsb3dlZCBieSBmaXJzdCBjYWxsaW5nIGNsb3NlKCkgKGV2ZW4g
aWYgYWxyZWFkeSBpbiAnY2xvc2VkJykuCi0gICAgdmlydHVhbCBib29sIGF0dGFjaFRvRWxlbWVu
dCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXR0YWNoVG9FbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFBhc3NSZWY8TWVk
aWFTb3VyY2VQcml2YXRlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmNwcAppbmRleCAxMDkzZmFlNzY2MzY4MDMwODEyM2E5ZmFmNTkxMjc4NmVjYTc0OTA4Li5j
NTY5NjNmYzA5MWMwMGU4NTQ0ZGI1Y2I1ZTVmZDIxNjVhYzhhMWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKQEAgLTE1NywxMSArMTU3LDE2IEBAIHZvaWQgVGltZVJhbmdlczo6YWRk
KGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKIAogYm9vbCBUaW1lUmFuZ2VzOjpjb250YWluKGRv
dWJsZSB0aW1lKSBjb25zdAogeworICAgIHJldHVybiBmaW5kKHRpbWUpICE9IG5vdEZvdW5kOwor
fQorCitzaXplX3QgVGltZVJhbmdlczo6ZmluZChkb3VibGUgdGltZSkgY29uc3QKK3sKICAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbGVuZ3RoKCk7IG4rKykgewogICAgICAgICBpZiAodGlt
ZSA+PSBzdGFydChuLCBJR05PUkVfRVhDRVBUSU9OKSAmJiB0aW1lIDw9IGVuZChuLCBJR05PUkVf
RVhDRVBUSU9OKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IG47CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAK
IGRvdWJsZSBUaW1lUmFuZ2VzOjpuZWFyZXN0KGRvdWJsZSB0aW1lKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RpbWVSYW5nZXMuaAppbmRleCA5N2Y0ZWI3ZmE1NWY4YzIzNjRmMWUyNDc1MGQwZTgwOWIzNTVh
YTkwLi43MjIzM2JlODM5OTMzYTI4ZjllNDRiYTZjYjdkMjkyNzEyNWVlM2Q2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVSYW5nZXMuaApAQCAtNTQsMTAgKzU0LDEyIEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KICAgICBkb3VibGUg
c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBkb3VibGUg
ZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgCisKICAgICB2
b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIAogICAgIGJvb2wgY29udGFp
bihkb3VibGUgdGltZSkgY29uc3Q7CisKKyAgICBzaXplX3QgZmluZChkb3VibGUgdGltZSkgY29u
c3Q7CiAgICAgCiAgICAgZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCmluZGV4IGQ4MjljNjIwYzZmZWFhOGUzZTdm
MzI2NDMzMjVkNTczNzI5ZTE3N2IuLjA3N2VjYTA0MjNkYTNiYTc4NjQ0OTE3ZWM5NTY1ODFkN2Nh
YWE2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5
S2V5d29yZCgpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtl
eXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0KIAotICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoY29uc3QgYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJD
bGllbnQoKSBPVkVSUklERSB7IG1fY2xpZW50ID0gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwKaW5kZXggZWQwMDU4MDQwZTA0YzkxYmMxMjgzMzUxYzdhMjc1MmE2
Mzc2MWI4OS4uZmVmZDQ0ZWE1ZmRmMzVlYTM3MmRjNjM4MzYzMTU0MTA2NWVhMzUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0zMCw5ICszMCw5IEBACiAg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KIF0gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBraW5kOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcga2lu
ZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisgICAgW0N1c3RvbVNldHRlcl0gYXR0cmli
dXRlIERPTVN0cmluZyBsYW5ndWFnZTsKIAogICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDViMzQ3NjQ1
NDZmM2MzMDdlNDkzZTY2YWZhMjE2OGE5MTZhZWVjNjQuLjUyYjU3YjMyYzdhOWJmZGNlY2ViNzE4
NmRjYjhiMTZlYjFjMzM0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAi
VGV4dFRyYWNrUmVnaW9uTGlzdC5oIgpAQCAtMTI2LDcgKzEyNyw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCog
Y2xpZW50LCBjCiAgICAgLCBtX3JlbmRlcmVkVHJhY2tJbmRleChpbnZhbGlkVHJhY2tJbmRleCkK
ICAgICAsIG1faGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpCiB7Ci0gICAgc2V0S2luZChraW5kKTsK
KyAgICBzZXRLaW5kSW50ZXJuYWwoa2luZCk7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygp
CkBAIC0xNTAsNiArMTUxLDExIEBAIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBUZXh0VHJhY2s6OmlzVmFsaWRL
aW5kS2V5d29yZCh2YWx1ZSk7CiB9CiAKK2Jvb2wgVGV4dFRyYWNrOjplbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9tb2RlICE9IGRpc2FibGVkS2V5d29yZCgpOworfQorCiBib29sIFRl
eHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKQEAgLTE3Miw3ICsxNzgsMjgg
QEAgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdLaW5kKQog
ewogICAgIFN0cmluZyBvbGRLaW5kID0ga2luZCgpOwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKyAgICAvLyAxMC4xIGtpbmQsIG9uIHNldHRpbmc6CisgICAgLy8gMS4gSWYgdGhlIHZhbHVl
IGJlaW5nIGFzc2lnbmVkIHRvIHRoaXMgYXR0cmlidXRlIGRvZXMgbm90IG1hdGNoIG9uZSBvZiB0
aGUgdGV4dCB0cmFjayBraW5kcywKKyAgICAvLyB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
IGlmICghaXNWYWxpZEtpbmRLZXl3b3JkKG5ld0tpbmQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KKyAgICBzZXRL
aW5kSW50ZXJuYWwobmV3S2luZCk7CisKKyAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0
dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlCisgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci50
ZXh0VHJhY2tzLgorICAgIGlmIChtX3NvdXJjZUJ1ZmZlcikKKyAgICAgICAgbV9zb3VyY2VCdWZm
ZXItPnRleHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworCisgICAgLy8gNC4gUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBUZXh0
VHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CisgICAgLy8gdGhlIHRleHRUcmFja3MgYXR0
cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgIGlmIChtZWRpYUVsZW1lbnQoKSkK
KyAgICAgICAgbWVkaWFFbGVtZW50KCktPnRleHRUcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVu
dCgpOworI2Vsc2UKICAgICBUcmFja0Jhc2U6OnNldEtpbmQobmV3S2luZCk7CisjZW5kaWYKIAog
ICAgIGlmIChtX2NsaWVudCAmJiBvbGRLaW5kICE9IGtpbmQoKSkKICAgICAgICAgbV9jbGllbnQt
PnRleHRUcmFja0tpbmRDaGFuZ2VkKHRoaXMpOwpAQCAtNTQ3LDYgKzU3NCwyOSBAQCBib29sIFRl
eHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBraW5kKCkg
PT0gY2FwdGlvbnNLZXl3b3JkKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9p
ZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCit7
CisgICAgLy8gMTEuMSBsYW5ndWFnZSwgb24gc2V0dGluZzoKKyAgICAvLyAxLiBJZiB0aGUgdmFs
dWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGFuIGVtcHR5IHN0cmlu
ZyBvciBhIEJDUCA0NyBsYW5ndWFnZQorICAgIC8vIHRhZ1tCQ1A0N10sIHRoZW4gYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgLy8gRklYTUUoMTIzOTI2KTogVmFsaWRhdGUgdGhlIEJDUDQ3LW5lc3Mg
b2YgbGFuZ2FndWUuCisKKyAgICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5l
dyB2YWx1ZS4KKyAgICBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGxhbmd1YWdlKTsKKworICAgIC8v
IDMuIElmIHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51
bGwsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVudCBuYW1l
ZCBjaGFuZ2UgYXQgc291cmNlQnVmZmVyLnRleHRUcmFja3MuCisgICAgaWYgKG1fc291cmNlQnVm
ZmVyKQorICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLT5zY2hlZHVsZUNoYW5n
ZUV2ZW50KCk7CisKKyAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkK
KyAgICAvLyB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQu
CisgICAgaWYgKG1lZGlhRWxlbWVudCgpKQorICAgICAgICBtZWRpYUVsZW1lbnQoKS0+dGV4dFRy
YWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmlu
ZGV4IDgwYTg4YjdlMjYwYTc2NjE3NzA3MTlhMWZhYTY1ZTY1ZTBhOWZhMTcuLjNhMzZmNmQ0OTUx
MTBhODAxZDhjZTBhYWJhOWM2M2M2Y2ZmZTMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaApAQCAtMTUwLDYgKzE1MCwxMCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UZXh0VHJhY2soKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRv
bWljU3RyaW5nJikgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJh
Y2tCYXNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7CiAK
QEAgLTE2NCw2ICsxNjgsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKIAorICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCmluZGV4IGEyMjI4MDRmMWNjNTc2
YzRmMTgwNTViNjJhOGQ1M2QwMWZmMGM1MDUuLjdjMTRhNmI4ZmEzNzc2ZWEwNTkxN2IzODFjMmU4
MTRjNTM5NTE2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAg
LTMyLDkgKzMyLDkgQEAKICAgICBPcGVyYXRpb25zTm90RGVsZXRhYmxlCiBdIGludGVyZmFjZSBU
ZXh0VHJhY2sgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJp
YnV0ZSBET01TdHJpbmcga2luZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxh
YmVsOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisgICAgW0N1
c3RvbVNldHRlcl0gYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKIAogICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgbW9kZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5jcHAKaW5kZXggNzBjY2E0N2ZlYWIwYTVhZDMyNDZiNWFiOTEzZGVmZTcwN2RjMjBhNS4u
NGE5YWExOThmMzUyNWM0NmNkNTAxODI2ZDhhZDhiYTk3NzBkMTczOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgaW50
IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4
dFRyYWNrICp0ZXh0VHJhY2spCiAgICAgcmV0dXJuIC0xOwogfQogCi1UZXh0VHJhY2sqIFRleHRU
cmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6
Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgLy8gNC44LjEwLjEyLjEgVGV4dCB0
cmFjayBtb2RlbAogICAgIC8vIFRoZSB0ZXh0IHRyYWNrcyBhcmUgc29ydGVkIGFzIGZvbGxvd3M6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IDQ1YTk1N2Q5
NzAyMmVhYzI2NDgxNTEwMjc5ZjA4OTY5ZGY0Njc3ZDIuLmQ5ZDg5Zjc5NmU3Mzg0NzU2N2UwOTMy
NDhhZDk0YzM0NzFhNjhlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5oCkBAIC00Nyw3ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJl
bGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sqKTsKICAgICB2aXJ0dWFsIGJvb2wgY29u
dGFpbnMoVHJhY2tCYXNlKikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICBUZXh0VHJhY2sqIGl0ZW0o
dW5zaWduZWQgaW5kZXgpOworICAgIFRleHRUcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CisgICAgVGV4dFRyYWNrKiBsYXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIGl0ZW0obGVuZ3Ro
KCkgLSAxKTsgfQorCiAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKaW5kZXggMTQwOWNjMGYzZDhjYTZhNzBmMDY2ZDI5
Mzg3MWY2YTA4NzYyYWE1YS4uZTkzZTllOTA4NThjMjIyNjQyMWJjOTA0MmU1M2ZjOWIyYTIxMDgx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcApAQCAtMzQsNiArMzQs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29u
c3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fbWVkaWFFbGVtZW50KDApCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICAsIG1fc291cmNlQnVmZmVyKDApCisjZW5kaWYKICAg
ICAsIG1faWQoaWQpCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5n
dWFnZSkKQEAgLTUzLDYgKzU2LDExIEBAIEVsZW1lbnQqIFRyYWNrQmFzZTo6ZWxlbWVudCgpCiAK
IHZvaWQgVHJhY2tCYXNlOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYga2luZCkKIHsKKyAg
ICBzZXRLaW5kSW50ZXJuYWwoa2luZCk7Cit9CisKK3ZvaWQgVHJhY2tCYXNlOjpzZXRLaW5kSW50
ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQorewogICAgIFN0cmluZyBvbGRLaW5kID0g
bV9raW5kOwogCiAgICAgaWYgKGlzVmFsaWRLaW5kKGtpbmQpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tCYXNlLmgKaW5kZXggYTBkMjBhYjI3NDk1ZDc3NzU0Yzk2ZDRkYjI3MjEyOTYzZTNh
MTc3My4uNTA5ZjdhNjFmMzU5MmNkNGI0NzBhY2NlN2E4YzEzMGIzYTJiZDZmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFz
cyBTb3VyY2VCdWZmZXI7CiAKIGNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRy
YWNrQmFzZT4gewogcHVibGljOgpAQCAtNTcsMTggKzU4LDMxIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9
CiAKICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdl
OyB9Ci0gICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7
IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShj
b25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAwOwogCisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKyAgICBTb3VyY2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlQnVmZmVyOyB9CisgICAgdm9pZCBzZXRTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVy
KiBidWZmZXIpIHsgbV9zb3VyY2VCdWZmZXIgPSBidWZmZXI7IH0KKyNlbmRpZgorCisgICAgdmly
dHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBUcmFja0Jh
c2UoVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJl
bCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNW
YWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCA9IDA7CiAKKyAgICB2
b2lkIHNldEtpbmRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKTsKKwogICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAg
ICBTb3VyY2VCdWZmZXIqIG1fc291cmNlQnVmZmVyOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
VHlwZSBtX3R5cGU7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAppbmRleCA4YmY2YzRjNjkyMWY5YWRjOTNhOGViMmM5
ZmI0MTZmYjA5YmIxMDg0Li5jM2RmOWU2ZWVlNzQ5OGJhMmIyOTg2MWYxNGRiZjcxYTM3ZmMxNGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTE3
OSw0ICsxNzksMTQgQEAgdm9pZCBUcmFja0xpc3RCYXNlOjphc3luY0V2ZW50VGltZXJGaXJlZChU
aW1lcjxUcmFja0xpc3RCYXNlPiopCiAgICAgLS1tX2Rpc3BhdGNoaW5nRXZlbnRzOwogfQogCiti
b29sIFRyYWNrTGlzdEJhc2U6OmlzQW55VHJhY2tFbmFibGVkKCkgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFuZFRyYWNrc1tpXS5nZXQoKTsKKyAgICAgICAgaWYg
KHRyYWNrLT5lbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0xpc3RCYXNlLmgKaW5kZXggYjcyYmMyNDIyYjNhZjA2ZWJjYjhhYTM4ZTg2MzFiYzhkOTgwMjlk
Ni4uN2E3NjVlMTkzZjI2M2FkN2U2NDcwZjU3MDY2NWQ1YmE3OTM3MDU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGlj
OgogICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYyBzbyB0cmFja3MgY2FuIGNhbGwgaXQKICAgICB2
b2lkIHNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIAorICAgIGJvb2wgaXNBbnlUcmFja0VuYWJsZWQo
KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxlbWVu
dCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5jcHAKaW5kZXggNGU1Mjc0NGUyOGQ4ZjA2Y2FkNDdhMmM5ZTgzNjBjMTc4ODUz
M2I5MC4uYzA0ODBmZWUyODU4NmUzMWFkZmE1MDJmOWZhOTE0ZTcyMjE0OTVjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgog
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKQEAgLTg3LDI1ICs5MSwyNSBAQCBWaWRlb1RyYWNr
OjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZT4gdAogCiAgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNh
c2UgVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgotICAgICAgICBzZXRLaW5kKFZpZGVv
VHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZEludGVybmFsKFZp
ZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFj
azo6Y2FwdGlvbnNLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFj
azo6Y2FwdGlvbnNLZXl3b3JkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVvVHJh
Y2tQcml2YXRlOjpNYWluOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6Om1haW5LZXl3b3Jk
KCkpOworICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlNpZ246Ci0gICAg
ICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmRJ
bnRlcm5hbChWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgotICAgICAgICBzZXRLaW5kKFZpZGVv
VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRl
b1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZp
ZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFj
azo6Y29tbWVudGFyeUtleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9U
cmFja1ByaXZhdGU6Ok5vbmU6Ci0gICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHNldEtpbmRJbnRlcm5hbChlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xODQsNiArMTg4LDQ5
IEBAIHZvaWQgVmlkZW9UcmFjazo6d2lsbFJlbW92ZShUcmFja1ByaXZhdGVCYXNlKiB0cmFja1By
aXZhdGUpCiAgICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZVZpZGVvVHJhY2sodGhpcyk7CiB9CiAK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBWaWRlb1RyYWNrOjpzZXRLaW5kKGNvbnN0
IEF0b21pY1N0cmluZyYga2luZCkKK3sKKyAgICAvLyAxMC4xIGtpbmQsIG9uIHNldHRpbmc6Cisg
ICAgLy8gMS4gSWYgdGhlIHZhbHVlIGJlaW5nIGFzc2lnbmVkIHRvIHRoaXMgYXR0cmlidXRlIGRv
ZXMgbm90IG1hdGNoIG9uZSBvZiB0aGUgdmlkZW8gdHJhY2sga2luZHMsCisgICAgLy8gdGhlbiBh
Ym9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIWlzVmFsaWRLaW5kKGtpbmQpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1
ZS4KKyAgICBzZXRLaW5kSW50ZXJuYWwoa2luZCk7CisKKyAgICAvLyAzLiBJZiB0aGUgc291cmNl
QnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEg
dGFzayB0byBmaXJlIGEgc2ltcGxlCisgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJj
ZUJ1ZmZlci52aWRlb1RyYWNrcy4KKyAgICBpZiAobV9zb3VyY2VCdWZmZXIpCisgICAgICAgIG1f
c291cmNlQnVmZmVyLT52aWRlb1RyYWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKKyAg
ICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2Ug
YXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CisgICAgLy8gdGhlIHZp
ZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICBtZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja3MoKS0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lk
IFZpZGVvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCit7
CisgICAgLy8gMTAuMSBsYW5ndWFnZSwgb24gc2V0dGluZzoKKyAgICAvLyAxLiBJZiB0aGUgdmFs
dWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGFuIGVtcHR5IHN0cmlu
ZyBvciBhIEJDUCA0NyBsYW5ndWFnZQorICAgIC8vIHRhZ1tCQ1A0N10sIHRoZW4gYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgLy8gRklYTUUoMTIzOTI2KTogVmFsaWRhdGUgdGhlIEJDUDQ3LW5lc3Mg
b2YgbGFuZ2FndWUuCisKKyAgICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5l
dyB2YWx1ZS4KKyAgICBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGxhbmd1YWdlKTsKKworICAgIC8v
IDMuIElmIHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51
bGwsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKKyAgICAvLyBldmVudCBuYW1l
ZCBjaGFuZ2UgYXQgc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLgorICAgIGlmIChtX3NvdXJjZUJ1
ZmZlcikKKyAgICAgICAgbV9zb3VyY2VCdWZmZXItPnZpZGVvVHJhY2tzKCktPnNjaGVkdWxlQ2hh
bmdlRXZlbnQoKTsKKworICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQg
YnkKKyAgICAvLyB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVt
ZW50LgorICAgIG1lZGlhRWxlbWVudCgpLT52aWRlb1RyYWNrcygpLT5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKaW5kZXggMTI2OGNlMzBjMWNjYmFhM2Jj
NDk1NGY1ODE5YjczMmNiNTk4ZGIyMi4uYjA5N2Q4YTk4YzNmNjcwZjk2MjZiZWFlZGY3OWYzYmQ3
NjM3NDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKQEAgLTM4LDYg
KzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYURlc2NyaXB0aW9u
OwogY2xhc3MgVmlkZW9UcmFjazsKIAogY2xhc3MgVmlkZW9UcmFja0NsaWVudCB7CkBAIC03MCw2
ICs3MSwxMyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOwogCisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBB
dG9taWNTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CisjZW5kaWYKKworICAgIGNvbnN0IE1lZGlhRGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1Ry
YWNrKFZpZGVvVHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcml2
YXRlVHJhY2spOwogCkBAIC04Miw2ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGxhbmd1YWdlQ2hhbmdlZChUcmFja1ByaXZhdGVCYXNlKiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoVHJhY2tQcml2YXRlQmFzZSopIE9WRVJS
SURFOwogCisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBzZWxlY3RlZCgpOyB9CisKICAgICBib29sIG1fc2VsZWN0ZWQ7CiAgICAgVmlkZW9UcmFja0Ns
aWVudCogbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRs
CmluZGV4IDFlNDFhOTAxMTkyNGI2OTA1Y2MzNTgwZThiNDEzYmI5YzQ3MmU0NWQuLjUzZTBkYTYy
ZjRiZDgyMDU3MDBiMjE1YzcyZGJiNGM0NzY4NjBlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMzAsOSArMzAsOSBAQAogICAgIEpTQ3VzdG9tTWFya0Z1
bmN0aW9uCiBdIGludGVyZmFjZSBWaWRlb1RyYWNrIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGlkOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAg
ICBbQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGxhbmd1YWdlOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFu
Z3VhZ2U7CiAKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxlY3RlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYURlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYURlc2NyaXB0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNlYzUxZmVjNGFj
MzY4ZjI0MDI2ZmY0NzBiNDYxN2M3NzgwNTA5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhRGVzY3JpcHRpb24uaApAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBNZWRpYURlc2NyaXB0aW9uX2gKKyNkZWZpbmUgTWVkaWFEZXNjcmlwdGlv
bl9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lZGlhRGVzY3JpcHRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYURlc2Ny
aXB0aW9uPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbigpIHsgfQor
CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzVmlkZW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW8oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGV4dCgpIGNvbnN0ID0gMDsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZjQyYzUxMjUxYzhhOGZiNDljYjdjNjcwNWJjNTFjOWNjYjg3ZmE4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBNZWRpYVNhbXBsZV9oCisjZGVmaW5lIE1lZGlhU2FtcGxlX2gK
KworI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tTYW1wbGVCb3g7CisKK3N0cnVj
dCBQbGF0Zm9ybVNhbXBsZSB7CisgICAgZW51bSB7CisgICAgICAgIE5vbmUsCisgICAgICAgIE1v
Y2tTYW1wbGVCb3hUeXBlLAorICAgIH0gdHlwZTsKKyAgICB1bmlvbiB7CisgICAgICAgIE1vY2tT
YW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CisgICAgfSBzYW1wbGU7Cit9OworCitjbGFzcyBNZWRp
YVNhbXBsZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2FtcGxlPiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TWVkaWFTYW1wbGUoKSB7IH0KKworICAgIHZpcnR1YWwgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGlt
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOworCisgICAg
ZW51bSBTYW1wbGVGbGFncyB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBJc1N5bmMgPSAx
IDw8IDAsCisgICAgfTsKKyAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSA9IDA7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCmluZGV4IGYzYTYwZjhiOTU3MzFjNGY5MjBk
OTY3YjA1YjJiN2YzOTliMzJlYWIuLjdkN2E0ODg0MjVmNGU3NjNmODc5MzMzMThjYTI0OWUxNjUw
ZGQ2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKQEAgLTM0LDYgKzM0LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBUcmFja1By
aXZhdGVCYXNlIHsKIHB1YmxpYzoKKyAgICBlbnVtIEN1ZUZvcm1hdCB7CisgICAgICAgIEdlbmVy
aWMsCisgICAgICAgIFdlYlZUVAorICAgIH07CisgICAgc3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZvcm1hdCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJh
bmRUZXh0VHJhY2tQcml2YXRlKCkgeyB9CiAKICAgICB2b2lkIHNldENsaWVudChJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KQEAgLTYz
LDExICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250
ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lUb1Jl
YWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVs
KCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcg
bGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21p
Y1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBp
bnQgdGV4dFRyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICBlbnVtIEN1ZUZv
cm1hdCB7Ci0gICAgICAgIEdlbmVyaWMsCi0gICAgICAgIFdlYlZUVAotICAgIH07CiAgICAgQ3Vl
Rm9ybWF0IGN1ZUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291
cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3Vy
Y2VQcml2YXRlLmgKaW5kZXggZWVkNzc2ZjNkN2UxM2FkOThkODhhOTNhNzU4ODg2MjY0YzZiMzM1
Zi4uZjMyYWI3YTgyMDk4Njg4NjgyZWY4MGVlOTIzMjk2MjlmNGQ3MzUyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgK
QEAgLTMyLDYgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01NSw2ICs1Niw5IEBA
IHB1YmxpYzoKICAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0
d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OwogICAgIHZpcnR1YWwgdm9pZCBtYXJrRW5kT2ZT
dHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrRW5k
T2ZTdHJlYW0oKSA9IDA7CisKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCA2NDkx
ZGE2ZTc1Mjg1YWJjZjdiOGEzOWYxNjZhMzQ1N2EzYzlmNjI3Li5lYzIxOGYwOTM5OWFmNjRlM2Rj
ZDYxMTYzMmE1ZmYyZjY3MWU4OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNp
bmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAt
NDUsMTEgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRl
KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpID0gMDsKIH07CiAK
IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>