<?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>187627</bug_id>
          
          <creation_ts>2018-07-12 16:34:16 -0700</creation_ts>
          <short_desc>Support connecting a MediaStreamAudioDestinationNode to RTCPeerConnection</short_desc>
          <delta_ts>2018-07-13 17:04:39 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1441715</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 16:34:16 -0700</bug_when>
    <thetext>We basically need to implement MediaStreamAudioSource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441721</commentid>
    <comment_count>1</comment_count>
      <attachid>344901</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 16:41:19 -0700</bug_when>
    <thetext>Created attachment 344901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441723</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 16:41:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/35334400&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441740</commentid>
    <comment_count>3</comment_count>
      <attachid>344905</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 17:09:02 -0700</bug_when>
    <thetext>Created attachment 344905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441746</commentid>
    <comment_count>4</comment_count>
      <attachid>344906</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 17:47:30 -0700</bug_when>
    <thetext>Created attachment 344906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441756</commentid>
    <comment_count>5</comment_count>
      <attachid>344906</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-07-12 18:43:18 -0700</bug_when>
    <thetext>Comment on attachment 344906
Patch

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

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSourceCocoa.cpp:58
&gt; +    if (bus.numberOfChannels() != 1 &amp;&amp; bus.numberOfChannels() != 2)
&gt; +        return;

It is probably worth adding a release error log here.

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSourceCocoa.cpp:93
&gt; +        auto* buffer = audioBufferList.buffer(0);
&gt; +        buffer-&gt;mDataByteSize = numberOfFrames * sizeof(float);
&gt; +        buffer-&gt;mNumberChannels = 1;
&gt; +        if (!muted())
&gt; +            memcpy(buffer-&gt;mData, bus.channel(0)-&gt;data(), buffer-&gt;mDataByteSize);
&gt; +        else
&gt; +            memset(buffer-&gt;mData, 0, buffer-&gt;mDataByteSize);
&gt; +    } else {
&gt; +        auto* buffer = audioBufferList.buffer(0);
&gt; +        buffer-&gt;mDataByteSize = numberOfFrames * sizeof(float);
&gt; +        buffer-&gt;mNumberChannels = 1;
&gt; +        if (!muted())
&gt; +            memcpy(buffer-&gt;mData, bus.channel(0)-&gt;data(), buffer-&gt;mDataByteSize);
&gt; +        else
&gt; +            memset(buffer-&gt;mData, 0, buffer-&gt;mDataByteSize);
&gt; +
&gt; +        buffer = audioBufferList.buffer(1);
&gt; +        buffer-&gt;mDataByteSize = numberOfFrames * sizeof(float);
&gt; +        buffer-&gt;mNumberChannels = 1;
&gt; +        if (!muted())
&gt; +            memcpy(buffer-&gt;mData, bus.channel(1)-&gt;data(), buffer-&gt;mDataByteSize);
&gt; +        else
&gt; +            memset(buffer-&gt;mData, 0, buffer-&gt;mDataByteSize);
&gt; +

A helper function would simplify this, something like:

static void setupBuffer(WebAudioBufferList audioBufferList, int channel, size_t numberOfFrames)
{
    auto* buffer = audioBufferList.buffer(channel);
    buffer-&gt;mDataByteSize = numberOfFrames * sizeof(float);
    buffer-&gt;mNumberChannels = 1;
    if (!muted())
        memcpy(buffer-&gt;mData, bus.channel(channel)-&gt;data(), buffer-&gt;mDataByteSize);
    else
        memset(buffer-&gt;mData, 0, buffer-&gt;mDataByteSize);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441952</commentid>
    <comment_count>6</comment_count>
      <attachid>344965</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-13 12:18:17 -0700</bug_when>
    <thetext>Created attachment 344965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442082</commentid>
    <comment_count>7</comment_count>
      <attachid>344965</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-07-13 15:57:16 -0700</bug_when>
    <thetext>Comment on attachment 344965
Patch

r=me, with nits.

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

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp:48
&gt; +static inline Ref&lt;MediaStream&gt; createMediaStream(ScriptExecutionContext&amp; context, Ref&lt;RealtimeMediaSource&gt;&amp;&amp; source)
&gt; +{
&gt; +    auto mediaStreamPrivate = MediaStreamPrivate::create(Vector&lt;Ref&lt;RealtimeMediaSource&gt;&gt;::from(WTFMove(source)), { });
&gt; +    return MediaStream::create(context, WTFMove(mediaStreamPrivate));
&gt; +}
&gt; +

This seems really awkward. Why isn&apos;t this a static create() method on MediaStream, taking a context and source?

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h:-58
&gt; -    void setAudioFormat(size_t numberOfChannels, float sampleRate);
&gt; -    void consumeAudio(AudioBus*, size_t numberOfFrames);
&gt; -
&gt; -    void addAudioConsumer(AudioDestinationConsumer*);
&gt; -    bool removeAudioConsumer(AudioDestinationConsumer*);
&gt; -    const Vector&lt;RefPtr&lt;AudioDestinationConsumer&gt;&gt;&amp; audioConsumers() const { return m_audioConsumers; }

It looks like this was the only use of AudioDestinationConsumer, so you might as well just remove AudioDestinationConsumer.h entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442094</commentid>
    <comment_count>8</comment_count>
      <attachid>345000</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-13 16:20:16 -0700</bug_when>
    <thetext>Created attachment 345000
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442097</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-13 16:21:22 -0700</bug_when>
    <thetext>Thanks for the review.


&gt; A helper function would simplify this, something like:
&gt; 
&gt; static void setupBuffer(WebAudioBufferList audioBufferList, int channel,
&gt; size_t numberOfFrames)

Added a helper routine.

&gt; &gt; +static inline Ref&lt;MediaStream&gt; createMediaStream(ScriptExecutionContext&amp; context, Ref&lt;RealtimeMediaSource&gt;&amp;&amp; source)
&gt; &gt; +{
&gt; &gt; +    auto mediaStreamPrivate = MediaStreamPrivate::create(Vector&lt;Ref&lt;RealtimeMediaSource&gt;&gt;::from(WTFMove(source)), { });
&gt; &gt; +    return MediaStream::create(context, WTFMove(mediaStreamPrivate));
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; This seems really awkward. Why isn&apos;t this a static create() method on
&gt; MediaStream, taking a context and source?

OK, added a create to MediaStreamPrivate.

&gt; &gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h:-58
&gt; &gt; -    void setAudioFormat(size_t numberOfChannels, float sampleRate);
&gt; &gt; -    void consumeAudio(AudioBus*, size_t numberOfFrames);
&gt; &gt; -
&gt; &gt; -    void addAudioConsumer(AudioDestinationConsumer*);
&gt; &gt; -    bool removeAudioConsumer(AudioDestinationConsumer*);
&gt; &gt; -    const Vector&lt;RefPtr&lt;AudioDestinationConsumer&gt;&gt;&amp; audioConsumers() const { return m_audioConsumers; }
&gt; 
&gt; It looks like this was the only use of AudioDestinationConsumer, so you
&gt; might as well just remove AudioDestinationConsumer.h entirely.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442112</commentid>
    <comment_count>10</comment_count>
      <attachid>345000</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-13 17:04:38 -0700</bug_when>
    <thetext>Comment on attachment 345000
Patch for landing

Clearing flags on attachment: 345000

Committed r233829: &lt;https://trac.webkit.org/changeset/233829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442113</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-13 17:04:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344901</attachid>
            <date>2018-07-12 16:41:19 -0700</date>
            <delta_ts>2018-07-12 17:09:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187627-20180712164118.patch</filename>
            <type>text/plain</type>
            <size>19548</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzYjQxZjA0ZjA4NzIz
MTZlMWIyNjZhNWEyMjc0NDdkZmEwY2VhYi4uOWQ4NzU4ZjY0OGJmMTFmMjRmMDRmMGFmMmVlM2U2
YmMxNzc5YjE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTA3LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3Rp
bmcgYSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIHdpbGwgYWRkIHRoZW0uCisKKyAgICAgICAgV2hlbiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlIGlzIGNhbGxlZCB0byByZWFkIG5ldyBhdWRpbyBzYW1wbGVzLAorICAgICAgICBjb252ZXJ0
IHRoZXNlIHNhbXBsZXMgdG8gYSBXZWJBdWRpb0J1ZmZlckxpc3QgYW5kIGNhbGwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlLgorICAgICAgICBUaGlzIG1ha2VzIGl0
cyBvYnNlcnZlcnMgdG8gZ2V0IHRoZSBhdWRpbyBkYXRhLgorCisgICAgICAgIE1hZGUgc29tZSBt
aW5vciByZWZhY3RvcmluZy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmNyZWF0ZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjptZWRpYVN0cmVhbVNvdXJjZSk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9T
b3VyY2U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjphZGRBdWRpb0NvbnN1bWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVkaW9Gb3JtYXQp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJlYW1EZXNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8p
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0w
Ny0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
RnJhbWVMb2FkZXJDbGllbnQgd2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZSBjYWxsYmFjawpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cAppbmRleCBjMjg0YTQxMDhkYjJmNjI0YTZkZmYxZDBjOTQ0ZGMyOWQyOGU4ZTExLi45MGQ2YzU2
NTFmMWJiZTNmNjE0NGJmNjMwMzQ0NWM1ZGMzNTA1YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBNZWRp
YVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PigpKSk7CisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtOjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoeyB9KSk7
CiB9CiAKIFJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgc3RyZWFtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMWI5MDcyYWUyMjczNjgzZmQ0MGIxMWNlOTIxOGZk
NzcyN2Q5YWU1My4uZDk4YjhmYTViMzFiMDE2ZjNiYTQ2NDJlMjBjNmM1MGRlYTljYzY1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00MCwyNyArNDAsMjEgQEAg
UmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5lbHMpKTsKIH0K
IAorc3RhdGljIGlubGluZSBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZU1lZGlhU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNv
dXJjZSkKK3sKKyAgICBhdXRvIG1lZGlhU3RyZWFtUHJpdmF0ZSA9IE1lZGlhU3RyZWFtUHJpdmF0
ZTo6Y3JlYXRlKFZlY3RvcjxSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4+Ojpmcm9tKFdURk1vdmUo
c291cmNlKSksIHsgfSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwg
V1RGTW92ZShtZWRpYVN0cmVhbVByaXZhdGUpKTsKK30KKwogTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMp
Ci0gICAgLCBtX21peEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIFByb2Nl
c3NpbmdTaXplSW5GcmFtZXMpKQorICAgICwgbV9zb3VyY2UoTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZTo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKKyAgICAs
IG1fc3RyZWFtKGNyZWF0ZU1lZGlhU3RyZWFtKCpjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgbV9zb3VyY2UuY29weVJlZigpKSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZU1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbik7Ci0KLSAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4+IGF1ZGlvU291cmNlczsKLSAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKCptX3NvdXJjZSk7Ci0g
ICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB7IH0p
KTsKLQotICAgIG1fc291cmNlLT5zZXRBdWRpb0Zvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBjb250
ZXh0LnNhbXBsZVJhdGUoKSk7Ci0KICAgICBpbml0aWFsaXplKCk7CiB9CiAKLVJlYWx0aW1lTWVk
aWFTb3VyY2UqIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om1lZGlhU3RyZWFtU291
cmNlKCkKLXsKLSAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7Ci19Ci0KIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6On5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKIHsK
ICAgICB1bmluaXRpYWxpemUoKTsKQEAgLTY4LDggKzYyLDcgQEAgTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6fk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoKQogCiB2b2lk
IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnByb2Nlc3Moc2l6ZV90IG51bWJlck9m
RnJhbWVzKQogewotICAgIG1fbWl4QnVzLT5jb3B5RnJvbSgqaW5wdXQoMCktPmJ1cygpKTsKLSAg
ICBtX3NvdXJjZS0+Y29uc3VtZUF1ZGlvKG1fbWl4QnVzLmdldCgpLCBudW1iZXJPZkZyYW1lcyk7
CisgICAgbV9zb3VyY2UtPmNvbnN1bWVBdWRpbygqaW5wdXQoMCktPmJ1cygpLCBudW1iZXJPZkZy
YW1lcyk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzZXQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA4ZThmNDA0OTQ4YjkzZjM4
MWIxYTkwM2M1YmRlNzI5NmQyMzQxMTI1Li5iMTkyZjI2ZDY0OTY0NDFjMzUyOGJhZDIxNWFhNmFi
OTJjNmY1YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDEsMjYg
KzQxLDIzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUoKTsKIAotICAgIE1lZGlhU3RyZWFtKiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVh
bS5nZXQoKTsgfQorICAgIE1lZGlhU3RyZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbS5n
ZXQoKTsgfQogCiAgICAgLy8gQXVkaW9Ob2RlLgotICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOworICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKICAgICAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlKiBtZWRpYVN0cmVhbVNv
dXJjZSgpOwotCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCi0gICAgZG91YmxlIHRh
aWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgdGFpbFRpbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gQXMgYW4gYXVkaW8gc291cmNlLCB3ZSB3
aWxsIG5ldmVyIHByb3BhZ2F0ZSBzaWxlbmNlLgotICAgIGJvb2wgcHJvcGFnYXRlc1NpbGVuY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcHJvcGFnYXRlc1Np
bGVuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgUmVmUHRyPE1lZGlh
U3RyZWFtPiBtX3N0cmVhbTsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gbV9z
b3VyY2U7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBtX21peEJ1czsKKyAgICBSZWY8TWVkaWFTdHJl
YW1BdWRpb1NvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPE1lZGlhU3RyZWFtPiBtX3N0cmVhbTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCmluZGV4IDM1
NjNmYTM2MjkxMjA5NDA4MTBkYWMyYTgyMjI2YjhjZTcyNGZlMjUuLmI0Nzc0M2JiYjJlZjY0YmNl
MzhhYjg5NWI1MmM2NDJjNmVjODNlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyMCArMjgs
MTUgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJBdWRpb1NvdXJj
ZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYv
VVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291
cmNlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKSk7Ci19Ci0KLU1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKQorTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZShzaXplX3QsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBSZWFsdGltZU1lZGlhU291cmNlKG1ha2VTdHJpbmcoIldlYkF1ZGlvLSJfcywgY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sICJN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIikKIHsKKyAgICBtX2N1cnJlbnRTZXR0aW5n
cy5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBj
b25zdApAQCAtNjAsMzYgKzU1LDExIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAogICAgIHJldHVybiBt
X2N1cnJlbnRTZXR0aW5nczsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRB
dWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCi17Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwotICAgIG1fYXVkaW9Db25z
dW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
OjpyZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIp
Ci17Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwotICAgIHNp
emVfdCBwb3MgPSBtX2F1ZGlvQ29uc3VtZXJzLmZpbmQoY29uc3VtZXIpOwotICAgIGlmIChwb3Mg
IT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9hdWRpb0NvbnN1bWVycy5yZW1vdmUocG9zKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlv
Q29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChhdXRvJiBjb25zdW1lciA6IG1fYXVkaW9Db25zdW1l
cnMpCi0gICAgICAgIGNvbnN1bWVyLT5zZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxl
UmF0ZSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1
ZGlvQnVzKiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
Cit2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNvbnN1bWVBdWRpbyhBdWRpb0J1cyYsIHNp
emVfdCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0g
ICAgZm9yIChhdXRvJiBjb25zdW1lciA6IG1fYXVkaW9Db25zdW1lcnMpCi0gICAgICAgIGNvbnN1
bWVyLT5jb25zdW1lQXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7CiB9CisjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCmluZGV4IDE4Yjk2ZTZiMmViZWUy
OTA1ZTA3Yzg2MWVmZDVmZTkyNmYzYTg5NWEuLjM1YjAxYzViODA1ZTEwNGFmYzdlN2ZhNmU0MDA5
N2VmMzQyOWVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMg
UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IGNyZWF0ZShzaXplX3QgbnVtYmVyT2ZDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlIHsgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSB9KTsgfQogCiAgICAgfk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTUwLDIyICs1MCwxNiBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2
aWNlSWQ7IH0KICAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpIHsg
bV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CiAKLSAgICB2b2lkIHNldEF1ZGlvRm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB2b2lkIGNvbnN1bWVB
dWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICB2b2lkIGFkZEF1
ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKik7Ci0gICAgYm9vbCByZW1vdmVB
dWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciopOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4mIGF1ZGlvQ29uc3VtZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9hdWRpb0NvbnN1bWVyczsgfQorICAgIHZvaWQgY29uc3VtZUF1ZGlvKEF1
ZGlvQnVzJiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlKCk7CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZShzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICBib29sIGlzQ2FwdHVyZVNv
dXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ2FwdHVyZVNv
dXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgbV9kZXZp
Y2VJZDsKLSAgICBMb2NrIG1fYXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8
QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgc2l6ZV90IG1fbnVt
YmVyT2ZGcmFtZXMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJlZTE1NjkyYTkxNGM1MTBkMzdlNWQw
MzY0YTYyZDk3MTA5ZWEyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUg
IkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlz
dC5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUgPHBh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
RGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7Cisg
ICAgYm9vbCBpc0Zsb2F0ID0gdHJ1ZTsKKyAgICBib29sIGlzQmlnRW5kaWFuID0gZmFsc2U7Cisg
ICAgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNhbXBsZVNpemUgPSA4ICogc2l6ZW9mKGZsb2F0KTsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZv
cm1hdCwgc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBzYW1wbGVTaXplLCBzYW1wbGVTaXplLCBp
c0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVh
bUZvcm1hdDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8o
QXVkaW9CdXMmIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIGlmIChidXMubnVt
YmVyT2ZDaGFubmVscygpICE9IDEgJiYgYnVzLm51bWJlck9mQ2hhbm5lbHMoKSAhPSAyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJl
ck9mRnJhbWVzLCBtX2N1cnJlbnRTZXR0aW5ncy5zYW1wbGVSYXRlKCkpOworICAgIGF1dG8gbWVk
aWFUaW1lID0gUEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUpOworICAgIG1fbnVtYmVyT2ZGcmFt
ZXMgKz0gbnVtYmVyT2ZGcmFtZXM7CisKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
bmV3RGVzY3JpcHRpb24gPSBzdHJlYW1EZXNjcmlwdGlvbihtX2N1cnJlbnRTZXR0aW5ncy5zYW1w
bGVSYXRlKCksIGJ1cy5udW1iZXJPZkNoYW5uZWxzKCkpOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBwcm9iYWJseSB0cnkgdG8gZG8gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9uY2UgaW4gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZSBhbmQgcmVzaXplIGl0IGFjY29yZGluZyBudW1iZXJPZkZyYW1l
cy4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVt
YmVyT2ZGcmFtZXMpIH07CisKKyAgICBpZiAoYnVzLm51bWJlck9mQ2hhbm5lbHMoKSA9PSAxKSB7
CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCk7CisgICAg
ICAgIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mRnJhbWVzICogc2l6ZW9mKGZsb2F0
KTsKKyAgICAgICAgYnVmZmVyLT5tTnVtYmVyQ2hhbm5lbHMgPSAxOworICAgICAgICBpZiAoIW11
dGVkKCkpCisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLT5tRGF0YSwgYnVzLmNoYW5uZWwoMCkt
PmRhdGEoKSwgYnVmZmVyLT5tRGF0YUJ5dGVTaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbWVtc2V0KGJ1ZmZlci0+bURhdGEsIDAsIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgYXV0byogYnVmZmVyID0gYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigw
KTsKKyAgICAgICAgYnVmZmVyLT5tRGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZGcmFtZXMgKiBzaXpl
b2YoZmxvYXQpOworICAgICAgICBidWZmZXItPm1OdW1iZXJDaGFubmVscyA9IDE7CisgICAgICAg
IGlmICghbXV0ZWQoKSkKKyAgICAgICAgICAgIG1lbWNweShidWZmZXItPm1EYXRhLCBidXMuY2hh
bm5lbCgwKS0+ZGF0YSgpLCBidWZmZXItPm1EYXRhQnl0ZVNpemUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtZW1zZXQoYnVmZmVyLT5tRGF0YSwgMCwgYnVmZmVyLT5tRGF0YUJ5dGVTaXpl
KTsKKworICAgICAgICBidWZmZXIgPSBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDEpOworICAgICAg
ICBidWZmZXItPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkZyYW1lcyAqIHNpemVvZihmbG9hdCk7
CisgICAgICAgIGJ1ZmZlci0+bU51bWJlckNoYW5uZWxzID0gMTsKKyAgICAgICAgaWYgKCFtdXRl
ZCgpKQorICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlci0+bURhdGEsIGJ1cy5jaGFubmVsKDEpLT5k
YXRhKCksIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1lbXNldChidWZmZXItPm1EYXRhLCAwLCBidWZmZXItPm1EYXRhQnl0ZVNpemUpOworCisgICAg
fQorCisgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgYXVkaW9CdWZmZXJMaXN0
LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBudW1iZXJPZkZyYW1l
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZDkwZWE3NmI0YmI0M2M0M2YwMDQ1YmFlNDk1YzIzZTU5YWY3OTM5Ny4u
N2Y2NWJhYmVjN2Q3ZmFjMWY0YTk5MWNhNDIyNGYzYTA5N2Q0OTc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA1OSw2ICsx
MDU5LDcgQEAKIAkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThD
Mzk1QjFDOEYwQTYxMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5QzlBRjFGNTlDRjVC
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5Qzk4MDFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFi
bGVTdHJlYW1TaW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2
YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTI5REY4NDFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0MTMzQ0I4QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzNDQjg5MjBGODBFODYwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29j
b2EuY3BwICovOyB9OwogCQk0MTM4MEMyNzFGMzQzNkFDMDAxNTVGREEgLyogRE9NQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzI1MUYz
NDM2OUEwMDE1NUZEQSAvKiBET01DYWNoZS5oICovOyB9OwogCQk0MTM4MEMyOTFGMzQzNkFDMDAx
NTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTM4MEMyMjFGMzQzNjkwMDAxNTVGREEgLyogRE9NQ2FjaGVTdG9y
YWdlLmggKi87IH07CiAJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMz
MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLzsgfTsKQEAgLTcxOTMsNiArNzE5
NCw3IEBACiAJCTQxMzFGM0IxMUY5NTUyODEwMDU5OTk1QSAvKiBKU0ZldGNoRXZlbnRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaEV2ZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMUYzQjQxRjk1NUJDMzAw
NTk5OTVBIC8qIEV4dGVuZGFibGVFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXh0ZW5kYWJsZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTMxRjNCNTFGOTU1QkM1MDA1OTk5NUEgLyogRXh0ZW5kYWJsZUV2ZW50SW5pdC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXh0ZW5kYWJsZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzNDQjg5MjBGODBFODYwMEU4OUIxMSAvKiBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzODBDMjAxRjM0MzY4QTAwMTU1RkRBIC8qIERPTUNhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERPTUNhY2hlLmNwcDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQxMzgwQzIxMUYzNDM2OEQw
MDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NQ2Fj
aGVTdG9yYWdlLmNwcDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MTM4MEMyMjFGMzQzNjkwMDAxNTVGREEg
LyogRE9NQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUNhY2hlU3RvcmFnZS5oOyBw
YXRoID0gTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwpAQCAtMjY3MjAsNiArMjY3MjIsNyBAQAogCQkJCTA3OEUwOTRBMTdEMTcwOTYw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCAqLywKIAkJCQkw
NzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgKi8s
CiAJCQkJMDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
aCAqLywKKwkJCQk0MTMzQ0I4OTIwRjgwRTg2MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZUNvY29hLmNwcCAqLywKIAkJCQlGRDY3MUE3NDE1OUJCMDcwMDAxOTc1NTkgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwICovLAogCQkJCUZENjcxQTc1MTU5QkIwNzAwMDE5NzU1
OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oICovLAogCQkJCUZENjcxQTc2MTU5QkIw
NzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwgKi8sCkBAIC0zMTk1
OSw2ICszMTk2Miw3IEBACiAJCQkJREU1Rjg0NTQxRkExODZFQTAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UzNjMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0NTUxRkExODZFQTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0NTYxRkEx
ODZFQTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNjUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1NzFGQTE4NkVBMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTM2Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1ODFGQTE4NkVBMDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTM2Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1OTFG
QTE4NkVBMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM2OC5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344905</attachid>
            <date>2018-07-12 17:09:02 -0700</date>
            <delta_ts>2018-07-12 17:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187627-20180712170901.patch</filename>
            <type>text/plain</type>
            <size>23064</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzYjQxZjA0ZjA4NzIz
MTZlMWIyNjZhNWEyMjc0NDdkZmEwY2VhYi4uNTc0ZjM2M2ZhN2NhNDgyZDg3MjA3Y2YwNWIwY2Mw
OGZlMGJhOTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3Rp
bmcgYSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MzM0NDAwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBp
cyBjYWxsZWQgdG8gcmVhZCBuZXcgYXVkaW8gc2FtcGxlcywKKyAgICAgICAgY29udmVydCB0aGVz
ZSBzYW1wbGVzIHRvIGEgV2ViQXVkaW9CdWZmZXJMaXN0IGFuZCBjYWxsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZS4KKyAgICAgICAgVGhpcyBtYWtlcyBpdHMgb2Jz
ZXJ2ZXJzIHRvIGdldCB0aGUgYXVkaW8gZGF0YS4KKworICAgICAgICBUZXN0OiB3ZWJydGMvcGVl
ci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6Y3JlYXRlKTogTWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
cHJvY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
ZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTgtMDctMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGxJbmplY3RVc2VyU2NyaXB0Rm9y
RnJhbWUgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggYzI4NGE0MTA4ZGIyZjYyNGE2ZGZmMWQwYzk0NGRjMjlk
MjhlOGUxMS4uOTBkNmM1NjUxZjFiYmUzZjYxNDRiZjYzMDM0NDVjNWRjMzUwNWMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFTdHJlYW0+
IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsK
LSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4oKSkpOwor
ICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0
ZTo6Y3JlYXRlKHsgfSkpOwogfQogCiBSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0mIHN0cmVhbSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDFiOTA3MmFlMjI3MzY4
M2ZkNDBiMTFjZTkyMThmZDc3MjdkOWFlNTMuLmI3YTEwYjczMDA4Njg5ZWFiOThhN2Y5MjM1ZTJh
OGE2YzdiODczNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NDAsMjcgKzQwLDIxIEBAIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJP
ZkNoYW5uZWxzKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGVN
ZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UpCit7CisgICAgYXV0byBtZWRpYVN0cmVhbVByaXZhdGUgPSBN
ZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
Pjo6ZnJvbShXVEZNb3ZlKHNvdXJjZSkpLCB7IH0pOworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6
Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUobWVkaWFTdHJlYW1Qcml2YXRlKSk7Cit9CisKIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKICAgICA6
IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpLCBu
dW1iZXJPZkNoYW5uZWxzKQotICAgICwgbV9taXhCdXMoQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJP
ZkNoYW5uZWxzLCBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSkKKyAgICAsIG1fc291cmNlKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkpCisgICAgLCBt
X3N0cmVhbShjcmVhdGVNZWRpYVN0cmVhbSgqY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIG1fc291cmNlLmNvcHlSZWYoKSkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb24pOwotCi0gICAgbV9zb3VyY2UgPSBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiBhdWRpb1NvdXJjZXM7Ci0gICAgYXVkaW9Tb3VyY2VzLmFwcGVuZCgqbV9zb3VyY2UpOwotICAg
IG1fc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlcywgeyB9KSk7
Ci0KLSAgICBtX3NvdXJjZS0+c2V0QXVkaW9Gb3JtYXQobnVtYmVyT2ZDaGFubmVscywgY29udGV4
dC5zYW1wbGVSYXRlKCkpOwotCiAgICAgaW5pdGlhbGl6ZSgpOwogfQogCi1SZWFsdGltZU1lZGlh
U291cmNlKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjptZWRpYVN0cmVhbVNvdXJj
ZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlLmdldCgpOwotfQotCiBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlOjp+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpCiB7CiAg
ICAgdW5pbml0aWFsaXplKCk7CkBAIC02OCw4ICs2Miw3IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGU6On5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKIAogdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpwcm9jZXNzKHNpemVfdCBudW1iZXJPZkZy
YW1lcykKIHsKLSAgICBtX21peEJ1cy0+Y29weUZyb20oKmlucHV0KDApLT5idXMoKSk7Ci0gICAg
bV9zb3VyY2UtPmNvbnN1bWVBdWRpbyhtX21peEJ1cy5nZXQoKSwgbnVtYmVyT2ZGcmFtZXMpOwor
ICAgIG1fc291cmNlLT5jb25zdW1lQXVkaW8oKmlucHV0KDApLT5idXMoKSwgbnVtYmVyT2ZGcmFt
ZXMpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc2V0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggOGU4ZjQwNDk0OGI5M2YzODFi
MWE5MDNjNWJkZTcyOTZkMjM0MTEyNS4uYjE5MmYyNmQ2NDk2NDQxYzM1MjhiYWQyMTVhYTZhYjky
YzZmNWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQxLDI2ICs0
MSwyMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlKCk7CiAKLSAgICBNZWRpYVN0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0u
Z2V0KCk7IH0KKyAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0
KCk7IH0KIAogICAgIC8vIEF1ZGlvTm9kZS4KLSAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0
KCkgZmluYWw7CiAgICAgCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogbWVkaWFTdHJlYW1Tb3Vy
Y2UoKTsKLQogcHJpdmF0ZToKICAgICBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1
ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKIAotICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzIGFuIGF1ZGlvIHNvdXJjZSwgd2Ugd2ls
bCBuZXZlciBwcm9wYWdhdGUgc2lsZW5jZS4KLSAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHByb3BhZ2F0ZXNTaWxl
bmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gbV9zdHJlYW07Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291
cmNlOwotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9taXhCdXM7CisgICAgUmVmPE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U+IG1fc291cmNlOworICAgIFJlZjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAppbmRleCAzNTYz
ZmEzNjI5MTIwOTQwODEwZGFjMmE4MjIyNmI4Y2U3MjRmZTI1Li5kNzk3YjY3YzA1ZGZlYWY2MWQ5
NGJjYWJmZjBhMjM4NTBhZjM2ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjAgKzI4LDE1
IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiQXVkaW9Tb3VyY2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkpOwotfQotCi1NZWRpYVN0cmVhbUF1ZGlv
U291cmNlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UobWFrZVN0cmluZygiV2ViQXVkaW8tIl9zLCBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgIk1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUiKQogeworICAgIG1fY3VycmVudFNldHRpbmdzLnNldFNhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSk7CiB9CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0CkBAIC02
MCwzNiArNTUsMTEgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFNl
dHRpbmdzOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFkZEF1ZGlvQ29uc3Vt
ZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKLXsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgbV9hdWRpb0NvbnN1bWVycy5hcHBl
bmQoY29uc3VtZXIpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1
ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKLXsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgc2l6ZV90IHBvcyA9
IG1fYXVkaW9Db25zdW1lcnMuZmluZChjb25zdW1lcik7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3Vu
ZCkgewotICAgICAgICBtX2F1ZGlvQ29uc3VtZXJzLnJlbW92ZShwb3MpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNM
b2NrKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN1bWVyIDogbV9hdWRpb0NvbnN1bWVycykKLSAgICAg
ICAgY29uc3VtZXItPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKLX0K
LQotdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzJiwgc2l6ZV90KQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKGF1
dG8mIGNvbnN1bWVyIDogbV9hdWRpb0NvbnN1bWVycykKLSAgICAgICAgY29uc3VtZXItPmNvbnN1
bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKaW5kZXggMThiOTZlNmIyZWJlZTI5MDVlMDdjODYx
ZWZkNWZlOTI2ZjNhODk1YS4uMzIzZjY5MTYzZGY0ODYwODBjN2Y1OTQ5NjZmMTg0ZjlkNjZhNDQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllczsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBmaW5h
bCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZT4gY3JlYXRlKGZsb2F0IHNhbXBsZVJhdGUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSB7IHNhbXBsZVJhdGUgfSk7IH0KIAogICAg
IH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkgPSBkZWZhdWx0OwogCkBAIC01MCwyMiArNTAsMTYg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZUlkOyB9CiAgICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBTdHJpbmcmIGRldmljZUlk
KSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQogCi0gICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9pZCBjb25z
dW1lQXVkaW8oQXVkaW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwotCi0gICAgdm9pZCBh
ZGRBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciopOwotICAgIGJvb2wgcmVt
b3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+JiBhdWRpb0NvbnN1bWVycygp
IGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKyAgICB2b2lkIGNvbnN1bWVBdWRp
byhBdWRpb0J1cyYsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZSgpOworICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgbV9kZXZpY2VJZDsKLSAgICBM
b2NrIG1fYXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZGcmFtZXMg
eyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1YTg1ZGMzMjA0ZTc1NDIyZGRlNDkzOWQ3Y2I4MDg2NGZh
MTgyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgorI2luY2x1
ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24o
c2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgYm9vbCBpc0Zs
b2F0ID0gdHJ1ZTsKKyAgICBib29sIGlzQmlnRW5kaWFuID0gZmFsc2U7CisgICAgYm9vbCBpc05v
bkludGVybGVhdmVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNhbXBsZVNpemUg
PSA4ICogc2l6ZW9mKGZsb2F0KTsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBz
dHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxl
UmF0ZSwgY2hhbm5lbENvdW50LCBzYW1wbGVTaXplLCBzYW1wbGVTaXplLCBpc0Zsb2F0LCBpc0Jp
Z0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMmIGJ1
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIGlmIChidXMubnVtYmVyT2ZDaGFubmVs
cygpICE9IDEgJiYgYnVzLm51bWJlck9mQ2hhbm5lbHMoKSAhPSAyKQorICAgICAgICByZXR1cm47
CisKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBt
X2N1cnJlbnRTZXR0aW5ncy5zYW1wbGVSYXRlKCkpOworICAgIGF1dG8gbWVkaWFUaW1lID0gUEFM
Ojp0b01lZGlhVGltZShzdGFydFRpbWUpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVy
T2ZGcmFtZXM7CisKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRp
b24gPSBzdHJlYW1EZXNjcmlwdGlvbihtX2N1cnJlbnRTZXR0aW5ncy5zYW1wbGVSYXRlKCksIGJ1
cy5udW1iZXJPZkNoYW5uZWxzKCkpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB0aGUg
bWVtb3J5IGFsbG9jYXRpb24gb25jZSBpbiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlIGFuZCByZXNp
emUgaXQgYWNjb3JkaW5nIG51bWJlck9mRnJhbWVzLgorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBh
dWRpb0J1ZmZlckxpc3QgeyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24p
LCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJPZkZyYW1lcykgfTsKKworICAgIGlmIChi
dXMubnVtYmVyT2ZDaGFubmVscygpID09IDEpIHsKKyAgICAgICAgYXV0byogYnVmZmVyID0gYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKTsKKyAgICAgICAgYnVmZmVyLT5tRGF0YUJ5dGVTaXplID0g
bnVtYmVyT2ZGcmFtZXMgKiBzaXplb2YoZmxvYXQpOworICAgICAgICBidWZmZXItPm1OdW1iZXJD
aGFubmVscyA9IDE7CisgICAgICAgIGlmICghbXV0ZWQoKSkKKyAgICAgICAgICAgIG1lbWNweShi
dWZmZXItPm1EYXRhLCBidXMuY2hhbm5lbCgwKS0+ZGF0YSgpLCBidWZmZXItPm1EYXRhQnl0ZVNp
emUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtZW1zZXQoYnVmZmVyLT5tRGF0YSwgMCwg
YnVmZmVyLT5tRGF0YUJ5dGVTaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvKiBidWZm
ZXIgPSBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApOworICAgICAgICBidWZmZXItPm1EYXRhQnl0
ZVNpemUgPSBudW1iZXJPZkZyYW1lcyAqIHNpemVvZihmbG9hdCk7CisgICAgICAgIGJ1ZmZlci0+
bU51bWJlckNoYW5uZWxzID0gMTsKKyAgICAgICAgaWYgKCFtdXRlZCgpKQorICAgICAgICAgICAg
bWVtY3B5KGJ1ZmZlci0+bURhdGEsIGJ1cy5jaGFubmVsKDApLT5kYXRhKCksIGJ1ZmZlci0+bURh
dGFCeXRlU2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbXNldChidWZmZXItPm1E
YXRhLCAwLCBidWZmZXItPm1EYXRhQnl0ZVNpemUpOworCisgICAgICAgIGJ1ZmZlciA9IGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMSk7CisgICAgICAgIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSA9IG51
bWJlck9mRnJhbWVzICogc2l6ZW9mKGZsb2F0KTsKKyAgICAgICAgYnVmZmVyLT5tTnVtYmVyQ2hh
bm5lbHMgPSAxOworICAgICAgICBpZiAoIW11dGVkKCkpCisgICAgICAgICAgICBtZW1jcHkoYnVm
ZmVyLT5tRGF0YSwgYnVzLmNoYW5uZWwoMSktPmRhdGEoKSwgYnVmZmVyLT5tRGF0YUJ5dGVTaXpl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVtc2V0KGJ1ZmZlci0+bURhdGEsIDAsIGJ1
ZmZlci0+bURhdGFCeXRlU2l6ZSk7CisKKyAgICB9CisKKyAgICBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihu
ZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTBlYTc2YjRiYjQz
YzQzZjAwNDViYWU0OTVjMjNlNTlhZjc5Mzk3Li40NDk4ODQxMGZlMzZiMzY1M2Q3MjdkN2NjNzU0
NzEwOGVkNDMzMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDU5LDYgKzEwNTksNyBAQAogCQk0MTI5QzlBQjFGNTlDNTcz
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4RjBBNjEwMDUxQzhBMyAvKiBSZWFk
YWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxMjlDOUFGMUY1OUNGNUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlD
OTgwMUY1ODYxQzcwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5REY4NjFCQjVCODBDMDAz
MjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlERjg0MUJCNUI3RjcwMDMy
MkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxMzNDQjhCMjBGODBFOTkw
MEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzM0NCODkyMEY4MEU4NjAwRTg5QjEx
IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi87IH07CiAJCTQxMzgwQzI3MUYz
NDM2QUMwMDE1NUZEQSAvKiBET01DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzODBDMjUxRjM0MzY5QTAwMTU1RkRBIC8qIERPTUNhY2hlLmgg
Ki87IH07CiAJCTQxMzgwQzI5MUYzNDM2QUMwMDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzIyMUYz
NDM2OTAwMDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2UuaCAqLzsgfTsKIAkJNDEzOEQzMzUxMjQ0
MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29u
dGV4dC5oICovOyB9OwpAQCAtNzE5Myw2ICs3MTk0LDcgQEAKIAkJNDEzMUYzQjExRjk1NTI4MTAw
NTk5OTVBIC8qIEpTRmV0Y2hFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTMxRjNCNDFGOTU1QkMzMDA1OTk5NUEgLyogRXh0ZW5kYWJsZUV2ZW50SW5p
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbmRhYmxlRXZlbnRJbml0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0I1MUY5NTVCQzUwMDU5OTk1
QSAvKiBFeHRlbmRhYmxlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFeHRl
bmRhYmxlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzM0NC
ODkyMEY4MEU4NjAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4MEMyMDFGMzQzNjhB
MDAxNTVGREEgLyogRE9NQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NQ2FjaGUuY3Bw
OyBwYXRoID0gTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJNDEzODBDMjExRjM0MzY4RDAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01DYWNoZVN0b3JhZ2UuY3BwOyBwYXRoID0gTW9kdWxl
cy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTQxMzgwQzIyMUYzNDM2OTAwMDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRE9NQ2FjaGVTdG9yYWdlLmg7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC0yNjcyMCw2ICsyNjcy
Miw3IEBACiAJCQkJMDc4RTA5NEExN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaWRsICovLAogCQkJCTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLywKIAkJCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlF
MEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovLAorCQkJCTQxMzNDQjg5MjBGODBFODYw
MEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwICovLAogCQkJCUZENjcx
QTc0MTU5QkIwNzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgKi8s
CiAJCQkJRkQ2NzFBNzUxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmggKi8sCiAJCQkJRkQ2NzFBNzYxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmlkbCAqLywKQEAgLTMxNDg3LDYgKzMxNDkwLDcgQEAKIAkJCQlDOTBGNjU1
NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzM0NCOEIyMEY4
MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTA1OEFERjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBRTExRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDNkNzJkNzcxZDIwMjUwZmI1
NTI2ZWQyNDcwM2Q2ODY3NjkxYjBlOC4uZTczNTJkNWM0NTE5MDhiNTdmZjg3NGJmMDU3ODZhN2U2
YzcyNmQxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA3LTEyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3RpbmcgYSBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM1MzM0NDAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0
cmVhbURlc3RpbmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL3Bl
ZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0bWw6IEFkZGVkLgor
CiAyMDE4LTA3LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBGcmFtZUxvYWRlckNsaWVudCB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lIGNh
bGxiYWNrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcGVlci1jb25uZWN0aW9uLWNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
cnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMTQ0YjY0OTNjNDIyN2VlN2NjZGMyMThkNjljMTIyNTI3NDNmM2Nk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1j
cmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworUEFTUyBXZWIgYXVkaW8gZ2VuZXJhdGVkIGNvbnRlbnQgdGhyb3VnaCBhIHBlZXIgY29ubmVj
dGlvbiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1j
cmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvcGVl
ci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNjRiZjg3YzI4OWFmNDQwMjFhNmJmZmRlZTQwYzQzY2Q4MDQ0MmQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVh
bURlc3RpbmF0aW9uLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+VGVzdGlu
ZyBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uIHBpcGVkIHRvIHBlZXIgY29ubmVjdGlvbjwv
dGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICBjb25zdCBub2lzZUNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250
ZXh0KCk7CisgICAgY29uc3Qgb3NjaWxsYXRvciA9IG5vaXNlQ29udGV4dC5jcmVhdGVPc2NpbGxh
dG9yKCk7CisgICAgY29uc3QgYXVkaW9TdHJlYW1EZXN0aW5hdGlvbiA9IG5vaXNlQ29udGV4dC5j
cmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisgICAgY29uc3QgYXVkaW9TdHJlYW0gPSBh
dWRpb1N0cmVhbURlc3RpbmF0aW9uLnN0cmVhbTsKKyAgICBvc2NpbGxhdG9yLmNvbm5lY3QoYXVk
aW9TdHJlYW1EZXN0aW5hdGlvbik7CisgICAgb3NjaWxsYXRvci5zdGFydCgpOworICAgIGNvbnN0
IGF1ZGlvVHJhY2sgPSBhdWRpb1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworCisgICAgdmFy
IGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisgICAgdmFyIHJlbW90ZVN0cmVh
bTsKKworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrRm9ySHVtQmlwQm9wKHN0cmVhbSwgcHJldmlv
dXNSZXN1bHRzLCBjb3VudGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFwcmV2aW91c1Jlc3VsdHMp
CisgICAgICAgICAgICBwcmV2aW91c1Jlc3VsdHMgPSB7IGhlYXJkSHVtIDogZmFsc2UsIGhlYXJk
QmlwIDogZmFsc2UsIGhlYXJkQm9wIDogZmFsc2UgfTsKKyAgICAgICAgaWYgKCFjb3VudGVyKQor
ICAgICAgICAgICAgY291bnRlciA9IDE7CisgICAgICAgIGlmICgrK2NvdW50ZXIgPiAyMCkKKyAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpOworCisgICAgICAgIHJlc3Vs
dHMgPSBhd2FpdCBhbmFseXNlQXVkaW8oc3RyZWFtLCA1MDAsIGNvbnRleHQpOworICAgICAgICBw
cmV2aW91c1Jlc3VsdHMuaGVhcmRIdW0gfD0gcmVzdWx0cy5oZWFyZEh1bTsKKyAgICAgICAgcHJl
dmlvdXNSZXN1bHRzLmhlYXJkQmlwIHw9IHJlc3VsdHMuaGVhcmRCaXA7CisgICAgICAgIHByZXZp
b3VzUmVzdWx0cy5oZWFyZEJvcCB8PSByZXN1bHRzLmhlYXJkQm9wOworICAgICAgICBpZiAocHJl
dmlvdXNSZXN1bHRzLmhlYXJkSHVtIHx8IHByZXZpb3VzUmVzdWx0cy5oZWFyZEJpcCB8fCBwcmV2
aW91c1Jlc3VsdHMuaGVhcmRCb3ApCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHRydWUpOworCisgICAgICAgIHJldHVybiBhd2FpdCBjaGVja0Zvckh1bUJpcEJvcChzdHJlYW0s
IHByZXZpb3VzUmVzdWx0cywgY291bnRlcik7CisgICAgfQorCisgICAgcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChm
aXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRk
VHJhY2soYXVkaW9UcmFjaywgYXVkaW9TdHJlYW0pOworICAgICAgICAgICAgfSwgKHNlY29uZENv
bm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sg
PSAoZXZlbnQpID0+IHsgcmVzb2x2ZShldmVudC5zdHJlYW1zWzBdKTsgfTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0
IiksIDUwMDApOworICAgICAgICB9KTsKKyAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGNo
ZWNrRm9ySHVtQmlwQm9wKHN0cmVhbSk7CisgICAgICAgIGF3YWl0ICBjb250ZXh0LmNsb3NlKCk7
CisgICAgICAgIGF3YWl0ICBub2lzZUNvbnRleHQuY2xvc2UoKTsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUocmVzdWx0cywgImhlYXJkIGh1bSBiaXAgYm9wIik7CisgICAgfSwgIldlYiBhdWRpbyBnZW5l
cmF0ZWQgY29udGVudCB0aHJvdWdoIGEgcGVlciBjb25uZWN0aW9uIik7CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344906</attachid>
            <date>2018-07-12 17:47:30 -0700</date>
            <delta_ts>2018-07-13 12:18:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187627-20180712174729.patch</filename>
            <type>text/plain</type>
            <size>23163</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzYjQxZjA0ZjA4NzIz
MTZlMWIyNjZhNWEyMjc0NDdkZmEwY2VhYi4uNTc0ZjM2M2ZhN2NhNDgyZDg3MjA3Y2YwNWIwY2Mw
OGZlMGJhOTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3Rp
bmcgYSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MzM0NDAwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBp
cyBjYWxsZWQgdG8gcmVhZCBuZXcgYXVkaW8gc2FtcGxlcywKKyAgICAgICAgY29udmVydCB0aGVz
ZSBzYW1wbGVzIHRvIGEgV2ViQXVkaW9CdWZmZXJMaXN0IGFuZCBjYWxsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZS4KKyAgICAgICAgVGhpcyBtYWtlcyBpdHMgb2Jz
ZXJ2ZXJzIHRvIGdldCB0aGUgYXVkaW8gZGF0YS4KKworICAgICAgICBUZXN0OiB3ZWJydGMvcGVl
ci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6Y3JlYXRlKTogTWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
cHJvY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
ZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTgtMDctMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGxJbmplY3RVc2VyU2NyaXB0Rm9y
RnJhbWUgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggYzI4NGE0MTA4ZGIyZjYyNGE2ZGZmMWQwYzk0NGRjMjlk
MjhlOGUxMS4uOTBkNmM1NjUxZjFiYmUzZjYxNDRiZjYzMDM0NDVjNWRjMzUwNWMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFTdHJlYW0+
IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsK
LSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4oKSkpOwor
ICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0
ZTo6Y3JlYXRlKHsgfSkpOwogfQogCiBSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0mIHN0cmVhbSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDFiOTA3MmFlMjI3MzY4
M2ZkNDBiMTFjZTkyMThmZDc3MjdkOWFlNTMuLmI3YTEwYjczMDA4Njg5ZWFiOThhN2Y5MjM1ZTJh
OGE2YzdiODczNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NDAsMjcgKzQwLDIxIEBAIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJP
ZkNoYW5uZWxzKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGVN
ZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UpCit7CisgICAgYXV0byBtZWRpYVN0cmVhbVByaXZhdGUgPSBN
ZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
Pjo6ZnJvbShXVEZNb3ZlKHNvdXJjZSkpLCB7IH0pOworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6
Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUobWVkaWFTdHJlYW1Qcml2YXRlKSk7Cit9CisKIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKICAgICA6
IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpLCBu
dW1iZXJPZkNoYW5uZWxzKQotICAgICwgbV9taXhCdXMoQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJP
ZkNoYW5uZWxzLCBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSkKKyAgICAsIG1fc291cmNlKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkpCisgICAgLCBt
X3N0cmVhbShjcmVhdGVNZWRpYVN0cmVhbSgqY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIG1fc291cmNlLmNvcHlSZWYoKSkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb24pOwotCi0gICAgbV9zb3VyY2UgPSBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiBhdWRpb1NvdXJjZXM7Ci0gICAgYXVkaW9Tb3VyY2VzLmFwcGVuZCgqbV9zb3VyY2UpOwotICAg
IG1fc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlcywgeyB9KSk7
Ci0KLSAgICBtX3NvdXJjZS0+c2V0QXVkaW9Gb3JtYXQobnVtYmVyT2ZDaGFubmVscywgY29udGV4
dC5zYW1wbGVSYXRlKCkpOwotCiAgICAgaW5pdGlhbGl6ZSgpOwogfQogCi1SZWFsdGltZU1lZGlh
U291cmNlKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjptZWRpYVN0cmVhbVNvdXJj
ZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlLmdldCgpOwotfQotCiBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlOjp+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpCiB7CiAg
ICAgdW5pbml0aWFsaXplKCk7CkBAIC02OCw4ICs2Miw3IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGU6On5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKIAogdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpwcm9jZXNzKHNpemVfdCBudW1iZXJPZkZy
YW1lcykKIHsKLSAgICBtX21peEJ1cy0+Y29weUZyb20oKmlucHV0KDApLT5idXMoKSk7Ci0gICAg
bV9zb3VyY2UtPmNvbnN1bWVBdWRpbyhtX21peEJ1cy5nZXQoKSwgbnVtYmVyT2ZGcmFtZXMpOwor
ICAgIG1fc291cmNlLT5jb25zdW1lQXVkaW8oKmlucHV0KDApLT5idXMoKSwgbnVtYmVyT2ZGcmFt
ZXMpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc2V0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggOGU4ZjQwNDk0OGI5M2YzODFi
MWE5MDNjNWJkZTcyOTZkMjM0MTEyNS4uYjE5MmYyNmQ2NDk2NDQxYzM1MjhiYWQyMTVhYTZhYjky
YzZmNWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQxLDI2ICs0
MSwyMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlKCk7CiAKLSAgICBNZWRpYVN0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0u
Z2V0KCk7IH0KKyAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0
KCk7IH0KIAogICAgIC8vIEF1ZGlvTm9kZS4KLSAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0
KCkgZmluYWw7CiAgICAgCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogbWVkaWFTdHJlYW1Tb3Vy
Y2UoKTsKLQogcHJpdmF0ZToKICAgICBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1
ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKIAotICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzIGFuIGF1ZGlvIHNvdXJjZSwgd2Ugd2ls
bCBuZXZlciBwcm9wYWdhdGUgc2lsZW5jZS4KLSAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHByb3BhZ2F0ZXNTaWxl
bmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gbV9zdHJlYW07Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291
cmNlOwotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9taXhCdXM7CisgICAgUmVmPE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U+IG1fc291cmNlOworICAgIFJlZjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAppbmRleCAzNTYz
ZmEzNjI5MTIwOTQwODEwZGFjMmE4MjIyNmI4Y2U3MjRmZTI1Li5kNzk3YjY3YzA1ZGZlYWY2MWQ5
NGJjYWJmZjBhMjM4NTBhZjM2ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjAgKzI4LDE1
IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiQXVkaW9Tb3VyY2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkpOwotfQotCi1NZWRpYVN0cmVhbUF1ZGlv
U291cmNlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UobWFrZVN0cmluZygiV2ViQXVkaW8tIl9zLCBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgIk1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUiKQogeworICAgIG1fY3VycmVudFNldHRpbmdzLnNldFNhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSk7CiB9CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0CkBAIC02
MCwzNiArNTUsMTEgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFNl
dHRpbmdzOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFkZEF1ZGlvQ29uc3Vt
ZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKLXsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgbV9hdWRpb0NvbnN1bWVycy5hcHBl
bmQoY29uc3VtZXIpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1
ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKLXsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgc2l6ZV90IHBvcyA9
IG1fYXVkaW9Db25zdW1lcnMuZmluZChjb25zdW1lcik7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3Vu
ZCkgewotICAgICAgICBtX2F1ZGlvQ29uc3VtZXJzLnJlbW92ZShwb3MpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNM
b2NrKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN1bWVyIDogbV9hdWRpb0NvbnN1bWVycykKLSAgICAg
ICAgY29uc3VtZXItPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKLX0K
LQotdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzJiwgc2l6ZV90KQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKGF1
dG8mIGNvbnN1bWVyIDogbV9hdWRpb0NvbnN1bWVycykKLSAgICAgICAgY29uc3VtZXItPmNvbnN1
bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKaW5kZXggMThiOTZlNmIyZWJlZTI5MDVlMDdjODYx
ZWZkNWZlOTI2ZjNhODk1YS4uMzIzZjY5MTYzZGY0ODYwODBjN2Y1OTQ5NjZmMTg0ZjlkNjZhNDQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllczsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBmaW5h
bCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZT4gY3JlYXRlKGZsb2F0IHNhbXBsZVJhdGUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSB7IHNhbXBsZVJhdGUgfSk7IH0KIAogICAg
IH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkgPSBkZWZhdWx0OwogCkBAIC01MCwyMiArNTAsMTYg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZUlkOyB9CiAgICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBTdHJpbmcmIGRldmljZUlk
KSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQogCi0gICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9pZCBjb25z
dW1lQXVkaW8oQXVkaW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwotCi0gICAgdm9pZCBh
ZGRBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciopOwotICAgIGJvb2wgcmVt
b3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+JiBhdWRpb0NvbnN1bWVycygp
IGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKyAgICB2b2lkIGNvbnN1bWVBdWRp
byhBdWRpb0J1cyYsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZSgpOworICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgbV9kZXZpY2VJZDsKLSAgICBM
b2NrIG1fYXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZGcmFtZXMg
eyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0NzkzMGM0NDVhZDFkNTdjYjNhYjZkNzdjMjhkNWRlNjVm
OWNkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKKyNpbmNs
dWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0
aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbURlc2NyaXB0aW9u
KHNpemVfdCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENvdW50KQoreworICAgIGJvb2wgaXNG
bG9hdCA9IHRydWU7CisgICAgYm9vbCBpc0JpZ0VuZGlhbiA9IGZhbHNlOworICAgIGJvb2wgaXNO
b25JbnRlcmxlYXZlZCA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzYW1wbGVTaXpl
ID0gOCAqIHNpemVvZihmbG9hdCk7CisKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
c3RyZWFtRm9ybWF0OworICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBs
ZVJhdGUsIGNoYW5uZWxDb3VudCwgc2FtcGxlU2l6ZSwgc2FtcGxlU2l6ZSwgaXNGbG9hdCwgaXNC
aWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzJiBi
dXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyNpZiAhVVNFKEFWRk9VTkRBVElPTikKKyAg
ICBVTlVTRURfUEFSQU0oYnVzKTsKKyAgICBVTlVTRURfUEFSQU0obnVtYmVyT2ZGcmFtZXMpOwor
I2Vsc2UKKyAgICBpZiAoYnVzLm51bWJlck9mQ2hhbm5lbHMoKSAhPSAxICYmIGJ1cy5udW1iZXJP
ZkNoYW5uZWxzKCkgIT0gMikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ01UaW1lIHN0YXJ0VGlt
ZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgbV9jdXJyZW50U2V0dGluZ3Muc2FtcGxl
UmF0ZSgpKTsKKyAgICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1l
KTsKKyAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOworCisgICAgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uID0gc3RyZWFtRGVzY3JpcHRpb24o
bV9jdXJyZW50U2V0dGluZ3Muc2FtcGxlUmF0ZSgpLCBidXMubnVtYmVyT2ZDaGFubmVscygpKTsK
KworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9uY2Ug
aW4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBhbmQgcmVzaXplIGl0IGFjY29yZGluZyBudW1iZXJP
ZkZyYW1lcy4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJf
dD4obnVtYmVyT2ZGcmFtZXMpIH07CisKKyAgICBpZiAoYnVzLm51bWJlck9mQ2hhbm5lbHMoKSA9
PSAxKSB7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCk7
CisgICAgICAgIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mRnJhbWVzICogc2l6ZW9m
KGZsb2F0KTsKKyAgICAgICAgYnVmZmVyLT5tTnVtYmVyQ2hhbm5lbHMgPSAxOworICAgICAgICBp
ZiAoIW11dGVkKCkpCisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLT5tRGF0YSwgYnVzLmNoYW5u
ZWwoMCktPmRhdGEoKSwgYnVmZmVyLT5tRGF0YUJ5dGVTaXplKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbWVtc2V0KGJ1ZmZlci0+bURhdGEsIDAsIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byogYnVmZmVyID0gYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKTsKKyAgICAgICAgYnVmZmVyLT5tRGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZGcmFtZXMg
KiBzaXplb2YoZmxvYXQpOworICAgICAgICBidWZmZXItPm1OdW1iZXJDaGFubmVscyA9IDE7Cisg
ICAgICAgIGlmICghbXV0ZWQoKSkKKyAgICAgICAgICAgIG1lbWNweShidWZmZXItPm1EYXRhLCBi
dXMuY2hhbm5lbCgwKS0+ZGF0YSgpLCBidWZmZXItPm1EYXRhQnl0ZVNpemUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtZW1zZXQoYnVmZmVyLT5tRGF0YSwgMCwgYnVmZmVyLT5tRGF0YUJ5
dGVTaXplKTsKKworICAgICAgICBidWZmZXIgPSBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDEpOwor
ICAgICAgICBidWZmZXItPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkZyYW1lcyAqIHNpemVvZihm
bG9hdCk7CisgICAgICAgIGJ1ZmZlci0+bU51bWJlckNoYW5uZWxzID0gMTsKKyAgICAgICAgaWYg
KCFtdXRlZCgpKQorICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlci0+bURhdGEsIGJ1cy5jaGFubmVs
KDEpLT5kYXRhKCksIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1lbXNldChidWZmZXItPm1EYXRhLCAwLCBidWZmZXItPm1EYXRhQnl0ZVNpemUpOwor
CisgICAgfQorCisgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgYXVkaW9CdWZm
ZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBudW1iZXJP
ZkZyYW1lcyk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTBlYTc2YjRiYjQzYzQzZjAwNDViYWU0OTVj
MjNlNTlhZjc5Mzk3Li40NDk4ODQxMGZlMzZiMzY1M2Q3MjdkN2NjNzU0NzEwOGVkNDMzMTYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMDU5LDYgKzEwNTksNyBAQAogCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVh
ZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOEMzOTVCMUM4RjBBNjEwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
MjlDOUFGMUY1OUNGNUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlDOTgwMUY1ODYxQzcwMDlE
NzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlERjg0MUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRh
YmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxMzNDQjhCMjBGODBFOTkwMEU4OUIxMSAvKiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzM0NCODkyMEY4MEU4NjAwRTg5QjExIC8qIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi87IH07CiAJCTQxMzgwQzI3MUYzNDM2QUMwMDE1NUZEQSAv
KiBET01DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzODBDMjUxRjM0MzY5QTAwMTU1RkRBIC8qIERPTUNhY2hlLmggKi87IH07CiAJCTQxMzgw
QzI5MUYzNDM2QUMwMDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzIyMUYzNDM2OTAwMDE1NUZEQSAv
KiBET01DYWNoZVN0b3JhZ2UuaCAqLzsgfTsKIAkJNDEzOEQzMzUxMjQ0MDU0ODAwMzIzRDMzIC8q
IEV2ZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovOyB9OwpA
QCAtNzE5Myw2ICs3MTk0LDcgQEAKIAkJNDEzMUYzQjExRjk1NTI4MTAwNTk5OTVBIC8qIEpTRmV0
Y2hFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZldGNoRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMx
RjNCNDFGOTU1QkMzMDA1OTk5NUEgLyogRXh0ZW5kYWJsZUV2ZW50SW5pdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbmRhYmxlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0I1MUY5NTVCQzUwMDU5OTk1QSAvKiBFeHRlbmRhYmxl
RXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFeHRlbmRhYmxlRXZlbnRJbml0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzM0NCODkyMEY4MEU4NjAwRTg5
QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4MEMyMDFGMzQzNjhBMDAxNTVGREEgLyogRE9N
Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NQ2FjaGUuY3BwOyBwYXRoID0gTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDEz
ODBDMjExRjM0MzY4RDAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBET01DYWNoZVN0b3JhZ2UuY3BwOyBwYXRoID0gTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQxMzgwQzIyMUYz
NDM2OTAwMDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NQ2Fj
aGVTdG9yYWdlLmg7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC0yNjcyMCw2ICsyNjcyMiw3IEBACiAJCQkJMDc4
RTA5NEExN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aWRsICovLAogCQkJCTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmNwcCAqLywKIAkJCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5oICovLAorCQkJCTQxMzNDQjg5MjBGODBFODYwMEU4OUIxMSAvKiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwICovLAogCQkJCUZENjcxQTc0MTU5QkIwNzAwMDE5
NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgKi8sCiAJCQkJRkQ2NzFBNzUx
NTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggKi8sCiAJCQkJ
RkQ2NzFBNzYxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmlk
bCAqLywKQEAgLTMxNDg3LDYgKzMxNDkwLDcgQEAKIAkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYz
QTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5
QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8q
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREYy
QjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTA1OEFERjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTEwNThBRTExRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDNkNzJkNzcxZDIwMjUwZmI1NTI2ZWQyNDcwM2Q2ODY3
NjkxYjBlOC4uZTczNTJkNWM0NTE5MDhiNTdmZjg3NGJmMDU3ODZhN2U2YzcyNmQxMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTA3LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3RpbmcgYSBNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MzM0NDAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL3BlZXItY29ubmVjdGlvbi1j
cmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE4LTA3LTEyICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBGcmFtZUxv
YWRlckNsaWVudCB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lIGNhbGxiYWNrCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcGVlci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFt
RGVzdGluYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVj
dGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMTQ0YjY0OTNjNDIyN2VlN2NjZGMyMThkNjljMTIyNTI3NDNmM2NkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVh
bURlc3RpbmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBXZWIgYXVk
aW8gZ2VuZXJhdGVkIGNvbnRlbnQgdGhyb3VnaCBhIHBlZXIgY29ubmVjdGlvbiAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVh
bURlc3RpbmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvcGVlci1jb25uZWN0aW9uLWNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjRiZjg3YzI4OWFm
NDQwMjFhNmJmZmRlZTQwYzQzY2Q4MDQ0MmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0
bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+VGVzdGluZyBjcmVhdGVNZWRpYVN0
cmVhbURlc3RpbmF0aW9uIHBpcGVkIHRvIHBlZXIgY29ubmVjdGlvbjwvdGl0bGU+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAg
ICBjb25zdCBub2lzZUNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisgICAgY29u
c3Qgb3NjaWxsYXRvciA9IG5vaXNlQ29udGV4dC5jcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgY29u
c3QgYXVkaW9TdHJlYW1EZXN0aW5hdGlvbiA9IG5vaXNlQ29udGV4dC5jcmVhdGVNZWRpYVN0cmVh
bURlc3RpbmF0aW9uKCk7CisgICAgY29uc3QgYXVkaW9TdHJlYW0gPSBhdWRpb1N0cmVhbURlc3Rp
bmF0aW9uLnN0cmVhbTsKKyAgICBvc2NpbGxhdG9yLmNvbm5lY3QoYXVkaW9TdHJlYW1EZXN0aW5h
dGlvbik7CisgICAgb3NjaWxsYXRvci5zdGFydCgpOworICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSBh
dWRpb1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworCisgICAgdmFyIGNvbnRleHQgPSBuZXcg
d2Via2l0QXVkaW9Db250ZXh0KCk7CisgICAgdmFyIHJlbW90ZVN0cmVhbTsKKworICAgIGFzeW5j
IGZ1bmN0aW9uIGNoZWNrRm9ySHVtQmlwQm9wKHN0cmVhbSwgcHJldmlvdXNSZXN1bHRzLCBjb3Vu
dGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFwcmV2aW91c1Jlc3VsdHMpCisgICAgICAgICAgICBw
cmV2aW91c1Jlc3VsdHMgPSB7IGhlYXJkSHVtIDogZmFsc2UsIGhlYXJkQmlwIDogZmFsc2UsIGhl
YXJkQm9wIDogZmFsc2UgfTsKKyAgICAgICAgaWYgKCFjb3VudGVyKQorICAgICAgICAgICAgY291
bnRlciA9IDE7CisgICAgICAgIGlmICgrK2NvdW50ZXIgPiAyMCkKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoZmFsc2UpOworCisgICAgICAgIHJlc3VsdHMgPSBhd2FpdCBhbmFs
eXNlQXVkaW8oc3RyZWFtLCA1MDAsIGNvbnRleHQpOworICAgICAgICBwcmV2aW91c1Jlc3VsdHMu
aGVhcmRIdW0gfD0gcmVzdWx0cy5oZWFyZEh1bTsKKyAgICAgICAgcHJldmlvdXNSZXN1bHRzLmhl
YXJkQmlwIHw9IHJlc3VsdHMuaGVhcmRCaXA7CisgICAgICAgIHByZXZpb3VzUmVzdWx0cy5oZWFy
ZEJvcCB8PSByZXN1bHRzLmhlYXJkQm9wOworICAgICAgICBpZiAocHJldmlvdXNSZXN1bHRzLmhl
YXJkSHVtIHx8IHByZXZpb3VzUmVzdWx0cy5oZWFyZEJpcCB8fCBwcmV2aW91c1Jlc3VsdHMuaGVh
cmRCb3ApCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpOworCisgICAg
ICAgIHJldHVybiBhd2FpdCBjaGVja0Zvckh1bUJpcEJvcChzdHJlYW0sIHByZXZpb3VzUmVzdWx0
cywgY291bnRlcik7CisgICAgfQorCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24p
ID0+IHsKKyAgICAgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2soYXVkaW9UcmFj
aywgYXVkaW9TdHJlYW0pOworICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsK
KyAgICAgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAoZXZlbnQpID0+IHsg
cmVzb2x2ZShldmVudC5zdHJlYW1zWzBdKTsgfTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAg
ICAgICB9KTsKKyAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGNoZWNrRm9ySHVtQmlwQm9w
KHN0cmVhbSk7CisgICAgICAgIGF3YWl0ICBjb250ZXh0LmNsb3NlKCk7CisgICAgICAgIGF3YWl0
ICBub2lzZUNvbnRleHQuY2xvc2UoKTsKKyAgICAgICAgYXNzZXJ0X3RydWUocmVzdWx0cywgImhl
YXJkIGh1bSBiaXAgYm9wIik7CisgICAgfSwgIldlYiBhdWRpbyBnZW5lcmF0ZWQgY29udGVudCB0
aHJvdWdoIGEgcGVlciBjb25uZWN0aW9uIik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344965</attachid>
            <date>2018-07-13 12:18:17 -0700</date>
            <delta_ts>2018-07-13 16:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187627-20180713121816.patch</filename>
            <type>text/plain</type>
            <size>22863</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4NzhlYzFjZjRlYjhk
NDFjNWRkOWJlOTQwYzg0MjAyOWVhZTA3Mi4uODlhYTg3YTkyNWEzMjQxZmViNWFkNDhmN2YzMzY0
ZWNhNDQ3MGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3Rp
bmcgYSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MzM0NDAwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBp
cyBjYWxsZWQgdG8gcmVhZCBuZXcgYXVkaW8gc2FtcGxlcywKKyAgICAgICAgY29udmVydCB0aGVz
ZSBzYW1wbGVzIHRvIGEgV2ViQXVkaW9CdWZmZXJMaXN0IGFuZCBjYWxsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZS4KKyAgICAgICAgVGhpcyBtYWtlcyBpdHMgb2Jz
ZXJ2ZXJzIHRvIGdldCB0aGUgYXVkaW8gZGF0YS4KKworICAgICAgICBUZXN0OiB3ZWJydGMvcGVl
ci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6Y3JlYXRlKTogTWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
cHJvY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
ZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTgtMDctMTMgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnku
Y29tPgogCiAgICAgICAgIFtDdXJsXSBNb3ZlIEhUVFAgU2V0dXAgbG9naWMgZnJvbSBDdXJsUmVx
dWVzdCB0byBDdXJsSGFuZGxlIGZvciByZXVzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggYzI4NGE0MTA4ZGIyZjYyNGE2
ZGZmMWQwYzk0NGRjMjlkMjhlOGUxMS4uOTBkNmM1NjUxZjFiYmUzZjYxNDRiZjYzMDM0NDVjNWRj
MzUwNWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBS
ZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBN
ZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPj4oKSkpOworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKHsgfSkpOwogfQogCiBSZWY8TWVkaWFTdHJlYW0+IE1l
ZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFT
dHJlYW0mIHN0cmVhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4
IDFiOTA3MmFlMjI3MzY4M2ZkNDBiMTFjZTkyMThmZDc3MjdkOWFlNTMuLmI3YTEwYjczMDA4Njg5
ZWFiOThhN2Y5MjM1ZTJhOGE2YzdiODczNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtNDAsMjcgKzQwLDIxIEBAIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlPiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShj
b250ZXh0LCBudW1iZXJPZkNoYW5uZWxzKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPE1lZGlh
U3RyZWFtPiBjcmVhdGVNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCit7CisgICAgYXV0byBtZWRpYVN0
cmVhbVByaXZhdGUgPSBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+Pjo6ZnJvbShXVEZNb3ZlKHNvdXJjZSkpLCB7IH0pOworICAgIHJldHVy
biBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUobWVkaWFTdHJlYW1Qcml2YXRl
KSk7Cit9CisKIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3QgbnVtYmVyT2ZD
aGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNvbnRleHQu
c2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQotICAgICwgbV9taXhCdXMoQXVkaW9CdXM6
OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSkKKyAgICAs
IG1fc291cmNlKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJh
dGUoKSkpCisgICAgLCBtX3N0cmVhbShjcmVhdGVNZWRpYVN0cmVhbSgqY29udGV4dC5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1fc291cmNlLmNvcHlSZWYoKSkpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb24pOwotCi0gICAgbV9zb3VyY2Ug
PSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICBWZWN0b3I8UmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7Ci0gICAgYXVkaW9Tb3VyY2VzLmFwcGVuZCgq
bV9zb3VyY2UpOwotICAgIG1fc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlv
U291cmNlcywgeyB9KSk7Ci0KLSAgICBtX3NvdXJjZS0+c2V0QXVkaW9Gb3JtYXQobnVtYmVyT2ZD
aGFubmVscywgY29udGV4dC5zYW1wbGVSYXRlKCkpOwotCiAgICAgaW5pdGlhbGl6ZSgpOwogfQog
Ci1SZWFsdGltZU1lZGlhU291cmNlKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpt
ZWRpYVN0cmVhbVNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlLmdldCgpOwotfQotCiBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjp+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZSgpCiB7CiAgICAgdW5pbml0aWFsaXplKCk7CkBAIC02OCw4ICs2Miw3IEBAIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlKCkKIAogdm9pZCBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpwcm9jZXNzKHNp
emVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICBtX21peEJ1cy0+Y29weUZyb20oKmlucHV0KDAp
LT5idXMoKSk7Ci0gICAgbV9zb3VyY2UtPmNvbnN1bWVBdWRpbyhtX21peEJ1cy5nZXQoKSwgbnVt
YmVyT2ZGcmFtZXMpOworICAgIG1fc291cmNlLT5jb25zdW1lQXVkaW8oKmlucHV0KDApLT5idXMo
KSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggOGU4
ZjQwNDk0OGI5M2YzODFiMWE5MDNjNWJkZTcyOTZkMjM0MTEyNS4uYjE5MmYyNmQ2NDk2NDQxYzM1
MjhiYWQyMTVhYTZhYjkyYzZmNWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTQxLDI2ICs0MSwyMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKLSAgICBNZWRpYVN0cmVhbSogc3RyZWFtKCkgeyBy
ZXR1cm4gbV9zdHJlYW0uZ2V0KCk7IH0KKyAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1
cm4gbV9zdHJlYW0uZ2V0KCk7IH0KIAogICAgIC8vIEF1ZGlvTm9kZS4KLSAgICB2b2lkIHByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldCgpIG92
ZXJyaWRlOworICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsK
KyAgICB2b2lkIHJlc2V0KCkgZmluYWw7CiAgICAgCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZSog
bWVkaWFTdHJlYW1Tb3VyY2UoKTsKLQogcHJpdmF0ZToKICAgICBNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKIAot
ICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBk
b3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91
YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRl
bmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzIGFuIGF1ZGlv
IHNvdXJjZSwgd2Ugd2lsbCBuZXZlciBwcm9wYWdhdGUgc2lsZW5jZS4KLSAgICBib29sIHByb3Bh
Z2F0ZXNTaWxlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U+IG1fc291cmNlOwotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9taXhCdXM7CisgICAg
UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291cmNlOworICAgIFJlZjxNZWRpYVN0cmVh
bT4gbV9zdHJlYW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmNwcAppbmRleCAzNTYzZmEzNjI5MTIwOTQwODEwZGFjMmE4MjIyNmI4Y2U3MjRmZTI1Li5kNzk3
YjY3YzA1ZGZlYWY2MWQ5NGJjYWJmZjBhMjM4NTBhZjM2ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsMjAgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVk
ZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkpOwotfQotCi1N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkKK01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UobWFrZVN0cmluZygiV2ViQXVkaW8tIl9zLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRp
bywgIk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUiKQogeworICAgIG1fY3VycmVudFNl
dHRpbmdzLnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSk7CiB9CiAKIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGll
cygpIGNvbnN0CkBAIC02MCwzNiArNTUsMTEgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
OmFkZEF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKLXsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgbV9hdWRp
b0NvbnN1bWVycy5hcHBlbmQoY29uc3VtZXIpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25z
dW1lcikKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0g
ICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9Db25zdW1lcnMuZmluZChjb25zdW1lcik7Ci0gICAgaWYg
KHBvcyAhPSBub3RGb3VuZCkgewotICAgICAgICBtX2F1ZGlvQ29uc3VtZXJzLnJlbW92ZShwb3Mp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJP
ZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
YXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN1bWVyIDogbV9hdWRpb0Nv
bnN1bWVycykKLSAgICAgICAgY29uc3VtZXItPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBz
YW1wbGVSYXRlKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVk
aW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQorI2lmICFQTEFURk9STShD
T0NPQSkKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVz
Jiwgc2l6ZV90KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2Nr
KTsKLSAgICBmb3IgKGF1dG8mIGNvbnN1bWVyIDogbV9hdWRpb0NvbnN1bWVycykKLSAgICAgICAg
Y29uc3VtZXItPmNvbnN1bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsKIH0KKyNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKaW5kZXggMThiOTZlNmIy
ZWJlZTI5MDVlMDdjODYxZWZkNWZlOTI2ZjNhODk1YS4uMzIzZjY5MTYzZGY0ODYwODBjN2Y1OTQ5
NjZmMTg0ZjlkNjZhNDQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczsKIAogY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0
YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gY3JlYXRlKGZsb2F0IHNhbXBsZVJhdGUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSB7IHNhbXBsZVJh
dGUgfSk7IH0KIAogICAgIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkgPSBkZWZhdWx0OwogCkBA
IC01MCwyMiArNTAsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CiAgICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBT
dHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQogCi0gICAgdm9pZCBz
ZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7
Ci0gICAgdm9pZCBjb25zdW1lQXVkaW8oQXVkaW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMp
OwotCi0gICAgdm9pZCBhZGRBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciop
OwotICAgIGJvb2wgcmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIq
KTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+JiBh
dWRpb0NvbnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKyAgICB2
b2lkIGNvbnN1bWVBdWRpbyhBdWRpb0J1cyYsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpOworICAgIGV4cGxpY2l0IE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICBib29sIGlzQ2FwdHVy
ZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ2FwdHVy
ZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgbV9k
ZXZpY2VJZDsKLSAgICBMb2NrIG1fYXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQ
dHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgc2l6ZV90IG1f
bnVtYmVyT2ZGcmFtZXMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IxOWFmYjM3MjU2YmMyNGI0ZDg1
ZjlhNzdlZjEwYjAxMDc2ZmRlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1
ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1
ZGlvVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
c3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQp
Cit7CisgICAgYm9vbCBpc0Zsb2F0ID0gdHJ1ZTsKKyAgICBib29sIGlzQmlnRW5kaWFuID0gZmFs
c2U7CisgICAgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHNhbXBsZVNpemUgPSA4ICogc2l6ZW9mKGZsb2F0KTsKKworICAgIEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0
cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBzYW1wbGVTaXplLCBzYW1wbGVT
aXplLCBpc0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJu
IHN0cmVhbUZvcm1hdDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlDaGFubmVsRGF0YShB
dWRpb0NoYW5uZWwmIGNoYW5uZWwsIEF1ZGlvQnVmZmVyJiBidWZmZXIsIHNpemVfdCBudW1iZXJP
ZkZyYW1lcywgYm9vbCBpc011dGVkKQoreworICAgIGJ1ZmZlci5tRGF0YUJ5dGVTaXplID0gbnVt
YmVyT2ZGcmFtZXMgKiBzaXplb2YoZmxvYXQpOworICAgIGJ1ZmZlci5tTnVtYmVyQ2hhbm5lbHMg
PSAxOworICAgIGlmIChpc011dGVkKSB7CisgICAgICAgIG1lbXNldChidWZmZXIubURhdGEsIDAs
IGJ1ZmZlci5tRGF0YUJ5dGVTaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1j
cHkoYnVmZmVyLm1EYXRhLCBjaGFubmVsLmRhdGEoKSwgYnVmZmVyLm1EYXRhQnl0ZVNpemUpOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNvbnN1bWVBdWRpbyhBdWRpb0J1cyYg
YnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgaWYgKGJ1cy5udW1iZXJPZkNoYW5u
ZWxzKCkgIT0gMSAmJiBidXMubnVtYmVyT2ZDaGFubmVscygpICE9IDIpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVk
aW8oJXApIHRyeWluZyB0byBjb25zdW1lIGJ1cyB3aXRoICV1IGNoYW5uZWxzIiwgdGhpcywgYnVz
Lm51bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDTVRp
bWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBtX2N1cnJlbnRTZXR0
aW5ncy5zYW1wbGVSYXRlKCkpOworICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01lZGlhVGlt
ZShzdGFydFRpbWUpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFtZXM7CisK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1E
ZXNjcmlwdGlvbihtX2N1cnJlbnRTZXR0aW5ncy5zYW1wbGVSYXRlKCksIGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCkpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB0aGUgbWVtb3J5IGFsbG9j
YXRpb24gb25jZSBpbiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlIGFuZCByZXNpemUgaXQgYWNjb3Jk
aW5nIG51bWJlck9mRnJhbWVzLgorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRpb0J1ZmZlckxp
c3QgeyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBXVEY6OnNhZmVD
YXN0PHVpbnQzMl90PihudW1iZXJPZkZyYW1lcykgfTsKKworICAgIGZvciAoc2l6ZV90IGNwdHIg
PSAwOyBjcHRyIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytjcHRyKQorICAgICAgICBjb3B5
Q2hhbm5lbERhdGEoKmJ1cy5jaGFubmVsKGNwdHIpLCAqYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcihj
cHRyKSwgbnVtYmVyT2ZGcmFtZXMsIG11dGVkKCkpOworCisgICAgYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKG1lZGlhVGltZSwgYXVkaW9CdWZmZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24o
bmV3RGVzY3JpcHRpb24pLCBudW1iZXJPZkZyYW1lcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDkwZWE3NmI0YmI0
M2M0M2YwMDQ1YmFlNDk1YzIzZTU5YWY3OTM5Ny4uNDQ5ODg0MTBmZTM2YjM2NTNkNzI3ZDdjYzc1
NDcxMDhlZDQzMzE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTA1OSw2ICsxMDU5LDcgQEAKIAkJNDEyOUM5QUIxRjU5QzU3
MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThDMzk1QjFDOEYwQTYxMDA1MUM4QTMgLyogUmVh
ZGFibGVTdHJlYW1Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTI5QzlBRjFGNTlDRjVCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1T
aW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5
Qzk4MDFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOURGODYxQkI1QjgwQzAw
MzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5REY4NDFCQjVCN0Y3MDAz
MjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTMzQ0I4QjIwRjgwRTk5
MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzNDQjg5MjBGODBFODYwMEU4OUIx
MSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwICovOyB9OwogCQk0MTM4MEMyNzFG
MzQzNkFDMDAxNTVGREEgLyogRE9NQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzI1MUYzNDM2OUEwMDE1NUZEQSAvKiBET01DYWNoZS5o
ICovOyB9OwogCQk0MTM4MEMyOTFGMzQzNkFDMDAxNTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4MEMyMjFG
MzQzNjkwMDAxNTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmggKi87IH07CiAJCTQxMzhEMzM1MTI0
NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENv
bnRleHQuaCAqLzsgfTsKQEAgLTcxOTMsNiArNzE5NCw3IEBACiAJCTQxMzFGM0IxMUY5NTUyODEw
MDU5OTk1QSAvKiBKU0ZldGNoRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNGZXRjaEV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzMUYzQjQxRjk1NUJDMzAwNTk5OTVBIC8qIEV4dGVuZGFibGVFdmVudElu
aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5kYWJsZUV2ZW50SW5p
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMxRjNCNTFGOTU1QkM1MDA1OTk5
NUEgLyogRXh0ZW5kYWJsZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXh0
ZW5kYWJsZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzND
Qjg5MjBGODBFODYwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzODBDMjAxRjM0MzY4
QTAwMTU1RkRBIC8qIERPTUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUNhY2hlLmNw
cDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCTQxMzgwQzIxMUYzNDM2OEQwMDE1NUZEQSAvKiBET01DYWNoZVN0b3JhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NQ2FjaGVTdG9yYWdlLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQk0MTM4MEMyMjFGMzQzNjkwMDAxNTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERPTUNhY2hlU3RvcmFnZS5oOyBwYXRoID0gTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMjY3MjAsNiArMjY3
MjIsNyBAQAogCQkJCTA3OEUwOTRBMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbCAqLywKIAkJCQkwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyog
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgKi8sCiAJCQkJMDc4MzIyODMxODAxM0VEODAwOTk5
RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTMzQ0I4OTIwRjgwRTg2
MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKIAkJCQlGRDY3
MUE3NDE1OUJCMDcwMDAxOTc1NTkgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwICov
LAogCQkJCUZENjcxQTc1MTU5QkIwNzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZS5oICovLAogCQkJCUZENjcxQTc2MTU5QkIwNzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5pZGwgKi8sCkBAIC0zMTQ4Nyw2ICszMTQ5MCw3IEBACiAJCQkJQzkwRjY1
NTUxQjIyNTNCMTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBNjE4MDQ3NEY3MDAxNkU2ODUgLyogTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxMzNDQjhCMjBG
ODBFOTkwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwNThBREYxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUUxMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI0YjM1OGE3ZTM3NmYwMjc3
YmM3NDQ3Y2IwYThlMjBjODBkNjBiYjcuLjJhZWNiMWRlYzAzMGU3MzM0ODkzZDUwOTY0OGYwMDc0
NjQ2MGE3NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNy0xMyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb25uZWN0aW5nIGEgTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSB0byBSVENQZWVyQ29ubmVjdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NjI3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNTMzNDQwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9w
ZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbi5odG1sOiBBZGRlZC4K
KwogMjAxOC0wNy0xMyAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgTWFjT1MgRGVidWcgXSBMYXlvdXQgVGVzdCBpbnNwZWN0b3Ivdmlldy9hc3luY2hyb25v
dXMtbGF5b3V0Lmh0bWwgaXMgYSBGbGFreSBUaW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJydGMvcGVlci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRp
YVN0cmVhbURlc3RpbmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTQ0YjY0OTNjNDIy
N2VlN2NjZGMyMThkNjljMTIyNTI3NDNmM2NkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBXZWIgYXVkaW8gZ2VuZXJhdGVkIGNv
bnRlbnQgdGhyb3VnaCBhIHBlZXIgY29ubmVjdGlvbiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvcGVlci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFt
RGVzdGluYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjRiZjg3YzI4OWFmNDQwMjFhNmJmZmRlZTQw
YzQzY2Q4MDQ0MmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXIt
Y29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0bWwKQEAgLTAsMCArMSw1
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICA8dGl0bGU+VGVzdGluZyBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9u
IHBpcGVkIHRvIHBlZXIgY29ubmVjdGlvbjwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmMg
PSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBjb25zdCBub2lzZUNv
bnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisgICAgY29uc3Qgb3NjaWxsYXRvciA9
IG5vaXNlQ29udGV4dC5jcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgY29uc3QgYXVkaW9TdHJlYW1E
ZXN0aW5hdGlvbiA9IG5vaXNlQ29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7
CisgICAgY29uc3QgYXVkaW9TdHJlYW0gPSBhdWRpb1N0cmVhbURlc3RpbmF0aW9uLnN0cmVhbTsK
KyAgICBvc2NpbGxhdG9yLmNvbm5lY3QoYXVkaW9TdHJlYW1EZXN0aW5hdGlvbik7CisgICAgb3Nj
aWxsYXRvci5zdGFydCgpOworICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSBhdWRpb1N0cmVhbS5nZXRB
dWRpb1RyYWNrcygpWzBdOworCisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250
ZXh0KCk7CisgICAgdmFyIHJlbW90ZVN0cmVhbTsKKworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNr
Rm9ySHVtQmlwQm9wKHN0cmVhbSwgcHJldmlvdXNSZXN1bHRzLCBjb3VudGVyKQorICAgIHsKKyAg
ICAgICAgaWYgKCFwcmV2aW91c1Jlc3VsdHMpCisgICAgICAgICAgICBwcmV2aW91c1Jlc3VsdHMg
PSB7IGhlYXJkSHVtIDogZmFsc2UsIGhlYXJkQmlwIDogZmFsc2UsIGhlYXJkQm9wIDogZmFsc2Ug
fTsKKyAgICAgICAgaWYgKCFjb3VudGVyKQorICAgICAgICAgICAgY291bnRlciA9IDE7CisgICAg
ICAgIGlmICgrK2NvdW50ZXIgPiAyMCkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoZmFsc2UpOworCisgICAgICAgIHJlc3VsdHMgPSBhd2FpdCBhbmFseXNlQXVkaW8oc3RyZWFt
LCA1MDAsIGNvbnRleHQpOworICAgICAgICBwcmV2aW91c1Jlc3VsdHMuaGVhcmRIdW0gfD0gcmVz
dWx0cy5oZWFyZEh1bTsKKyAgICAgICAgcHJldmlvdXNSZXN1bHRzLmhlYXJkQmlwIHw9IHJlc3Vs
dHMuaGVhcmRCaXA7CisgICAgICAgIHByZXZpb3VzUmVzdWx0cy5oZWFyZEJvcCB8PSByZXN1bHRz
LmhlYXJkQm9wOworICAgICAgICBpZiAocHJldmlvdXNSZXN1bHRzLmhlYXJkSHVtIHx8IHByZXZp
b3VzUmVzdWx0cy5oZWFyZEJpcCB8fCBwcmV2aW91c1Jlc3VsdHMuaGVhcmRCb3ApCisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpOworCisgICAgICAgIHJldHVybiBhd2Fp
dCBjaGVja0Zvckh1bUJpcEJvcChzdHJlYW0sIHByZXZpb3VzUmVzdWx0cywgY291bnRlcik7Cisg
ICAgfQorCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgICAgIGNvbnN0
IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAg
ICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2soYXVkaW9UcmFjaywgYXVkaW9TdHJlYW0p
OworICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAg
ICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAoZXZlbnQpID0+IHsgcmVzb2x2ZShldmVudC5z
dHJlYW1zWzBdKTsgfTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2V0VGltZW91dCgo
KSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgICAgICB9KTsKKyAgICAg
ICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGNoZWNrRm9ySHVtQmlwQm9wKHN0cmVhbSk7CisgICAg
ICAgIGF3YWl0ICBjb250ZXh0LmNsb3NlKCk7CisgICAgICAgIGF3YWl0ICBub2lzZUNvbnRleHQu
Y2xvc2UoKTsKKyAgICAgICAgYXNzZXJ0X3RydWUocmVzdWx0cywgImhlYXJkIGh1bSBiaXAgYm9w
Iik7CisgICAgfSwgIldlYiBhdWRpbyBnZW5lcmF0ZWQgY29udGVudCB0aHJvdWdoIGEgcGVlciBj
b25uZWN0aW9uIik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345000</attachid>
            <date>2018-07-13 16:20:16 -0700</date>
            <delta_ts>2018-07-13 17:04:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187627-20180713162015.patch</filename>
            <type>text/plain</type>
            <size>30736</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4NzhlYzFjZjRlYjhk
NDFjNWRkOWJlOTQwYzg0MjAyOWVhZTA3Mi4uNTBmN2JkZmRmMDRiNjgxOTRmZWQ5MzI1YzFlYmUx
MmMwNmEzYmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTA3LTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbm5lY3Rp
bmcgYSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIHRvIFJUQ1BlZXJDb25uZWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MzM0NDAwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEplciBOb2JsZS4KKworICAgICAgICBXaGVuIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UgaXMgY2Fs
bGVkIHRvIHJlYWQgbmV3IGF1ZGlvIHNhbXBsZXMsCisgICAgICAgIGNvbnZlcnQgdGhlc2Ugc2Ft
cGxlcyB0byBhIFdlYkF1ZGlvQnVmZmVyTGlzdCBhbmQgY2FsbCBSZWFsdGltZU1lZGlhU291cmNl
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUuCisgICAgICAgIFRoaXMgbWFrZXMgaXRzIG9ic2VydmVy
cyB0byBnZXQgdGhlIGF1ZGlvIGRhdGEuCisKKyAgICAgICAgVGVzdDogd2VicnRjL3BlZXItY29u
bmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uLmh0bWwKKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW06OmNyZWF0ZSk6IE1pbm9yIHJlZmFjdG9yaW5nLgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnByb2Nl
c3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpNZWRp
YVN0cmVhbUF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9T
b3VyY2U6OmNvbnN1bWVBdWRpbyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0cmVhbURl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNv
bnN1bWVBdWRpbyk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6CisKIDIw
MTgtMDctMTMgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDdXJsXSBNb3ZlIEhUVFAgU2V0dXAgbG9naWMgZnJvbSBDdXJsUmVxdWVzdCB0byBDdXJs
SGFuZGxlIGZvciByZXVzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggYzI4NGE0MTA4ZGIyZjYyNGE2ZGZmMWQwYzk0NGRj
MjlkMjhlOGUxMS4uOTBkNmM1NjUxZjFiYmUzZjYxNDRiZjYzMDM0NDVjNWRjMzUwNWMwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFTdHJl
YW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVBy
aXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4oKSkp
OworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFtUHJp
dmF0ZTo6Y3JlYXRlKHsgfSkpOwogfQogCiBSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0mIHN0cmVh
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDFiOTA3MmFlMjI3
MzY4M2ZkNDBiMTFjZTkyMThmZDc3MjdkOWFlNTMuLjhmYzQxZmQ1NjQzZjhiZGI1OWQ2MGJmNzJk
MGZiZDU1MDNlMzBiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApA
QCAtNDIsMjUgKzQyLDEzIEBAIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkCiAKIE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJP
ZkNoYW5uZWxzKQotICAgICwgbV9taXhCdXMoQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5u
ZWxzLCBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSkKKyAgICAsIG1fc291cmNlKE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkpCisgICAgLCBtX3N0cmVh
bShNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
TWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUobV9zb3VyY2UuY29weVJlZigpKSkpCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb24pOwotCi0gICAg
bV9zb3VyY2UgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICBWZWN0b3I8
UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7Ci0gICAgYXVkaW9Tb3VyY2Vz
LmFwcGVuZCgqbV9zb3VyY2UpOwotICAgIG1fc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgq
Y29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3Jl
YXRlKGF1ZGlvU291cmNlcywgeyB9KSk7Ci0KLSAgICBtX3NvdXJjZS0+c2V0QXVkaW9Gb3JtYXQo
bnVtYmVyT2ZDaGFubmVscywgY29udGV4dC5zYW1wbGVSYXRlKCkpOwotCiAgICAgaW5pdGlhbGl6
ZSgpOwogfQogCi1SZWFsdGltZU1lZGlhU291cmNlKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjptZWRpYVN0cmVhbVNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlLmdldCgp
OwotfQotCiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjp+TWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZSgpCiB7CiAgICAgdW5pbml0aWFsaXplKCk7CkBAIC02OCw4ICs1Niw3
IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKCkKIAogdm9pZCBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpw
cm9jZXNzKHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICBtX21peEJ1cy0+Y29weUZyb20o
KmlucHV0KDApLT5idXMoKSk7Ci0gICAgbV9zb3VyY2UtPmNvbnN1bWVBdWRpbyhtX21peEJ1cy5n
ZXQoKSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fc291cmNlLT5jb25zdW1lQXVkaW8oKmlucHV0
KDApLT5idXMoKSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
aW5kZXggOGU4ZjQwNDk0OGI5M2YzODFiMWE5MDNjNWJkZTcyOTZkMjM0MTEyNS4uYjE5MmYyNmQ2
NDk2NDQxYzM1MjhiYWQyMTVhYTZhYjkyYzZmNWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKQEAgLTQxLDI2ICs0MSwyMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKLSAgICBNZWRpYVN0cmVhbSogc3Ry
ZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0KCk7IH0KKyAgICBNZWRpYVN0cmVhbSYgc3RyZWFt
KCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0KCk7IH0KIAogICAgIC8vIEF1ZGlvTm9kZS4KLSAgICB2
b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0KCkgZmluYWw7CiAgICAgCi0gICAgUmVhbHRpbWVNZWRp
YVNvdXJjZSogbWVkaWFTdHJlYW1Tb3VyY2UoKTsKLQogcHJpdmF0ZToKICAgICBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKTsKIAotICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KLSAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFz
IGFuIGF1ZGlvIHNvdXJjZSwgd2Ugd2lsbCBuZXZlciBwcm9wYWdhdGUgc2lsZW5jZS4KLSAgICBi
b29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07Ci0gICAgUmVmUHRyPE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291cmNlOwotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9taXhC
dXM7CisgICAgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291cmNlOworICAgIFJlZjxN
ZWRpYVN0cmVhbT4gbV9zdHJlYW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmNwcAppbmRleCAzNTYzZmEzNjI5MTIwOTQwODEwZGFjMmE4MjIyNmI4Y2U3MjRm
ZTI1Li5kNzk3YjY3YzA1ZGZlYWY2MWQ5NGJjYWJmZjBhMjM4NTBhZjM2ZTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsMjAgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
Ci0jaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRl
KCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkp
OwotfQotCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkK
K01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UobWFrZVN0cmluZygiV2ViQXVkaW8t
Il9zLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLCBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpBdWRpbywgIk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUiKQogeworICAgIG1f
Y3VycmVudFNldHRpbmdzLnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSk7CiB9CiAKIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNh
cGFiaWxpdGllcygpIGNvbnN0CkBAIC02MCwzNiArNTUsMTEgQEAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U6OmFkZEF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25z
dW1lcikKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0g
ICAgbV9hdWRpb0NvbnN1bWVycy5hcHBlbmQoY29uc3VtZXIpOwotfQotCi1ib29sIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1
bWVyKiBjb25zdW1lcikKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJz
TG9jayk7Ci0gICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9Db25zdW1lcnMuZmluZChjb25zdW1lcik7
Ci0gICAgaWYgKHBvcyAhPSBub3RGb3VuZCkgewotICAgICAgICBtX2F1ZGlvQ29uc3VtZXJzLnJl
bW92ZShwb3MpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN1bWVyIDog
bV9hdWRpb0NvbnN1bWVycykKLSAgICAgICAgY29uc3VtZXItPnNldEZvcm1hdChudW1iZXJPZkNo
YW5uZWxzLCBzYW1wbGVSYXRlKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpj
b25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQorI2lmICFQ
TEFURk9STShDT0NPQSkKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlv
KEF1ZGlvQnVzJiwgc2l6ZV90KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXVkaW9Db25z
dW1lcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8mIGNvbnN1bWVyIDogbV9hdWRpb0NvbnN1bWVycykK
LSAgICAgICAgY29uc3VtZXItPmNvbnN1bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsKIH0K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKaW5kZXgg
MThiOTZlNmIyZWJlZTI5MDVlMDdjODYxZWZkNWZlOTI2ZjNhODk1YS4uNGI5MGM4YWY2ZTIwNzk5
NzA1MzRmYjgxMjFiNzRjYThjMWFkYmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKQEAgLTI3LDcgKzI3
LDYgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJBdWRpb0Rlc3Rp
bmF0aW9uQ29uc3VtZXIuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICszOSw3
IEBAIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM7CiAKIGNsYXNzIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBjcmVhdGUoKTsK
KyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IGNyZWF0ZShmbG9hdCBzYW1w
bGVSYXRlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UgeyBz
YW1wbGVSYXRlIH0pOyB9CiAKICAgICB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpID0gZGVmYXVs
dDsKIApAQCAtNTAsMjIgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGRldmlj
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQogICAgIHZvaWQgc2V0RGV2aWNlSWQo
Y29uc3QgU3RyaW5nJiBkZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KIAotICAg
IHZvaWQgc2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUpOwotICAgIHZvaWQgY29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiwgc2l6ZV90IG51bWJlck9m
RnJhbWVzKTsKLQotICAgIHZvaWQgYWRkQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29u
c3VtZXIqKTsKLSAgICBib29sIHJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyKik7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXI+PiYgYXVkaW9Db25zdW1lcnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9
CisgICAgdm9pZCBjb25zdW1lQXVkaW8oQXVkaW9CdXMmLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMp
OwogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKTsKKyAgICBleHBsaWNp
dCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKGZsb2F0IHNhbXBsZVJhdGUpOwogCi0gICAgYm9vbCBp
c0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBp
c0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU3Ry
aW5nIG1fZGV2aWNlSWQ7Ci0gICAgTG9jayBtX2F1ZGlvQ29uc3VtZXJzTG9jazsKLSAgICBWZWN0
b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+IG1fYXVkaW9Db25zdW1lcnM7CiAg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOworICAgIHNp
emVfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMTlhZmIzNzI1NmJj
MjRiNGQ4NWY5YTc3ZWYxMGIwMTA3NmZkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAg
LTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIK
KyNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSA8Q29yZUF1ZGlv
L0NvcmVBdWRpb1R5cGVzLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNp
bmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCit1c2luZyBuYW1lc3BhY2UgUEFMOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uIHN0cmVhbURlc2NyaXB0aW9uKHNpemVfdCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5l
bENvdW50KQoreworICAgIGJvb2wgaXNGbG9hdCA9IHRydWU7CisgICAgYm9vbCBpc0JpZ0VuZGlh
biA9IGZhbHNlOworICAgIGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBzYW1wbGVTaXplID0gOCAqIHNpemVvZihmbG9hdCk7CisKKyAgICBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIEZpbGxPdXRBU0JERm9y
TFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgc2FtcGxlU2l6ZSwg
c2FtcGxlU2l6ZSwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOworICAg
IHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5Q2hhbm5l
bERhdGEoQXVkaW9DaGFubmVsJiBjaGFubmVsLCBBdWRpb0J1ZmZlciYgYnVmZmVyLCBzaXplX3Qg
bnVtYmVyT2ZGcmFtZXMsIGJvb2wgaXNNdXRlZCkKK3sKKyAgICBidWZmZXIubURhdGFCeXRlU2l6
ZSA9IG51bWJlck9mRnJhbWVzICogc2l6ZW9mKGZsb2F0KTsKKyAgICBidWZmZXIubU51bWJlckNo
YW5uZWxzID0gMTsKKyAgICBpZiAoaXNNdXRlZCkgeworICAgICAgICBtZW1zZXQoYnVmZmVyLm1E
YXRhLCAwLCBidWZmZXIubURhdGFCeXRlU2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgbWVtY3B5KGJ1ZmZlci5tRGF0YSwgY2hhbm5lbC5kYXRhKCksIGJ1ZmZlci5tRGF0YUJ5dGVT
aXplKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVk
aW9CdXMmIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIGlmIChidXMubnVtYmVy
T2ZDaGFubmVscygpICE9IDEgJiYgYnVzLm51bWJlck9mQ2hhbm5lbHMoKSAhPSAyKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29u
c3VtZUF1ZGlvKCVwKSB0cnlpbmcgdG8gY29uc3VtZSBidXMgd2l0aCAldSBjaGFubmVscyIsIHRo
aXMsIGJ1cy5udW1iZXJPZkNoYW5uZWxzKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgbV9jdXJy
ZW50U2V0dGluZ3Muc2FtcGxlUmF0ZSgpKTsKKyAgICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9N
ZWRpYVRpbWUoc3RhcnRUaW1lKTsKKyAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJh
bWVzOworCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uID0g
c3RyZWFtRGVzY3JpcHRpb24obV9jdXJyZW50U2V0dGluZ3Muc2FtcGxlUmF0ZSgpLCBidXMubnVt
YmVyT2ZDaGFubmVscygpKTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhlIG1lbW9y
eSBhbGxvY2F0aW9uIG9uY2UgaW4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBhbmQgcmVzaXplIGl0
IGFjY29yZGluZyBudW1iZXJPZkZyYW1lcy4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9C
dWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RG
OjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisKKyAgICBmb3IgKHNpemVf
dCBjcHRyID0gMDsgY3B0ciA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsrY3B0cikKKyAgICAg
ICAgY29weUNoYW5uZWxEYXRhKCpidXMuY2hhbm5lbChjcHRyKSwgKmF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoY3B0ciksIG51bWJlck9mRnJhbWVzLCBtdXRlZCgpKTsKKworICAgIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5MGVh
NzZiNGJiNDNjNDNmMDA0NWJhZTQ5NWMyM2U1OWFmNzkzOTcuLmRkOTNlODc1OTEzY2E4NjFkNmRm
ZWUwYTNhOTExMjkxYzNiNDIxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzLDcgKzkzLDYgQEAKIAkJMDcwRTA5MTkxODc1
RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyog
UGxhdGZvcm1NZWRpYVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwNzBFODFEMTFCRjI3NjU2MDAxRkRBNDggLyogVmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwRTgxRDAxQkYyNzY1NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0uaCAqLzsgfTsKIAkJMDcwRjU0OTgxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3Ry
ZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFT
dHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLzsgfTsKLQkJMDcwRjU0OUUxN0Yy
NDAyNzAwMTY5RTA0IC8qIEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRjU0OUQxN0YyNDAyNzAwMTY5RTA0
IC8qIEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MTk0MjdGMUQwODhGMjEwMDJBQTUxRCAvKiBBVkZv
dW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRhdGlvbk1J
TUVUeXBlQ2FjaGUubW0gKi87IH07CiAJCTA3MUE5RUMyMTY4RkJDNDMwMDI2MjlGOSAvKiBUZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmNwcCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdl
bmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNTksNiArMTA1OCw3
IEBACiAJCTQxMjlDOUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4QzM5NUIx
QzhGMEE2MTAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOUM5QUYxRjU5Q0Y1QjAwOUQ3
NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEyOUM5ODAxRjU4NjFDNzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3Ry
ZWFtU2luay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxMjlERjg2MUJCNUI4MEMwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNv
bnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyOURGODQxQkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29u
c3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VD
b2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMzQ0I4OTIwRjgwRTg2MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNw
cCAqLzsgfTsKIAkJNDEzODBDMjcxRjM0MzZBQzAwMTU1RkRBIC8qIERPTUNhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4MEMyNTFGMzQzNjlB
MDAxNTVGREEgLyogRE9NQ2FjaGUuaCAqLzsgfTsKIAkJNDEzODBDMjkxRjM0MzZBQzAwMTU1RkRB
IC8qIERPTUNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzODBDMjIxRjM0MzY5MDAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5o
ICovOyB9OwogCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQw
NTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CkBAIC01MjAxLDcgKzUyMDEsNiBA
QAogCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBFODFEMDFCRjI3NjU2MDAx
RkRBNDggLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0
cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVk
aW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAv
KiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTkzLDYgKzcxOTIsNyBAQAogCQk0MTMxRjNC
MTFGOTU1MjgxMDA1OTk5NUEgLyogSlNGZXRjaEV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0I0MUY5NTVCQzMwMDU5OTk1QSAvKiBFeHRlbmRh
YmxlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuZGFi
bGVFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMUYzQjUxRjk1
NUJDNTAwNTk5OTVBIC8qIEV4dGVuZGFibGVFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEV4dGVuZGFibGVFdmVudEluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTMzQ0I4OTIwRjgwRTg2MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzgw
QzIwMUYzNDM2OEEwMDE1NUZEQSAvKiBET01DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
T01DYWNoZS5jcHA7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MTM4MEMyMTFGMzQzNjhEMDAxNTVGREEgLyogRE9NQ2Fj
aGVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUNhY2hlU3RvcmFnZS5jcHA7IHBh
dGggPSBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJNDEzODBDMjIxRjM0MzY5MDAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBET01DYWNoZVN0b3JhZ2UuaDsgcGF0aCA9IE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTI2
NzIwLDYgKzI2NzIwLDcgQEAKIAkJCQkwNzhFMDk0QTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8sCiAJCQkJMDc4MzIyODIxODAxM0VENzAw
OTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovLAogCQkJCTA3ODMyMjgzMTgw
MTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi8sCisJCQkJNDEzM0NC
ODkyMEY4MEU4NjAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8s
CiAJCQkJRkQ2NzFBNzQxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmNwcCAqLywKIAkJCQlGRDY3MUE3NTE1OUJCMDcwMDAxOTc1NTkgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGUuaCAqLywKIAkJCQlGRDY3MUE3NjE1OUJCMDcwMDAxOTc1NTkgLyogTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaWRsICovLApAQCAtMjY3NjgsNyArMjY3NjksNiBAQAog
CQkJCUZEMzE2MDQ3MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuY3BwICovLAogCQkJ
CUZEMzE2MDQ4MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuaCAqLywKIAkJCQlGRDMx
NjA0OTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oICovLAotCQkJCTA3MEY1
NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCAqLywKIAkJ
CQlGRDMxNjA0QTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWwuaCAqLywKIAkJCQlG
RDMxNjA0QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3BwICov
LAogCQkJCUZEMzE2MDRDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nv
ci5oICovLApAQCAtMjcxMjUsNyArMjcxMjUsNiBAQAogCQkJCUZEMzE2MDdFMTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDA1MTJCMDI2
NzYwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdG
MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDgxMkIwMjY3NjAwQzFBMzU5
IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4MDEy
QjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovLApAQCAtMzE0
ODcsNiArMzE0ODYsNyBAQAogCQkJCUM5MEY2NTU1MUIyMjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUx
NUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RD
OEI1QTYxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gaW4g
U291cmNlcyAqLywKKwkJCQk0MTMzQ0I4QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjJCMDEwMTgyMDU0MDYw
MEYyQjQyNCAvKiBNb2NrQm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QURGMUQ2N0My
MjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFF
MTFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Db25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbkNvbnN1bWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YzMzODc2
ZjMwYjgyN2YzNGEwNmJhNjllMmZhYTBmZTQ1YTMzZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqICAgIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXJfaAotI2RlZmluZSBBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXJfaAotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0J1czsKLQotY2xhc3MgQXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyIDogcHVibGljIFJlZkNvdW50ZWQ8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKCkgPSBk
ZWZhdWx0OwotCi0gICAgdmlydHVhbCB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb25zdW1lQXVk
aW8oQXVkaW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpID0gMDsKLX07Ci0KLX0gLy8gV2Vi
Q29yZQotCi0jZW5kaWYgLy8gQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCmluZGV4IGZjYjQyM2YzYzhjMTVkZWY4MzkwZGRkMzdmNWVlMGU1NGQyYWE4NzkuLjk2
NTIyOWVmZGQ2MjU5MDMxNDc2MjNjOTMxOGViMzMyZDczYzMwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcApAQCAtNDQsNiArNDQsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitSZWY8TWVk
aWFTdHJlYW1Qcml2YXRlPiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UpCit7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtUHJpdmF0ZTo6
Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yOjpmcm9tKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShzb3VyY2UpKSkpOworfQorCiBSZWY8TWVkaWFTdHJl
YW1Qcml2YXRlPiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjb25zdCBWZWN0b3I8UmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKQogewogICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlVmVjdG9yIHRyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXggYjZiNjQwYjM4YTA4YTE2
NjhiMGJmYWMwMzI3YjY5MjE5Mzg0OTBhNi4uZGM2NWFkODM0Njg3MWI3YjJmMjYwNTgyYWIyYjYw
ZWY5Mjc0MjEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSB7IH0KICAgICB9OwogCisgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNy
ZWF0ZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAgICAgc3RhdGljIFJlZjxNZWRpYVN0
cmVhbVByaXZhdGU+IGNyZWF0ZShjb25zdCBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYg
dmlkZW9Tb3VyY2VzKTsKICAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRl
KGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yJiB0cmFja3MsIFN0cmluZyYmIGlk
ID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU3RyZWFtUHJpdmF0ZSh0cmFja3MsIFdURk1vdmUoaWQpKSk7IH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI0YjM1
OGE3ZTM3NmYwMjc3YmM3NDQ3Y2IwYThlMjBjODBkNjBiYjcuLjU3Njg3MjI2MTI3ODdkMjk0M2E2
NmE3M2M4ZmI5MDI2ZmI3MDdjNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNy0xMyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb25u
ZWN0aW5nIGEgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSB0byBSVENQZWVyQ29ubmVj
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
NjI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTMzNDQwMD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiB3ZWJydGMvcGVlci1jb25uZWN0aW9uLWNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJydGMvcGVlci1jb25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbDog
QWRkZWQuCisKIDIwMTgtMDctMTMgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4K
IAogICAgICAgICBbIE1hY09TIERlYnVnIF0gTGF5b3V0IFRlc3QgaW5zcGVjdG9yL3ZpZXcvYXN5
bmNocm9ub3VzLWxheW91dC5odG1sIGlzIGEgRmxha3kgVGltZW91dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3Jl
YXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE0NGI2
NDkzYzQyMjdlZTdjY2RjMjE4ZDY5YzEyMjUyNzQzZjNjZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgV2ViIGF1ZGlvIGdlbmVy
YXRlZCBjb250ZW50IHRocm91Z2ggYSBwZWVyIGNvbm5lY3Rpb24gCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRp
YVN0cmVhbURlc3RpbmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY0YmY4N2MyODlhZjQ0MDIxYTZi
ZmZkZWU0MGM0M2NkODA0NDJkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0
Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbi5odG1sCkBAIC0w
LDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlRlc3RpbmcgY3JlYXRlTWVkaWFTdHJlYW1EZXN0
aW5hdGlvbiBwaXBlZCB0byBwZWVyIGNvbm5lY3Rpb248L3RpdGxlPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgY29uc3Qg
bm9pc2VDb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworICAgIGNvbnN0IG9zY2ls
bGF0b3IgPSBub2lzZUNvbnRleHQuY3JlYXRlT3NjaWxsYXRvcigpOworICAgIGNvbnN0IGF1ZGlv
U3RyZWFtRGVzdGluYXRpb24gPSBub2lzZUNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbigpOworICAgIGNvbnN0IGF1ZGlvU3RyZWFtID0gYXVkaW9TdHJlYW1EZXN0aW5hdGlvbi5z
dHJlYW07CisgICAgb3NjaWxsYXRvci5jb25uZWN0KGF1ZGlvU3RyZWFtRGVzdGluYXRpb24pOwor
ICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTsKKyAgICBjb25zdCBhdWRpb1RyYWNrID0gYXVkaW9TdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKworICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1
ZGlvQ29udGV4dCgpOworICAgIHZhciByZW1vdGVTdHJlYW07CisKKyAgICBhc3luYyBmdW5jdGlv
biBjaGVja0Zvckh1bUJpcEJvcChzdHJlYW0sIHByZXZpb3VzUmVzdWx0cywgY291bnRlcikKKyAg
ICB7CisgICAgICAgIGlmICghcHJldmlvdXNSZXN1bHRzKQorICAgICAgICAgICAgcHJldmlvdXNS
ZXN1bHRzID0geyBoZWFyZEh1bSA6IGZhbHNlLCBoZWFyZEJpcCA6IGZhbHNlLCBoZWFyZEJvcCA6
IGZhbHNlIH07CisgICAgICAgIGlmICghY291bnRlcikKKyAgICAgICAgICAgIGNvdW50ZXIgPSAx
OworICAgICAgICBpZiAoKytjb3VudGVyID4gMjApCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKGZhbHNlKTsKKworICAgICAgICByZXN1bHRzID0gYXdhaXQgYW5hbHlzZUF1ZGlv
KHN0cmVhbSwgNTAwLCBjb250ZXh0KTsKKyAgICAgICAgcHJldmlvdXNSZXN1bHRzLmhlYXJkSHVt
IHw9IHJlc3VsdHMuaGVhcmRIdW07CisgICAgICAgIHByZXZpb3VzUmVzdWx0cy5oZWFyZEJpcCB8
PSByZXN1bHRzLmhlYXJkQmlwOworICAgICAgICBwcmV2aW91c1Jlc3VsdHMuaGVhcmRCb3AgfD0g
cmVzdWx0cy5oZWFyZEJvcDsKKyAgICAgICAgaWYgKHByZXZpb3VzUmVzdWx0cy5oZWFyZEh1bSB8
fCBwcmV2aW91c1Jlc3VsdHMuaGVhcmRCaXAgfHwgcHJldmlvdXNSZXN1bHRzLmhlYXJkQm9wKQor
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTsKKworICAgICAgICByZXR1
cm4gYXdhaXQgY2hlY2tGb3JIdW1CaXBCb3Aoc3RyZWFtLCBwcmV2aW91c1Jlc3VsdHMsIGNvdW50
ZXIpOworICAgIH0KKworICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgICAg
ICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
CisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7Cisg
ICAgICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGF1ZGlvVHJhY2ssIGF1ZGlv
U3RyZWFtKTsKKyAgICAgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAg
ICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKGV2ZW50KSA9PiB7IHJlc29sdmUo
ZXZlbnQuc3RyZWFtc1swXSk7IH07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjaGVja0Zvckh1bUJpcEJvcChzdHJlYW0p
OworICAgICAgICBhd2FpdCAgY29udGV4dC5jbG9zZSgpOworICAgICAgICBhd2FpdCAgbm9pc2VD
b250ZXh0LmNsb3NlKCk7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdHMsICJoZWFyZCBodW0g
YmlwIGJvcCIpOworICAgIH0sICJXZWIgYXVkaW8gZ2VuZXJhdGVkIGNvbnRlbnQgdGhyb3VnaCBh
IHBlZXIgY29ubmVjdGlvbiIpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>