<?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>162899</bug_id>
          
          <creation_ts>2016-10-04 04:28:45 -0700</creation_ts>
          <short_desc>[GStreamer][MSE] MediaSourceGStreamer refactoring</short_desc>
          <delta_ts>2016-10-26 01:44:18 -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>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>calvaris</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236134</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 04:28:45 -0700</bug_when>
    <thetext>Move MediaSourceGStreamer to the mse directory, manage SourceBufferPrivates and delegate WebKitMediaSrc operations to the MSE private player.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236135</commentid>
    <comment_count>1</comment_count>
      <attachid>290591</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 04:31:33 -0700</bug_when>
    <thetext>Created attachment 290591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236162</commentid>
    <comment_count>2</comment_count>
      <attachid>290591</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 07:07:50 -0700</bug_when>
    <thetext>Comment on attachment 290591
Patch

Wait until all the patches in 157314 are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236184</commentid>
    <comment_count>3</comment_count>
      <attachid>290591</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-04 08:09:12 -0700</bug_when>
    <thetext>Comment on attachment 290591
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:49
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/glib/GRefPtr.h&gt;

These two lines are not alphabetically sorted.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:71
&gt; +    for (HashSet&lt;SourceBufferPrivateGStreamer*&gt;::iterator iterator = m_sourceBuffers.begin(), end = m_sourceBuffers.end(); iterator != end; ++iterator)
&gt; +        (*iterator)-&gt;clearMediaSource();

I am not sure if this would work, but you might want to try C++11 features like:
for (sourceBuffer : m_sourceBuffers)
    sourceBuffer-&gt;clearMediaSource();

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:76
&gt; +    RefPtr&lt;SourceBufferPrivateGStreamer&gt; buffer = SourceBufferPrivateGStreamer::create(this, m_client, contentType);

Please, name this variable properly. This is not a buffer.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.h:71
&gt; +    virtual AddStatus addSourceBuffer(const ContentType&amp;, RefPtr&lt;SourceBufferPrivate&gt;&amp;);
&gt; +    void removeSourceBuffer(SourceBufferPrivate*);
&gt; +
&gt; +    virtual void durationChanged();
&gt; +    virtual void markEndOfStream(EndOfStreamStatus);
&gt; +    virtual void unmarkEndOfStream();
&gt; +
&gt; +    virtual MediaPlayer::ReadyState readyState() const;
&gt; +    virtual void setReadyState(MediaPlayer::ReadyState);
&gt; +
&gt; +    virtual void waitForSeekCompleted();
&gt; +    virtual void seekCompleted();

These functions should not be tagged as virtual but as override.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236644</commentid>
    <comment_count>4</comment_count>
      <attachid>290591</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-05 09:02:44 -0700</bug_when>
    <thetext>Comment on attachment 290591
Patch

I would like to have a deeper look to pointers here as I suspect we could use more refcounted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237159</commentid>
    <comment_count>5</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-06 11:05:31 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; I would like to have a deeper look to pointers here as I suspect we could
&gt; use more refcounted

I&apos;ve converted m_sourceBuffers to be a HashSet&lt;RefPtr&lt;SourceBufferPrivateGStreamer&gt;&gt;, and m_mediaSource is now a RefPtr&lt;MediaSourcePrivateClient&gt;. I&apos;ll be submitting an updated patch soon.

For the case of m_activeSourceBuffers and m_playerPrivate I think it&apos;s fine to use raw pointers. In the first case, there won&apos;t be any active source buffer which is not in already in the set of source buffers. This is alse the strategy followed by Apple&apos;s MediaPlayerPrivateMediaSourceAVFObjC.

For the case of m_playerPrivate, the thing is that none of MediaPlayerPrivateGStreamerMSE or its ancestors inherit from RefCounted. MediaPlayerPrivateInterface is just not meant to be RefCounted, because MediaPlayer holds an std::unique_ptr&lt;MediaPlayerPrivateInterface&gt;. Therefore, all the reference holding elsewhere must be done using raw pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240763</commentid>
    <comment_count>6</comment_count>
      <attachid>291762</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-16 12:06:06 -0700</bug_when>
    <thetext>Created attachment 291762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240964</commentid>
    <comment_count>7</comment_count>
      <attachid>291762</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-17 09:05:10 -0700</bug_when>
    <thetext>Comment on attachment 291762
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.h:82
&gt; +    RefPtr&lt;MediaSourcePrivateClient&gt; m_mediaSource;

Are we sure we don&apos;t have a circular reference here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242544</commentid>
    <comment_count>8</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-20 12:59:53 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.h:82
&gt; &gt; +    RefPtr&lt;MediaSourcePrivateClient&gt; m_mediaSource;
&gt; Are we sure we don&apos;t have a circular reference here?

Yes, I&apos;ve checked that the destructors of both MediaSourcePrivateClient and MediaSourceGStreamer are called at runtime. It wouldn&apos;t be so if we had a circular reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242586</commentid>
    <comment_count>9</comment_count>
      <attachid>292254</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-20 13:56:54 -0700</bug_when>
    <thetext>Created attachment 292254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242785</commentid>
    <comment_count>10</comment_count>
      <attachid>292254</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-21 00:16:31 -0700</bug_when>
    <thetext>Comment on attachment 292254
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:56
&gt; +    ASSERT(mediaSource);
&gt; +    ASSERT(playerPrivate);

Use references for the parameters if you&apos;re expecting non-null values, not pointers.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:58
&gt; +    RefPtr&lt;MediaSourceGStreamer&gt; mediaSourcePrivate = adoptRef(new MediaSourceGStreamer(*mediaSource, *playerPrivate));

Use a Ref&lt;&gt; and adoptRef(*new ...) combo.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:59
&gt; +    mediaSourcePrivate-&gt;m_playerPrivate = playerPrivate;

Do this in the constructor.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:60
&gt; +    mediaSource-&gt;setPrivateAndOpen(mediaSourcePrivate.releaseNonNull());

You&apos;d move mediaSourcePrivate (now a Ref&lt;&gt;) in here, but since the m_playerPrivate assignment would be moved into the constructor, you might as well inline the adoptRef(*new MediaSourceGStreamer) call into this setPrivateAndOpen() call. So together with using references for parameter types of this open() method, you should end up with a one-liner.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:67
&gt; +    m_client = MediaSourceClientGStreamerMSE::create(playerPrivate);

m_client can be assigned in the initialization list of this constructor.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:72
&gt; +    for (RefPtr&lt;SourceBufferPrivateGStreamer&gt; sourceBufferPrivate : m_sourceBuffers)

for (auto&amp; sourceBufferPrivate : m_sourceBuffers)

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:86
&gt; +    RefPtr&lt;SourceBufferPrivateGStreamer&gt; sourceBufferPrivateGStreamer = reinterpret_cast&lt;SourceBufferPrivateGStreamer*&gt;(sourceBufferPrivate);

This should be a static_cast, like in the method above.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.h:82
&gt; +    RefPtr&lt;MediaSourcePrivateClient&gt; m_mediaSource;

This can be a Ref&lt;&gt;.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceGStreamer.h:83
&gt; +    MediaPlayerPrivateGStreamerMSE* m_playerPrivate;

This can be a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243097</commentid>
    <comment_count>11</comment_count>
      <attachid>292408</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-21 14:26:07 -0700</bug_when>
    <thetext>Created attachment 292408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243768</commentid>
    <comment_count>12</comment_count>
      <attachid>292408</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-24 10:37:27 -0700</bug_when>
    <thetext>Comment on attachment 292408
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244675</commentid>
    <comment_count>13</comment_count>
      <attachid>292893</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:20:31 -0700</bug_when>
    <thetext>Created attachment 292893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244708</commentid>
    <comment_count>14</comment_count>
      <attachid>292893</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:44:10 -0700</bug_when>
    <thetext>Comment on attachment 292893
Patch

Clearing flags on attachment: 292893

Committed r207880: &lt;http://trac.webkit.org/changeset/207880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244709</commentid>
    <comment_count>15</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:44:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290591</attachid>
            <date>2016-10-04 04:31:33 -0700</date>
            <delta_ts>2016-10-16 12:05:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162899-20161004112822.patch</filename>
            <type>text/plain</type>
            <size>18691</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk3ZWRkMDA2NWY4MTAw
YjY0ZmJhMjJhNjhlZWZjZTA1NmZjZWMzOS4uZjYwN2E2YzdkYzg3MWUyZjc3YmMyMmJlMmRlMTI0
NWQ2NjUzOGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBNZWRpYVNvdXJjZUdTdHJlYW1lciByZWZhY3RvcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyODk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lciB0byB0aGUgbXNlIGRpcmVjdG9yeSwgbWFuYWdlIFNvdXJjZUJ1ZmZlclByaXZhdGVz
IGFuZCBkZWxlZ2F0ZSBXZWJLaXRNZWRpYVNyYyBvcGVyYXRpb25zIHRvIHRoZSBNU0UgcHJpdmF0
ZSBwbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9m
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjp1bm1hcmtF
bmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZv
clNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5oLgorCisyMDE2LTEwLTA0ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxl
b2NhbmhhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MTNmZThlY2JiZTNi
NmVlYWQ2NjZiNGI0YmZiM2YxM2YwNTI1YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKLQotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpICYmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRl
ICJXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFt
ZXI6Om9wZW4oTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSwgV2ViS2l0TWVk
aWFTcmMqIHNyYykKLXsKLSAgICBBU1NFUlQobWVkaWFTb3VyY2UpOwotICAgIG1lZGlhU291cmNl
LT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKG1l
ZGlhU291cmNlLCBzcmMpKSk7Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJj
ZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBXZWJLaXRN
ZWRpYVNyYyogc3JjKQotICAgIDogbV9jbGllbnQoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyKHNyYykpKQotICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKLSAg
ICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi17Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKLX0KLQotTWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJl
YW1lcigpCi17Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpBZGRTdGF0dXMgTWVkaWFTb3Vy
Y2VHU3RyZWFtZXI6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYgc291cmNlQnVmZmVyUHJpdmF0ZSkKLXsK
LSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgqbV9j
bGllbnQsIGNvbnRlbnRUeXBlKTsKLSAgICBzb3VyY2VCdWZmZXJQcml2YXRlID0gc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjsKLSAgICByZXR1cm4gbV9jbGllbnQtPmFkZFNvdXJjZUJ1ZmZl
cihzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCi17Ci0gICAgbV9jbGllbnQt
PmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJhdGlvbigpKTsKLX0KLQotdm9pZCBN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0
YXR1cykKLXsKLSAgICBtX2NsaWVudC0+bWFya0VuZE9mU3RyZWFtKHN0YXR1cyk7Ci19Ci0KLXZv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1NZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsK
LX0KLQotdm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBzdGF0ZSkKLXsKLSAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKLX0KLQot
dm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNlZWtD
b21wbGV0ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjMwYjI5ZmM5OTY4ODdlNWQ0NWFlNjQ4N2RlZTI0NjhmMTIyNmJlMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBPcmFuZ2UKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIu
Y29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgTWVkaWFTb3VyY2VHU3RyZWFtZXJfaAotI2RlZmluZSBNZWRpYVNvdXJjZUdTdHJl
YW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQotI2lu
Y2x1ZGUgIk1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUg
Y2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcj8KLWNsYXNzIE1lZGlhU291cmNlR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqLCBXZWJLaXRNZWRpYVNy
YyopOwotICAgIHZpcnR1YWwgfk1lZGlhU291cmNlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFs
IEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0g
ICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCk7Ci0KLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBsZXRl
ZCgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCosIFdlYktpdE1lZGlhU3JjKik7Ci0KLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bV9tZWRpYVNvdXJjZTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YmJmOTJhZTA1ODdlZDQwZjIwYzk4ZjU2ODg1
MWU4YTgzMTY2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYg
VVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpvcGVuKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bWVkaWFTb3VyY2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogcGxheWVyUHJpdmF0
ZSkKK3sKKyAgICBBU1NFUlQobWVkaWFTb3VyY2UpOworICAgIFJlZlB0cjxNZWRpYVNvdXJjZUdT
dHJlYW1lcj4gbWVkaWFTb3VyY2VQcml2YXRlID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlR1N0
cmVhbWVyKG1lZGlhU291cmNlLCBwbGF5ZXJQcml2YXRlKSk7CisgICAgbWVkaWFTb3VyY2VQcml2
YXRlLT5tX3BsYXllclByaXZhdGUgPSBwbGF5ZXJQcml2YXRlOworICAgIG1lZGlhU291cmNlLT5z
ZXRQcml2YXRlQW5kT3BlbihtZWRpYVNvdXJjZVByaXZhdGUucmVsZWFzZU5vbk51bGwoKSk7Cit9
CisKK01lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UqIHBsYXllclByaXZhdGUpCisgICAgOiBNZWRpYVNvdXJjZVByaXZhdGUoKQorICAgICwgbV9t
ZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKK3sKKyAgICBtX2NsaWVudCA9IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyTVNFOjpjcmVhdGUocGxheWVyUHJpdmF0ZSk7Cit9CisKK01lZGlhU291cmNl
R1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VHU3RyZWFtZXIoKQoreworICAgIGZvciAoSGFzaFNldDxT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKj46Oml0ZXJhdG9yIGl0ZXJhdG9yID0gbV9zb3Vy
Y2VCdWZmZXJzLmJlZ2luKCksIGVuZCA9IG1fc291cmNlQnVmZmVycy5lbmQoKTsgaXRlcmF0b3Ig
IT0gZW5kOyArK2l0ZXJhdG9yKQorICAgICAgICAoKml0ZXJhdG9yKS0+Y2xlYXJNZWRpYVNvdXJj
ZSgpOworfQorCitNZWRpYVNvdXJjZUdTdHJlYW1lcjo6QWRkU3RhdHVzIE1lZGlhU291cmNlR1N0
cmVhbWVyOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mIHNvdXJjZUJ1ZmZlclByaXZhdGUpCit7CisgICAg
UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IGJ1ZmZlciA9IFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudCwgY29udGVudFR5cGUpOwor
ICAgIG1fc291cmNlQnVmZmVycy5hZGQoYnVmZmVyLmdldCgpKTsKKyAgICBzb3VyY2VCdWZmZXJQ
cml2YXRlID0gYnVmZmVyOworICAgIHJldHVybiBtX2NsaWVudC0+YWRkU291cmNlQnVmZmVyKGJ1
ZmZlciwgY29udGVudFR5cGUpOworfQorCit2b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpyZW1v
dmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSogYnVmZmVyKQoreworICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIqIHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIgPSBy
ZWludGVycHJldF9jYXN0PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIqPihidWZmZXIpOwor
ICAgIEFTU0VSVChtX3NvdXJjZUJ1ZmZlcnMuY29udGFpbnMoc291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcikpOworCisgICAgc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci0+Y2xlYXJNZWRp
YVNvdXJjZSgpOworICAgIG1fc291cmNlQnVmZmVycy5yZW1vdmUoc291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lcik7CisgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShzb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6ZHVy
YXRpb25DaGFuZ2VkKCkKK3sKKyAgICBtX2NsaWVudC0+ZHVyYXRpb25DaGFuZ2VkKG1fbWVkaWFT
b3VyY2UtPmR1cmF0aW9uKCkpOworfQorCit2b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjptYXJr
RW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQoreworICAgIG1fY2xpZW50LT5t
YXJrRW5kT2ZTdHJlYW0oc3RhdHVzKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6
dW5tYXJrRW5kT2ZTdHJlYW0oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhU291cmNlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXJQcml2YXRlLT5yZWFkeVN0YXRlKCk7Cit9CisKK3Zv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgc3RhdGUpCit7CisgICAgbV9wbGF5ZXJQcml2YXRlLT5zZXRSZWFkeVN0YXRlKHN0YXRl
KTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZvclNlZWtDb21wbGV0ZWQo
KQoreworICAgIG1fcGxheWVyUHJpdmF0ZS0+d2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKK30KKwor
dm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2Vla0NvbXBsZXRlZCgpCit7CisgICAgbV9wbGF5
ZXJQcml2YXRlLT5zZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFt
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyKiBidWZmZXIsIGJvb2wgaXNBY3RpdmUpCit7CisgICAgaWYgKCFpc0Fj
dGl2ZSkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShidWZmZXIpOworICAg
IGVsc2UgaWYgKCFtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuY29udGFpbnMoYnVmZmVyKSkKKyAgICAg
ICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmFkZChidWZmZXIpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YnVmZmVyZWQoKQor
eworICAgIHJldHVybiBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpOworfQorCit9CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTBm
ZTRmNDg0M2QzNzhlZTMzZDRhZDk5NjMwOTFkNmYxZGI5ZjI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBP
cmFuZ2UKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5A
Y2VudHJpY3VsYXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IE1ldHJvbG9naWNh
bCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgSWdhbGlhLCBTLkwKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1lZGlhU291cmNlR1N0cmVhbWVyX2gKKyNkZWZpbmUgTWVkaWFTb3VyY2VHU3RyZWFtZXJfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJN
ZWRpYVNvdXJjZVByaXZhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lZGlhU3JjIFdlYktp
dE1lZGlhU3JjOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI7CitjbGFzcyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTsKK2Ns
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTsKK2NsYXNzIFBsYXRmb3JtVGltZVJh
bmdlczsKKworLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGNhbGxlZCBNZWRpYVNvdXJjZVByaXZh
dGVHU3RyZWFtZXI/CitjbGFzcyBNZWRpYVNvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVNvdXJjZVByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIG9wZW4oTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50KiwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKik7Cisg
ICAgdmlydHVhbCB+TWVkaWFTb3VyY2VHU3RyZWFtZXIoKTsKKworICAgIE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyTVNFJiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KKyAg
ICB2aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZl
cihTb3VyY2VCdWZmZXJQcml2YXRlKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFu
Z2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cyk7CisgICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCk7CisKKyAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla0Nv
bXBsZXRlZCgpOworCisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZl
U3RhdGUoU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciosIGJvb2wpOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKworcHJpdmF0ZToKKyAg
ICBNZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqLCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UqKTsKKworICAgIEhhc2hTZXQ8U291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lcio+IG1fc291cmNlQnVmZmVyczsKKyAgICBIYXNoU2V0PFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CisgICAgUmVmUHRyPE1l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtX2NsaWVudDsKKyAgICBNZWRpYVNvdXJjZVBy
aXZhdGVDbGllbnQqIG1fbWVkaWFTb3VyY2U7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFKiBtX3BsYXllclByaXZhdGU7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291762</attachid>
            <date>2016-10-16 12:06:06 -0700</date>
            <delta_ts>2016-10-20 13:56:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162899-20161016190234.patch</filename>
            <type>text/plain</type>
            <size>18810</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBkMjFiOWJmZWVhNDM4
MTQyNmNiNmFlYmI2NTNiZjJkMDBkNDBiOS4uNjViZTJhNzllNGRmY2Y3YTg4YjdmMWIzMzMyODcx
NjZkOTlmM2RhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBNZWRpYVNvdXJjZUdTdHJlYW1lciByZWZhY3RvcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyODk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lciB0byB0aGUgbXNlIGRpcmVjdG9yeSwgbWFuYWdlIFNvdXJjZUJ1ZmZlclByaXZhdGVz
IGFuZCBkZWxlZ2F0ZSBXZWJLaXRNZWRpYVNyYyBvcGVyYXRpb25zIHRvIHRoZSBNU0UgcHJpdmF0
ZSBwbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9m
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjp1bm1hcmtF
bmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZv
clNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5oLgorCisyMDE2LTEwLTA0ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxl
b2NhbmhhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MTNmZThlY2JiZTNi
NmVlYWQ2NjZiNGI0YmZiM2YxM2YwNTI1YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKLQotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpICYmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRl
ICJXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFt
ZXI6Om9wZW4oTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSwgV2ViS2l0TWVk
aWFTcmMqIHNyYykKLXsKLSAgICBBU1NFUlQobWVkaWFTb3VyY2UpOwotICAgIG1lZGlhU291cmNl
LT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKG1l
ZGlhU291cmNlLCBzcmMpKSk7Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJj
ZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBXZWJLaXRN
ZWRpYVNyYyogc3JjKQotICAgIDogbV9jbGllbnQoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyKHNyYykpKQotICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKLSAg
ICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi17Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKLX0KLQotTWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJl
YW1lcigpCi17Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpBZGRTdGF0dXMgTWVkaWFTb3Vy
Y2VHU3RyZWFtZXI6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYgc291cmNlQnVmZmVyUHJpdmF0ZSkKLXsK
LSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgqbV9j
bGllbnQsIGNvbnRlbnRUeXBlKTsKLSAgICBzb3VyY2VCdWZmZXJQcml2YXRlID0gc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjsKLSAgICByZXR1cm4gbV9jbGllbnQtPmFkZFNvdXJjZUJ1ZmZl
cihzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCi17Ci0gICAgbV9jbGllbnQt
PmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJhdGlvbigpKTsKLX0KLQotdm9pZCBN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0
YXR1cykKLXsKLSAgICBtX2NsaWVudC0+bWFya0VuZE9mU3RyZWFtKHN0YXR1cyk7Ci19Ci0KLXZv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1NZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsK
LX0KLQotdm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBzdGF0ZSkKLXsKLSAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKLX0KLQot
dm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNlZWtD
b21wbGV0ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjMwYjI5ZmM5OTY4ODdlNWQ0NWFlNjQ4N2RlZTI0NjhmMTIyNmJlMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBPcmFuZ2UKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIu
Y29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgTWVkaWFTb3VyY2VHU3RyZWFtZXJfaAotI2RlZmluZSBNZWRpYVNvdXJjZUdTdHJl
YW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQotI2lu
Y2x1ZGUgIk1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUg
Y2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcj8KLWNsYXNzIE1lZGlhU291cmNlR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqLCBXZWJLaXRNZWRpYVNy
YyopOwotICAgIHZpcnR1YWwgfk1lZGlhU291cmNlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFs
IEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0g
ICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCk7Ci0KLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBsZXRl
ZCgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCosIFdlYktpdE1lZGlhU3JjKik7Ci0KLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bV9tZWRpYVNvdXJjZTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NzZhNDNhYzIxMTBlZWQ5YThjZDJjODc5ZWU0
YWI5ZDZmYWMyN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYg
VVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpvcGVuKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bWVkaWFTb3VyY2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogcGxheWVyUHJpdmF0
ZSkKK3sKKyAgICBBU1NFUlQobWVkaWFTb3VyY2UpOworICAgIFJlZlB0cjxNZWRpYVNvdXJjZUdT
dHJlYW1lcj4gbWVkaWFTb3VyY2VQcml2YXRlID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlR1N0
cmVhbWVyKG1lZGlhU291cmNlLCBwbGF5ZXJQcml2YXRlKSk7CisgICAgbWVkaWFTb3VyY2VQcml2
YXRlLT5tX3BsYXllclByaXZhdGUgPSBwbGF5ZXJQcml2YXRlOworICAgIG1lZGlhU291cmNlLT5z
ZXRQcml2YXRlQW5kT3BlbihtZWRpYVNvdXJjZVByaXZhdGUucmVsZWFzZU5vbk51bGwoKSk7Cit9
CisKK01lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UqIHBsYXllclByaXZhdGUpCisgICAgOiBNZWRpYVNvdXJjZVByaXZhdGUoKQorICAgICwgbV9t
ZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKK3sKKyAgICBtX2NsaWVudCA9IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyTVNFOjpjcmVhdGUocGxheWVyUHJpdmF0ZSk7Cit9CisKK01lZGlhU291cmNl
R1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VHU3RyZWFtZXIoKQoreworICAgIGZvciAoUmVmUHRyPFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUgOiBtX3NvdXJj
ZUJ1ZmZlcnMpCisgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGUtPmNsZWFyTWVkaWFTb3VyY2Uo
KTsKK30KKworTWVkaWFTb3VyY2VHU3RyZWFtZXI6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZUdTdHJl
YW1lcjo6YWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiBzb3VyY2VCdWZmZXJQcml2YXRlKQoreworICAgIHNv
dXJjZUJ1ZmZlclByaXZhdGUgPSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
dGhpcywgbV9jbGllbnQsIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciA9IHN0YXRpY19jYXN0
PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIqPihzb3VyY2VCdWZmZXJQcml2YXRlLmdldCgp
KTsKKyAgICBtX3NvdXJjZUJ1ZmZlcnMuYWRkKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIp
OworICAgIHJldHVybiBtX2NsaWVudC0+YWRkU291cmNlQnVmZmVyKHNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXIsIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1l
cjo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqIHNvdXJjZUJ1ZmZlclBy
aXZhdGUpCit7CisgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIgPSByZWludGVycHJldF9jYXN0PFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIqPihzb3VyY2VCdWZmZXJQcml2YXRlKTsKKyAgICBBU1NFUlQobV9zb3Vy
Y2VCdWZmZXJzLmNvbnRhaW5zKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpKTsKKworICAg
IHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXItPmNsZWFyTWVkaWFTb3VyY2UoKTsKKyAgICBt
X3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpOworICAg
IG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
ci5nZXQoKSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdl
ZCgpCit7CisgICAgbV9jbGllbnQtPmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJh
dGlvbigpKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFt
KEVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKK3sKKyAgICBtX2NsaWVudC0+bWFya0VuZE9mU3Ry
ZWFtKHN0YXR1cyk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9m
U3RyZWFtKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGxheWVyUHJpdmF0ZS0+cmVhZHlTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhU291
cmNlR1N0cmVhbWVyOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRl
KQoreworICAgIG1fcGxheWVyUHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShzdGF0ZSk7Cit9CisKK3Zv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OndhaXRGb3JTZWVrQ29tcGxldGVkKCkKK3sKKyAgICBt
X3BsYXllclByaXZhdGUtPndhaXRGb3JTZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFT
b3VyY2VHU3RyZWFtZXI6OnNlZWtDb21wbGV0ZWQoKQoreworICAgIG1fcGxheWVyUHJpdmF0ZS0+
c2Vla0NvbXBsZXRlZCgpOworfQorCit2b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUoU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lciogc291cmNlQnVmZmVyUHJpdmF0ZSwgYm9vbCBpc0FjdGl2ZSkKK3sKKyAgICBpZiAoIWlz
QWN0aXZlKQorICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMucmVtb3ZlKHNvdXJjZUJ1ZmZl
clByaXZhdGUpOworICAgIGVsc2UgaWYgKCFtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuY29udGFpbnMo
c291cmNlQnVmZmVyUHJpdmF0ZSkpCisgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5hZGQo
c291cmNlQnVmZmVyUHJpdmF0ZSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhU291cmNlR1N0cmVhbWVyOjpidWZmZXJlZCgpCit7CisgICAgcmV0dXJuIG1f
bWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMDk1NTRlMzJlYmJiYWUzNmQz
ZDRjYTUxNjY2NDI4YjA5MGQ4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmgKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJp
Z2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJNZWRpYVNvdXJj
ZVByaXZhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lZGlhU3JjIFdlYktpdE1lZGlhU3Jj
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI7CitjbGFzcyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTsKK2NsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKKwor
Ly8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGNhbGxlZCBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFt
ZXI/CitjbGFzcyBNZWRpYVNvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJj
ZVByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIG9wZW4oTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KiwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKik7CisgICAgdmlydHVh
bCB+TWVkaWFTb3VyY2VHU3RyZWFtZXIoKTsKKworICAgIE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFJiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KKyAgICBBZGRTdGF0
dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNl
QnVmZmVyUHJpdmF0ZSopOworCisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOworCisgICAgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVh
ZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHdh
aXRGb3JTZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWVrQ29tcGxldGVkKCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVT
dGF0ZShTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKiwgYm9vbCk7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpOworCitwcml2YXRlOgorICAg
IE1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCosIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRSopOworCisgICAgSGFzaFNldDxSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcj4+IG1fc291cmNlQnVmZmVyczsKKyAgICBIYXNoU2V0PFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CisgICAgUmVm
UHRyPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtX2NsaWVudDsKKyAgICBSZWZQdHI8
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50PiBtX21lZGlhU291cmNlOworICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRSogbV9wbGF5ZXJQcml2YXRlOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292254</attachid>
            <date>2016-10-20 13:56:54 -0700</date>
            <delta_ts>2016-10-21 14:26:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162899-20161020205315.patch</filename>
            <type>text/plain</type>
            <size>18843</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNmNGZmMzQ1YmVkOGE0
MGRmMDAzODI5NGY4ZjNlOWE5NDJiNjAzYS4uNzVmZTBhMGFiM2VkMDk1ZWFkODAwNjQxMzgwM2Ex
OGNlMDRmNTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBNZWRpYVNvdXJjZUdTdHJlYW1lciByZWZhY3RvcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyODk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lciB0byB0aGUgbXNlIGRpcmVjdG9yeSwgbWFuYWdlIFNvdXJjZUJ1ZmZlclByaXZhdGVz
IGFuZCBkZWxlZ2F0ZSBXZWJLaXRNZWRpYVNyYyBvcGVyYXRpb25zIHRvIHRoZSBNU0UgcHJpdmF0
ZSBwbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9m
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjp1bm1hcmtF
bmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZv
clNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5oLgorCisyMDE2LTEwLTA0ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxl
b2NhbmhhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MTNmZThlY2JiZTNi
NmVlYWQ2NjZiNGI0YmZiM2YxM2YwNTI1YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKLQotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpICYmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRl
ICJXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFt
ZXI6Om9wZW4oTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSwgV2ViS2l0TWVk
aWFTcmMqIHNyYykKLXsKLSAgICBBU1NFUlQobWVkaWFTb3VyY2UpOwotICAgIG1lZGlhU291cmNl
LT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKG1l
ZGlhU291cmNlLCBzcmMpKSk7Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJj
ZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBXZWJLaXRN
ZWRpYVNyYyogc3JjKQotICAgIDogbV9jbGllbnQoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyKHNyYykpKQotICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKLSAg
ICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi17Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKLX0KLQotTWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJl
YW1lcigpCi17Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpBZGRTdGF0dXMgTWVkaWFTb3Vy
Y2VHU3RyZWFtZXI6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYgc291cmNlQnVmZmVyUHJpdmF0ZSkKLXsK
LSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgqbV9j
bGllbnQsIGNvbnRlbnRUeXBlKTsKLSAgICBzb3VyY2VCdWZmZXJQcml2YXRlID0gc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjsKLSAgICByZXR1cm4gbV9jbGllbnQtPmFkZFNvdXJjZUJ1ZmZl
cihzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCi17Ci0gICAgbV9jbGllbnQt
PmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJhdGlvbigpKTsKLX0KLQotdm9pZCBN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0
YXR1cykKLXsKLSAgICBtX2NsaWVudC0+bWFya0VuZE9mU3RyZWFtKHN0YXR1cyk7Ci19Ci0KLXZv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1NZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsK
LX0KLQotdm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBzdGF0ZSkKLXsKLSAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKLX0KLQot
dm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNlZWtD
b21wbGV0ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjMwYjI5ZmM5OTY4ODdlNWQ0NWFlNjQ4N2RlZTI0NjhmMTIyNmJlMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBPcmFuZ2UKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIu
Y29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgTWVkaWFTb3VyY2VHU3RyZWFtZXJfaAotI2RlZmluZSBNZWRpYVNvdXJjZUdTdHJl
YW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQotI2lu
Y2x1ZGUgIk1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUg
Y2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcj8KLWNsYXNzIE1lZGlhU291cmNlR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqLCBXZWJLaXRNZWRpYVNy
YyopOwotICAgIHZpcnR1YWwgfk1lZGlhU291cmNlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFs
IEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0g
ICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCk7Ci0KLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBsZXRl
ZCgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCosIFdlYktpdE1lZGlhU3JjKik7Ci0KLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bV9tZWRpYVNvdXJjZTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MGQwNzkxNjg5OWJhOGUyODFhYmM5YTQ2ZDYw
MzY2NDk2YjA3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYg
VVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpvcGVuKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bWVkaWFTb3VyY2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogcGxheWVyUHJpdmF0
ZSkKK3sKKyAgICBBU1NFUlQobWVkaWFTb3VyY2UpOworICAgIEFTU0VSVChwbGF5ZXJQcml2YXRl
KTsKKworICAgIFJlZlB0cjxNZWRpYVNvdXJjZUdTdHJlYW1lcj4gbWVkaWFTb3VyY2VQcml2YXRl
ID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKCptZWRpYVNvdXJjZSwgKnBsYXll
clByaXZhdGUpKTsKKyAgICBtZWRpYVNvdXJjZVByaXZhdGUtPm1fcGxheWVyUHJpdmF0ZSA9IHBs
YXllclByaXZhdGU7CisgICAgbWVkaWFTb3VyY2UtPnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291
cmNlUHJpdmF0ZS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworTWVkaWFTb3VyY2VHU3RyZWFtZXI6
Ok1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCYgbWVkaWFTb3Vy
Y2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYgcGxheWVyUHJpdmF0ZSkKKyAgICA6
IE1lZGlhU291cmNlUHJpdmF0ZSgpCisgICAgLCBtX21lZGlhU291cmNlKCZtZWRpYVNvdXJjZSkK
K3sKKyAgICBtX2NsaWVudCA9IE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpjcmVhdGUo
cGxheWVyUHJpdmF0ZSk7Cit9CisKK01lZGlhU291cmNlR1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VH
U3RyZWFtZXIoKQoreworICAgIGZvciAoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUgOiBtX3NvdXJjZUJ1ZmZlcnMpCisgICAgICAgIHNvdXJj
ZUJ1ZmZlclByaXZhdGUtPmNsZWFyTWVkaWFTb3VyY2UoKTsKK30KKworTWVkaWFTb3VyY2VHU3Ry
ZWFtZXI6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKGNv
bnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+
JiBzb3VyY2VCdWZmZXJQcml2YXRlKQoreworICAgIHNvdXJjZUJ1ZmZlclByaXZhdGUgPSBTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGhpcywgbV9jbGllbnQsIGNvbnRlbnRU
eXBlKTsKKyAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lciA9IHN0YXRpY19jYXN0PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXIqPihzb3VyY2VCdWZmZXJQcml2YXRlLmdldCgpKTsKKyAgICBtX3NvdXJjZUJ1ZmZlcnMu
YWRkKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpOworICAgIHJldHVybiBtX2NsaWVudC0+
YWRkU291cmNlQnVmZmVyKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIsIGNvbnRlbnRUeXBl
KTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVtb3ZlU291cmNlQnVmZmVyKFNv
dXJjZUJ1ZmZlclByaXZhdGUqIHNvdXJjZUJ1ZmZlclByaXZhdGUpCit7CisgICAgUmVmUHRyPFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIg
PSByZWludGVycHJldF9jYXN0PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIqPihzb3VyY2VC
dWZmZXJQcml2YXRlKTsKKyAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJzLmNvbnRhaW5zKHNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpKTsKKworICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXItPmNsZWFyTWVkaWFTb3VyY2UoKTsKKyAgICBtX3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKHNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpOworICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5y
ZW1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5nZXQoKSk7Cit9CisKK3ZvaWQgTWVk
aWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCit7CisgICAgbV9jbGllbnQtPmR1
cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJhdGlvbigpKTsKK30KKwordm9pZCBNZWRp
YVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1
cykKK3sKKyAgICBtX2NsaWVudC0+bWFya0VuZE9mU3RyZWFtKHN0YXR1cyk7Cit9CisKK3ZvaWQg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdTdHJl
YW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxheWVyUHJpdmF0ZS0+
cmVhZHlTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQoreworICAgIG1fcGxheWVyUHJpdmF0
ZS0+c2V0UmVhZHlTdGF0ZShzdGF0ZSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6
OndhaXRGb3JTZWVrQ29tcGxldGVkKCkKK3sKKyAgICBtX3BsYXllclByaXZhdGUtPndhaXRGb3JT
ZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNlZWtDb21w
bGV0ZWQoKQoreworICAgIG1fcGxheWVyUHJpdmF0ZS0+c2Vla0NvbXBsZXRlZCgpOworfQorCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0
aXZlU3RhdGUoU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciogc291cmNlQnVmZmVyUHJpdmF0
ZSwgYm9vbCBpc0FjdGl2ZSkKK3sKKyAgICBpZiAoIWlzQWN0aXZlKQorICAgICAgICBtX2FjdGl2
ZVNvdXJjZUJ1ZmZlcnMucmVtb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGUpOworICAgIGVsc2UgaWYg
KCFtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuY29udGFpbnMoc291cmNlQnVmZmVyUHJpdmF0ZSkpCisg
ICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5hZGQoc291cmNlQnVmZmVyUHJpdmF0ZSk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlR1N0cmVh
bWVyOjpidWZmZXJlZCgpCit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCk7
Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3YjNkNGE5MWQ3ZjE1MTM2YWQyNTZlYjI4MDcyNGZhZWU2MWViOTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBE
csO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUs
IDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAx
NiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdE1lZGlhU3JjIFdlYktpdE1lZGlhU3JjOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI7CitjbGFzcyBNZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lck1TRTsKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RTsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKKworLy8gRklYTUU6IFNob3VsZCB0aGlzIGJl
IGNhbGxlZCBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI/CitjbGFzcyBNZWRpYVNvdXJjZUdT
dHJlYW1lciBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUgeworcHVibGljOgorICAg
IHN0YXRpYyB2b2lkIG9wZW4oTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFKik7CisgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VHU3RyZWFtZXIo
KTsKKworICAgIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFJiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiAqbV9jbGllbnQ7IH0KKyAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0
IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSopOworCisgICAg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hcmtFbmRPZlN0cmVh
bShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVh
bSgpIG92ZXJyaWRlOworCisgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyKiwgYm9vbCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBidWZmZXJlZCgpOworCitwcml2YXRlOgorICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKE1l
ZGlhU291cmNlUHJpdmF0ZUNsaWVudCYsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYp
OworCisgICAgSGFzaFNldDxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4+IG1f
c291cmNlQnVmZmVyczsKKyAgICBIYXNoU2V0PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIq
PiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CisgICAgUmVmUHRyPE1lZGlhU291cmNlQ2xpZW50R1N0
cmVhbWVyTVNFPiBtX2NsaWVudDsKKyAgICBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
PiBtX21lZGlhU291cmNlOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogbV9w
bGF5ZXJQcml2YXRlOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292408</attachid>
            <date>2016-10-21 14:26:07 -0700</date>
            <delta_ts>2016-10-26 01:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162899-20161021212226.patch</filename>
            <type>text/plain</type>
            <size>18631</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNmNGZmMzQ1YmVkOGE0
MGRmMDAzODI5NGY4ZjNlOWE5NDJiNjAzYS4uNzVmZTBhMGFiM2VkMDk1ZWFkODAwNjQxMzgwM2Ex
OGNlMDRmNTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBNZWRpYVNvdXJjZUdTdHJlYW1lciByZWZhY3RvcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyODk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lciB0byB0aGUgbXNlIGRpcmVjdG9yeSwgbWFuYWdlIFNvdXJjZUJ1ZmZlclByaXZhdGVz
IGFuZCBkZWxlZ2F0ZSBXZWJLaXRNZWRpYVNyYyBvcGVyYXRpb25zIHRvIHRoZSBNU0UgcHJpdmF0
ZSBwbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9m
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjp1bm1hcmtF
bmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZv
clNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5oLgorCisyMDE2LTEwLTA0ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxl
b2NhbmhhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MTNmZThlY2JiZTNi
NmVlYWQ2NjZiNGI0YmZiM2YxM2YwNTI1YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKLQotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpICYmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRl
ICJXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFt
ZXI6Om9wZW4oTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSwgV2ViS2l0TWVk
aWFTcmMqIHNyYykKLXsKLSAgICBBU1NFUlQobWVkaWFTb3VyY2UpOwotICAgIG1lZGlhU291cmNl
LT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKG1l
ZGlhU291cmNlLCBzcmMpKSk7Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJj
ZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBXZWJLaXRN
ZWRpYVNyYyogc3JjKQotICAgIDogbV9jbGllbnQoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyKHNyYykpKQotICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKLSAg
ICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi17Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKLX0KLQotTWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJl
YW1lcigpCi17Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpBZGRTdGF0dXMgTWVkaWFTb3Vy
Y2VHU3RyZWFtZXI6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYgc291cmNlQnVmZmVyUHJpdmF0ZSkKLXsK
LSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgqbV9j
bGllbnQsIGNvbnRlbnRUeXBlKTsKLSAgICBzb3VyY2VCdWZmZXJQcml2YXRlID0gc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjsKLSAgICByZXR1cm4gbV9jbGllbnQtPmFkZFNvdXJjZUJ1ZmZl
cihzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCi17Ci0gICAgbV9jbGllbnQt
PmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJhdGlvbigpKTsKLX0KLQotdm9pZCBN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0
YXR1cykKLXsKLSAgICBtX2NsaWVudC0+bWFya0VuZE9mU3RyZWFtKHN0YXR1cyk7Ci19Ci0KLXZv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1NZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsK
LX0KLQotdm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBzdGF0ZSkKLXsKLSAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKLX0KLQot
dm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNlZWtD
b21wbGV0ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjMwYjI5ZmM5OTY4ODdlNWQ0NWFlNjQ4N2RlZTI0NjhmMTIyNmJlMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBPcmFuZ2UKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIu
Y29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgTWVkaWFTb3VyY2VHU3RyZWFtZXJfaAotI2RlZmluZSBNZWRpYVNvdXJjZUdTdHJl
YW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQotI2lu
Y2x1ZGUgIk1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUg
Y2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcj8KLWNsYXNzIE1lZGlhU291cmNlR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqLCBXZWJLaXRNZWRpYVNy
YyopOwotICAgIHZpcnR1YWwgfk1lZGlhU291cmNlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFs
IEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0g
ICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCk7Ci0KLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBsZXRl
ZCgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCosIFdlYktpdE1lZGlhU3JjKik7Ci0KLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bV9tZWRpYVNvdXJjZTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDk1YjYxMDY3MTY0MjAwODZiZWIyNzJkNDQx
MTQ0YWU4ZDk3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYg
VVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpvcGVuKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCYg
bWVkaWFTb3VyY2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYgcGxheWVyUHJpdmF0
ZSkKK3sKKyAgICBtZWRpYVNvdXJjZS5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1l
ZGlhU291cmNlR1N0cmVhbWVyKG1lZGlhU291cmNlLCBwbGF5ZXJQcml2YXRlKSkpOworfQorCitN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIoTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50JiBtZWRpYVNvdXJjZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFJiBw
bGF5ZXJQcml2YXRlKQorICAgIDogTWVkaWFTb3VyY2VQcml2YXRlKCkKKyAgICAsIG1fY2xpZW50
KE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpjcmVhdGUocGxheWVyUHJpdmF0ZSkpCisg
ICAgLCBtX21lZGlhU291cmNlKG1lZGlhU291cmNlKQorICAgICwgbV9wbGF5ZXJQcml2YXRlKHBs
YXllclByaXZhdGUpCit7Cit9CisKK01lZGlhU291cmNlR1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VH
U3RyZWFtZXIoKQoreworICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyUHJpdmF0ZSA6IG1fc291
cmNlQnVmZmVycykKKyAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0ZS0+Y2xlYXJNZWRpYVNvdXJj
ZSgpOworfQorCitNZWRpYVNvdXJjZUdTdHJlYW1lcjo6QWRkU3RhdHVzIE1lZGlhU291cmNlR1N0
cmVhbWVyOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mIHNvdXJjZUJ1ZmZlclByaXZhdGUpCit7CisgICAg
c291cmNlQnVmZmVyUHJpdmF0ZSA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyID0gc3Rh
dGljX2Nhc3Q8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcio+KHNvdXJjZUJ1ZmZlclByaXZh
dGUuZ2V0KCkpOworICAgIG1fc291cmNlQnVmZmVycy5hZGQoc291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcik7CisgICAgcmV0dXJuIG1fY2xpZW50LT5hZGRTb3VyY2VCdWZmZXIoc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lciwgY29udGVudFR5cGUpOworfQorCit2b2lkIE1lZGlhU291cmNl
R1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSogc291cmNl
QnVmZmVyUHJpdmF0ZSkKK3sKKyAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciA9IHN0YXRpY19jYXN0PFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIqPihzb3VyY2VCdWZmZXJQcml2YXRlKTsKKyAgICBBU1NFUlQobV9z
b3VyY2VCdWZmZXJzLmNvbnRhaW5zKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpKTsKKwor
ICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXItPmNsZWFyTWVkaWFTb3VyY2UoKTsKKyAg
ICBtX3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpOwor
ICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5nZXQoKSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCgpCit7CisgICAgbV9jbGllbnQtPmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5k
dXJhdGlvbigpKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3Ry
ZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKK3sKKyAgICBtX2NsaWVudC0+bWFya0VuZE9m
U3RyZWFtKHN0YXR1cyk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0Vu
ZE9mU3RyZWFtKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGxheWVyUHJpdmF0ZS5yZWFkeVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFT
b3VyY2VHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCit7CisgICAgbV9wbGF5ZXJQcml2YXRlLnNldFJlYWR5U3RhdGUoc3RhdGUpOworfQorCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjp3YWl0Rm9yU2Vla0NvbXBsZXRlZCgpCit7CisgICAg
bV9wbGF5ZXJQcml2YXRlLndhaXRGb3JTZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFT
b3VyY2VHU3RyZWFtZXI6OnNlZWtDb21wbGV0ZWQoKQoreworICAgIG1fcGxheWVyUHJpdmF0ZS5z
ZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyKiBzb3VyY2VCdWZmZXJQcml2YXRlLCBib29sIGlzQWN0aXZlKQoreworICAgIGlmICghaXNB
Y3RpdmUpCisgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUoc291cmNlQnVmZmVy
UHJpdmF0ZSk7CisgICAgZWxzZSBpZiAoIW1fYWN0aXZlU291cmNlQnVmZmVycy5jb250YWlucyhz
b3VyY2VCdWZmZXJQcml2YXRlKSkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmFkZChz
b3VyY2VCdWZmZXJQcml2YXRlKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFTb3VyY2VHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkKK3sKKyAgICByZXR1cm4gbV9t
ZWRpYVNvdXJjZS0+YnVmZmVyZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlhMDlmYTA0MzlmZWY4ZWI4ZGI3
NTA1ZmNiYzk3ZTA1MjM3OGVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IElnYWxpYSwgUy5MCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIk1lZGlhU291cmNl
UHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TWVkaWFTcmMgV2ViS2l0TWVkaWFTcmM7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcjsKK2NsYXNzIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOworY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOworY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzOworCisv
LyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgY2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1l
cj8KK2NsYXNzIE1lZGlhU291cmNlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNl
UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZh
dGVDbGllbnQmLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UmKTsKKyAgICB2aXJ0dWFs
IH5NZWRpYVNvdXJjZUdTdHJlYW1lcigpOworCisgICAgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0UmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgQWRkU3RhdHVz
IGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQ
cml2YXRlPiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1
ZmZlclByaXZhdGUqKTsKKworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOworICAg
IHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKworICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOworCisgICAgdm9pZCB3YWl0
Rm9yU2Vla0NvbXBsZXRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla0NvbXBsZXRlZCgpIG92
ZXJyaWRlOworCisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3Rh
dGUoU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciosIGJvb2wpOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQmLCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UmKTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+PiBtX3NvdXJjZUJ1ZmZlcnM7CisgICAgSGFzaFNldDxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyKj4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOworICAgIFJlZjxN
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbV9jbGllbnQ7CisgICAgUmVmPE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudD4gbV9tZWRpYVNvdXJjZTsKKyAgICBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UmIG1fcGxheWVyUHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292893</attachid>
            <date>2016-10-26 01:20:31 -0700</date>
            <delta_ts>2016-10-26 01:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162899-20161026081643.patch</filename>
            <type>text/plain</type>
            <size>18631</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmY1NDMxNGM0NjM2MzRl
ZTNmM2JhNGEzNjJiZTkyZTUxYjYxOGE0Yi4uMGZkOTA3YjhkNjVkNzRkMmI5ZWM2N2FmZmQ0NTI4
NjYxNjU2YjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTI2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBNZWRpYVNvdXJjZUdTdHJlYW1lciByZWZhY3RvcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyODk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgTW92ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lciB0byB0aGUgbXNlIGRpcmVjdG9yeSwgbWFuYWdlIFNvdXJjZUJ1ZmZlclByaXZhdGVz
IGFuZCBkZWxlZ2F0ZSBXZWJLaXRNZWRpYVNyYyBvcGVyYXRpb25zIHRvIHRoZSBNU0UgcHJpdmF0
ZSBwbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9m
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlR1N0cmVhbWVyOjp1bm1hcmtF
bmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVh
ZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZv
clNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNlZWtDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VHU3RyZWFtZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUdTdHJlYW1lcjo6YnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5oLgorCisyMDE2LTEwLTI2ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxl
b2NhbmhhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MTNmZThlY2JiZTNi
NmVlYWQ2NjZiNGI0YmZiM2YxM2YwNTI1YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKLQotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpICYmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRl
ICJXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFt
ZXI6Om9wZW4oTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSwgV2ViS2l0TWVk
aWFTcmMqIHNyYykKLXsKLSAgICBBU1NFUlQobWVkaWFTb3VyY2UpOwotICAgIG1lZGlhU291cmNl
LT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKG1l
ZGlhU291cmNlLCBzcmMpKSk7Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJj
ZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBXZWJLaXRN
ZWRpYVNyYyogc3JjKQotICAgIDogbV9jbGllbnQoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyKHNyYykpKQotICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKLSAg
ICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi17Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKLX0KLQotTWVkaWFTb3VyY2VHU3RyZWFtZXI6On5NZWRpYVNvdXJjZUdTdHJl
YW1lcigpCi17Ci19Ci0KLU1lZGlhU291cmNlR1N0cmVhbWVyOjpBZGRTdGF0dXMgTWVkaWFTb3Vy
Y2VHU3RyZWFtZXI6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYgc291cmNlQnVmZmVyUHJpdmF0ZSkKLXsK
LSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgqbV9j
bGllbnQsIGNvbnRlbnRUeXBlKTsKLSAgICBzb3VyY2VCdWZmZXJQcml2YXRlID0gc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjsKLSAgICByZXR1cm4gbV9jbGllbnQtPmFkZFNvdXJjZUJ1ZmZl
cihzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCi17Ci0gICAgbV9jbGllbnQt
PmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5kdXJhdGlvbigpKTsKLX0KLQotdm9pZCBN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0
YXR1cykKLXsKLSAgICBtX2NsaWVudC0+bWFya0VuZE9mU3RyZWFtKHN0YXR1cyk7Ci19Ci0KLXZv
aWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1NZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdT
dHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsK
LX0KLQotdm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBzdGF0ZSkKLXsKLSAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKLX0KLQot
dm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNlZWtD
b21wbGV0ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjMwYjI5ZmM5OTY4ODdlNWQ0NWFlNjQ4N2RlZTI0NjhmMTIyNmJlMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBPcmFuZ2UKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIu
Y29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgTWVkaWFTb3VyY2VHU3RyZWFtZXJfaAotI2RlZmluZSBNZWRpYVNvdXJjZUdTdHJl
YW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQotI2lu
Y2x1ZGUgIk1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUg
Y2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcj8KLWNsYXNzIE1lZGlhU291cmNlR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqLCBXZWJLaXRNZWRpYVNy
YyopOwotICAgIHZpcnR1YWwgfk1lZGlhU291cmNlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFs
IEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0g
ICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCk7Ci0KLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla0NvbXBsZXRl
ZCgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCosIFdlYktpdE1lZGlhU3JjKik7Ci0KLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bV9tZWRpYVNvdXJjZTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDk1YjYxMDY3MTY0MjAwODZiZWIyNzJkNDQx
MTQ0YWU4ZDk3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChD
KSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYg
VVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpvcGVuKE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCYg
bWVkaWFTb3VyY2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYgcGxheWVyUHJpdmF0
ZSkKK3sKKyAgICBtZWRpYVNvdXJjZS5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFJlZigqbmV3IE1l
ZGlhU291cmNlR1N0cmVhbWVyKG1lZGlhU291cmNlLCBwbGF5ZXJQcml2YXRlKSkpOworfQorCitN
ZWRpYVNvdXJjZUdTdHJlYW1lcjo6TWVkaWFTb3VyY2VHU3RyZWFtZXIoTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50JiBtZWRpYVNvdXJjZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFJiBw
bGF5ZXJQcml2YXRlKQorICAgIDogTWVkaWFTb3VyY2VQcml2YXRlKCkKKyAgICAsIG1fY2xpZW50
KE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpjcmVhdGUocGxheWVyUHJpdmF0ZSkpCisg
ICAgLCBtX21lZGlhU291cmNlKG1lZGlhU291cmNlKQorICAgICwgbV9wbGF5ZXJQcml2YXRlKHBs
YXllclByaXZhdGUpCit7Cit9CisKK01lZGlhU291cmNlR1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VH
U3RyZWFtZXIoKQoreworICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyUHJpdmF0ZSA6IG1fc291
cmNlQnVmZmVycykKKyAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0ZS0+Y2xlYXJNZWRpYVNvdXJj
ZSgpOworfQorCitNZWRpYVNvdXJjZUdTdHJlYW1lcjo6QWRkU3RhdHVzIE1lZGlhU291cmNlR1N0
cmVhbWVyOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mIHNvdXJjZUJ1ZmZlclByaXZhdGUpCit7CisgICAg
c291cmNlQnVmZmVyUHJpdmF0ZSA9IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyID0gc3Rh
dGljX2Nhc3Q8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcio+KHNvdXJjZUJ1ZmZlclByaXZh
dGUuZ2V0KCkpOworICAgIG1fc291cmNlQnVmZmVycy5hZGQoc291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcik7CisgICAgcmV0dXJuIG1fY2xpZW50LT5hZGRTb3VyY2VCdWZmZXIoc291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lciwgY29udGVudFR5cGUpOworfQorCit2b2lkIE1lZGlhU291cmNl
R1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSogc291cmNl
QnVmZmVyUHJpdmF0ZSkKK3sKKyAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciA9IHN0YXRpY19jYXN0PFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIqPihzb3VyY2VCdWZmZXJQcml2YXRlKTsKKyAgICBBU1NFUlQobV9z
b3VyY2VCdWZmZXJzLmNvbnRhaW5zKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpKTsKKwor
ICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXItPmNsZWFyTWVkaWFTb3VyY2UoKTsKKyAg
ICBtX3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIpOwor
ICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5nZXQoKSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OmR1cmF0aW9uQ2hh
bmdlZCgpCit7CisgICAgbV9jbGllbnQtPmR1cmF0aW9uQ2hhbmdlZChtX21lZGlhU291cmNlLT5k
dXJhdGlvbigpKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6bWFya0VuZE9mU3Ry
ZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKK3sKKyAgICBtX2NsaWVudC0+bWFya0VuZE9m
U3RyZWFtKHN0YXR1cyk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnVubWFya0Vu
ZE9mU3RyZWFtKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGxheWVyUHJpdmF0ZS5yZWFkeVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFT
b3VyY2VHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCit7CisgICAgbV9wbGF5ZXJQcml2YXRlLnNldFJlYWR5U3RhdGUoc3RhdGUpOworfQorCit2
b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjp3YWl0Rm9yU2Vla0NvbXBsZXRlZCgpCit7CisgICAg
bV9wbGF5ZXJQcml2YXRlLndhaXRGb3JTZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFT
b3VyY2VHU3RyZWFtZXI6OnNlZWtDb21wbGV0ZWQoKQoreworICAgIG1fcGxheWVyUHJpdmF0ZS5z
ZWVrQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VHU3RyZWFtZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyKiBzb3VyY2VCdWZmZXJQcml2YXRlLCBib29sIGlzQWN0aXZlKQoreworICAgIGlmICghaXNB
Y3RpdmUpCisgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUoc291cmNlQnVmZmVy
UHJpdmF0ZSk7CisgICAgZWxzZSBpZiAoIW1fYWN0aXZlU291cmNlQnVmZmVycy5jb250YWlucyhz
b3VyY2VCdWZmZXJQcml2YXRlKSkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmFkZChz
b3VyY2VCdWZmZXJQcml2YXRlKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFTb3VyY2VHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkKK3sKKyAgICByZXR1cm4gbV9t
ZWRpYVNvdXJjZS0+YnVmZmVyZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlhMDlmYTA0MzlmZWY4ZWI4ZGI3
NTA1ZmNiYzk3ZTA1MjM3OGVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuaApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IElnYWxpYSwgUy5MCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIk1lZGlhU291cmNl
UHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TWVkaWFTcmMgV2ViS2l0TWVkaWFTcmM7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcjsKK2NsYXNzIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOworY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOworY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzOworCisv
LyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgY2FsbGVkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1l
cj8KK2NsYXNzIE1lZGlhU291cmNlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNl
UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgb3BlbihNZWRpYVNvdXJjZVByaXZh
dGVDbGllbnQmLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UmKTsKKyAgICB2aXJ0dWFs
IH5NZWRpYVNvdXJjZUdTdHJlYW1lcigpOworCisgICAgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0UmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgQWRkU3RhdHVz
IGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQ
cml2YXRlPiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1
ZmZlclByaXZhdGUqKTsKKworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOworICAg
IHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKworICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOworCisgICAgdm9pZCB3YWl0
Rm9yU2Vla0NvbXBsZXRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla0NvbXBsZXRlZCgpIG92
ZXJyaWRlOworCisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3Rh
dGUoU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciosIGJvb2wpOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQmLCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UmKTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+PiBtX3NvdXJjZUJ1ZmZlcnM7CisgICAgSGFzaFNldDxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyKj4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOworICAgIFJlZjxN
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbV9jbGllbnQ7CisgICAgUmVmPE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudD4gbV9tZWRpYVNvdXJjZTsKKyAgICBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UmIG1fcGxheWVyUHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>