<?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>162060</bug_id>
          
          <creation_ts>2016-09-16 07:10:56 -0700</creation_ts>
          <short_desc>Refactor CachedResourceClient::notifyFinished</short_desc>
          <delta_ts>2016-10-07 00:04:38 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1230390</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-16 07:10:56 -0700</bug_when>
    <thetext>CachedResourceClient::notifyFinished takes a CachedResource*.
It should at least take a CachedResource&amp; and maybe no CachedResource at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230391</commentid>
    <comment_count>1</comment_count>
      <attachid>289060</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-16 07:15:44 -0700</bug_when>
    <thetext>Created attachment 289060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230392</commentid>
    <comment_count>2</comment_count>
      <attachid>289060</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-16 07:29:09 -0700</bug_when>
    <thetext>Comment on attachment 289060
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        On notifyFinished call, a RenderImage would only call contentChanged if the passed resource is the same as expected.

This change may actually affect some tests, such as css3/shapes/shape-outside/shape-image/shape-image-000.html.
This needs further investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233845</commentid>
    <comment_count>3</comment_count>
      <attachid>289940</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-27 07:00:34 -0700</bug_when>
    <thetext>Created attachment 289940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233857</commentid>
    <comment_count>4</comment_count>
      <attachid>289943</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-27 08:16:04 -0700</bug_when>
    <thetext>Created attachment 289943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234388</commentid>
    <comment_count>5</comment_count>
      <attachid>289943</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-28 08:43:43 -0700</bug_when>
    <thetext>Comment on attachment 289943
Patch

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

Some of these could probably even be const CachedResource&amp;

&gt; Source/WebCore/loader/ContentFilter.cpp:173
&gt; -    if (resource-&gt;errorOccurred())
&gt; +    if (m_mainResource-&gt;errorOccurred())

I think a better change would be to use resource. instead of m_mainResource-&gt; in this function.

&gt; Source/WebCore/loader/DocumentLoader.cpp:-941
&gt; -    ASSERT_UNUSED(resource, resource == m_mainResource);

I think having these assertions is worth passing an unused reference around.

&gt; Source/WebCore/loader/ImageLoader.cpp:285
&gt; -    if (resource-&gt;resourceError().isAccessControl()) {
&gt; +    if (m_image-&gt;resourceError().isAccessControl()) {

resource. instead of m_image-&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234399</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-28 09:05:40 -0700</bug_when>
    <thetext>&gt; I think having these assertions is worth passing an unused reference around.

I was contemplating removing the parameters for some if not all these functions actually. notifyFinished is the only one that is using the resource parameter.
And the use is related to optimization AIUI.

I am not sure how much we have caught/may catch errors using those asserts.
If this is important maybe we should have CachedResource make a security-check call before calling these functions.
Something like ASSERT(m_client-&gt;isClientOf(*this)); in CachedResource methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237081</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-06 09:04:50 -0700</bug_when>
    <thetext>Ping review?

(In reply to comment #6)
&gt; &gt; I think having these assertions is worth passing an unused reference around.
&gt; 
&gt; I am not sure how much we have caught/may catch errors using those asserts.
&gt; If this is important maybe we should have CachedResource make a
&gt; security-check call before calling these functions.
&gt; Something like ASSERT(m_client-&gt;isClientOf(*this)); in CachedResource
&gt; methods.

I can work on that approach as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237436</commentid>
    <comment_count>8</comment_count>
      <attachid>289943</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-06 20:13:35 -0700</bug_when>
    <thetext>Comment on attachment 289943
Patch

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

&gt;&gt; Source/WebCore/loader/ContentFilter.cpp:173
&gt;&gt; +    if (m_mainResource-&gt;errorOccurred())
&gt; 
&gt; I think a better change would be to use resource. instead of m_mainResource-&gt; in this function.

Given that the comment on this patch says that might want to refactor to not pass resource, I think this makes sense and is consistent with that plan.

&gt;&gt; Source/WebCore/loader/DocumentLoader.cpp:-941
&gt;&gt; -    ASSERT_UNUSED(resource, resource == m_mainResource);
&gt; 
&gt; I think having these assertions is worth passing an unused reference around.

I am not sure I agree. Has this assertion ever helped us?

&gt;&gt; Source/WebCore/loader/ImageLoader.cpp:285
&gt;&gt; +    if (m_image-&gt;resourceError().isAccessControl()) {
&gt; 
&gt; resource. instead of m_image-&gt;

Same basic issue again. Did the two of you ever talk this through?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237501</commentid>
    <comment_count>9</comment_count>
      <attachid>290901</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-06 23:30:31 -0700</bug_when>
    <thetext>Created attachment 290901
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237502</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-06 23:31:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created attachment 290901 [details]
&gt; Patch for landing

I&apos;ll land the patch as is.
Let&apos;s further discuss the next steps on this area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237510</commentid>
    <comment_count>11</comment_count>
      <attachid>290901</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-07 00:04:34 -0700</bug_when>
    <thetext>Comment on attachment 290901
Patch for landing

Clearing flags on attachment: 290901

Committed r206903: &lt;http://trac.webkit.org/changeset/206903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237511</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-07 00:04:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289060</attachid>
            <date>2016-09-16 07:15:44 -0700</date>
            <delta_ts>2016-09-27 07:00:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162060-20160916161303.patch</filename>
            <type>text/plain</type>
            <size>38256</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlOTY1ZjEzZWI4ZTBh
ZmQxZWFhZGRlNDY0M2ExZWU2OTQ4YjdlNy4uYzE2N2MyYTZlMjczMDAzY2EyY2QyYzc1N2Q4NzUy
ODJjNmFiZDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4IEBACiAyMDE2LTA5LTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBSZWZhY3RvciBDYWNoZWRS
ZXNvdXJjZUNsaWVudDo6bm90aWZ5RmluaXNoZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIHZpc2libGUgY2hhbmdlIG9mIGJlaGF2aW9yLgorCisg
ICAgICAgIFJlbW92aW5nIHRoZSBDYWNoZWRSZXNvdXJjZSogcGFyYW1ldGVyIHBhc3NlZCB0byBu
b3RpZnlGaW5pc2hlZC4KKyAgICAgICAgVGhpcyBwYXJhbWV0ZXIgd2FzIG1vc3RseSB1c2VkIHRv
IGVuc3VyZSB0aGF0IGEgY2xpZW50IHJlY2VpdmVzIGEgbm90aWZ5RmluaXNoZWQgZnJvbSB0aGUg
cmlnaHQgcmVzb3VyY2UuCisgICAgICAgIFRoZSBvbmx5IHBsYWNlIHdoZXJlIGl0IGlzIGFjdHVh
bGx5IHVzZWQgaXMgaW4gUmVuZGVySW1hZ2UuCisgICAgICAgIE9uIG5vdGlmeUZpbmlzaGVkIGNh
bGwsIGEgUmVuZGVySW1hZ2Ugd291bGQgb25seSBjYWxsIGNvbnRlbnRDaGFuZ2VkIGlmIHRoZSBw
YXNzZWQgcmVzb3VyY2UgaXMgdGhlIHNhbWUgYXMgZXhwZWN0ZWQuCisKKyAgICAgICAgKiBkb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xh
c3NpY1NjcmlwdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9JbWFn
ZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvTGlu
a0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIv
TWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUNsaWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25Mb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmg6CisKKzIwMTYtMDktMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCiAgICAgICAgIENhY2hlZFJlc291cmNlIHNob3VsZCBlZmZpY2llbnRs
eSBjb25zdHJ1Y3QgaXRzIFJlc291cmNlUmVxdWVzdAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjA5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXggMTFmMTIwNTg3NzUyNzI1ZmNlODk1MzM2MGVm
ZDQ2OWYwZDljNzEyOS4uZTExZjExMTlkNzBiMjY2ZjBiZTMxZWI2NjliYzdlOTVlNWIxYjhlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gTG9hZGFibGVDbGFzc2ljU2Ny
aXB0OjpjcmVhdGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2EKIHsKICAgICBBU1NFUlQoY2FjaGVk
U2NyaXB0KTsKICAgICBhdXRvIHNjcmlwdCA9IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVDbGFzc2lj
U2NyaXB0KFdURk1vdmUoY2FjaGVkU2NyaXB0KSkpOwotICAgIGNhY2hlZFNjcmlwdC0+YWRkQ2xp
ZW50KHNjcmlwdC5wdHIoKSk7CisgICAgc2NyaXB0LT5tX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50
KHNjcmlwdC5wdHIoKSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApAQCAtNjcsMTAgKzY3LDkg
QEAgYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Ondhc0NhbmNlbGVkKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVD
bGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2
b2lkIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoKQogewotICAgIEFTU0VS
VChyZXNvdXJjZSk7Ci0gICAgaWYgKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3ND
b250cm9sKCkpIHsKKyAgICBpZiAobV9jYWNoZWRTY3JpcHQtPnJlc291cmNlRXJyb3IoKS5pc0Fj
Y2Vzc0NvbnRyb2woKSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBj
b25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiBzY3JpcHQgbG9hZCBkZW5p
ZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICAgICAg
bV9lcnJvciA9IEVycm9yIHsKICAgICAgICAgICAgIEVycm9yVHlwZTo6Q3Jvc3NPcmlnaW5Mb2Fk
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCmluZGV4IGFmZGYx
NTI2ZGFjMTk3NzUwMzE0NjNmOTBmZDVmYzFlZWE0N2I1NjYuLmY2NjcwYTk5ZGM1OWQzZGFiYzYy
MmI4ODBjZmVhNmM0ZDY0NjE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFz
c2ljU2NyaXB0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNh
Y2hlZFNjcmlwdCkgOiBtX2NhY2hlZFNjcmlwdChXVEZNb3ZlKGNhY2hlZFNjcmlwdCkpIHsgfQog
Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiAgICAgT3B0aW9uYWw8RXJyb3I+IG1fZXJy
b3IgeyBOdWxsb3B0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKaW5k
ZXggM2U1ZjgxYzUyZjYzMzI3OGYzYTY0ZmY3OWQyMDZiY2ZmN2E3M2ZiMy4uMTQ5ODM1OTA0MmJl
NGE1MmI1ZTk2OGVjYzY2OTMwNDIzZDA1YWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmNwcApAQCAtNzMsMTIgKzczLDEyIEBAIFN0cmluZyBIVE1MSW1hZ2VMb2FkZXI6
OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHIpIGNvbnN0CiAgICAgcmV0dXJuIHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyKTsKIH0KIAotdm9pZCBIVE1MSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKK3ZvaWQgSFRNTEltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7CiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdl
ID0gaW1hZ2UoKTsKIAogICAgIFJlZjxFbGVtZW50PiBwcm90ZWN0KGVsZW1lbnQoKSk7Ci0gICAg
SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKGNhY2hlZEltYWdlKTsKKyAgICBJbWFnZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoKTsKIAogICAgIGJvb2wgbG9hZEVycm9yID0gY2FjaGVkSW1hZ2Ut
PmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpID49IDQwMDsKICAgICBpZiAoIWxvYWRFcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmgKaW5kZXggOTAwYzM0YjNmN2M2MjJhYWE0YWJkMzU3NTQwMjYwMTZlYmVjYTc3
YS4uOGI3NTIwOTM5MTE0ODBhM2ZmYzJkOWM3NTM4OTU4OGVhNDZlZjZjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNvdXJjZVVSSShj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KCkgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDllOGNmNjEwOTI0YjA5MjllMTUyMGI2
NDk0YzE5NTRhMThlMzNjM2UuLjM0NmM0MDgyMDU1MzAwZjNhNDZmODA2YTg5N2EzMzEyNDNkOWVl
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwCkBAIC04Niw5ICs4Niw4IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxv
CiAgICAgbG9hZGVyLnByZWZsaWdodFN1Y2Nlc3MoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKLXZv
aWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCit2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5
RmluaXNoZWQoKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1f
cmVzb3VyY2UpOwogICAgIGlmIChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7
CiAgICAgICAgIFJlc291cmNlRXJyb3IgcHJlZmxpZ2h0RXJyb3IgPSBtX3Jlc291cmNlLT5yZXNv
dXJjZUVycm9yKCk7CiAgICAgICAgIHByZWZsaWdodEVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMDIyNDUxZjc4ZDQxYzNkYmFkOTgw
NTZmZDQ0YTEwNzlhYmQ1MGFlYS4uN2ZkOTFiNWFlYjY1M2E1YWExNmU2M2M5ZmQ5ZGU1ZDIwZDk4
MWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWZl
cnNMb2FkaW5nKGJvb2wpOwogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAK
ICAgICBzdGF0aWMgdm9pZCBoYW5kbGVMb2FkaW5nRmFpbHVyZShEb2N1bWVudFRocmVhZGFibGVM
b2FkZXImLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGlj
IHZvaWQgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVMb2FkZXIm
LCBSZXNvdXJjZVJlcXVlc3QmJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNWM4MGE2
YWIyMjU3MzUyOGJjZjk2MjQyMGMwMDA5NTk1MmIzMmY1Ni4uZTU3MmE2ODUxMjhjMmIyMGExOWIw
ZjVhYTJiZmEzYTkwM2ZhMWJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC0zNzEsMTQgKzM3MSwxMyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmcoKSBjb25zdAogICAgIHJldHVybiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAhbV9zdWJy
ZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpIHx8ICFtX3BsdWdJblN0cmVhbUxvYWRlcnMuaXNFbXB0
eSgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCit2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291cmNl
KSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVl
QWZ0ZXJOb3RpZnlGaW5pc2hlZChtX21haW5SZXNvdXJjZS5nZXQoKSkpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogCi0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9tYWluUmVzb3VyY2Ug
PT0gcmVzb3VyY2UpOwogICAgIEFTU0VSVChtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKCFtX21h
aW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmICFtX21haW5SZXNvdXJjZS0+d2FzQ2FuY2Vs
ZWQoKSkgewogICAgICAgICBmaW5pc2hlZExvYWRpbmcobV9tYWluUmVzb3VyY2UtPmxvYWRGaW5p
c2hUaW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA3MDk1
NDQ3YjAwYzNmNDQzNTJlZjYzZWExYzYxYzc2Njc5N2VkMDg4Li41ODBkMDY4YmZmNzc0MGE5OTE1
ZDUwNjIzNjg4ODJhMDFiYjRjMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaApAQCAtMzE3LDcgKzMxNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRW1wdHko
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCBhNDhiYzc4MmQxZmI4ZjY3MWI5MzA1MTUzNzA0Y2FiOTEzN2NmZDA5Li44
MGRmZGUxZWM4MmYyNGQ0NjNhNTM3YjllOWNhM2M0YTk1OWY0YTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzA2LDEw
ICszMDYsOSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
dW5zaWduZWQgbG9uZywgY29uc3QgY2hhciogZGF0YSwgaQogICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7CiAgICAgQVNTRVJUKG1f
Y2xpZW50KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIGRp
ZEZhaWwobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9y
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCmluZGV4IDc4OGY1MmMyYTkxM2IyNTRjMjVhODRjNDI5NDgyMDU0ZmNiMTQyYjcuLjFhMmM3
ZmZkODQ4ZWE1YmM5YWEzM2Y1Y2Y1YmUwMmQ1NmFjNmQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTgwLDcgKzgwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRh
dGFMZW5ndGgpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCiAgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nKTsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmlu
ZGV4IGMxYWMzYmU0MjY1MWZiMGZlYmYxYWMyZDIwZDNmNzY3NDZmYzgyMzEuLmNhMTM4MGQ2MTlk
ZjZmNTMyMjU4ZDZjZTYxM2M3ZDc2MTg1MGRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAsOSBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVG
cm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpCiAgICAgdXBkYXRlRnJvbUVsZW1lbnQo
KTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlKQordm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewogICAgIEFT
U0VSVChtX2ZhaWxlZExvYWRVUkwuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQocmVzb3VyY2UgPT0g
bV9pbWFnZS5nZXQoKSk7CiAKICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVlOwogICAgIGlmICgh
aGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpKQpAQCAtMjgyLDcgKzI4MSw3IEBAIHZvaWQgSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBp
ZiAoIW1faGFzUGVuZGluZ0xvYWRFdmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJl
c291cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3NDb250cm9sKCkpIHsKKyAgICBpZiAobV9p
bWFnZS0+cmVzb3VyY2VFcnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIGNsZWFy
SW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KCk7CiAKICAgICAgICAgbV9o
YXNQZW5kaW5nRXJyb3JFdmVudCA9IHRydWU7CkBAIC0yOTksNyArMjk4LDcgQEAgdm9pZCBJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlc291cmNlLT53YXNDYW5jZWxlZCgpKSB7Cisg
ICAgaWYgKG1faW1hZ2UtPndhc0NhbmNlbGVkKCkpIHsKICAgICAgICAgbV9oYXNQZW5kaW5nTG9h
ZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHBy
b3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0ZWx5IGJlZm9yZSByZXR1
cm5pbmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRvaW5nIHNvIG1pZ2h0IHJl
c3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggNTY2MDViODFlYThmOWQ1ODc3YTM5Y2ZhMWUyYjBjZmE2
YzRkYWY5Zi4uNjYyYzQ0YzYzM2VmNTM3YmE4MGU5NjQxMmZiOTAxZmViZDU0YTIzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW1hZ2VMb2FkZXIoRWxlbWVudCYpOwotICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2
ZW50KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDJkYWM5MmE1
NzYwMTMyM2EyMThhMDgwYzNhZThiNjZjYTU3ODQ0MTMuLjI1Nzc5YzViOGE4ZGI4MzYyMWJhNWY1
ZmI3ZDRhNDQzYWU5ZDUyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAg
LTczLDEwICs3Myw4IEBAIHZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIG1fY2xpZW50LmxpbmtMb2FkZWQoKTsKIH0K
IAotdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCit2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCBtX2NhY2hlZExpbmtSZXNvdXJjZS5nZXQoKSA9PSByZXNvdXJjZSk7Ci0K
ICAgICB0cmlnZ2VyRXZlbnRzKG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgpKTsKIAogICAgIG1f
Y2FjaGVkTGlua1Jlc291cmNlLT5yZW1vdmVDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuaAppbmRleCBmZTcwZDFlNTExM2RiNGRjZDM1ZjI3ZmZhNzAwYTcyMDM2OTAwMzhi
Li45OTRkYmFmNjE2ZGE0ZTdlZDAxZjM5ZjFkNDYyNDk2MmU2OWVlMjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTGlua1ByZWxvYWRSZXNv
dXJjZUNsaWVudDsKIAogc3RydWN0IExpbmtSZWxBdHRyaWJ1dGU7CiAKLWNsYXNzIExpbmtMb2Fk
ZXIgOiBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50IHsKK2NsYXNzIExpbmtMb2FkZXIgZmlu
YWwgOiBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBMaW5rTG9hZGVyKExpbmtMb2FkZXJDbGllbnQmKTsKICAgICB2aXJ0dWFsIH5MaW5rTG9hZGVy
KCk7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRyaWdnZXJFdmVudHMoY29u
c3QgQ2FjaGVkUmVzb3VyY2UqKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZp
bmFsOwogICAgIHZvaWQgcHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBj
b25zdCBVUkwmIGhyZWYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5n
JiBjcm9zc09yaWdpbk1vZGUpOwogCiAgICAgTGlua0xvYWRlckNsaWVudCYgbV9jbGllbnQ7CkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2Fk
UmVzb3VyY2VDbGllbnQ+IG1fcHJlbG9hZFJlc291cmNlQ2xpZW50OwogICAgIFdlYWtQdHJGYWN0
b3J5PExpbmtMb2FkZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwotICAgIAorCiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VD
bGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dHMuaAppbmRleCA5MjczZDY5YmRmYWY1Y2I5NDI0YzZjZGNmMDVkN2VlMWIwZWVmNjFhLi44ZDlh
NmFjMjBlNGYwMzg2OGNhMzRmYzJkZmYwZTY2NDQ3ZjRhNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaApAQCAtNzMsNyArNzMs
NyBAQCBwcml2YXRlOgogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBt
X3Jlc291cmNlOwogfTsKIAotY2xhc3MgTGlua1ByZWxvYWRTY3JpcHRSZXNvdXJjZUNsaWVudDog
cHVibGljIExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQsIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
K2NsYXNzIExpbmtQcmVsb2FkU2NyaXB0UmVzb3VyY2VDbGllbnQgZmluYWwgOiBwdWJsaWMgTGlu
a1ByZWxvYWRSZXNvdXJjZUNsaWVudCwgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRTY3JpcHRSZXNvdXJjZUNsaWVu
dD4gY3JlYXRlKExpbmtMb2FkZXImIGxvYWRlciwgQ2FjaGVkU2NyaXB0JiByZXNvdXJjZSkKICAg
ICB7CkBAIC04MywxMyArODMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxpbmtQcmVsb2Fk
U2NyaXB0UmVzb3VyY2VDbGllbnQoKSB7IH0KIAogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIG92ZXJyaWRlCisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZCgpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQob3duZWRSZXNvdXJjZSgpID09IHJlc291
cmNlKTsKLSAgICAgICAgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7CisgICAgICAgIHRyaWdnZXJF
dmVudHMob3duZWRSZXNvdXJjZSgpKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFyKCkgb3ZlcnJp
ZGUgeyBjbGVhclJlc291cmNlKHRoaXMpOyB9CisgICAgdm9pZCBjbGVhcigpIGZpbmFsIHsgY2xl
YXJSZXNvdXJjZSh0aGlzKTsgfQogCiBwcml2YXRlOgogICAgIExpbmtQcmVsb2FkU2NyaXB0UmVz
b3VyY2VDbGllbnQoTGlua0xvYWRlciYgbG9hZGVyLCBDYWNoZWRTY3JpcHQmIHJlc291cmNlKQpA
QCAtMTI0LDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotY2xhc3MgTGlua1ByZWxv
YWRJbWFnZVJlc291cmNlQ2xpZW50OiBwdWJsaWMgTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCwg
cHVibGljIENhY2hlZEltYWdlQ2xpZW50IHsKK2NsYXNzIExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJj
ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50LCBwdWJsaWMg
Q2FjaGVkSW1hZ2VDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50PiBjcmVhdGUoTGlua0xvYWRlciYgbG9hZGVy
LCBDYWNoZWRJbWFnZSYgcmVzb3VyY2UpCiAgICAgewpAQCAtMTMzLDEzICsxMzIsMTIgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50KCkgeyB9
CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgb3Zl
cnJpZGUKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWwKICAgICB7Ci0gICAgICAgIEFT
U0VSVChvd25lZFJlc291cmNlKCkgPT0gcmVzb3VyY2UpOwotICAgICAgICB0cmlnZ2VyRXZlbnRz
KHJlc291cmNlKTsKKyAgICAgICAgdHJpZ2dlckV2ZW50cyhvd25lZFJlc291cmNlKCkpOwogICAg
IH0KIAotICAgIHZvaWQgY2xlYXIoKSBvdmVycmlkZSB7IGNsZWFyUmVzb3VyY2UodGhpcyk7IH0K
KyAgICB2b2lkIGNsZWFyKCkgZmluYWwgeyBjbGVhclJlc291cmNlKHRoaXMpOyB9CiAKIHByaXZh
dGU6CiAgICAgTGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50KExpbmtMb2FkZXImIGxvYWRl
ciwgQ2FjaGVkSW1hZ2UmIHJlc291cmNlKQpAQCAtMTc0LDcgKzE3Miw3IEBAIHByaXZhdGU6CiAg
ICAgfQogfTsKIAotY2xhc3MgTGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVudDogcHVibGljIExp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7
CitjbGFzcyBMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50IGZpbmFsIDogcHVibGljIExpbmtQ
cmVsb2FkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJhd1Jlc291cmNl
Q2xpZW50PiBjcmVhdGUoTGlua0xvYWRlciYgbG9hZGVyLCBDYWNoZWRSYXdSZXNvdXJjZSYgcmVz
b3VyY2UpCiAgICAgewpAQCAtMTgzLDEzICsxODEsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+TGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVudCgpIHsgfQogCi0gICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIG92ZXJyaWRlCisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZCgpIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQob3duZWRSZXNvdXJjZSgp
ID09IHJlc291cmNlKTsKLSAgICAgICAgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7CisgICAgICAg
IHRyaWdnZXJFdmVudHMob3duZWRSZXNvdXJjZSgpKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFy
KCkgb3ZlcnJpZGUgeyBjbGVhclJlc291cmNlKHRoaXMpOyB9CisgICAgdm9pZCBjbGVhcigpIGZp
bmFsIHsgY2xlYXJSZXNvdXJjZSh0aGlzKTsgfQogCiBwcml2YXRlOgogICAgIExpbmtQcmVsb2Fk
UmF3UmVzb3VyY2VDbGllbnQoTGlua0xvYWRlciYgbG9hZGVyLCBDYWNoZWRSYXdSZXNvdXJjZSYg
cmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggOWM3MjY1OGEyOWM4ZGE3MDE5NTVkZWZlODliYjk0MGI4Y2FkMmU0Yi4uMzA3N2Uz
NDZkZGNjMTcyNzM0YWQ1ZDA5OTQzNzI1M2E0MGNkMzc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTg5LDE0ICsxODksMTIgQEAgdm9p
ZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQKICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhp
cywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZWRpYVJlc291cmNlOjpub3Rp
ZnlGaW5pc2hlZCgpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOwotCiAg
ICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1f
Y2xpZW50KSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkK
LSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCByZXNvdXJjZS0+cmVzb3Vy
Y2VFcnJvcigpKTsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgbV9yZXNvdXJjZS0+
cmVzb3VyY2VFcnJvcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9jbGllbnQtPmxv
YWRGaW5pc2hlZCgqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmgKaW5kZXggZDI3ZGNmNTEwMmYwYTYyM2FkZDJjZjk0MWM4NTJkZTZjMTMx
Y2Q2Yi4uMDFhNzc5MTNlOWEzNDgyNDA4MTJkODNjZTExZDViNDZkMjAyZjJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC03Niw3ICs3Niw3IEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNo
ZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIq
LCBpbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgb3ZlcnJpZGU7CiAjaWYgVVNF
KFNPVVApCiAgICAgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwg
c2l6ZV90IC8qcmVxdWVzdGVkU2l6ZSovLCBzaXplX3QmIC8qYWN0dWFsU2l6ZSovKSBvdmVycmlk
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRl
eCBlZWIyMDlkN2VkNzFhNDg3NDUzZDFkYzhlZTgyMGVkYTBiZTAyOGI0Li5jODdlNGE4OTI0MDQx
ZGE4OWNkYTFiMjdlYWQzOTkwMjZlYmFhMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcApAQCAtMTIwLDE5ICsxMjAsMTcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OmNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCkKICAgICBtX3N0YXRlID0gRmFpbGVkOwogfQog
Ci12b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBB
U1NFUlQobV9yZXNvdXJjZSA9PSByZXNvdXJjZSk7Ci0KLSAgICBpZiAocmVzb3VyY2UtPnJlc291
cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRyb2woKSkKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VFcnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKQogICAgICAgICBjb3JzUG9saWN5UHJldmVudGVk
TG9hZCgpOwogCiAgICAgaWYgKG1fc3RhdGUgIT0gRmFpbGVkKSB7Ci0gICAgICAgIHByb2Nlc3NO
ZXdDdWVEYXRhKHJlc291cmNlKTsKKyAgICAgICAgcHJvY2Vzc05ld0N1ZURhdGEobV9yZXNvdXJj
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChtX2N1ZVBhcnNlcikKICAgICAgICAgICAgIG1fY3VlUGFy
c2VyLT5maWxlRmluaXNoZWQoKTsKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gRmFpbGVkKQotICAg
ICAgICAgICAgbV9zdGF0ZSA9IHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBGYWlsZWQgOiBG
aW5pc2hlZDsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBtX3Jlc291cmNlLT5lcnJvck9jY3VycmVk
KCkgPyBGYWlsZWQgOiBGaW5pc2hlZDsKICAgICB9CiAKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5p
c2hlZCAmJiBtX2N1ZVBhcnNlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
aAppbmRleCAxMjNmMTQ4ODg2YTFmYmNlMmNiOTZmNzNkMjk1ZjM1ZGMwZGJjYTI2Li5iN2I5OGMw
MWM4YTdkMjk1Yjk3Mjc2ZWY3NTVmYTNiMmE5YmE2YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5oCkBAIC02NCwyMCArNjQsMjAgQEAgcHVibGljOgogcHJpdmF0ZToK
IAogICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5h
bDsKICAgICB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqKSBvdmVycmlkZTsKLSAgICAKKwogICAgIC8vIFdlYlZUVFBhcnNlckNsaWVudAogICAg
IHZvaWQgbmV3Q3Vlc1BhcnNlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgbmV3UmVnaW9uc1BhcnNl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlsZUZhaWxlZFRvUGFyc2UoKSBvdmVycmlkZTsKLSAg
ICAKKwogICAgIHZvaWQgcHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2
b2lkIGN1ZUxvYWRUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBjb3JzUG9saWN5UHJldmVudGVkTG9h
ZCgpOwogCiAgICAgZW51bSBTdGF0ZSB7IElkbGUsIExvYWRpbmcsIEZpbmlzaGVkLCBGYWlsZWQg
fTsKLSAgICAKKwogICAgIFRleHRUcmFja0xvYWRlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlZUVFBhcnNlcj4gbV9jdWVQYXJzZXI7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPiBtX3Jlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggMzczZmRlNWQyZGNlYmZkOWJk
MTc0NGJiYWY5ODk5NmIyNWFmMmRiMi4uYTBkMjliNDk5OTQ5YWNhM2M4Y2JlYzkzNTgyOWQxNzFh
NWJkM2MyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3Rp
ZnkoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGll
bnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCog
Y2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKLSAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCh0
aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgpOwogfQogCiB2b2lkIENhY2hl
ZFJlc291cmNlOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCkBAIC01NTAsNyArNTUwLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
KiBjbGllbnQpCiAgICAgaWYgKG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2sucmVtb3ZlKGNsaWVu
dCkpCiAgICAgICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKICAgICBpZiAoIWlzTG9hZGluZygp
ICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKHRo
aXMpOworICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCk7CiB9CiAKIGJvb2wgQ2FjaGVk
UmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5o
CmluZGV4IDBiNDU0M2Q1YTU5NzllY2M0MmY2ZDI2NGI0NDJlNzQ5MzEzYTVjOWQuLjQyZmVhY2Jl
YWRhYWJkOGViZjg0NzcyZmJkZDkwNjE2YWU1MThlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1hNTEh0dHBSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCBjMjQz
ZjQyYWM5YTU4ZjZkZjU4MGYyZjhkOGQzYWRjZjMwOTVhMjEzLi5hY2Y3ODE5YjVlODA0YzhmNGJh
NzgwM2Q0Zjg3YWMxNjNjNDM4NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmNwcApAQCAtNzksMzAgKzc5LDI4IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRp
bmcoKQogICAgIH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsK
LSAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0KICAgICAvLyBJZiB3ZSBnb3Qg
YSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVzcG9uc2UsIHRoZW4gbGV0cwog
ICAgIC8vIGlnbm9yZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBkZWNvZGUgdGhlIGVycm9yIHBh
Z2UgYXMgYW4gaWNvbi4KLSAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCk7Ci0gICAgaW50IHN0YXR1cyA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2Rl
KCk7CisgICAgYXV0byogZGF0YSA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAg
aW50IHN0YXR1cyA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKICAg
ICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkKICAgICAgICAg
ZGF0YSA9IG51bGxwdHI7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciBwZGZNYWdpY051bWJlcltd
ID0gIiVQREYiOwogICAgIHN0YXRpYyB1bnNpZ25lZCBwZGZNYWdpY051bWJlckxlbmd0aCA9IHNp
emVvZihwZGZNYWdpY051bWJlcikgLSAxOwogICAgIGlmIChkYXRhICYmIGRhdGEtPnNpemUoKSA+
PSBwZGZNYWdpY051bWJlckxlbmd0aCAmJiAhbWVtY21wKGRhdGEtPmRhdGEoKSwgcGRmTWFnaWNO
dW1iZXIsIHBkZk1hZ2ljTnVtYmVyTGVuZ3RoKSkgewotICAgICAgICBMT0coSWNvbkRhdGFiYXNl
LCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gSWdub3JpbmcgaWNvbiBhdCAlcyBiZWNh
dXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBQREYiLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6Zmlu
aXNoTG9hZGluZygpIC0gSWdub3JpbmcgaWNvbiBhdCAlcyBiZWNhdXNlIGl0IGFwcGVhcnMgdG8g
YmUgYSBQREYiLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAgIExPRyhJY29uRGF0YWJhc2UsICJJ
Y29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0
YWJhc2UiLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIG1f
ZnJhbWUubG9hZGVyKCkuaWNvbigpLmNvbW1pdFRvRGF0YWJhc2UocmVzb3VyY2UtPnVybCgpKTsK
KyAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gQ29t
bWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLmNvbW1pdFRv
RGF0YWJhc2UobV9yZXNvdXJjZS0+dXJsKCkpOwogICAgIC8vIFNldHRpbmcgdGhlIGljb24gZGF0
YSBvbmx5IGFmdGVyIGNvbW1pdHRpbmcgdG8gdGhlIGRhdGFiYXNlIGVuc3VyZXMgdGhhdCB0aGUg
ZGF0YSBpcwogICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJl
IHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkpLCBzaW5jZQogICAgIC8vIHRo
ZXJlIGlzIGEgcGFnZSBVUkwgcmVmZXJlbmNpbmcgaXQuCi0gICAgaWNvbkRhdGFiYXNlKCkuc2V0
SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7CisgICAg
aWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIG1fcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpKTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICBzdG9wTG9hZGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDMwOTc1NTZlOWExMDk3NWZhZjgxYWFiNmQwNTZkNzZk
YjY1NjhkODQuLjZiOTM3YTE4ZjU4ZjA5MmQ1YzM0ZjY4YzkzYjM5YmFkY2ZlYzBjYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5p
c2hlZCgpIGZpbmFsOwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTEyYzJiZmVkZTg2
ZjE1ZjJkOTJiMTEzMDJiMDQxZmRjZjBkMDNiNy4uMWI0ZmNmMjhiYTk3ZTQ3MzE2YzhkZWI5YjY2
YjIyMjQ1MThmY2Y2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTI5LDkgKzEyOSw5IEBAIHZvaWQgV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgY2hhCiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi12
b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoKQogewotICAgIGlmIChyZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewor
ICAgIGlmIChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CiAgICAgICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRoZSBjb250ZW50VHlwZSBvZiB0aGUgY29u
dGVudEluZm9ybWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0eQogICAgICAgICAvLyBzdHJpbmcgdG8g
dHJpZ2dlciBBVkFzc2V0J3MgcGxheWFibGUgdmFsdWUgdG8gY29tcGxldGUgbG9hZGluZy4KICAg
ICAgICAgLy8gRklYTUU6IGlmIChbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9u
UmVxdWVzdF0gJiYgIVtbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVz
dF0gY29udGVudFR5cGVdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmgKaW5kZXggZWFlYzg4MWM3MDdlMzdjZGQxOWQ2NGZjMjdlMDA0YmRiYzA4
YTUzMS4uMzAxZDg1Zjc3ZmQ5NGE1OTY3NDA5ZTE2ODQ5NzI3YWY4ZTg4YmVhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01OSw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25z
dCBjaGFyKiwgaW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CmluZGV4IDkzMmMxMWYyYTY2YWQ5Yzg1MDIwOTMyNzkxYThiNjgxZDRkYTljN2IuLjI5YzUwMGY4
ZjI2NzEzNmRkNDkwZDFhZTg1ZDE0ZTAxZWUzNWFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC01OSw3ICs1OSw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50
KSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBm
dWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggNWQ5
YzEzODc3ZTE2M2IwZjk2MTY5Y2VmYTFiOWE4OTljZGY0NTc0OS4uMzAyMmYwMGVmMjU3NjZlMGIz
NTUzMjQ4MWEyMGMxNDk0MzU0NjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTM4LDkgKzEzOCw5IEBAIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBjb25zdCBjaGFyCiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2Up
OwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKCkKIHsKLSAgICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpIHsKKyAgICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewogICAg
ICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTM5ODc0MTc+IFNldCB0aGUgY29udGVudFR5cGUgb2Yg
dGhlIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3QgdG8gYW4gZW1wdHkKICAgICAgICAgLy8gc3Ry
aW5nIHRvIHRyaWdnZXIgQVZBc3NldCdzIHBsYXlhYmxlIHZhbHVlIHRvIGNvbXBsZXRlIGxvYWRp
bmcuCiAgICAgICAgIGlmIChbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVx
dWVzdF0gJiYgIVtbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0g
Y29udGVudFR5cGVdKQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAgICAg
ICAgW21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOworICAg
ICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShtX3Jlc291cmNlLmdldCgpKTsKICAgICAg
ICAgW21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmddOwogICAgIH0KICAgICBzdG9wTG9h
ZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMmM4
MzQwZTVmYmFkM2IxYTNmMzIxN2IxYmI0NjRiMzZkMTVhOTFjYS4uODAwNmNmZjQ2OGJkZjUyMzVk
NzExNTYzZDI3ZDU1YzEwYzI3M2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCkBAIC0zMzgsMTggKzMzOCwxNSBAQCB2b2lkIFJlbmRlckltYWdlOjpyZXBhaW50
T3JNYXJrRm9yTGF5b3V0KEltYWdlU2l6ZUNoYW5nZVR5cGUgaW1hZ2VTaXplQ2hhbmdlLCBjbwog
ICAgIGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKK3ZvaWQgUmVuZGVySW1h
Z2U6Om5vdGlmeUZpbmlzaGVkKCkKIHsKICAgICBpZiAoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpbnZhbGlkYXRlQmFja2dyb3VuZE9ic2N1cmF0aW9u
U3RhdHVzKCk7CiAKLSAgICBpZiAobmV3SW1hZ2UgPT0gaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZElt
YWdlKCkpIHsKLSAgICAgICAgLy8gdGVsbCBhbnkgcG90ZW50aWFsIGNvbXBvc2l0aW5nIGxheWVy
cwotICAgICAgICAvLyB0aGF0IHRoZSBpbWFnZSBpcyBkb25lIGFuZCB0aGV5IGNhbiByZWZlcmVu
Y2UgaXQgZGlyZWN0bHkuCi0gICAgICAgIGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7Ci0g
ICAgfQorICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMgdGhhdCB0
aGUgaW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgorICAg
IGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggYmQwNWQ5
MzFhYjk2NmE3MWM5NmU3ZWIxNTAwNmU5YTc0MDI2Y2RkZS4uYzJmMDVmZGU5MzA5ZWE0ZmU0ZGY1
ZWZkOGNkOWE1N2QyNmEzYzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBtaW5pbXVt
UmVwbGFjZWRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmlu
YWw7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgZmluYWw7CiAK
ICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxv
d0JveCopIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAppbmRleCA1NmIxMzhkODk5YzU4YzZhOWI2Y2Q4ZGRiZWVi
M2UwODk3YzIwNDQ3Li4yYmU1NjA4MDgyYjU1NmUwMTNiMWNkOTc3ZmI2YWRiNDU5MDM3M2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjpzZXRS
ZW5kZXJlcihSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+JiYgcmVuZGVyZQogICAgIG1fcmVu
ZGVyZXIgPSByZW5kZXJlcjsgCiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKK3ZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlcklu
Zm86Om5vdGlmeUZpbmlzaGVkKCkKIHsKICAgICBtX2xheWVyLmZpbHRlck5lZWRzUmVwYWludCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5m
by5oCmluZGV4IGU2ODg5MWQxYjQ5NjAzMGU1YmNkNTQwMWQzZDg1Yzg4YWNlYTM2ZWMuLmExYTZh
YmE0NzgxYzI5MWNmMGIzNmY1ZGE0ZTYxNmY5Y2M5NTc5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsK
KyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxj
b25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJJbmZvPj4mIG1hcCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0ZDU5MjkxMDM4
ODcwNjUwMWUxMTI4Y2I0ZjcxZTNiMzcxMDc3M2JjLi43YWRkZjY4ZWFlZWE4ZDU3MDI3OWRiMjRm
MzNjZDkzYThhMDAzZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogICAgICAgICBjbGVhclJlc291cmNlUmVmZXJl
bmNlcygpOwogfQogCi12b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSopCit2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCgpCiB7
CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggYTU4NWYzYmFjODE0ODQ3YjZiMTIwN2JjZDVmZTlj
NmMxNzY2NGU4Ni4uODFiNmVhZWQ1OWJlZWU4M2E0NTUxZjc4NDYyOWJkM2Q0NmRiYjk4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBm
aW5hbDsKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKaW5kZXggMjFlMjcxZmE2MWJjMjM3M2NhNzZkNDMwMTdhODMyYzNlYmM0OTg1
NC4uZjNhNGIyZDU2YmQ3YWY1MWFiMTY3OTE4YTU4ZTNhMTQ1Zjc3ZDdlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNTM1LDEyICs1MzUsMTIgQEAgYm9vbCBTVkdVc2VF
bGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1cm4gdGFyZ2V0
Q2xvbmUgJiYgdGFyZ2V0Q2xvbmUtPmhhc1JlbGF0aXZlTGVuZ3RocygpOwogfQogCi12b2lkIFNW
R1VzZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3Zv
aWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoKQogewogICAgIGludmFsaWRhdGVTaGFk
b3dUcmVlKCk7Ci0gICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCisgICAgaWYgKG1f
ZXh0ZXJuYWxEb2N1bWVudC0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwot
ICAgIGVsc2UgaWYgKCFyZXNvdXJjZS0+d2FzQ2FuY2VsZWQoKSkKKyAgICBlbHNlIGlmICghbV9l
eHRlcm5hbERvY3VtZW50LT53YXNDYW5jZWxlZCgpKQogICAgICAgICBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOjpkaXNwYXRjaExvYWRFdmVudCh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmgKaW5kZXggZjRmMzdmNmNkZmE5OTQxYWRmNGFhMzE5MmY3MWY1NGM2NDQ5
ZmU2Zi4uMzFlZTQ4MmUxMzc1NTFiNjJiNDFiMWYwYWVjOGY4NzI3ZTRlMThmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRIYXZlRmlyZWRMb2FkRXZlbnQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXZlRmly
ZWRMb2FkRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBUaW1lciogc3ZnTG9hZEV2ZW50VGlt
ZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikg
b3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCiAgICAgRG9jdW1l
bnQqIGV4dGVybmFsRG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUV4dGVybmFsRG9j
dW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggMDk2MWM0ZDhhNWYwOTA0YjdkNTQyZjJiMjFmMGRmMmViOGQ0YWVkOC4uMGQ3
NTVmMDgzNzBkMmQxYzY5OTUwYTk4YThkMWRhM2RlYjY0ZDAwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTIyNyw5ICsyMjcsOCBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAgICAg
bV94bWxFcnJvcnMtPmluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7CiB9CiAKLXZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVzZWRSZXNvdXJj
ZSkKK3ZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBBU1NF
UlRfVU5VU0VEKHVudXNlZFJlc291cmNlLCB1bnVzZWRSZXNvdXJjZSA9PSBtX3BlbmRpbmdTY3Jp
cHQpOwogICAgIEFTU0VSVChtX3BlbmRpbmdTY3JpcHQtPmFjY2Vzc0NvdW50KCkgPiAwKTsKIAog
ICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3BlbmRpbmdTY3JpcHQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDcx
ZDY2OWY1Y2Y3MDRjYzQ3NmY3MDhjNzdkMjM0NzU1NmEwMTM5YmUuLjVjOTk0MTY1NmQ5ZTQ0OTI4
NGQwNzRlNTIxZTA1YTNiYmE1YjVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBUZXh0OwogICAg
ICAgICBib29sIHNob3VsZEFzc29jaWF0ZUNvbnNvbGVNZXNzYWdlc1dpdGhUZXh0UG9zaXRpb24o
KSBjb25zdCBvdmVycmlkZTsKIAogICAgICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50
Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQg
ZW5kKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289940</attachid>
            <date>2016-09-27 07:00:34 -0700</date>
            <delta_ts>2016-09-27 08:15:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162060-20160927155732.patch</filename>
            <type>text/plain</type>
            <size>74545</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FjM2ZjNGU4Y2I2YzFm
NGQxYmZhNjNhNmU0NjgzYjBiY2U4YWQzNy4uMWQ0ODk0ZjVhOTFiZGE3NGRhOWE1YmU0MzIyZGYw
OWNiMTkxYWEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyOSBAQAogMjAxNi0wOS0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3IgQ2FjaGVk
UmVzb3VyY2VDbGllbnQ6Om5vdGlmeUZpbmlzaGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAg
TWFraW5nIENhY2hlZFJlc291cmNlQ2xpZW50IGFuZCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBj
YWxsYmFja3MgdGFrZSBDYWNoZWRSZXNvdXJjZSByZWZlcmVuY2VzIGFuZCBub3QgcG9pbnRlcnMu
CisgICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSBDYWNoZWRSZXNvdXJjZSBwYXJhbWV0ZXIgaXMg
b25seSB1c2VkIGZvciBhc3NlcnRpb25zLgorICAgICAgICBSZW1vdmluZyB0aGF0IHBhcmFtZXRl
ciBtaWdodCBiZSBjb250ZW1wbGF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgVGhlIG9ubHkg
cmVhbCBjYXNlIGlzIGluIFJlbmRlckltYWdlLgorCisgICAgICAgIFJlbW92ZWQgdGhlIENhY2hl
ZFJlc291cmNlIHBhcmFtZXRlciBmcm9tIENvbnRlbnRGaWx0ZXIgbWV0aG9kcyBhcyBjb2RlIHdh
cyBjYWxsaW5nIHRoZXNlIG1ldGhvZHMgd2l0aCBudWxsIHZhbHVlcy4KKworICAgICAgICAqIGRv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVD
bGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5RmluaXNo
ZWQpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVNlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIv
SW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rTG9hZGVyOjp0cmlnZ2VyRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50Ojp0cmlnZ2VyRXZlbnRz
KToKKyAgICAgICAgKiBsb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaDoKKyAgICAg
ICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVzb3VyY2U6OnNob3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291
cmNlOjpkYXRhU2VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVy
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9h
ZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRp
cmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpzaG91
bGRDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpk
aWRTZW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVNl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnJlc3BvbnNl
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnNo
b3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRB
ZGRDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6Om5vdGlmeUZpbmlzaGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xpZW50OjpkZXByZWNhdGVkRGlk
UmVjZWl2ZUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlRGF0
YSk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0
aFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OkZpbHRlckluZm86OnNldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oOgorICAgICAgICAqIHN2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmg6CisKKzIwMTYtMDktMjcgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIENsZWFuLXVwIENhY2hlZEltYWdlIGNvbnN0cnVj
dG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2
MDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Njcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAppbmRl
eCAxMWYxMjA1ODc3NTI3MjVmY2U4OTUzMzYwZWZkNDY5ZjBkOWM3MTI5Li44NzFmOWQ5OWM5YTky
Mjk1OTJlYTAyNWUyZWM0MmJiNmYxMTc0ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmNwcApAQCAtNjcsMTAgKzY3LDkgQEAgYm9vbCBMb2FkYWJsZUNs
YXNzaWNTY3JpcHQ6Ondhc0NhbmNlbGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRTY3Jp
cHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAg
IEFTU0VSVChyZXNvdXJjZSk7Ci0gICAgaWYgKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNB
Y2Nlc3NDb250cm9sKCkpIHsKKyAgICBpZiAocmVzb3VyY2UucmVzb3VyY2VFcnJvcigpLmlzQWNj
ZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNv
bnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpOwogICAgICAgICBt
X2Vycm9yID0gRXJyb3IgewogICAgICAgICAgICAgRXJyb3JUeXBlOjpDcm9zc09yaWdpbkxvYWQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKaW5kZXggYWZkZjE1
MjZkYWMxOTc3NTAzMTQ2M2Y5MGZkNWZjMWVlYTQ3YjU2Ni4uZmQzOGY3N2FmN2QzNDRiODkzMjkx
MmRhMjk5MTVhNzJhZDliZDVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNz
aWNTY3JpcHQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+JiYgY2Fj
aGVkU2NyaXB0KSA6IG1fY2FjaGVkU2NyaXB0KFdURk1vdmUoY2FjaGVkU2NyaXB0KSkgeyB9CiAK
LSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKICAgICBPcHRpb25h
bDxFcnJvcj4gbV9lcnJvciB7IE51bGxvcHQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
TG9hZGVyLmNwcAppbmRleCAzZTVmODFjNTJmNjMzMjc4ZjNhNjRmZjc5ZDIwNmJjZmY3YTczZmIz
Li5lN2Y5ZmVjYjQ5MTYxYWM3NjQwNGZlNmUzMTI3MjBiMTkyMTI4NzQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCkBAIC03MywyMSArNzMsMjIgQEAgU3RyaW5nIEhU
TUxJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29uc3QK
ICAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpOwogfQog
Ci12b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQor
dm9pZCBIVE1MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikKIHsK
LSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZSgpOworICAgIEFTU0VSVChpbWFn
ZSgpKTsKKyAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqaW1hZ2UoKTsKIAogICAgIFJl
ZjxFbGVtZW50PiBwcm90ZWN0KGVsZW1lbnQoKSk7CiAgICAgSW1hZ2VMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKGNhY2hlZEltYWdlKTsKIAotICAgIGJvb2wgbG9hZEVycm9yID0gY2FjaGVkSW1hZ2Ut
PmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpID49IDQwMDsKKyAgICBib29sIGxvYWRFcnJvciA9IGNhY2hlZEltYWdlLmVycm9yT2NjdXJy
ZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwog
ICAgIGlmICghbG9hZEVycm9yKSB7CiAgICAgICAgIGlmICghZWxlbWVudCgpLmluRG9jdW1lbnQo
KSkgewogICAgICAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZN
KCk7CiAgICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBBZG9wdCByZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8g
cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTk1Ci0gICAgICAgICAgICB2bS5oZWFwLmRl
cHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeShjYWNoZWRJbWFnZS0+ZW5jb2RlZFNpemUoKSk7Cisg
ICAgICAgICAgICB2bS5oZWFwLmRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeShjYWNoZWRJbWFn
ZS5lbmNvZGVkU2l6ZSgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlTG9hZGVyLmgKaW5kZXggOTAwYzM0YjNmN2M2MjJhYWE0YWJkMzU3NTQwMjYwMTZlYmVj
YTc3YS4uYTgxNTg5YTBhODNiYjY4YjE3MTM5YTEzZGIyMDUzYWRiNzk4ZTNlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCkBAIC0yMCw4ICsyMCw3IEBACiAgKgogICovCiAK
LSNpZm5kZWYgSFRNTEltYWdlTG9hZGVyX2gKLSNkZWZpbmUgSFRNTEltYWdlTG9hZGVyX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIuaCIKIApAQCAtMzUsOSArMzQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogfTsKIAogfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA5MGEzZmVlYzEw
NWY1MDg2OWEyMGJlYmRiOGFmN2JlNjYwMTJkYTAzLi45YWI0OTI5NTcxMmY5NzVhNDhlYmM4NGU2
M2M5MWIyOTA1ZmE3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CkBAIC0xMzMsOSArMTMzLDggQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFp
blJlc291cmNlKCkKICAgICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2Ug
PT0gbV9tYWluUmVzb3VyY2UpOwogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkRG9j
dW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6RmlsdGVyaW5nKSB7CkBAIC0xNDgsNDIgKzE0Nyw0MSBAQCBib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSwgY29ucwogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8
RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZERvY3VtZW50TG9hZGVyIHsgbV9kb2N1bWVudExvYWRl
ciB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2Yg
ZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRl
ciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgbV9tYWlu
UmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFj
aENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0aF0oUGxhdGZvcm1Db250ZW50
RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERh
dGEoZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkFsbG93ZWQpCi0gICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCpyZXNvdXJj
ZSk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZDsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQorYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewot
ICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBSZWY8RG9jdW1l
bnRMb2FkZXI+IHByb3RlY3RlZERvY3VtZW50TG9hZGVyIHsgbV9kb2N1bWVudExvYWRlciB9Owog
Ci0gICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCisgICAgaWYgKG1fbWFpblJlc291
cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmlu
ZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQg
PCVzPi5cbiIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0
ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRp
bEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CiAgICAg
ICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgpOwogICAgICAgICB9KTsK
IAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkgewogICAgICAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0
YSgqcmVzb3VyY2UpOworICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqbV9tYWluUmVz
b3VyY2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3Bw
ZWQpCkBAIC0yNTAsNyArMjQ4LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3Vy
Y2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJj
ZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLmRhdGFSZWNlaXZl
ZCgmcmVzb3VyY2UsIHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLmRhdGFSZWNlaXZlZChyZXNvdXJjZSwgcmVz
b3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5oCmluZGV4IGE4NTBjMWJlYzgxNzk3N2I3ZjViYzVkMjg3ZmViOWU3NzM0YTJkY2EuLjhi
NDgxNjZiNThjM2QxY2Q1OTcwZDU4ZGEyN2I2MTJiODRiYjgxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaApAQCAtNTcsOSArNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAg
Ym9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCk7CisgICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKTsKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0
YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmKTsKICAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAwZjZjMTI5OWIwM2E2MjgyZGMwOGUwYWRm
ZTNlNmZjNDIzNDRmZmUyLi4wODFjNWJiMmNlOGU5Y2JmNWE5MGQ2Nzc0Y2Q5ZmM0OTE5NzkzMzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtODYsOSArODYsOSBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlcjo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVMbwog
ICAgIGxvYWRlci5wcmVmbGlnaHRTdWNjZXNzKFdURk1vdmUocmVxdWVzdCkpOwogfQogCi12b2lk
IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQordm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYgKG1fcmVzb3VyY2UtPmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBwcmVmbGlnaHRFcnJv
ciA9IG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKTsKICAgICAgICAgcHJlZmxpZ2h0RXJyb3Iu
c2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaAppbmRleCAw
MjI0NTFmNzhkNDFjM2RiYWQ5ODA1NmZkNDRhMTA3OWFiZDUwYWVhLi42OTcxYzMxZjk2YjBmODJk
YWQ3YzZkNTE3NTMyMzQwNzg5ZDc2OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIGZpbmFsOworICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgIHN0YXRpYyB2b2lkIGhhbmRs
ZUxvYWRpbmdGYWlsdXJlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVByZWZsaWdo
dFJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJlc291cmNlUmVxdWVzdCYmLCB1
bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5N2Q4NzU1ODI2ODllNmMyZWJiMTU0NTdlMWEx
NWFkZTA3ZGVmMTEyLi5lMWE4ODhiODAyNGQ2N2Y1YWQ1YWI1YjBiNDRiMDYyMTM3MDg1MzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTM3MywxNCArMzcz
LDE0IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8ICFtX3N1YnJlc291cmNlTG9hZGVycy5pc0VtcHR5
KCkgfHwgIW1fcGx1Z0luU3RyZWFtTG9hZGVycy5pc0VtcHR5KCk7CiB9CiAKLXZvaWQgRG9jdW1l
bnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQg
RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
IHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
ciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3Vy
Y2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsIG1fbWFpblJlc291cmNlID09IHJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCBtX21haW5SZXNvdXJjZSA9PSAmcmVzb3VyY2UpOwogICAgIEFTU0VSVChtX21haW5SZXNv
dXJjZSk7CiAgICAgaWYgKCFtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmICFtX21h
aW5SZXNvdXJjZS0+d2FzQ2FuY2VsZWQoKSkgewogICAgICAgICBmaW5pc2hlZExvYWRpbmcobV9t
YWluUmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1lKCkpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygpCiAgICAgaWYgKHJl
c3BvbnNlLnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKG1fcmVxdWVzdC51cmwoKSwgbV9zdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGlu
ZygpKTsKIAotICAgIHJlc3BvbnNlUmVjZWl2ZWQoMCwgcmVzcG9uc2UpOworICAgIHJlc3BvbnNl
UmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydERhdGFM
b2FkVGltZXIoKQpAQCAtNDkyLDkgKzQ5Miw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRs
ZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oKQogICAgICAgICBzdGFydERhdGFMb2FkVGltZXIoKTsK
IH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgd2ls
bFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCkBAIC02MzIsMTQg
KzYzMiwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0
aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKAogICAgICAgICBjYW5jZWxNYWluUmVz
b3VyY2VMb2FkKGZyYW1lTG9hZGVyLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKIH0KIAot
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
IG1fbWFpblJlc291cmNlID09ICZyZXNvdXJjZSk7CisgICAgcmVzcG9uc2VSZWNlaXZlZChyZXNw
b25zZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQocmVzb3VyY2UsIHJlc3BvbnNlKSkKKyAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCBtX21haW5SZXNvdXJjZSA9PSByZXNvdXJjZSk7CiAgICAgUmVmPERv
Y3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBib29sIHdpbGxMb2FkRmFs
bGJhY2sgPSBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5S
ZXNwb25zZShyZXF1ZXN0KCksIHJlc3BvbnNlKTsKIApAQCAtODIxLDcgKzgyNiw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBw
b2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKICAgICAgICAgYXV0byBjb250ZW50ID0g
bV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRl
bnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFSZWNlaXZlZChudWxscHRyLCBjb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJl
c291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmcoMCk7CiAgICAgfQpAQCAtOTI5
LDE2ICs5MzQsMjEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFy
KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBsZW5n
dGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVu
dExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAgIGRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgp
OworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYg
KG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKHJlc291cmNlLCBkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5n
dGgpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAogICAgIEFTU0VSVChkYXRhKTsKICAgICBB
U1NFUlQobGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBt
X21haW5SZXNvdXJjZSk7CiAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAg
IC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRp
c3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYmZkODc4N2UxY2M4NDFkY2UzMWNmNDkwOWEzYmMzNzI4
ZjhlODIzNS4uYzM0NmZlY2Q2ZGQyMmMwN2Q1OGRhYTQ4MjE3NDFhOWNhNjI1M2UwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTMxNiwxMCArMzE2LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZvaWQgbWFpblJlY2VpdmVkRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOworCisg
ICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwog
CiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA3YWMyNWY0YzY0YTc3
OGE0MTRhZTZmYTYyOWM4NmU4MWQ0ZGExMjYxLi5hNmMwZjA1ZDM1ODE2NGZiNjZlYWY2YjdjYjQw
MDQ5ZGMzOWU1MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjE2LDEwICsyMTYsMTAgQEAgc3RhdGljIGlubGluZSB2
b2lkIHJlcG9ydENyb3NzT3JpZ2luUmVzb3VyY2VTaGFyaW5nRXJyb3IoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCYKICAgICBjbGllbnQuZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHVybCwgIkNyb3NzLW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkg
Q3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIsIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wpKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJl
ZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIGlm
ICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdC51cmwoKSwgcmVkaXJl
Y3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNw
b25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25z
ZVJlY2VpdmVkOjpZZXMpKSB7CkBAIC0yNjEsMTYgKzI2MSwxNiBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Us
IFJlc291cgogICAgIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFTZW50
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3ZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAm
cmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbV9jbGllbnQtPmRpZFNlbmREYXRhKGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291
cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVSZXNwb25zZShtX3Jlc291cmNlLT5p
ZGVudGlmaWVyKCksIHJlc3BvbnNlLCBtX3Jlc291cmNlLT5yZXNwb25zZVRhaW50aW5nKCkpOwog
fQogCkBAIC0yOTIsOSArMjkyLDkgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICB9CiB9
CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgZGlkUmVjZWl2ZURh
dGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApAQCAt
MzA1LDEwICszMDUsMTAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIqIGRhdGEsIGkKICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlkRmFpbChtX3Jlc291cmNlLT5pZGVudGlmaWVy
KCksIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzA2YWUwMjZjOWEwMDZhYTBk
OTFlMjI2YmJhNTc0MTg1OWRmNDA0Zi4uMGZmMjkwZDgyNTYzODNhMDcxYmZkZjFmOGRkMWJlNzY4
ZWZlNGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaApAQCAtNzcsMTEgKzc3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBjbGVhclJlc291cmNlKCk7CiAKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQKLSAgICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKIAogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZyk7CiAgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApp
bmRleCBjMWFjM2JlNDI2NTFmYjBmZWJmMWFjMmQyMGQzZjc2NzQ2ZmM4MjMxLi40ODk0MDVkMmJh
NDY1M2FlY2YzOTc4Njk1MzZhNWRiMmQ2ODI4NTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5jcHAKQEAgLTI3MCwxMCArMjcwLDEwIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0
ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCkKICAgICB1cGRhdGVGcm9tRWxlbWVu
dCgpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCit2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fZmFpbGVkTG9hZFVSTC5pc0VtcHR5KCkp
OwotICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX2ltYWdlLmdldCgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9pbWFnZS5nZXQoKSk7CiAKICAgICBtX2ltYWdl
Q29tcGxldGUgPSB0cnVlOwogICAgIGlmICghaGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpKQpA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBpZiAoIW1faGFzUGVuZGluZ0xvYWRFdmVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNBY2Nl
c3NDb250cm9sKCkpIHsKKyAgICBpZiAobV9pbWFnZS0+cmVzb3VyY2VFcnJvcigpLmlzQWNjZXNz
Q29udHJvbCgpKSB7CiAgICAgICAgIGNsZWFySW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5n
TG9hZEV2ZW50KCk7CiAKICAgICAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IHRydWU7CkBA
IC0yOTksNyArMjk5LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJl
c291cmNlLT53YXNDYW5jZWxlZCgpKSB7CisgICAgaWYgKG1faW1hZ2UtPndhc0NhbmNlbGVkKCkp
IHsKICAgICAgICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9u
bHkgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVt
ZW50IGltbWVkaWF0ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1
bmN0aW9uIGFzIGRvaW5nIHNvIG1pZ2h0IHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhp
cyBJbWFnZUxvYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggNTY2MDVi
ODFlYThmOWQ1ODc3YTM5Y2ZhMWUyYjBjZmE2YzRkYWY5Zi4uNzcxNzY2N2Y2NzcwZGU3NDYzYjQ4
NjBhMGU3MDg0ZmM1MDc5MTM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAg
LTIwLDggKzIwLDcgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBJbWFnZUxvYWRlcl9oCi0jZGVmaW5l
IEltYWdlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGll
bnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgpAQCAtNzMsNyArNzIsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBJbWFnZUxvYWRlcihFbGVtZW50
Jik7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwor
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7CkBAIC0xMDcs
NSArMTA2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAKaW5kZXggNjNlOTljNTU0YjQyOGFiNzg0NTNmMGEwMzQ3Y2U3YTkwOGJh
Y2QwNC4uMDhkNjAxZjA5YmQyMDQyNmI5ODYyNjBlNGZlODQ0MzVhOTVlYjBkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtNjUsMTkgKzY1LDE5IEBAIExpbmtMb2FkZXI6
On5MaW5rTG9hZGVyKCkKICAgICAgICAgbV9wcmVsb2FkUmVzb3VyY2VDbGllbnQtPmNsZWFyKCk7
CiB9CiAKLXZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCit2b2lkIExpbmtMb2FkZXI6OnRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgp
KQorICAgIGlmIChyZXNvdXJjZS5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIG1fY2xpZW50Lmxp
bmtMb2FkaW5nRXJyb3JlZCgpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQubGlua0xvYWRl
ZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlu
a1Jlc291cmNlLmdldCgpID09IHJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCBtX2NhY2hlZExpbmtSZXNvdXJjZS5nZXQoKSA9PSAmcmVzb3VyY2UpOwogCi0gICAgdHJpZ2dl
ckV2ZW50cyhtX2NhY2hlZExpbmtSZXNvdXJjZS5nZXQoKSk7CisgICAgdHJpZ2dlckV2ZW50cygq
bV9jYWNoZWRMaW5rUmVzb3VyY2UpOwogCiAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UtPnJlbW92
ZUNsaWVudCh0aGlzKTsKICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCBmZTcwZDFlNTExM2RiNGRjZDM1ZjI3ZmZhNzAw
YTcyMDM2OTAwMzhiLi4yYTQ5MjFjNDE1Y2ZhYTZkYzA0Yzc3ZGE3ZWI4MTg3MjI1MDQ5YzNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTI5LDggKzI5LDcgQEAKICAqCiAgKi8K
IAotI2lmbmRlZiBMaW5rTG9hZGVyX2gKLSNkZWZpbmUgTGlua0xvYWRlcl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKQEAgLTU2LDEwICs1NSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE9wdGlv
bmFsPENhY2hlZFJlc291cmNlOjpUeXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJiBhcyk7CiAKICAgICBXZWFrUHRyPExpbmtMb2FkZXI+IGNyZWF0ZVdlYWtQdHIo
KSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIHZvaWQg
dHJpZ2dlckV2ZW50cyhjb25zdCBDYWNoZWRSZXNvdXJjZSopOworICAgIHZvaWQgdHJpZ2dlckV2
ZW50cyhjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVsb2FkSWZOZWVkZWQo
Y29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFVSTCYgaHJlZiwgRG9jdW1lbnQmLCBjb25z
dCBTdHJpbmcmIGFzLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSk7CiAKICAgICBMaW5r
TG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKQEAgLTY3LDcgKzY2LDUgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gbV9wcmVsb2FkUmVzb3Vy
Y2VDbGllbnQ7CiAgICAgV2Vha1B0ckZhY3Rvcnk8TGlua0xvYWRlcj4gbV93ZWFrUHRyRmFjdG9y
eTsKIH07Ci0gICAgCi19CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5jcHAKaW5kZXggZmU3ZWNiNTcyMjVjNzhh
YzJjMGRjMDczZDE0OTMxMmM4ZDk4NTE5OC4uMWNkNzQ0MzAwZjMyMjdkYzI4OTcyMTBiN2Y4YmY2
OGQwOTNlNzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtQcmVsb2Fk
UmVzb3VyY2VDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxv
YWRSZXNvdXJjZUNsaWVudHMuY3BwCkBAIC0zNyw3ICszNyw3IEBAIExpbmtQcmVsb2FkUmVzb3Vy
Y2VDbGllbnQ6OkxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQoTGlua0xvYWRlciYgbG9hZGVyLCBD
YWNoZWRSCiAgICAgbV9yZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KIAotdm9pZCBMaW5rUHJlbG9h
ZFJlc291cmNlQ2xpZW50Ojp0cmlnZ2VyRXZlbnRzKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3ZvaWQgTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudDo6dHJpZ2dlckV2ZW50cyhjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKG1fbG9hZGVyKQogICAgICAg
ICBtX2xvYWRlci0+dHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5oCmluZGV4IDkyNzNkNjliZGZh
ZjVjYjk0MjRjNmNkY2YwNWQ3ZWUxYjBlZWY2MWEuLjFiNzA4NDBlMzc2ZDM3OWIxNDM0NzUyNmM2
YjE1MjNlODMwNDIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExpbmtQcmVsb2Fk
UmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkxpbmtQcmVsb2FkUmVzb3Vy
Y2VDbGllbnQoKSB7IH0KIAotICAgIHZvaWQgdHJpZ2dlckV2ZW50cyhjb25zdCBDYWNoZWRSZXNv
dXJjZSopOworICAgIHZvaWQgdHJpZ2dlckV2ZW50cyhjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOwogCkBAIC04MywxMSArODMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TGlua1ByZWxvYWRTY3JpcHRSZXNvdXJjZUNsaWVudCgpIHsgfQog
CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChvd25lZFJlc291cmNlKCkgPT0gcmVzb3VyY2Up
OwotICAgICAgICB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsKLSAgICB9CisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIG92ZXJyaWRlIHsgdHJpZ2dlckV2
ZW50cyhyZXNvdXJjZSk7IH0KIAogICAgIHZvaWQgY2xlYXIoKSBvdmVycmlkZSB7IGNsZWFyUmVz
b3VyY2UodGhpcyk7IH0KIApAQCAtMTEwLDggKzEwNiw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXNvdXJjZSkgb3ZlcnJpZGUKICAgICB7Cisg
ICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgIEFTU0VSVChvd25lZFJlc291cmNlKCkg
PT0gcmVzb3VyY2UpOwotICAgICAgICB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsKKyAgICAgICAg
dHJpZ2dlckV2ZW50cygqcmVzb3VyY2UpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKSBvdmVy
cmlkZSB7IGNsZWFyUmVzb3VyY2UodGhpcyk7IH0KQEAgLTEzMywxMSArMTMwLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50KCkgeyB9CiAK
LSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChvd25lZFJlc291cmNlKCkgPT0gcmVzb3VyY2UpOwot
ICAgICAgICB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsKLSAgICB9CisgICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIG92ZXJyaWRlIHsgdHJpZ2dlckV2ZW50
cyhyZXNvdXJjZSk7IH0KIAogICAgIHZvaWQgY2xlYXIoKSBvdmVycmlkZSB7IGNsZWFyUmVzb3Vy
Y2UodGhpcyk7IH0KIApAQCAtMTYxLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvbnRM
b2FkZWQoQ2FjaGVkRm9udCYgcmVzb3VyY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NF
UlQob3duZWRSZXNvdXJjZSgpID09ICZyZXNvdXJjZSk7Ci0gICAgICAgIHRyaWdnZXJFdmVudHMo
JnJlc291cmNlKTsKKyAgICAgICAgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7CiAgICAgfQogCiAg
ICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsgY2xlYXJSZXNvdXJjZSh0aGlzKTsgfQpAQCAtMTgz
LDExICsxNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5MaW5rUHJlbG9hZFJhd1Jlc291
cmNlQ2xpZW50KCkgeyB9CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChvd25lZFJlc291cmNl
KCkgPT0gcmVzb3VyY2UpOwotICAgICAgICB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsKLSAgICB9
CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIG92ZXJy
aWRlIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KIAogICAgIHZvaWQgY2xlYXIoKSBvdmVy
cmlkZSB7IGNsZWFyUmVzb3VyY2UodGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDljNzI2NThhMjljOGRhNzAxOTU1ZGVmZTg5
YmI5NDBiOGNhZDJlNGIuLmE1MWUyZGRhYTFkMWVhNjg3YTE3ODU5Y2VmM2Y0MjJjYzBkNGRkODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTEyOSwxNSArMTI5LDE1IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6c2V0RGVmZXJzTG9hZGluZyhi
b29sIGRlZmVyc0xvYWRpbmcpCiAgICAgICAgIG1fcmVzb3VyY2UtPnNldERlZmVyc0xvYWRpbmco
ZGVmZXJzTG9hZGluZyk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQordm9pZCBNZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKCFt
X2xvYWRlci0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPE1lZGlh
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYgKCFtX2xvYWRlci0+Y3Jvc3NP
cmlnaW5Nb2RlKCkuaXNOdWxsKCkgJiYgIXJlc291cmNlLT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5
Q2hlY2soKm1fbG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlm
ICghbV9sb2FkZXItPmNyb3NzT3JpZ2luTW9kZSgpLmlzTnVsbCgpICYmICFtX3Jlc291cmNlLT5w
YXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fbG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBjb25zb2xlTWVzc2FnZSgiQ3Jvc3Mtb3JpZ2luIG1lZGlhIHJlc291cmNlIGxvYWQgZGVuaWVk
IGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKTsKICAgICAgICAgbV9s
b2FkZXItPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZS5nZXQoKSk7CiAgICAgICAg
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGZhbHNlOwpAQCAtMTUyLDkgKzE1Miw5IEBA
IHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgICAgIG1fY2xpZW50LT5yZXNwb25zZVJlY2Vp
dmVkKCp0aGlzLCByZXNwb25zZSk7CiB9CiAKLWJvb2wgTWVkaWFSZXNvdXJjZTo6c2hvdWxkQ2Fj
aGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQorYm9vbCBNZWRpYVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3BvbnNlKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwog
CiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYg
KG1fY2xpZW50KQpAQCAtMTYyLDQxICsxNjIsNDEgQEAgYm9vbCBNZWRpYVJlc291cmNlOjpzaG91
bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2UK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6cmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1l
ZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhpcywgcmVxdWVzdCwgcmVzcG9uc2Up
OwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
ICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZv
aWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09
IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBt
X3Jlc291cmNlKTsKIAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgq
dGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZWRpYVJlc291cmNlOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJl
c291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkgewotICAgICAgICBpZiAocmVzb3VyY2Ut
PmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCi0gICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxl
ZCgqdGhpcywgcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CisgICAgICAgIGlmIChtX3Jlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQorICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRG
YWlsZWQoKnRoaXMsIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOwogICAgIH0KQEAgLTIw
NCw5ICsyMDQsOSBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKIH0KIAogI2lmIFVTRShTT1VQKQotY2hhciogTWVkaWFSZXNvdXJj
ZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgc2l6ZV90
IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKK2NoYXIqIE1lZGlhUmVzb3VyY2U6
OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHNpemVfdCBy
ZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIHJldHVybiBtX2NsaWVudCA/IG1f
Y2xpZW50LT5nZXRPckNyZWF0ZVJlYWRCdWZmZXIoKnRoaXMsIHJlcXVlc3RlZFNpemUsIGFjdHVh
bFNpemUpIDogbnVsbHB0cjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmgKaW5kZXggZDI3ZGNmNTEwMmYwYTYyM2FkZDJjZjk0MWM4NTJkZTZj
MTMxY2Q2Yi4uODE5OTc4MjFhZjI1YTBhZGI1ZWRjODAwNTkxODM2M2IzMWVjNzA4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC03MCwxNSArNzAs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSBvdmVycmlkZTsK
ICAgICBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7IH0KIAotICAgIC8vIENhY2hlZFJlc291
cmNlQ2xpZW50Ci0gICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKLSAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3Vy
Y2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhU2Vu
dChDYWNoZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0
IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKSBvdmVycmlkZTsKKyAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAorICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2Um
LCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVy
cmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7
CiAjaWYgVVNFKFNPVVApCi0gICAgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJl
c291cmNlKiwgc2l6ZV90IC8qcmVxdWVzdGVkU2l6ZSovLCBzaXplX3QmIC8qYWN0dWFsU2l6ZSov
KSBvdmVycmlkZTsKKyAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3Vy
Y2UmLCBzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYgLyphY3R1YWxTaXplKi8pIG92
ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCmluZGV4IGVlYjIwOWQ3ZWQ3MWE0ODc0NTNkMWRjOGVlODIwZWRhMGJlMDI4
YjQuLjcxNDA5OGVlNjlmYjE2MGI1MjgzMWY3YWY0MTAyYTNkNzIxZjY5ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC03OCwxNCArNzgsMTQgQEAgdm9p
ZCBUZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQoKQogICAgIH0KIH0KIAotdm9pZCBUZXh0VHJh
Y2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3Zv
aWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiB7Ci0gICAgQVNTRVJUKG1fcmVzb3VyY2UgPT0gcmVzb3VyY2UpOwotICAgIAotICAg
IGlmIChtX3N0YXRlID09IEZhaWxlZCB8fCAhcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9yZXNvdXJjZSA9PSAmcmVzb3VyY2UpOworCisg
ICAgaWYgKG1fc3RhdGUgPT0gRmFpbGVkIHx8ICFtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
KQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byogYnVmZmVyID0gcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCk7CisKKyAgICBhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpOwogICAgIGlmIChtX3BhcnNlT2Zmc2V0ID09IGJ1ZmZlci0+c2l6ZSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEwMiwxNCArMTAyLDE0IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVy
Ojpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB9CiAKIC8vIEZJ
WE1FOiBUaGlzIGlzIGEgdmVyeSB1bnVzdWFsIHBhdHRlcm4sIG5vIG90aGVyIENhY2hlZFJlc291
cmNlQ2xpZW50IGRvZXMgdGhpcy4gUmVmYWN0b3IgdG8gdXNlIG5vdGlmeUZpbmlzaGVkKCkgaW5z
dGVhZC4KLXZvaWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgVGV4dFRyYWNrTG9hZGVyOjpk
ZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKIHsKLSAgICBBU1NFUlQobV9yZXNvdXJjZSA9PSByZXNvdXJjZSk7Ci0gICAgCi0gICAgaWYg
KCFyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CisKKyAgICBpZiAoIW1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBwcm9jZXNzTmV3Q3VlRGF0
YShyZXNvdXJjZSk7CisKKyAgICBwcm9jZXNzTmV3Q3VlRGF0YSgqbV9yZXNvdXJjZSk7CiB9CiAK
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpCkBAIC0xMjAs
MTkgKzEyMCwxOSBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6Y29yc1BvbGljeVByZXZlbnRlZExv
YWQoKQogICAgIG1fc3RhdGUgPSBGYWlsZWQ7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIFRleHRUcmFja0xv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFT
U0VSVChtX3Jlc291cmNlID09IHJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CiAKLSAgICBpZiAocmVzb3VyY2UtPnJlc291cmNl
RXJyb3IoKS5pc0FjY2Vzc0NvbnRyb2woKSkKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VF
cnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKQogICAgICAgICBjb3JzUG9saWN5UHJldmVudGVkTG9h
ZCgpOwogCiAgICAgaWYgKG1fc3RhdGUgIT0gRmFpbGVkKSB7Ci0gICAgICAgIHByb2Nlc3NOZXdD
dWVEYXRhKHJlc291cmNlKTsKKyAgICAgICAgcHJvY2Vzc05ld0N1ZURhdGEoKm1fcmVzb3VyY2Up
OwogICAgICAgICBpZiAobV9jdWVQYXJzZXIpCiAgICAgICAgICAgICBtX2N1ZVBhcnNlci0+Zmls
ZUZpbmlzaGVkKCk7CiAgICAgICAgIGlmIChtX3N0YXRlICE9IEZhaWxlZCkKLSAgICAgICAgICAg
IG1fc3RhdGUgPSByZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpID8gRmFpbGVkIDogRmluaXNoZWQ7
CisgICAgICAgICAgICBtX3N0YXRlID0gbV9yZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpID8gRmFp
bGVkIDogRmluaXNoZWQ7CiAgICAgfQogCiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQgJiYg
bV9jdWVQYXJzZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKaW5kZXgg
MTIzZjE0ODg4NmExZmJjZTJjYjk2ZjczZDI5NWYzNWRjMGRiY2EyNi4uYTUzNDY1MWNjY2M3MGRi
MjA2NDI5ZDQxYmI0YTM2NzllYjY1Y2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuaApAQCAtNjQsMjAgKzY0LDIwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAKICAgICAv
LyBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKLSAgICAKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXByZWNhdGVkRGlk
UmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisKICAgICAv
LyBXZWJWVFRQYXJzZXJDbGllbnQKICAgICB2b2lkIG5ld0N1ZXNQYXJzZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIG5ld1JlZ2lvbnNQYXJzZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbGVGYWls
ZWRUb1BhcnNlKCkgb3ZlcnJpZGU7Ci0gICAgCi0gICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShD
YWNoZWRSZXNvdXJjZSopOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNv
dXJjZSYpOwogICAgIHZvaWQgY3VlTG9hZFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGNvcnNQb2xp
Y3lQcmV2ZW50ZWRMb2FkKCk7CiAKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwgTG9hZGluZywgRmlu
aXNoZWQsIEZhaWxlZCB9OwotICAgIAorCiAgICAgVGV4dFRyYWNrTG9hZGVyQ2xpZW50JiBtX2Ns
aWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViVlRUUGFyc2VyPiBtX2N1ZVBhcnNlcjsKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0VHJhY2s+IG1fcmVzb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCAzMzMyZTBjNWJiZTg5ZmZjMDlmMzZkNTk3YmZhNWMzMDRjMzhhOWU5Li45NTBhZTQzNGE5ZDQz
OGI3OGFkZmI3YmU0Y2QwZGU1OWVlMzUxNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+ZGF0YVJlY2Vp
dmVkKHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywg
ZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZGlyZWN0Q291bnQ7IGkrKykgewogICAgICAgICBSZWRp
cmVjdFBhaXIgcmVkaXJlY3QgPSBtX3JlZGlyZWN0Q2hhaW5baV07CiAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KHJlZGlyZWN0Lm1fcmVxdWVzdCk7Ci0gICAgICAgIGNsaWVudC0+cmVk
aXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdC5tX3JlZGlyZWN0UmVzcG9uc2Up
OworICAgICAgICBjbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIHJlcXVlc3QsIHJlZGly
ZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NSwxMiArMTQ1LDEyIEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICAg
ICAgICAgIEFTU0VSVCghdmFsaWRhdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgICAgICAgICByZXNw
b25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNoZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKHRoaXMsIHJlc3BvbnNl
KTsKKyAgICAgICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSk7CiAg
ICAgfQogICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1f
ZGF0YSkKLSAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQodGhpcywgbV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIG1f
ZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAg
ICAgICAgcmV0dXJuOwogICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoY2xpZW50KTsK
QEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIGlmICghcmVz
cG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICAgICAgd2hpbGUgKENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgICAgICBjLT5yZWRpcmVj
dFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgIGMtPnJlZGly
ZWN0UmVjZWl2ZWQoKnRoaXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsKICAgICAgICAgbV9yZWRpcmVj
dENoYWluLmFwcGVuZChSZWRpcmVjdFBhaXIocmVxdWVzdCwgcmVzcG9uc2UpKTsKICAgICB9CiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQocmVxdWVzdCwgcmVzcG9uc2UpOwpA
QCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBDYWNoZWRSZXNvdXJj
ZTo6cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAo
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+cmVzcG9u
c2VSZWNlaXZlZCh0aGlzLCBtX3Jlc3BvbnNlKTsKKyAgICAgICAgYy0+cmVzcG9uc2VSZWNlaXZl
ZCgqdGhpcywgbV9yZXNwb25zZSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmF3UmVzb3VyY2U6OnNob3Vs
ZENhY2hlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9j
bGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQo
KSkgewotICAgICAgICBpZiAoIWMtPnNob3VsZENhY2hlUmVzcG9uc2UodGhpcywgcmVzcG9uc2Up
KQorICAgICAgICBpZiAoIWMtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZwogewogICAgIENhY2hlZFJlc291
cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAg
ICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAg
IGMtPmRhdGFTZW50KHRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICAg
ICAgYy0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0K
IAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6c3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNv
dXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudC5oCmluZGV4IDFlMGM5ZmRmOTE4NGM5NDVhZmNlMjljZWQ4ZTllMDlhNmFh
YjNhM2IuLjgwMzBmMmUxYWMwMmZhNzI2MzlkMTZmMTk4ZjQxODhlMmNiZWE0OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dC5oCkBAIC0zNiwxMyArMzYsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJj
ZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gUmF3UmVzb3VyY2VUeXBlOyB9CiAg
ICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0
YVNlbnQoQ2FjaGVkUmVzb3VyY2UqLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNo
YXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChDYWNoZWRS
ZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogLyogZGF0YSAq
LywgaW50IC8qIGxlbmd0aCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyB9CiAjaWYgVVNFKFNPVVApCi0gICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJl
YWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLyogcmVxdWVzdGVkU2l6ZSAqLywgc2l6
ZV90JiAvKiBhY3R1YWxTaXplICovKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBj
aGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UmLCBzaXplX3QgLyogcmVx
dWVzdGVkU2l6ZSAqLywgc2l6ZV90JiAvKiBhY3R1YWxTaXplICovKSB7IHJldHVybiBudWxscHRy
OyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDExYmZkZmYwOTU1MTQ5ZmViZGZiZjc3NjNlOTZkNDVhYjg4YTJk
OTcuLmFlNmU2N2MzNjI3YmMxZWFhYWJhZjk1MDg0ZDc4ZTAxNTE3YzNjZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzcxLDcgKzM3
MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KCkKIAogICAgIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRz
KTsKICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0
KCkpCi0gICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAgICAgIGNsaWVu
dC0+bm90aWZ5RmluaXNoZWQoKnRoaXMpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjphZGRE
YXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiAgICAg
aWYgKG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2sucmVtb3ZlKGNsaWVudCkpCiAgICAgICAgIG1f
Y2xpZW50cy5hZGQoY2xpZW50KTsKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRz
TG9hZCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgICAgICBj
bGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzKTsKIH0KIAogYm9vbCBDYWNoZWRSZXNvdXJjZTo6
YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKaW5kZXggMGI0
NTQzZDVhNTk3OWVjYzQyZjZkMjY0YjQ0MmU3NDkzMTNhNWM5ZC4uMTdjMzYxZDcxOTRlMDMzNjUw
NGMwNTc2YjM5OTAyOGFkYWE2MWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKQEAgLTIxLDkgKzIxLDcgQEAKICAgICBUaGlz
IGNsYXNzIHByb3ZpZGVzIGFsbCBmdW5jdGlvbmFsaXR5IG5lZWRlZCBmb3IgbG9hZGluZyBpbWFn
ZXMsIHN0eWxlIHNoZWV0cyBhbmQgaHRtbAogICAgIHBhZ2VzIGZyb20gdGhlIHdlYi4gSXQgaGFz
IGEgbWVtb3J5IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgogKi8KLQotI2lmbmRlZiBDYWNoZWRS
ZXNvdXJjZUNsaWVudF9oCi0jZGVmaW5lIENhY2hlZFJlc291cmNlQ2xpZW50X2gKKyNwcmFnbWEg
b25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDggKzM5LDggQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB2aXJ0dWFsIH5DYWNoZWRSZXNvdXJjZUNsaWVudCgpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNl
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYTUxIdHRwUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIEJhc2VSZXNvdXJjZVR5cGU7IH0KQEAgLTUz
LDUgKzUxLDMgQEAgcHJvdGVjdGVkOgogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggOWEwZTRhZWZkNTYy
N2Q4MDUxMGVjYTYwODk5ZDdjOWU4YjA2Zjc0NS4uMWQ4MmJkNzFiNDJiZDlmMDE5ZGMyMDQxZWZm
Y2NlODRiNzJmNmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVw
ZGF0ZURhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxl
IChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKLSAgICAgICAg
Y2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKHRoaXMpOworICAgICAg
ICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQog
CiB2b2lkIENhY2hlZFRleHRUcmFjazo6YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IGMyNDNmNDJh
YzlhNThmNmRmNTgwZjJmOGQ4ZDNhZGNmMzA5NWEyMTMuLjZlMzFhZWYxZDQwZDI0ZjJhYTRhNWNl
NWU4MGYwMGI4MGQzN2UxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuY3BwCkBAIC03OSwzMCArNzksMzAgQEAgdm9pZCBJY29uTG9hZGVyOjpzdG9wTG9hZGluZygp
CiAgICAgfQogfQogCi12b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKK3ZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
ICAgICAvLyBJZiB3ZSBnb3QgYSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVz
cG9uc2UsIHRoZW4gbGV0cwogICAgIC8vIGlnbm9yZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBk
ZWNvZGUgdGhlIGVycm9yIHBhZ2UgYXMgYW4gaWNvbi4KLSAgICBhdXRvKiBkYXRhID0gcmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgaW50IHN0YXR1cyA9IHJlc291cmNlLT5yZXNwb25z
ZSgpLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgYXV0byogZGF0YSA9IG1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCk7CisgICAgaW50IHN0YXR1cyA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0
cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVz
ID4gMjk5KSkKICAgICAgICAgZGF0YSA9IG51bGxwdHI7CiAKICAgICBzdGF0aWMgY29uc3QgY2hh
ciBwZGZNYWdpY051bWJlcltdID0gIiVQREYiOwogICAgIHN0YXRpYyB1bnNpZ25lZCBwZGZNYWdp
Y051bWJlckxlbmd0aCA9IHNpemVvZihwZGZNYWdpY051bWJlcikgLSAxOwogICAgIGlmIChkYXRh
ICYmIGRhdGEtPnNpemUoKSA+PSBwZGZNYWdpY051bWJlckxlbmd0aCAmJiAhbWVtY21wKGRhdGEt
PmRhdGEoKSwgcGRmTWFnaWNOdW1iZXIsIHBkZk1hZ2ljTnVtYmVyTGVuZ3RoKSkgewotICAgICAg
ICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gSWdub3Jp
bmcgaWNvbiBhdCAlcyBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBQREYiLCByZXNvdXJjZS0+
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coSWNvbkRhdGFiYXNl
LCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gSWdub3JpbmcgaWNvbiBhdCAlcyBiZWNh
dXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBQREYiLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAgIExP
RyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5n
IGljb25VUkwgJXMgdG8gZGF0YWJhc2UiLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOwotICAgIG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLmNvbW1pdFRvRGF0YWJhc2Uo
cmVzb3VyY2UtPnVybCgpKTsKKyAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6Zmlu
aXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgbV9yZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIG1fZnJhbWUubG9hZGVy
KCkuaWNvbigpLmNvbW1pdFRvRGF0YWJhc2UobV9yZXNvdXJjZS0+dXJsKCkpOwogICAgIC8vIFNl
dHRpbmcgdGhlIGljb24gZGF0YSBvbmx5IGFmdGVyIGNvbW1pdHRpbmcgdG8gdGhlIGRhdGFiYXNl
IGVuc3VyZXMgdGhhdCB0aGUgZGF0YSBpcwogICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBpdCBk
b2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkp
LCBzaW5jZQogICAgIC8vIHRoZXJlIGlzIGEgcGFnZSBVUkwgcmVmZXJlbmNpbmcgaXQuCi0gICAg
aWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIHJlc291cmNlLT51cmwo
KS5zdHJpbmcoKSk7CisgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRh
dGEsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpKTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICBzdG9wTG9hZGluZygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDMwOTc1NTZlOWExMDk3
NWZhZjgxYWFiNmQwNTZkNzZkYjY1NjhkODQuLmZlYjAzNzAyMTY5NDZjZGQ5YjM4N2QzNDliM2Iz
MzA2MThlMjY0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAg
LTIwLDExICsyMCwxMCBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEljb25Mb2Fk
ZXJfaAotI2RlZmluZSBJY29uTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgpAQCAtNDYsMTIgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJy
aWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAog
ICAgIEZyYW1lJiBtX2ZyYW1lOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBtX3Jlc291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA5MTJjMmJmZWRlODZmMTVmMmQ5MmIxMTMwMmIwNDFmZGNmMGQwM2I3Li5iOTlm
OWI2MTY0OGMzNjFjNGRlMDY2ZWMwYjI4MTE4ZjQ5ZjgzOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDksMTAgKzEw
OSw5IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSgpCiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQordm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJB
TShyZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1f
cmVzb3VyY2UpOwogCiAgICAgaW50IHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7
CiAgICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpIHsKQEAg
LTEyNCwxNCArMTIzLDE0IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6cmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiwgaW50KQordm9pZCBXZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBjaGFyKiwgaW50KQogewogICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNl
KHJlc291cmNlKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAg
ICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKKyAgICBpZiAocmVzb3Vy
Y2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewogICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0v
MTM5ODc0MTc+IFNldCB0aGUgY29udGVudFR5cGUgb2YgdGhlIGNvbnRlbnRJbmZvcm1hdGlvblJl
cXVlc3QgdG8gYW4gZW1wdHkKICAgICAgICAgLy8gc3RyaW5nIHRvIHRyaWdnZXIgQVZBc3NldCdz
IHBsYXlhYmxlIHZhbHVlIHRvIGNvbXBsZXRlIGxvYWRpbmcuCiAgICAgICAgIC8vIEZJWE1FOiBp
ZiAoW21fYXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdICYmICFbW21f
YXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdIGNvbnRlbnRUeXBlXSkK
QEAgLTE0OCw5ICsxNDcsOSBAQCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBzdG9wTG9hZGluZygpOwog
fQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0aFJl
c291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlcjo6ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogewotICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyLmgKaW5kZXggZWFlYzg4MWM3MDdlMzdjZGQxOWQ2NGZjMjdlMDA0YmRiYzA4YTUz
MS4uYTBmMGRkOGIwODQwMDNlZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyX2gKLSNkZWZpbmUgV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikgJiYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogCkBAIC01Niwx
MiArNTUsMTIgQEAgcHVibGljOgogICAgIENhY2hlZFJhd1Jlc291cmNlKiByZXNvdXJjZSgpOwog
CiBwcml2YXRlOgotICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50Ci0gICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOworICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CisgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hh
ciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSopOworICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKIAogICAgIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdFJlZik7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG1fcGFyZW50
OwpAQCAtNzEsNiArNzAsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pICYmIFVTRShBVkZPVU5EQVRJT04pIAotCi0jZW5kaWYgLy8gV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyX2gKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IDkzMmMxMWYyYTY2YWQ5Yzg1MDIwOTMyNzkxYThiNjgxZDRkYTljN2IuLjdkN2Y3NzM2ZTgw
N2Y1ZDEwMmMyNjNhNGZkMTIwOTliZGM0YWI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXJfaAotI2RlZmluZSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJfaAorI3By
YWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmIEhB
VkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkKIApAQCAtNTcsMTEgKzU2LDExIEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0
IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBm
dWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBh
cmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKik7CiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CkBAIC03MSw2ICs3MCw0IEBAIHByaXZh
dGU6CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikg
Ci0KLSNlbmRpZiAvLyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJfaAorI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA3NjRiMGRmMDVmMzliYjY4OWIx
ZDAwMzllNzhkOGU0YzEwMDQyZWNlLi42ZTExODEzMzNkMjA3YTc2ODEyYjBhMGEwMWE1YTlmZWE3
ZjQzMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCkBAIC0xMDYsMTAgKzEwNiw5IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyOjppbnZhbGlkYXRlKCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlKTsKLSAgICBB
U1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgaW50IHN0YXR1cyA9IHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwgMjAwIHx8IHN0
YXR1cyA+IDI5OSkpIHsKQEAgLTEyMiw3ICsxMjEsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0
CiAKICAgICAgICAgW2NvbnRlbnRJbmZvIHNldENvbnRlbnRUeXBlOnV0aV07CiAKLSAgICAgICAg
UGFyc2VkQ29udGVudFJhbmdlJiBjb250ZW50UmFuZ2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5j
b250ZW50UmFuZ2UoKTsKKyAgICAgICAgUGFyc2VkQ29udGVudFJhbmdlJiBjb250ZW50UmFuZ2Ug
PSBtX3Jlc291cmNlLT5yZXNwb25zZSgpLmNvbnRlbnRSYW5nZSgpOwogICAgICAgICBbY29udGVu
dEluZm8gc2V0Q29udGVudExlbmd0aDpjb250ZW50UmFuZ2UuaXNWYWxpZCgpID8gY29udGVudFJh
bmdlLmluc3RhbmNlTGVuZ3RoKCkgOiByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKV07
CiAgICAgICAgIFtjb250ZW50SW5mbyBzZXRCeXRlUmFuZ2VBY2Nlc3NTdXBwb3J0ZWQ6WUVTXTsK
IApAQCAtMTMzLDIwICsxMzIsMjAgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hh
ciosIGludCkKIHsKICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShyZXNvdXJjZSk7CiB9
CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIGlmIChyZXNvdXJjZS0+
bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgeworICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JD
YW5jZWxlZCgpKSB7CiAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRo
ZSBjb250ZW50VHlwZSBvZiB0aGUgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0
eQogICAgICAgICAvLyBzdHJpbmcgdG8gdHJpZ2dlciBBVkFzc2V0J3MgcGxheWFibGUgdmFsdWUg
dG8gY29tcGxldGUgbG9hZGluZy4KICAgICAgICAgaWYgKFttX2F2UmVxdWVzdC5nZXQoKSBjb250
ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSAmJiAhW1ttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5m
b3JtYXRpb25SZXF1ZXN0XSBjb250ZW50VHlwZV0pCiAgICAgICAgICAgICBbW21fYXZSZXF1ZXN0
LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdIHNldENvbnRlbnRUeXBlOkAiIl07CiAK
LSAgICAgICAgTlNFcnJvciogZXJyb3IgPSByZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpID8gcmVz
b3VyY2UtPnJlc291cmNlRXJyb3IoKS5uc0Vycm9yKCkgOiBuaWw7CisgICAgICAgIE5TRXJyb3Iq
IGVycm9yID0gcmVzb3VyY2UuZXJyb3JPY2N1cnJlZCgpID8gcmVzb3VyY2UucmVzb3VyY2VFcnJv
cigpLm5zRXJyb3IoKSA6IG5pbDsKICAgICAgICAgW21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExv
YWRpbmdXaXRoRXJyb3I6ZXJyb3JdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZ1bGZpbGxSZXF1
ZXN0V2l0aFJlc291cmNlKHJlc291cmNlKTsKQEAgLTE1NSwyMCArMTU0LDE5IEBAIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlKTsK
LSAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3Rd
OwogICAgIGlmICghZGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNoYXJlZEJ1
ZmZlciogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZl
ciogZGF0YSA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm47CiAKICAgICBOU1VJbnRlZ2VyIHJlc3BvbnNlT2Zmc2V0ID0gMDsKLSAg
ICBQYXJzZWRDb250ZW50UmFuZ2UgY29udGVudFJhbmdlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCku
Y29udGVudFJhbmdlKCk7CisgICAgUGFyc2VkQ29udGVudFJhbmdlIGNvbnRlbnRSYW5nZSA9IG1f
cmVzb3VyY2UtPnJlc3BvbnNlKCkuY29udGVudFJhbmdlKCk7CiAgICAgaWYgKGNvbnRlbnRSYW5n
ZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJlc3BvbnNlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oY29udGVudFJhbmdlLmZpcnN0Qnl0ZVBvc2l0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyYzgzNDBlNWZiYWQzYjFhM2YzMjE3YjFi
YjQ2NGIzNmQxNWE5MWNhLi5lY2FmOTkzYzk5YmVhM2JhNWUxZGY4YjE1ZGMyOGQwZDkzZWRhM2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTMzOCwxNCAr
MzM4LDE0IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VT
aXplQ2hhbmdlVHlwZSBpbWFnZVNpemVDaGFuZ2UsIGNvCiAgICAgY29udGVudENoYW5nZWQoSW1h
Z2VDaGFuZ2VkKTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIG5ld0ltYWdlKQordm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIG5ld0ltYWdlKQogewogICAgIGlmIChkb2N1bWVudEJlaW5nRGVzdHJveWVk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludmFsaWRhdGVCYWNrZ3JvdW5kT2JzY3VyYXRp
b25TdGF0dXMoKTsKIAotICAgIGlmIChuZXdJbWFnZSA9PSBpbWFnZVJlc291cmNlKCkuY2FjaGVk
SW1hZ2UoKSkgeworICAgIGlmICgmbmV3SW1hZ2UgPT0gaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZElt
YWdlKCkpIHsKICAgICAgICAgLy8gdGVsbCBhbnkgcG90ZW50aWFsIGNvbXBvc2l0aW5nIGxheWVy
cwogICAgICAgICAvLyB0aGF0IHRoZSBpbWFnZSBpcyBkb25lIGFuZCB0aGV5IGNhbiByZWZlcmVu
Y2UgaXQgZGlyZWN0bHkuCiAgICAgICAgIGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGJkMDVkOTMxYWI5NjZhNzFj
OTZlN2ViMTUwMDZlOWE3NDAyNmNkZGUuLmUyMTI1NWIyYTEyMjI4ZmUxMGYxNTllZmEzYTQ3MTc4
NzdlNmVmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC0yMiw4
ICsyMiw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgUmVuZGVySW1hZ2VfaAotI2RlZmluZSBSZW5k
ZXJJbWFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgpAQCAtMTA1LDcgKzEwNCw3IEBAIHByaXZh
dGU6CiAKICAgICBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIGZpbmFsOwor
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKICAgICBib29s
IG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBmaW5hbDsKIAogICAgIGJvb2wgYm94
U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3Qg
ZmluYWw7CkBAIC0xMzcsNSArMTM2LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckltYWdlLCBp
c1JlbmRlckltYWdlKCkpCi0KLSNlbmRpZiAvLyBSZW5kZXJJbWFnZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCmluZGV4IDU2YjEz
OGQ4OTljNThjNmE5YjZjZDhkZGJlZWIzZTA4OTdjMjA0NDcuLjA4M2RkMDhhZGI0ZjI5MjZkMzU4
YjU1OGVlNjcxNTJkYzhlYWZjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCkBAIC04MywxNSArODMsMTUgQEAgUmVuZGVyTGF5
ZXI6OkZpbHRlckluZm86On5GaWx0ZXJJbmZvKCkKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Rmls
dGVySW5mbzo6c2V0UmVuZGVyZXIoUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiYmIHJlbmRl
cmVyKQoteyAKLSAgICBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IAoreworICAgIG1fcmVuZGVyZXIg
PSByZW5kZXJlcjsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQordm9pZCBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQogewogICAgIG1fbGF5ZXIuZmlsdGVyTmVlZHNS
ZXBhaW50KCk7CiB9Ci0gICAgCisKIHZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86OnVwZGF0
ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9u
cykKIHsKICAgICByZW1vdmVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5kZXggZTY4ODkxZDFi
NDk2MDMwZTViY2Q1NDAxZDNkODVjODhhY2VhMzZlYy4uZDBhY2QzY2Y1ZmJiMTJhMzEyNTkzYzA5
Y2MxYjRhYzgwNzAyNThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlckluZm8uaApAQCAtMjgsOCArMjgsNyBAQAogICogU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBSZW5kZXJMYXllckZpbHRlckluZm9faAotI2RlZmluZSBSZW5kZXJMYXll
ckZpbHRlckluZm9faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCkBAIC01NSwxNSAr
NTQsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IExheW91dFJlY3QmIGRpcnR5U291cmNlUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlydHlTb3VyY2VSZWN0OyB9CiAgICAgdm9pZCBleHBhbmREaXJ0
eVNvdXJjZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgeyBtX2RpcnR5U291cmNlUmVjdC51
bml0ZShyZWN0KTsgfQogICAgIHZvaWQgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKSB7IG1fZGlydHlT
b3VyY2VSZWN0ID0gTGF5b3V0UmVjdCgpOyB9Ci0gICAgCisKICAgICBGaWx0ZXJFZmZlY3RSZW5k
ZXJlciogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CiAgICAg
dm9pZCBzZXRSZW5kZXJlcihSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+JiYpOwotICAgIAor
CiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKTsKICAgICB2b2lkIHJlbW92ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAg
c3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVy
SW5mbz4+JiBtYXAoKTsKIApAQCAtNzcsNSArNzYsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRkNTkyOTEwMzg4NzA2
NTAxZTExMjhjYjRmNzFlM2IzNzEwNzczYmMuLjM2YzllMGM2Yzc0YjU2MTQxMWE0N2E0NzM0NjU5
NzMxNmIzMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApA
QCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiAgICAgICAgIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2Vz
KCk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKikKK3ZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJikKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAppbmRleCBhNTg1ZjNiYWM4MTQ4NDdiNmIx
MjA3YmNkNWZlOWM2YzE3NjY0ZTg2Li5iM2NmMmM5NDA4ZmJjNWFiNzJkNGU2MmFjZmYyNGVkZGE2
NWE0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaApAQCAtMTgsOCAr
MTgsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBT
VkdGRUltYWdlRWxlbWVudF9oCi0jZGVmaW5lIFNWR0ZFSW1hZ2VFbGVtZW50X2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oIgpAQCAtNTEsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikg
b3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKQEAgLTczLDUgKzcyLDMgQEAgcHJpdmF0
ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggYTA0N2FkNjg4M2JlOGE4NThjNWRmNWNmNGIzMDE3OTFj
YmNjYzA4ZC4uZjI4NGVhODM4YTk2YmQzNjUzMjc0OTFiOWVhYWZjYjg1MGMwMDY4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNTM1LDEyICs1MzUsMTIgQEAgYm9vbCBT
VkdVc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1cm4g
dGFyZ2V0Q2xvbmUgJiYgdGFyZ2V0Q2xvbmUtPmhhc1JlbGF0aXZlTGVuZ3RocygpOwogfQogCi12
b2lkIFNWR1VzZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogewogICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7Ci0gICAgaWYgKHJlc291cmNl
LT5lcnJvck9jY3VycmVkKCkpCisgICAgaWYgKHJlc291cmNlLmVycm9yT2NjdXJyZWQoKSkKICAg
ICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBlbHNlIGlmICghcmVzb3VyY2UtPndhc0NhbmNlbGVkKCkp
CisgICAgZWxzZSBpZiAoIXJlc291cmNlLndhc0NhbmNlbGVkKCkpCiAgICAgICAgIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmRpc3BhdGNoTG9hZEV2ZW50KHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCBmNGYzN2Y2Y2RmYTk5NDFhZGY0YWEzMTkyZjcx
ZjU0YzY0NDlmZTZmLi4xNjg4YjFiYWIxYThmODZiNTQyNjg5ZGQ2MTYyYTk5YTE0MmQyZjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTE5LDggKzE5LDcgQEAKICAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgU1ZHVXNlRWxlbWVudF9oCi0j
ZGVmaW5lIFNWR1VzZUVsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCkBA
IC03Miw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRIYXZlRmlyZWRMb2FkRXZlbnQo
Ym9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXZlRmlyZWRMb2FkRXZlbnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBUaW1lciogc3ZnTG9hZEV2ZW50VGltZXIoKSBvdmVycmlkZTsKLSAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgRG9jdW1lbnQqIGV4dGVy
bmFsRG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUV4dGVybmFsRG9jdW1lbnQoKTsK
QEAgLTk4LDUgKzk3LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDdlZmQ3NGRl
MDIxMmVmYTMxMmVhZjY3NDg4OWY3Yjg5ZjlkN2EwNTguLjE5NTU2ZDJlOTcxZDRkNzRjYmQ0N2Rh
ZGY0ZmEwZmNkZjI3ZjFiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yMjgsOSArMjI4LDkgQEAgdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogICAgIG1feG1sRXJyb3JzLT5pbnNlcnRF
cnJvck1lc3NhZ2VCbG9jaygpOwogfQogCi12b2lkIFhNTERvY3VtZW50UGFyc2VyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCit2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgdW51c2VkUmVzb3VyY2UpCiB7
Ci0gICAgQVNTRVJUX1VOVVNFRCh1bnVzZWRSZXNvdXJjZSwgdW51c2VkUmVzb3VyY2UgPT0gbV9w
ZW5kaW5nU2NyaXB0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHVudXNlZFJlc291cmNlLCAmdW51c2Vk
UmVzb3VyY2UgPT0gbV9wZW5kaW5nU2NyaXB0KTsKICAgICBBU1NFUlQobV9wZW5kaW5nU2NyaXB0
LT5hY2Nlc3NDb3VudCgpID4gMCk7CiAKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
bV9wZW5kaW5nU2NyaXB0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuaAppbmRleCA3MWQ2NjlmNWNmNzA0Y2M0NzZmNzA4Yzc3ZDIzNDc1NTZh
MDEzOWJlLi4yOTE3NmRkMmNjNzRhZTM4YjdmNmE1NDM2ZjI2NjY4OGM3ZWMwMGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMDgsNyAr
MTA4LDcgQEAgY2xhc3MgVGV4dDsKICAgICAgICAgYm9vbCBzaG91bGRBc3NvY2lhdGVDb25zb2xl
TWVzc2FnZXNXaXRoVGV4dFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAgICAgLy8g
ZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgICAgICB2b2lkIGVuZCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289943</attachid>
            <date>2016-09-27 08:16:04 -0700</date>
            <delta_ts>2016-10-06 23:30:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162060-20160927171302.patch</filename>
            <type>text/plain</type>
            <size>75377</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNhOGIwMmRlNzhlMzRi
YTE5MWM0MDhkYzM0YTM0N2I1MmJiN2FjZC4uOTlmN2FjNDAyMjVkMjk1YjhmNjQ5OWU4MGVmZTE4
ZTU4Nzc0NDdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMCBAQAogMjAxNi0wOS0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3IgQ2FjaGVk
UmVzb3VyY2VDbGllbnQ6Om5vdGlmeUZpbmlzaGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAg
TWFraW5nIENhY2hlZFJlc291cmNlQ2xpZW50IGFuZCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBj
YWxsYmFja3MgdGFrZSBDYWNoZWRSZXNvdXJjZSByZWZlcmVuY2VzIGFuZCBub3QgcG9pbnRlcnMu
CisgICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSBDYWNoZWRSZXNvdXJjZSBwYXJhbWV0ZXIgaXMg
b25seSB1c2VkIGZvciBhc3NlcnRpb25zLgorICAgICAgICBSZW1vdmluZyB0aGF0IHBhcmFtZXRl
ciBtaWdodCBiZSBjb250ZW1wbGF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgVGhlIG9ubHkg
cmVhbCBjYXNlIGlzIGluIFJlbmRlckltYWdlLgorCisgICAgICAgIFJlbW92ZWQgdGhlIENhY2hl
ZFJlc291cmNlIHBhcmFtZXRlciBmcm9tIENvbnRlbnRGaWx0ZXIgbWV0aG9kcyBhcyBjb2RlIHdh
cyBjYWxsaW5nIHRoZXNlIG1ldGhvZHMgd2l0aCBudWxsIHZhbHVlcy4KKworICAgICAgICAqIGRv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVD
bGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5RmluaXNo
ZWQpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVNlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIv
SW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rTG9hZGVyOjp0cmlnZ2VyRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50Ojp0cmlnZ2VyRXZlbnRz
KToKKyAgICAgICAgKiBsb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaDoKKyAgICAg
ICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVzb3VyY2U6OnNob3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291
cmNlOjpkYXRhU2VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVy
KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9h
ZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRp
cmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpzaG91
bGRDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpk
aWRTZW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVNl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnJlc3BvbnNl
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnNo
b3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRB
ZGRDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6Om5vdGlmeUZpbmlzaGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xpZW50OjpkZXByZWNhdGVkRGlk
UmVjZWl2ZUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlRGF0
YSk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9zb3VwL0NhY2hlZFJhd1Jlc291cmNlU291
cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6RmlsdGVySW5mbzo6c2V0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OkZpbHRlckluZm86Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxE
b2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuaDoKKworMjAxNi0wOS0yNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKICAgICAgICAgQ2xlYW4tdXAgQ2FjaGVkSW1hZ2UgY29uc3RydWN0b3IKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjYwMQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4IDExZjEy
MDU4Nzc1MjcyNWZjZTg5NTMzNjBlZmQ0NjlmMGQ5YzcxMjkuLjg3MWY5ZDk5YzlhOTIyOTU5MmVh
MDI1ZTJlYzQyYmI2ZjExNzRlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNs
YXNzaWNTY3JpcHQuY3BwCkBAIC02NywxMCArNjcsOSBAQCBib29sIExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6d2FzQ2FuY2VsZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC0+d2Fz
Q2FuY2VsZWQoKTsKIH0KIAotdm9pZCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTG9hZGFibGVDbGFzc2ljU2NyaXB0
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJU
KHJlc291cmNlKTsKLSAgICBpZiAocmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0Nv
bnRyb2woKSkgeworICAgIGlmIChyZXNvdXJjZS5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3NDb250
cm9sKCkpIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1l
c3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENy
b3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZXJyb3Ig
PSBFcnJvciB7CiAgICAgICAgICAgICBFcnJvclR5cGU6OkNyb3NzT3JpZ2luTG9hZCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAppbmRleCBhZmRmMTUyNmRhYzE5
Nzc1MDMxNDYzZjkwZmQ1ZmMxZWVhNDdiNTY2Li5mZDM4Zjc3YWY3ZDM0NGI4OTMyOTEyZGEyOTkx
NWE3MmFkOWJkNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFz
c2ljU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Njcmlw
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTG9hZGFibGVDbGFz
c2ljU2NyaXB0KENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4mJiBjYWNoZWRTY3Jp
cHQpIDogbV9jYWNoZWRTY3JpcHQoV1RGTW92ZShjYWNoZWRTY3JpcHQpKSB7IH0KIAotICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwogICAgIE9wdGlvbmFsPEVycm9y
PiBtX2Vycm9yIHsgTnVsbG9wdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIu
Y3BwCmluZGV4IDNlNWY4MWM1MmY2MzMyNzhmM2E2NGZmNzlkMjA2YmNmZjdhNzNmYjMuLmU3Zjlm
ZWNiNDkxNjFhYzc2NDA0ZmU2ZTMxMjcyMGIxOTIxMjg3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUxvYWRlci5jcHAKQEAgLTczLDIxICs3MywyMiBAQCBTdHJpbmcgSFRNTEltYWdl
TG9hZGVyOjpzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyKSBjb25zdAogICAgIHJl
dHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAKLXZvaWQg
SFRNTEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit2b2lkIEhU
TUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQogewotICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlKCk7CisgICAgQVNTRVJUKGltYWdlKCkpOwor
ICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9ICppbWFnZSgpOwogCiAgICAgUmVmPEVsZW1l
bnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKICAgICBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQo
Y2FjaGVkSW1hZ2UpOwogCi0gICAgYm9vbCBsb2FkRXJyb3IgPSBjYWNoZWRJbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpIHx8IGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0g
NDAwOworICAgIGJvb2wgbG9hZEVycm9yID0gY2FjaGVkSW1hZ2UuZXJyb3JPY2N1cnJlZCgpIHx8
IGNhY2hlZEltYWdlLnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDA7CiAgICAgaWYg
KCFsb2FkRXJyb3IpIHsKICAgICAgICAgaWYgKCFlbGVtZW50KCkuaW5Eb2N1bWVudCgpKSB7CiAg
ICAgICAgICAgICBKU0M6OlZNJiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKTsKICAg
ICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgICAgICAgICAgLy8gRklY
TUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1OTUKLSAgICAgICAgICAgIHZtLmhlYXAuZGVwcmVjYXRl
ZFJlcG9ydEV4dHJhTWVtb3J5KGNhY2hlZEltYWdlLT5lbmNvZGVkU2l6ZSgpKTsKKyAgICAgICAg
ICAgIHZtLmhlYXAuZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KGNhY2hlZEltYWdlLmVuY29k
ZWRTaXplKCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuaAppbmRleCA5MDBjMzRiM2Y3YzYyMmFhYTRhYmQzNTc1NDAyNjAxNmViZWNhNzdhLi5h
ODE1ODlhMGE4M2JiNjhiMTcxMzlhMTNkYjIwNTNhZGI3OThlM2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlTG9hZGVyLmgKQEAgLTIwLDggKzIwLDcgQEAKICAqCiAgKi8KIAotI2lmbmRl
ZiBIVE1MSW1hZ2VMb2FkZXJfaAotI2RlZmluZSBIVE1MSW1hZ2VMb2FkZXJfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgogCkBAIC0zNSw5ICszNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNv
dXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDkwYTNmZWVjMTA1ZjUwODY5
YTIwYmViZGI4YWY3YmU2NjAxMmRhMDMuLjlhYjQ5Mjk1NzEyZjk3NWE0OGViYzg0ZTYzYzkxYjI5
MDVmYTc2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTEz
Myw5ICsxMzMsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3Vy
Y2UoKQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKIH0KIAotYm9vbCBDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX21h
aW5SZXNvdXJjZSk7CiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWREb2N1bWVudExv
YWRlciB7IG1fZG9jdW1lbnRMb2FkZXIgfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpG
aWx0ZXJpbmcpIHsKQEAgLTE0OCw0MiArMTQ3LDQxIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25z
CiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKLWJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07CiAK
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZy
b20gPCVzPi5cbiIsIGxlbmd0aCwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2Vp
dmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVu
dEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIm
IGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRh
LCBsZW5ndGgpOwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
QWxsb3dlZCkKLSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKnJlc291cmNlKTsKKyAg
ICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkOwogfQogCi1ib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVl
QWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNT
RVJUKHJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIFJlZjxEb2N1bWVudExvYWRl
cj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07CiAKLSAgICBp
ZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVy
cm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29u
dGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8JXM+Llxu
IiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBt
YWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAg
IGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAgICAgICAgIH0pOwogCiAgICAg
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAgICAgICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OkFsbG93ZWQ7Ci0gICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCpyZXNv
dXJjZSk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNvdXJjZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKQEAg
LTI1MCw3ICsyNDgsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpB
bGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1
ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291
cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKCZyZXNv
dXJjZSwgcmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKHJlc291cmNlLCByZXNvdXJjZUJ1
ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgK
aW5kZXggYTg1MGMxYmVjODE3OTc3YjdmNWJjNWQyODdmZWI5ZTc3MzRhMmRjYS4uOGI0ODE2NmI1
OGMzZDFjZDU5NzBkNThkYTI3YjYxMmI4NGJiODFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5oCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BGaWx0
ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAogICAgIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9v
bCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLSAgICBib29sIGNv
bnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgIGJvb2wgY29u
dGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKTsKKyAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYpOwogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVz
dChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJj
ZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDBmNmMxMjk5YjAzYTYyODJkYzA4ZTBhZGZlM2U2ZmM0
MjM0NGZmZTIuLjA4MWM1YmIyY2U4ZTljYmY1YTkwZDY3NzRjZDlmYzQ5MTk3OTMzNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvCiAgICAgbG9h
ZGVyLnByZWZsaWdodFN1Y2Nlc3MoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCit2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
IHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZy
ZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAobV9yZXNvdXJjZS0+bG9hZEZhaWxlZE9y
Q2FuY2VsZWQoKSkgewogICAgICAgICBSZXNvdXJjZUVycm9yIHByZWZsaWdodEVycm9yID0gbV9y
ZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpOwogICAgICAgICBwcmVmbGlnaHRFcnJvci5zZXRUeXBl
KFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCmluZGV4IDAyMjQ1MWY3
OGQ0MWMzZGJhZDk4MDU2ZmQ0NGExMDc5YWJkNTBhZWEuLjY5NzFjMzFmOTZiMGY4MmRhZDdjNmQ1
MTc1MzIzNDA3ODlkNzY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgc3RhdGljIHZvaWQgaGFuZGxlTG9hZGlu
Z0ZhaWx1cmUoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9u
c2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IDk3ZDg3NTU4MjY4OWU2YzJlYmIxNTQ1N2UxYTE1YWRlMDdk
ZWYxMTIuLmUxYTg4OGI4MDI0ZDY3ZjVhZDVhYjViMGI0NGIwNjIxMzcwODUzMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMzczLDE0ICszNzMsMTQgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNMb2Fk
aW5nTWFpblJlc291cmNlKCkgfHwgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSB8fCAh
bV9wbHVnSW5TdHJlYW1Mb2FkZXJzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBEb2N1bWVu
dExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJjZSkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9t
YWluUmVzb3VyY2UgPT0gcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1f
bWFpblJlc291cmNlID09ICZyZXNvdXJjZSk7CiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlKTsK
ICAgICBpZiAoIW1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIW1fbWFpblJlc291
cmNlLT53YXNDYW5jZWxlZCgpKSB7CiAgICAgICAgIGZpbmlzaGVkTG9hZGluZyhtX21haW5SZXNv
dXJjZS0+bG9hZEZpbmlzaFRpbWUoKSk7CkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KCkKICAgICBpZiAocmVzcG9uc2Uu
dXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9y
ZXF1ZXN0LnVybCgpLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCkpOwog
Ci0gICAgcmVzcG9uc2VSZWNlaXZlZCgwLCByZXNwb25zZSk7CisgICAgcmVzcG9uc2VSZWNlaXZl
ZChyZXNwb25zZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0RGF0YUxvYWRUaW1l
cigpCkBAIC00OTIsOSArNDkyLDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3Rp
dHV0ZURhdGFMb2FkU29vbigpCiAgICAgICAgIHN0YXJ0RGF0YUxvYWRUaW1lcigpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKQordm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCByZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICB3aWxsU2VuZFJl
cXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKQEAgLTYzMiwxNCArNjMyLDE5
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JD
b250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoCiAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWQoZnJhbWVMb2FkZXItPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwogfQogCi12b2lkIERv
Y3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIERvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9tYWlu
UmVzb3VyY2UgPT0gJnJlc291cmNlKTsKKyAgICByZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsK
K30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0g
ICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
UmVzcG9uc2VSZWNlaXZlZChyZXNvdXJjZSwgcmVzcG9uc2UpKQorICAgIGlmIChtX2NvbnRlbnRG
aWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
cmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsIG1fbWFpblJlc291cmNlID09IHJlc291cmNlKTsKICAgICBSZWY8RG9jdW1lbnRM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIGJvb2wgd2lsbExvYWRGYWxsYmFjayA9
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNl
KHJlcXVlc3QoKSwgcmVzcG9uc2UpOwogCkBAIC04MjEsNyArODI2LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkK
ICAgICBpZiAoIWlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiBp
c0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAgICAgICBhdXRvIGNvbnRlbnQgPSBtX3N1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC0+c2l6
ZSgpKQotICAgICAgICAgICAgZGF0YVJlY2VpdmVkKG51bGxwdHIsIGNvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRhdGFSZWNlaXZlZChjb250ZW50LT5kYXRh
KCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2Uo
KSkKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZygwKTsKICAgICB9CkBAIC05MjksMTYgKzkz
NCwyMSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoKQogICAgIG1fd3JpdGVyLmFkZERhdGEoYnl0ZXMsIGxlbmd0aCk7CiB9
CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CisgICAgZGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7Cit9CisK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
cmVzb3VyY2UsIGRhdGEsIGxlbmd0aCkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9j
b250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgogCiAgICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChs
ZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fbWFpblJl
c291cmNlKTsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwogCiAgICAgLy8gVGhl
cmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hl
ZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAppbmRleCBiZmQ4Nzg3ZTFjYzg0MWRjZTMxY2Y0OTA5YTNiYzM3MjhmOGU4MjM1
Li5jMzQ2ZmVjZDZkZDIyYzA3ZDU4ZGFhNDgyMTc0MWE5Y2E2MjUzZTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzE2LDEwICszMTYsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
KGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJp
ZGU7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisKKyAgICAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAg
ICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDdhYzI1ZjRjNjRhNzc4YTQxNGFl
NmZhNjI5Yzg2ZTgxZDRkYTEyNjEuLmE2YzBmMDVkMzU4MTY0ZmI2NmVhZjZiN2NiNDAwNDlkYzM5
ZTUyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC0yMTYsMTAgKzIxNiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVw
b3J0Q3Jvc3NPcmlnaW5SZXNvdXJjZVNoYXJpbmdFcnJvcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JgogICAgIGNsaWVudC5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgdXJsLCAiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCkpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJl
Y3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmPERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgaWYgKCFpc0Fs
bG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVj
ZWl2ZWQ6Ok5vIDogQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2
ZWQ6OlllcykpIHsKQEAgLTI2MSwxNiArMjYxLDE2IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3Vy
CiAgICAgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCkpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVNlbnQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQordm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRhdGFTZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsK
ICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291
cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJj
ZSA9PSBtX3Jlc291cmNlKTsKICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0
b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVzb3VyY2UtPmlkZW50aWZp
ZXIoKSwgcmVzcG9uc2UsIG1fcmVzb3VyY2UtPnJlc3BvbnNlVGFpbnRpbmcoKSk7CiB9CiAKQEAg
LTI5Miw5ICsyOTIsOSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIH0KIH0KIAotdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBkaWRSZWNlaXZlRGF0YShtX3Jl
c291cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCkBAIC0zMDUsMTAg
KzMwNSwxMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
dW5zaWduZWQgbG9uZywgY29uc3QgY2hhciogZGF0YSwgaQogICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBpZiAobV9yZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpKQogICAgICAgICBkaWRGYWlsKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCA3MDZhZTAyNmM5YTAwNmFhMGQ5MWUyMjZi
YmE1NzQxODU5ZGY0MDRmLi4wZmYyOTBkODI1NjM4M2EwNzFiZmRmMWY4ZGQxYmU3NjhlZmU0ZTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCkBAIC03NywxMSArNzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGNsZWFyUmVzb3VyY2UoKTsKIAogICAgICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAot
ICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlKiwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nKTsKICAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IGMx
YWMzYmU0MjY1MWZiMGZlYmYxYWMyZDIwZDNmNzY3NDZmYzgyMzEuLjQ4OTQwNWQyYmE0NjUzYWVj
ZjM5Nzg2OTUzNmE1ZGIyZDY4Mjg1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtMjcwLDEwICsyNzAsMTAgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKQogICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CiB9
CiAKLXZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3ZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9mYWlsZWRMb2FkVVJMLmlzRW1wdHkoKSk7Ci0gICAg
QVNTRVJUKHJlc291cmNlID09IG1faW1hZ2UuZ2V0KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX2ltYWdlLmdldCgpKTsKIAogICAgIG1faW1hZ2VDb21wbGV0
ZSA9IHRydWU7CiAgICAgaWYgKCFoYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCkpCkBAIC0yODIs
NyArMjgyLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQogICAgIGlmICghbV9oYXNQZW5kaW5nTG9hZEV2ZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAocmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRy
b2woKSkgeworICAgIGlmIChtX2ltYWdlLT5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3NDb250cm9s
KCkpIHsKICAgICAgICAgY2xlYXJJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZl
bnQoKTsKIAogICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gdHJ1ZTsKQEAgLTI5OSw3
ICsyOTksNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocmVzb3VyY2Ut
Pndhc0NhbmNlbGVkKCkpIHsKKyAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkgewogICAg
ICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsKICAgICAgICAgLy8gT25seSBjb25z
aWRlciB1cGRhdGluZyB0aGUgcHJvdGVjdGlvbiByZWYtY291bnQgb2YgdGhlIEVsZW1lbnQgaW1t
ZWRpYXRlbHkgYmVmb3JlIHJldHVybmluZwogICAgICAgICAvLyBmcm9tIHRoaXMgZnVuY3Rpb24g
YXMgZG9pbmcgc28gbWlnaHQgcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGlzIEltYWdl
TG9hZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCA1NjYwNWI4MWVhOGY5
ZDU4NzdhMzljZmExZTJiMGNmYTZjNGRhZjlmLi43NzE3NjY3ZjY3NzBkZTc0NjNiNDg2MGEwZTcw
ODRmYzUwNzkxMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaApAQCAtMjAsOCAr
MjAsNyBAQAogICoKICAqLwogCi0jaWZuZGVmIEltYWdlTG9hZGVyX2gKLSNkZWZpbmUgSW1hZ2VM
b2FkZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCkBAIC03Myw3ICs3Miw3IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKLSAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpID0gMDsKQEAgLTEwNyw1ICsxMDYs
MyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAppbmRleCA2M2U5OWM1NTRiNDI4YWI3ODQ1M2YwYTAzNDdjZTdhOTA4YmFjZDA0Li4w
OGQ2MDFmMDliZDIwNDI2Yjk4NjI2MGU0ZmU4NDQzNWE5NWViMGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC02NSwxOSArNjUsMTkgQEAgTGlua0xvYWRlcjo6fkxpbmtM
b2FkZXIoKQogICAgICAgICBtX3ByZWxvYWRSZXNvdXJjZUNsaWVudC0+Y2xlYXIoKTsKIH0KIAot
dm9pZCBMaW5rTG9hZGVyOjp0cmlnZ2VyRXZlbnRzKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiB7Ci0gICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCisgICAg
aWYgKHJlc291cmNlLmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgbV9jbGllbnQubGlua0xvYWRp
bmdFcnJvcmVkKCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudC5saW5rTG9hZGVkKCk7CiB9
CiAKLXZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQordm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9jYWNoZWRMaW5rUmVzb3Vy
Y2UuZ2V0KCkgPT0gcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2Fj
aGVkTGlua1Jlc291cmNlLmdldCgpID09ICZyZXNvdXJjZSk7CiAKLSAgICB0cmlnZ2VyRXZlbnRz
KG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgpKTsKKyAgICB0cmlnZ2VyRXZlbnRzKCptX2NhY2hl
ZExpbmtSZXNvdXJjZSk7CiAKICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwogICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5oCmluZGV4IGZlNzBkMWU1MTEzZGI0ZGNkMzVmMjdmZmE3MDBhNzIwMzY5
MDAzOGIuLjJhNDkyMWM0MTVjZmFhNmRjMDRjNzdkYTdlYjgxODcyMjUwNDljM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuaApAQCAtMjksOCArMjksNyBAQAogICoKICAqLwogCi0jaWZu
ZGVmIExpbmtMb2FkZXJfaAotI2RlZmluZSBMaW5rTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVu
dC5oIgpAQCAtNTYsMTAgKzU1LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3B0aW9uYWw8Q2Fj
aGVkUmVzb3VyY2U6OlR5cGU+IHJlc291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHJp
bmcmIGFzKTsKIAogICAgIFdlYWtQdHI8TGlua0xvYWRlcj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0
dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9Ci0gICAgdm9pZCB0cmlnZ2Vy
RXZlbnRzKGNvbnN0IENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCB0cmlnZ2VyRXZlbnRzKGNv
bnN0IENhY2hlZFJlc291cmNlJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHByZWxvYWRJZk5lZWRlZChjb25zdCBM
aW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiBocmVmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmlu
ZyYgYXMsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKIAogICAgIExpbmtMb2FkZXJD
bGllbnQmIG1fY2xpZW50OwpAQCAtNjcsNyArNjYsNSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBtX3ByZWxvYWRSZXNvdXJjZUNsaWVu
dDsKICAgICBXZWFrUHRyRmFjdG9yeTxMaW5rTG9hZGVyPiBtX3dlYWtQdHJGYWN0b3J5OwogfTsK
LSAgICAKLX0KIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmNwcAppbmRleCBmZTdlY2I1NzIyNWM3OGFjMmMwZGMw
NzNkMTQ5MzEyYzhkOTg1MTk4Li4xY2Q3NDQzMDBmMzIyN2RjMjg5NzIxMGI3ZjhiZjY4ZDA5M2U3
Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJj
ZUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dDo6TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudChMaW5rTG9hZGVyJiBsb2FkZXIsIENhY2hlZFIK
ICAgICBtX3Jlc291cmNlID0gJnJlc291cmNlOwogfQogCi12b2lkIExpbmtQcmVsb2FkUmVzb3Vy
Y2VDbGllbnQ6OnRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQor
dm9pZCBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50Ojp0cmlnZ2VyRXZlbnRzKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAobV9sb2FkZXIpCiAgICAgICAgIG1fbG9h
ZGVyLT50cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmgKaW5kZXggOTI3M2Q2OWJkZmFmNWNiOTQy
NGM2Y2RjZjA1ZDdlZTFiMGVlZjYxYS4uMWI3MDg0MGUzNzZkMzc5YjE0MzQ3NTI2YzZiMTUyM2U4
MzA0MjMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnRzLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTGlua1ByZWxvYWRSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dCgpIHsgfQogCi0gICAgdm9pZCB0cmlnZ2VyRXZlbnRzKGNvbnN0IENhY2hlZFJlc291cmNlKik7
CisgICAgdm9pZCB0cmlnZ2VyRXZlbnRzKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXIoKSA9IDA7CiAKQEAgLTgzLDExICs4Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5MaW5rUHJlbG9hZFNjcmlwdFJlc291cmNlQ2xpZW50KCkgeyB9CiAKIAotICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSByZXNvdXJjZSk7Ci0gICAg
ICAgIHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOwotICAgIH0KKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgb3ZlcnJpZGUgeyB0cmlnZ2VyRXZlbnRzKHJl
c291cmNlKTsgfQogCiAgICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsgY2xlYXJSZXNvdXJjZSh0
aGlzKTsgfQogCkBAIC0xMTAsOCArMTA2LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQqIHJlc291cmNlKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAg
QVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSByZXNv
dXJjZSk7Ci0gICAgICAgIHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOworICAgICAgICB0cmlnZ2Vy
RXZlbnRzKCpyZXNvdXJjZSk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsg
Y2xlYXJSZXNvdXJjZSh0aGlzKTsgfQpAQCAtMTMzLDExICsxMzAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIH5MaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGllbnQoKSB7IH0KIAotICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSByZXNvdXJjZSk7Ci0gICAgICAg
IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOwotICAgIH0KKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgb3ZlcnJpZGUgeyB0cmlnZ2VyRXZlbnRzKHJlc291
cmNlKTsgfQogCiAgICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsgY2xlYXJSZXNvdXJjZSh0aGlz
KTsgfQogCkBAIC0xNjEsNyArMTU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9udExvYWRlZChD
YWNoZWRGb250JiByZXNvdXJjZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVChvd25l
ZFJlc291cmNlKCkgPT0gJnJlc291cmNlKTsKLSAgICAgICAgdHJpZ2dlckV2ZW50cygmcmVzb3Vy
Y2UpOworICAgICAgICB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsKICAgICB9CiAKICAgICB2b2lk
IGNsZWFyKCkgb3ZlcnJpZGUgeyBjbGVhclJlc291cmNlKHRoaXMpOyB9CkBAIC0xODMsMTEgKzE3
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkxpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGll
bnQoKSB7IH0KIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSBy
ZXNvdXJjZSk7Ci0gICAgICAgIHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOwotICAgIH0KKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgb3ZlcnJpZGUgeyB0
cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsgfQogCiAgICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsg
Y2xlYXJSZXNvdXJjZSh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOWM3MjY1OGEyOWM4ZGE3MDE5NTVkZWZlODliYjk0MGI4
Y2FkMmU0Yi4uYTUxZTJkZGFhMWQxZWE2ODdhMTc4NTljZWYzZjQyMmNjMGQ0ZGQ4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTI5LDE1
ICsxMjksMTUgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzTG9hZGluZykKICAgICAgICAgbV9yZXNvdXJjZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnNM
b2FkaW5nKTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2
b2lkIE1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBpZiAoIW1fbG9hZGVy
LT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJj
ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAoIW1fbG9hZGVyLT5jcm9zc09yaWdpbk1v
ZGUoKS5pc051bGwoKSAmJiAhcmVzb3VyY2UtPnBhc3Nlc1NhbWVPcmlnaW5Qb2xpY3lDaGVjaygq
bV9sb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKCFtX2xv
YWRlci0+Y3Jvc3NPcmlnaW5Nb2RlKCkuaXNOdWxsKCkgJiYgIW1fcmVzb3VyY2UtPnBhc3Nlc1Nh
bWVPcmlnaW5Qb2xpY3lDaGVjaygqbV9sb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbnNv
bGVNZXNzYWdlKCJDcm9zcy1vcmlnaW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jv
c3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpOwogICAgICAgICBtX2xvYWRlci0+
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9kaWRQ
YXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7CkBAIC0xNTIsOSArMTUyLDkgQEAgdm9pZCBN
ZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXMKICAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRo
aXMsIHJlc3BvbnNlKTsKIH0KIAotYm9vbCBNZWRpYVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3Bv
bnNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCitib29sIE1lZGlhUmVzb3VyY2U6OnNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBS
ZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGll
bnQpCkBAIC0xNjIsNDEgKzE2Miw0MSBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNob3VsZENhY2hl
UmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAK
LXZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291
cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNl
bnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBBU1NFUlQocmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09
IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZS0+bG9hZEZh
aWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlz
LCByZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpCisgICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZCgq
dGhpcywgbV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcyk7CiAgICAgfQpAQCAtMjA0LDkgKzIw
NCw5IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlKQogfQogCiAjaWYgVVNFKFNPVVApCi1jaGFyKiBNZWRpYVJlc291cmNlOjpnZXRP
ckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBzaXplX3QgcmVxdWVz
dGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKQorY2hhciogTWVkaWFSZXNvdXJjZTo6Z2V0T3JD
cmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgc2l6ZV90IHJlcXVlc3Rl
ZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAm
cmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQt
PmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcigqdGhpcywgcmVxdWVzdGVkU2l6ZSwgYWN0dWFsU2l6ZSkg
OiBudWxscHRyOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCBkMjdkY2Y1MTAyZjBhNjIzYWRkMmNmOTQxYzg1MmRlNmMxMzFjZDZi
Li44MTk5NzgyMWFmMjVhMGFkYjVlZGM4MDA1OTE4MzYzYjMxZWM3MDgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTcwLDE1ICs3MCwxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIG92ZXJyaWRlOwogICAgIGJv
b2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsgfQogCi0gICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGll
bnQKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hl
ZFJlc291cmNlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSosIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFTZW50KENhY2hl
ZFJlc291cmNlKiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOworICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CisgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2ln
bmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKICNpZiBV
U0UoU09VUCkKLSAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2Uq
LCBzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYgLyphY3R1YWxTaXplKi8pIG92ZXJy
aWRlOworICAgIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSYsIHNp
emVfdCAvKnJlcXVlc3RlZFNpemUqLywgc2l6ZV90JiAvKmFjdHVhbFNpemUqLykgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRl
ci5jcHAKaW5kZXggZWViMjA5ZDdlZDcxYTQ4NzQ1M2QxZGM4ZWU4MjBlZGEwYmUwMjhiNC4uNzE0
MDk4ZWU2OWZiMTYwYjUyODMxZjdhZjQxMDJhM2Q3MjFmNjk4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTc4LDE0ICs3OCwxNCBAQCB2b2lkIFRleHRU
cmFja0xvYWRlcjo6Y2FuY2VsTG9hZCgpCiAgICAgfQogfQogCi12b2lkIFRleHRUcmFja0xvYWRl
cjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBUZXh0
VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
IHsKLSAgICBBU1NFUlQobV9yZXNvdXJjZSA9PSByZXNvdXJjZSk7Ci0gICAgCi0gICAgaWYgKG1f
c3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CisKKyAgICBpZiAo
bV9zdGF0ZSA9PSBGYWlsZWQgfHwgIW1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvKiBidWZmZXIgPSByZXNvdXJjZS0+cmVzb3VyY2VC
dWZmZXIoKTsKKworICAgIGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCk7CiAgICAgaWYgKG1fcGFyc2VPZmZzZXQgPT0gYnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTAyLDE0ICsxMDIsMTQgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAogLy8gRklYTUU6IFRo
aXMgaXMgYSB2ZXJ5IHVudXN1YWwgcGF0dGVybiwgbm8gb3RoZXIgQ2FjaGVkUmVzb3VyY2VDbGll
bnQgZG9lcyB0aGlzLiBSZWZhY3RvciB0byB1c2Ugbm90aWZ5RmluaXNoZWQoKSBpbnN0ZWFkLgot
dm9pZCBUZXh0VHJhY2tMb2FkZXI6OmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6OmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewot
ICAgIEFTU0VSVChtX3Jlc291cmNlID09IHJlc291cmNlKTsKLSAgICAKLSAgICBpZiAoIXJlc291
cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fcmVz
b3VyY2UgPT0gJnJlc291cmNlKTsKKworICAgIGlmICghbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJlc291
cmNlKTsKKworICAgIHByb2Nlc3NOZXdDdWVEYXRhKCptX3Jlc291cmNlKTsKIH0KIAogdm9pZCBU
ZXh0VHJhY2tMb2FkZXI6OmNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCkKQEAgLTEyMCwxOSArMTIw
LDE5IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpCiAg
ICAgbV9zdGF0ZSA9IEZhaWxlZDsKIH0KIAotdm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgVGV4dFRyYWNrTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKG1f
cmVzb3VyY2UgPT0gcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fcmVz
b3VyY2UgPT0gJnJlc291cmNlKTsKIAotICAgIGlmIChyZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigp
LmlzQWNjZXNzQ29udHJvbCgpKQorICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9yKCku
aXNBY2Nlc3NDb250cm9sKCkpCiAgICAgICAgIGNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCk7CiAK
ICAgICBpZiAobV9zdGF0ZSAhPSBGYWlsZWQpIHsKLSAgICAgICAgcHJvY2Vzc05ld0N1ZURhdGEo
cmVzb3VyY2UpOworICAgICAgICBwcm9jZXNzTmV3Q3VlRGF0YSgqbV9yZXNvdXJjZSk7CiAgICAg
ICAgIGlmIChtX2N1ZVBhcnNlcikKICAgICAgICAgICAgIG1fY3VlUGFyc2VyLT5maWxlRmluaXNo
ZWQoKTsKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gRmFpbGVkKQotICAgICAgICAgICAgbV9zdGF0
ZSA9IHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBGYWlsZWQgOiBGaW5pc2hlZDsKKyAgICAg
ICAgICAgIG1fc3RhdGUgPSBtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBGYWlsZWQgOiBG
aW5pc2hlZDsKICAgICB9CiAKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCAmJiBtX2N1ZVBh
cnNlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAppbmRleCAxMjNmMTQ4
ODg2YTFmYmNlMmNiOTZmNzNkMjk1ZjM1ZGMwZGJjYTI2Li5hNTM0NjUxY2NjYzcwZGIyMDY0Mjlk
NDFiYjRhMzY3OWViNjVjZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRl
ci5oCkBAIC02NCwyMCArNjQsMjAgQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAgIC8vIENhY2hl
ZFJlc291cmNlQ2xpZW50Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOwotICAgIHZvaWQgZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwotICAgIAorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZl
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKwogICAgIC8vIFdlYlZU
VFBhcnNlckNsaWVudAogICAgIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgbmV3UmVnaW9uc1BhcnNlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlsZUZhaWxlZFRvUGFy
c2UoKSBvdmVycmlkZTsKLSAgICAKLSAgICB2b2lkIHByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJl
c291cmNlKik7CisKKyAgICB2b2lkIHByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJik7
CiAgICAgdm9pZCBjdWVMb2FkVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29yc1BvbGljeVByZXZl
bnRlZExvYWQoKTsKIAogICAgIGVudW0gU3RhdGUgeyBJZGxlLCBMb2FkaW5nLCBGaW5pc2hlZCwg
RmFpbGVkIH07Ci0gICAgCisKICAgICBUZXh0VHJhY2tMb2FkZXJDbGllbnQmIG1fY2xpZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJWVFRQYXJzZXI+IG1fY3VlUGFyc2VyOwogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFRleHRUcmFjaz4gbV9yZXNvdXJjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDMzMzJl
MGM1YmJlODlmZmMwOWYzNmQ1OTdiZmE1YzMwNGMzOGE5ZTkuLjk1MGFlNDM0YTlkNDM4Yjc4YWRm
YjdiZTRjZDBkZTU5ZWUzNTE3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5kYXRhUmVjZWl2ZWQodGhp
cywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBs
ZW5ndGgpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqIGMpCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7CiAgICAgICAgIFJlZGlyZWN0UGFp
ciByZWRpcmVjdCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QocmVkaXJlY3QubV9yZXF1ZXN0KTsKLSAgICAgICAgY2xpZW50LT5yZWRpcmVjdFJl
Y2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7CisgICAg
ICAgIGNsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhpcywgcmVxdWVzdCwgcmVkaXJlY3QubV9y
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTQ1LDEyICsxNDUsMTIgQEAgdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAgICAgICAgICAg
QVNTRVJUKCF2YWxpZGF0aW9uSW5Qcm9ncmVzcygpKTsKICAgICAgICAgICAgIHJlc3BvbnNlLnNl
dFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlKTsKICAgICAgICAg
fQotICAgICAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQodGhpcywgcmVzcG9uc2UpOworICAg
ICAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlKTsKICAgICB9CiAg
ICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9kYXRhKQot
ICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCh0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOworICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgbV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIWhhc0NsaWVudChjKSkKICAgICAgICBy
ZXR1cm47CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOwpAQCAtMTY4
LDcgKzE2OCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgaWYgKCFyZXNwb25zZS5p
c051bGwoKSkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgICAgIGMtPnJlZGlyZWN0UmVjZWl2
ZWQodGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpOworICAgICAgICAgICAgYy0+cmVkaXJlY3RSZWNl
aXZlZCgqdGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpOwogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4u
YXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOwogICAgIH0KICAgICBDYWNo
ZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChyZXF1ZXN0LCByZXNwb25zZSk7CkBAIC0xODIs
MTQgKzE4MiwxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIENhY2hlZFJlc291cmNlOjpyZXNw
b25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5yZXNwb25zZVJlY2Vp
dmVkKHRoaXMsIG1fcmVzcG9uc2UpOworICAgICAgICBjLT5yZXNwb25zZVJlY2VpdmVkKCp0aGlz
LCBtX3Jlc3BvbnNlKTsKIH0KIAogYm9vbCBDYWNoZWRSYXdSZXNvdXJjZTo6c2hvdWxkQ2FjaGVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKSB7Ci0g
ICAgICAgIGlmICghYy0+c2hvdWxkQ2FjaGVSZXNwb25zZSh0aGlzLCByZXNwb25zZSkpCisgICAg
ICAgIGlmICghYy0+c2hvdWxkQ2FjaGVSZXNwb25zZSgqdGhpcywgcmVzcG9uc2UpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5OSw3ICsx
OTksNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGls
ZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+ZGF0
YVNlbnQodGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgICAgICBjLT5k
YXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCiB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
Q2xpZW50LmgKaW5kZXggMWUwYzlmZGY5MTg0Yzk0NWFmY2UyOWNlZDhlOWUwOWE2YWFiM2EzYi4u
ODAzMGYyZTFhYzAyZmE3MjYzOWQxNmYxOThmNDE4OGUyY2JlYTQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAg
LTM2LDEzICszNiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50
VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBSYXdSZXNvdXJjZVR5cGU7IH0KICAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChD
YWNoZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2ln
bmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQotICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJl
c291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogLyog
ZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25n
IC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQg
LyogbGVuZ3RoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7
IH0KICNpZiBVU0UoU09VUCkKLSAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZl
cihDYWNoZWRSZXNvdXJjZSosIHNpemVfdCAvKiByZXF1ZXN0ZWRTaXplICovLCBzaXplX3QmIC8q
IGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIGNoYXIqIGdl
dE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSYsIHNpemVfdCAvKiByZXF1ZXN0ZWRT
aXplICovLCBzaXplX3QmIC8qIGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKaW5kZXggMTFiZmRmZjA5NTUxNDlmZWJkZmJmNzc2M2U5NmQ0NWFiODhhMmQ5Ny4uYWU2
ZTY3YzM2MjdiYzFlYWFhYmFmOTUwODRkNzhlMDE1MTdjM2NkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAg
IHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKLSAg
ICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3Rp
ZnlGaW5pc2hlZCgqdGhpcyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJikKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICBpZiAobV9j
bGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUoY2xpZW50KSkKICAgICAgICAgbV9jbGllbnRz
LmFkZChjbGllbnQpOwogICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkp
Ci0gICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAgICAgIGNsaWVudC0+
bm90aWZ5RmluaXNoZWQoKnRoaXMpOwogfQogCiBib29sIENhY2hlZFJlc291cmNlOjphZGRDbGll
bnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAppbmRleCAwYjQ1NDNkNWE1
OTc5ZWNjNDJmNmQyNjRiNDQyZTc0OTMxM2E1YzlkLi4xN2MzNjFkNzE5NGUwMzM2NTA0YzA1NzZi
Mzk5MDI4YWRhYTYxZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaApAQCAtMjEsOSArMjEsNyBAQAogICAgIFRoaXMgY2xhc3Mg
cHJvdmlkZXMgYWxsIGZ1bmN0aW9uYWxpdHkgbmVlZGVkIGZvciBsb2FkaW5nIGltYWdlcywgc3R5
bGUgc2hlZXRzIGFuZCBodG1sCiAgICAgcGFnZXMgZnJvbSB0aGUgd2ViLiBJdCBoYXMgYSBtZW1v
cnkgY2FjaGUgZm9yIHRoZXNlIG9iamVjdHMuCiAqLwotCi0jaWZuZGVmIENhY2hlZFJlc291cmNl
Q2xpZW50X2gKLSNkZWZpbmUgQ2FjaGVkUmVzb3VyY2VDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsOCArMzksOCBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1hNTEh0dHBSZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUg
ZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQpAQCAtNTMsNSArNTEs
MyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCA5YTBlNGFlZmQ1NjI3ZDgwNTEw
ZWNhNjA4OTlkN2M5ZThiMDZmNzQ1Li4xZDgyYmQ3MWI0MmJkOWYwMTlkYzIwNDFlZmZjY2U4NGI3
MmY2Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlRGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hl
ZFJlc291cmNlQ2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQotICAgICAgICBjbGllbnQt
PmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UodGhpcyk7CisgICAgICAgIGNsaWVu
dC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKIHZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXggYzI0M2Y0MmFjOWE1OGY2
ZGY1ODBmMmY4ZDhkM2FkY2YzMDk1YTIxMy4uNmUzMWFlZjFkNDBkMjRmMmFhNGE1Y2U1ZTgwZjAw
YjgwZDM3ZTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAK
QEAgLTc5LDMwICs3OSwzMCBAQCB2b2lkIEljb25Mb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICB9
CiB9CiAKLXZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQordm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIC8v
IElmIHdlIGdvdCBhIHN0YXR1cyBjb2RlIGluZGljYXRpbmcgYW4gaW52YWxpZCByZXNwb25zZSwg
dGhlbiBsZXRzCiAgICAgLy8gaWdub3JlIHRoZSBkYXRhIGFuZCBub3QgdHJ5IHRvIGRlY29kZSB0
aGUgZXJyb3IgcGFnZSBhcyBhbiBpY29uLgotICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS0+cmVz
b3VyY2VCdWZmZXIoKTsKLSAgICBpbnQgc3RhdHVzID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0
cFN0YXR1c0NvZGUoKTsKKyAgICBhdXRvKiBkYXRhID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKTsKKyAgICBpbnQgc3RhdHVzID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVz
Q29kZSgpOwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkp
KQogICAgICAgICBkYXRhID0gbnVsbHB0cjsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHBkZk1h
Z2ljTnVtYmVyW10gPSAiJVBERiI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHBkZk1hZ2ljTnVtYmVy
TGVuZ3RoID0gc2l6ZW9mKHBkZk1hZ2ljTnVtYmVyKSAtIDE7CiAgICAgaWYgKGRhdGEgJiYgZGF0
YS0+c2l6ZSgpID49IHBkZk1hZ2ljTnVtYmVyTGVuZ3RoICYmICFtZW1jbXAoZGF0YS0+ZGF0YSgp
LCBwZGZNYWdpY051bWJlciwgcGRmTWFnaWNOdW1iZXJMZW5ndGgpKSB7Ci0gICAgICAgIExPRyhJ
Y29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJZ25vcmluZyBpY29u
IGF0ICVzIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIFBERiIsIHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29u
TG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJZ25vcmluZyBpY29uIGF0ICVzIGJlY2F1c2UgaXQg
YXBwZWFycyB0byBiZSBhIFBERiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgTE9HKEljb25E
YXRhYmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIENvbW1pdHRpbmcgaWNvblVS
TCAlcyB0byBkYXRhYmFzZSIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5pY29uKCkuY29tbWl0VG9EYXRhYmFzZShyZXNvdXJj
ZS0+dXJsKCkpOworICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2Fk
aW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UiLCBtX3Jlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5pY29u
KCkuY29tbWl0VG9EYXRhYmFzZShtX3Jlc291cmNlLT51cmwoKSk7CiAgICAgLy8gU2V0dGluZyB0
aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0aGUgZGF0YWJhc2UgZW5zdXJl
cyB0aGF0IHRoZSBkYXRhIGlzCiAgICAgLy8ga2VwdCBpbiBtZW1vcnkgKHNvIGl0IGRvZXMgbm90
IGhhdmUgdG8gYmUgcmVhZCBmcm9tIHRoZSBkYXRhYmFzZSBhc3luY2hyb25vdXNseSksIHNpbmNl
CiAgICAgLy8gdGhlcmUgaXMgYSBwYWdlIFVSTCByZWZlcmVuY2luZyBpdC4KLSAgICBpY29uRGF0
YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpKTsKKyAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgbV9y
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCku
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHN0b3BMb2FkaW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKaW5kZXggMzA5NzU1NmU5YTEwOTc1ZmFmODFh
YWI2ZDA1NmQ3NmRiNjU2OGQ4NC4uZmViMDM3MDIxNjk0NmNkZDliMzg3ZDM0OWIzYjMzMDYxOGUy
NjQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaApAQCAtMjAsMTEg
KzIwLDEwIEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSWNvbkxvYWRlcl9oCi0j
ZGVmaW5lIEljb25Mb2FkZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCkBAIC00
NiwxMiArNDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgRnJh
bWUmIG1fZnJhbWU7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IG1fcmVzb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvQ2FjaGVkUmF3UmVzb3VyY2VTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL0NhY2hlZFJhd1Jlc291cmNlU291cC5j
cHAKaW5kZXggZGYzZTVlNTEwYTUwN2NjYTlkYjBmOTdhZWQzYzM3OTk0NTBkZGMyNi4uNTQ5MmQy
MTQ3ZTFhMmNkOTYxMWQ4ZmZiOWI3MzJlN2VhZGRiZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL3NvdXAvQ2FjaGVkUmF3UmVzb3VyY2VTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvc291cC9DYWNoZWRSYXdSZXNvdXJjZVNvdXAuY3BwCkBAIC0zMSw3ICsz
MSw3IEBAIGNoYXIqIENhY2hlZFJhd1Jlc291cmNlOjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6
ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0CiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGls
ZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkgewotICAgICAgICBpZiAo
Y2hhciogYnVmZmVyUHRyID0gYy0+Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKHRoaXMsIHJlcXVlc3Rl
ZFNpemUsIGFjdHVhbFNpemUpKQorICAgICAgICBpZiAoY2hhciogYnVmZmVyUHRyID0gYy0+Z2V0
T3JDcmVhdGVSZWFkQnVmZmVyKCp0aGlzLCByZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKSkKICAg
ICAgICAgICAgIHJldHVybiBidWZmZXJQdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTEyYzJiZmVkZTg2
ZjE1ZjJkOTJiMTEzMDJiMDQxZmRjZjBkMDNiNy4uYjk5ZjliNjE2NDhjMzYxYzRkZTA2NmVjMGIy
ODExOGY0OWY4MzlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTA5LDEwICsxMDksOSBAQCB2b2lkIFdlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGUoKQogICAgIH0pOwogfQogCi12b2lkIFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVChyZXNvdXJj
ZSA9PSBtX3Jlc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2UpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIGludCBz
dGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwogICAgIGlmIChzdGF0dXMgJiYgKHN0
YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7CkBAIC0xMjQsMTQgKzEyMywxNCBAQCB2b2lk
IFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBjb25zdAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgY29uc3QgY2hhciosIGludCkKK3ZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciosIGludCkK
IHsKICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQg
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlKQordm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgaWYgKHJlc291cmNlLT5sb2FkRmFp
bGVkT3JDYW5jZWxlZCgpKSB7CisgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpIHsKICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3NDE3PiBTZXQgdGhlIGNvbnRl
bnRUeXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0IHRvIGFuIGVtcHR5CiAgICAg
ICAgIC8vIHN0cmluZyB0byB0cmlnZ2VyIEFWQXNzZXQncyBwbGF5YWJsZSB2YWx1ZSB0byBjb21w
bGV0ZSBsb2FkaW5nLgogICAgICAgICAvLyBGSVhNRTogaWYgKFttX2F2UmVxdWVzdC5nZXQoKSBj
b250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSAmJiAhW1ttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50
SW5mb3JtYXRpb25SZXF1ZXN0XSBjb250ZW50VHlwZV0pCkBAIC0xNDgsOSArMTQ3LDkgQEAgdm9p
ZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBBU1NFUlQocmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291
cmNlID09IG1fcmVzb3VyY2UpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGVhZWM4
ODFjNzA3ZTM3Y2RkMTlkNjRmYzI3ZTAwNGJkYmMwOGE1MzEuLmEwZjBkZDhiMDg0MDAzZWYyNGYw
ZTg0MmVkNDc2ZDgxNTZmMzIwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcl9oCi0jZGVmaW5lIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXJfaAorI3ByYWdtYSBvbmNl
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmIEhBVkUoQVZGT1VO
REFUSU9OX0xPQURFUl9ERUxFR0FURSkKIApAQCAtNTYsMTIgKzU1LDEyIEBAIHB1YmxpYzoKICAg
ICBDYWNoZWRSYXdSZXNvdXJjZSogcmVzb3VyY2UoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBDYWNo
ZWRSZXNvdXJjZUNsaWVudAotICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwotICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAorICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lk
IGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CiAKICAgICBXZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBw
YXJlbnQsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYpOwogICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBtX3BhcmVudDsKQEAgLTcxLDYgKzcwLDQgQEAgcHJp
dmF0ZToKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9O
KSAKLQotI2VuZGlmIC8vIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcl9oCisjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA5MzJjMTFmMmE2NmFkOWM4NTAy
MDkzMjc5MWE4YjY4MWQ0ZGE5YzdiLi43ZDdmNzczNmU4MDdmNWQxMDJjMjYzYTRmZDEyMDk5YmRj
NGFiOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyX2gKLSNkZWZp
bmUgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJf
REVMRUdBVEUpCiAKQEAgLTU3LDExICs1NiwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ly8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsK
LSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSopOworICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0ICopOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IG1fcGFyZW50OwpAQCAtNzEsNiArNzAsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pIAotCi0jZW5kaWYgLy8gV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyX2gKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KaW5kZXggNzY0YjBkZjA1ZjM5YmI2ODliMWQwMDM5ZTc4ZDhlNGMxMDA0MmVjZS4u
NmUxMTgxMzMzZDIwN2E3NjgxMmIwYTBhMDFhNWE5ZmVhN2Y0MzBhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTA2LDEw
ICsxMDYsOSBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSgpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewotICAgIEFTU0VSVChyZXNvdXJjZSk7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVz
b3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKIAogICAgIGludCBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwogICAg
IGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7CkBAIC0xMjIs
NyArMTIxLDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdAogCiAgICAgICAgIFtjb250ZW50SW5m
byBzZXRDb250ZW50VHlwZTp1dGldOwogCi0gICAgICAgIFBhcnNlZENvbnRlbnRSYW5nZSYgY29u
dGVudFJhbmdlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuY29udGVudFJhbmdlKCk7CisgICAgICAg
IFBhcnNlZENvbnRlbnRSYW5nZSYgY29udGVudFJhbmdlID0gbV9yZXNvdXJjZS0+cmVzcG9uc2Uo
KS5jb250ZW50UmFuZ2UoKTsKICAgICAgICAgW2NvbnRlbnRJbmZvIHNldENvbnRlbnRMZW5ndGg6
Y29udGVudFJhbmdlLmlzVmFsaWQoKSA/IGNvbnRlbnRSYW5nZS5pbnN0YW5jZUxlbmd0aCgpIDog
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCldOwogICAgICAgICBbY29udGVudEluZm8g
c2V0Qnl0ZVJhbmdlQWNjZXNzU3VwcG9ydGVkOllFU107CiAKQEAgLTEzMywyMCArMTMyLDIwIEBA
IHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBj
aGFyKiwgaW50KQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqLCBpbnQpCiB7CiAgICAgZnVsZmls
bFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKIHsKLSAgICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkp
IHsKKyAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewogICAgICAgICAv
LyA8cmRhcjovL3Byb2JsZW0vMTM5ODc0MTc+IFNldCB0aGUgY29udGVudFR5cGUgb2YgdGhlIGNv
bnRlbnRJbmZvcm1hdGlvblJlcXVlc3QgdG8gYW4gZW1wdHkKICAgICAgICAgLy8gc3RyaW5nIHRv
IHRyaWdnZXIgQVZBc3NldCdzIHBsYXlhYmxlIHZhbHVlIHRvIGNvbXBsZXRlIGxvYWRpbmcuCiAg
ICAgICAgIGlmIChbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0g
JiYgIVtbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gY29udGVu
dFR5cGVdKQogICAgICAgICAgICAgW1ttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5mb3JtYXRp
b25SZXF1ZXN0XSBzZXRDb250ZW50VHlwZTpAIiJdOwogCi0gICAgICAgIE5TRXJyb3IqIGVycm9y
ID0gcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSA/IHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCku
bnNFcnJvcigpIDogbmlsOworICAgICAgICBOU0Vycm9yKiBlcnJvciA9IHJlc291cmNlLmVycm9y
T2NjdXJyZWQoKSA/IHJlc291cmNlLnJlc291cmNlRXJyb3IoKS5uc0Vycm9yKCkgOiBuaWw7CiAg
ICAgICAgIFttX2F2UmVxdWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOmVycm9yXTsK
ICAgICB9IGVsc2UgewogICAgICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShyZXNvdXJj
ZSk7CkBAIC0xNTUsMjAgKzE1NCwxOSBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIHN0b3BMb2FkaW5n
KCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdp
dGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogewotICAgIEFTU0VSVChyZXNvdXJjZSk7Ci0gICAgQVNTRVJUKHJlc291cmNlID09
IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBt
X3Jlc291cmNlKTsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFS
ZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSByZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSBtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
TlNVSW50ZWdlciByZXNwb25zZU9mZnNldCA9IDA7Ci0gICAgUGFyc2VkQ29udGVudFJhbmdlIGNv
bnRlbnRSYW5nZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLmNvbnRlbnRSYW5nZSgpOworICAgIFBh
cnNlZENvbnRlbnRSYW5nZSBjb250ZW50UmFuZ2UgPSBtX3Jlc291cmNlLT5yZXNwb25zZSgpLmNv
bnRlbnRSYW5nZSgpOwogICAgIGlmIChjb250ZW50UmFuZ2UuaXNWYWxpZCgpKQogICAgICAgICBy
ZXNwb25zZU9mZnNldCA9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGNvbnRlbnRSYW5nZS5maXJz
dEJ5dGVQb3NpdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggMmM4MzQwZTVmYmFkM2IxYTNmMzIxN2IxYmI0NjRiMzZkMTVhOTFjYS4uZWNhZjk5
M2M5OWJlYTNiYTVlMWRmOGIxNWRjMjhkMGQ5M2VkYTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zMzgsMTQgKzMzOCwxNCBAQCB2b2lkIFJlbmRlcklt
YWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KEltYWdlU2l6ZUNoYW5nZVR5cGUgaW1hZ2VTaXpl
Q2hhbmdlLCBjbwogICAgIGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CiB9CiAKLXZvaWQg
UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKK3Zv
aWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBuZXdJbWFnZSkK
IHsKICAgICBpZiAoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpbnZhbGlkYXRlQmFja2dyb3VuZE9ic2N1cmF0aW9uU3RhdHVzKCk7CiAKLSAgICBpZiAo
bmV3SW1hZ2UgPT0gaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkpIHsKKyAgICBpZiAoJm5l
d0ltYWdlID09IGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIC8vIHRl
bGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUg
aW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAg
ICBjb250ZW50Q2hhbmdlZChJbWFnZUNoYW5nZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaAppbmRleCBiZDA1ZDkzMWFiOTY2YTcxYzk2ZTdlYjE1MDA2ZTlhNzQwMjZjZGRl
Li5lMjEyNTViMmExMjIyOGZlMTBmMTU5ZWZhM2E0NzE3ODc3ZTZlZjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMjIsOCArMjIsNyBAQAogICoKICAqLwogCi0j
aWZuZGVmIFJlbmRlckltYWdlX2gKLSNkZWZpbmUgUmVuZGVySW1hZ2VfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVw
bGFjZWQuaCIKQEAgLTEwNSw3ICsxMDQsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBt
aW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJikgZmluYWw7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0
VGVzdEFjdGlvbikgZmluYWw7CiAKICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRv
QmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IGZpbmFsOwpAQCAtMTM3LDUgKzEzNiwz
IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJJbWFnZSwgaXNSZW5kZXJJbWFnZSgpKQotCi0jZW5k
aWYgLy8gUmVuZGVySW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAppbmRleCA1NmIxMzhkODk5YzU4YzZhOWI2Y2Q4ZGRiZWVi
M2UwODk3YzIwNDQ3Li4wODNkZDA4YWRiNGYyOTI2ZDM1OGI1NThlZTY3MTUyZGM4ZWFmY2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmNwcApAQCAtODMsMTUgKzgzLDE1IEBAIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjp+RmlsdGVy
SW5mbygpCiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86OnNldFJlbmRlcmVyKFJl
ZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4mJiByZW5kZXJlcikKLXsgCi0gICAgbV9yZW5kZXJl
ciA9IHJlbmRlcmVyOyAKK3sKKyAgICBtX3JlbmRlcmVyID0gcmVuZGVyZXI7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OkZpbHRlckluZm86Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikK
K3ZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJikKIHsKICAgICBtX2xheWVyLmZpbHRlck5lZWRzUmVwYWludCgpOwogfQotICAgIAorCiB2
b2lkIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjp1cGRhdGVSZWZlcmVuY2VGaWx0ZXJDbGllbnRz
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMpCiB7CiAgICAgcmVtb3ZlUmVmZXJl
bmNlRmlsdGVyQ2xpZW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVySW5mby5oCmluZGV4IGU2ODg5MWQxYjQ5NjAzMGU1YmNkNTQwMWQzZDg1Yzg4
YWNlYTM2ZWMuLmQwYWNkM2NmNWZiYjEyYTMxMjU5M2MwOWNjMWI0YWM4MDcwMjU4Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKQEAg
LTI4LDggKzI4LDcgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvX2gKLSNkZWZpbmUgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvX2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNo
ZWRTVkdEb2N1bWVudENsaWVudC5oIgpAQCAtNTUsMTUgKzU0LDE1IEBAIHB1YmxpYzoKICAgICBj
b25zdCBMYXlvdXRSZWN0JiBkaXJ0eVNvdXJjZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2RpcnR5
U291cmNlUmVjdDsgfQogICAgIHZvaWQgZXhwYW5kRGlydHlTb3VyY2VSZWN0KGNvbnN0IExheW91
dFJlY3QmIHJlY3QpIHsgbV9kaXJ0eVNvdXJjZVJlY3QudW5pdGUocmVjdCk7IH0KICAgICB2b2lk
IHJlc2V0RGlydHlTb3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3Qo
KTsgfQotICAgIAorCiAgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIqIHJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVmUHRy
PEZpbHRlckVmZmVjdFJlbmRlcmVyPiYmKTsKLSAgICAKKwogICAgIHZvaWQgdXBkYXRlUmVmZXJl
bmNlRmlsdGVyQ2xpZW50cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAgICAgdm9pZCByZW1v
dmVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFJl
bmRlckxheWVyKiwgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckluZm8+PiYgbWFwKCk7CiAKQEAgLTc3
LDUgKzc2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFJlbmRlckxheWVyRmlsdGVySW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcAppbmRleCA0ZDU5MjkxMDM4ODcwNjUwMWUxMTI4Y2I0ZjcxZTNiMzcxMDc3
M2JjLi4zNmM5ZTBjNmM3NGI1NjE0MTFhNDdhNDczNDY1OTczMTZiMzE2NjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50
KQogICAgICAgICBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogfQogCi12b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCiB7CiAgICAgaWYgKCFp
bkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmgKaW5kZXggYTU4NWYzYmFjODE0ODQ3YjZiMTIwN2JjZDVmZTljNmMxNzY2NGU4Ni4u
YjNjZjJjOTQwOGZiYzVhYjcyZDRlNjJhY2ZmMjRlZGRhNjVhNGFhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTE4LDggKzE4LDcgQEAKICAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgU1ZHRkVJbWFnZUVsZW1lbnRfaAotI2Rl
ZmluZSBTVkdGRUltYWdlRWxlbWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTUx
LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKICAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikg
b3ZlcnJpZGU7CkBAIC03Myw1ICs3MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4
IGEwNDdhZDY4ODNiZThhODU4YzVkZjVjZjRiMzAxNzkxY2JjY2MwOGQuLmYyODRlYTgzOGE5NmJk
MzY1MzI3NDkxYjllYWFmY2I4NTBjMDA2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKQEAgLTUzNSwxMiArNTM1LDEyIEBAIGJvb2wgU1ZHVXNlRWxlbWVudDo6c2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0CiAgICAgcmV0dXJuIHRhcmdldENsb25lICYmIHRhcmdldENs
b25lLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIFNWR1VzZUVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpbnZhbGlk
YXRlU2hhZG93VHJlZSgpOwotICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAg
IGlmIChyZXNvdXJjZS5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAg
ZWxzZSBpZiAoIXJlc291cmNlLT53YXNDYW5jZWxlZCgpKQorICAgIGVsc2UgaWYgKCFyZXNvdXJj
ZS53YXNDYW5jZWxlZCgpKQogICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpk
aXNwYXRjaExvYWRFdmVudCh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgK
aW5kZXggZjRmMzdmNmNkZmE5OTQxYWRmNGFhMzE5MmY3MWY1NGM2NDQ5ZmU2Zi4uMTY4OGIxYmFi
MWE4Zjg2YjU0MjY4OWRkNjE2MmE5OWExNDJkMmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5oCkBAIC0xOSw4ICsxOSw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
ICAqLwogCi0jaWZuZGVmIFNWR1VzZUVsZW1lbnRfaAotI2RlZmluZSBTVkdVc2VFbGVtZW50X2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdEb2N1bWVudENsaWVudC5oIgpAQCAtNzIsNyArNzEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wpIG92ZXJyaWRlOwogICAgIGJv
b2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVGltZXIqIHN2Z0xv
YWRFdmVudFRpbWVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKIAogICAgIERvY3VtZW50KiBleHRlcm5hbERvY3VtZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCB1cGRhdGVFeHRlcm5hbERvY3VtZW50KCk7CkBAIC05OCw1ICs5NywzIEBAIHByaXZh
dGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3ZWZkNzRkZTAyMTJlZmEzMTJlYWY2NzQ4ODlmN2I4
OWY5ZDdhMDU4Li4xOTU1NmQyZTk3MWQ0ZDc0Y2JkNDdkYWRmNGZhMGZjZGYyN2YxYjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
MjI4LDkgKzIyOCw5IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydEVycm9yTWVzc2Fn
ZUJsb2NrKCkKICAgICBtX3htbEVycm9ycy0+aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKTsKIH0K
IAotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IHVudXNlZFJlc291cmNlKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHVudXNlZFJlc291cmNlKQogewotICAgIEFTU0VSVF9VTlVTRUQodW51
c2VkUmVzb3VyY2UsIHVudXNlZFJlc291cmNlID09IG1fcGVuZGluZ1NjcmlwdCk7CisgICAgQVNT
RVJUX1VOVVNFRCh1bnVzZWRSZXNvdXJjZSwgJnVudXNlZFJlc291cmNlID09IG1fcGVuZGluZ1Nj
cmlwdCk7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1NjcmlwdC0+YWNjZXNzQ291bnQoKSA+IDApOwog
CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKG1fcGVuZGluZ1NjcmlwdC5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXgg
NzFkNjY5ZjVjZjcwNGNjNDc2ZjcwOGM3N2QyMzQ3NTU2YTAxMzliZS4uMjkxNzZkZDJjYzc0YWUz
OGI3ZjZhNTQzNmYyNjY2ODhjN2VjMDBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIFRleHQ7CiAg
ICAgICAgIGJvb2wgc2hvdWxkQXNzb2NpYXRlQ29uc29sZU1lc3NhZ2VzV2l0aFRleHRQb3NpdGlv
bigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGll
bnQKLSAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRl
OworICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAK
ICAgICAgICAgdm9pZCBlbmQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290901</attachid>
            <date>2016-10-06 23:30:31 -0700</date>
            <delta_ts>2016-10-07 00:04:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-162060-20161007082714.patch</filename>
            <type>text/plain</type>
            <size>75096</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZkNDM0YWNmY2ZlNzIw
ZDg5MjhhNTBlOTRhOTRjMjllNWQwYTc4NS4uNzQxMTE4MzIzYTA4MGVmYjc5OTU5OTQ0NDYzNTk2
ZmMyNjJkOWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMCBAQAogMjAxNi0xMC0wNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3IgQ2FjaGVk
UmVzb3VyY2VDbGllbnQ6Om5vdGlmeUZpbmlzaGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgTWFr
aW5nIENhY2hlZFJlc291cmNlQ2xpZW50IGFuZCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBjYWxs
YmFja3MgdGFrZSBDYWNoZWRSZXNvdXJjZSByZWZlcmVuY2VzIGFuZCBub3QgcG9pbnRlcnMuCisg
ICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSBDYWNoZWRSZXNvdXJjZSBwYXJhbWV0ZXIgaXMgb25s
eSB1c2VkIGZvciBhc3NlcnRpb25zLgorICAgICAgICBSZW1vdmluZyB0aGF0IHBhcmFtZXRlciBt
aWdodCBiZSBjb250ZW1wbGF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgVGhlIG9ubHkgcmVh
bCBjYXNlIGlzIGluIFJlbmRlckltYWdlLgorCisgICAgICAgIFJlbW92ZWQgdGhlIENhY2hlZFJl
c291cmNlIHBhcmFtZXRlciBmcm9tIENvbnRlbnRGaWx0ZXIgbWV0aG9kcyBhcyBjb2RlIHdhcyBj
YWxsaW5nIHRoZXNlIG1ldGhvZHMgd2l0aCBudWxsIHZhbHVlcy4KKworICAgICAgICAqIGRvbS9M
b2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0
bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNl
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
ckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVNl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZXNwb25z
ZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5rTG9hZGVyOjp0cmlnZ2VyRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50Ojp0cmlnZ2VyRXZlbnRzKToK
KyAgICAgICAgKiBsb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaDoKKyAgICAgICAg
KiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVz
b3VyY2U6OnNob3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNv
dXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNl
OjpkYXRhU2VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVy
Ojpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6
OmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1RleHRU
cmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlk
QWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVj
dFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZXNwb25z
ZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpzaG91bGRD
YWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpkaWRT
ZW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVNlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnJlc3BvbnNlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnNob3Vs
ZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRBZGRD
bGllbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xpZW50OjpkZXByZWNhdGVkRGlkUmVj
ZWl2ZUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNv
bkxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9zb3VwL0NhY2hlZFJhd1Jlc291cmNlU291cC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6RmlsdGVySW5mbzo6c2V0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OkZpbHRlckluZm86Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgICogeG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuaDoKKworMjAxNi0xMC0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKICAgICAgICAgQWRkIGEgcGxhY2UgZm9yIGNvbW1vbiBIVFRQIEhlYWRlciB2YWx1
ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzAw
MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4
IDgxZTJkMmVmYzc3ZDM1Mzg5ZDliZTljMDQ1NzVmYzY3MTZmZWY3N2UuLjRmNWNhOTUzYTA0ODM3
ZWZmYzExNGFjMzRlMzM3OTM3OTM5YjYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC02NywxMCArNjcsOSBAQCBib29sIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdDo6d2FzQ2FuY2VsZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NhY2hlZFNjcmlw
dC0+d2FzQ2FuY2VsZWQoKTsKIH0KIAotdm9pZCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTG9hZGFibGVDbGFzc2lj
U2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAg
QVNTRVJUKHJlc291cmNlKTsKLSAgICBpZiAocmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5pc0Fj
Y2Vzc0NvbnRyb2woKSkgeworICAgIGlmIChyZXNvdXJjZS5yZXNvdXJjZUVycm9yKCkuaXNBY2Nl
c3NDb250cm9sKCkpIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29u
c29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVk
IGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1f
ZXJyb3IgPSBFcnJvciB7CiAgICAgICAgICAgICBFcnJvclR5cGU6OkNyb3NzT3JpZ2luTG9hZCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAppbmRleCBhZmRmMTUy
NmRhYzE5Nzc1MDMxNDYzZjkwZmQ1ZmMxZWVhNDdiNTY2Li5mZDM4Zjc3YWY3ZDM0NGI4OTMyOTEy
ZGEyOTkxNWE3MmFkOWJkNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFi
bGVDbGFzc2ljU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTG9hZGFi
bGVDbGFzc2ljU2NyaXB0KENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4mJiBjYWNo
ZWRTY3JpcHQpIDogbV9jYWNoZWRTY3JpcHQoV1RGTW92ZShjYWNoZWRTY3JpcHQpKSB7IH0KIAot
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwogICAgIE9wdGlvbmFs
PEVycm9yPiBtX2Vycm9yIHsgTnVsbG9wdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuY3BwCmluZGV4IDNlNWY4MWM1MmY2MzMyNzhmM2E2NGZmNzlkMjA2YmNmZjdhNzNmYjMu
LmU3ZjlmZWNiNDkxNjFhYzc2NDA0ZmU2ZTMxMjcyMGIxOTIxMjg3NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKQEAgLTczLDIxICs3MywyMiBAQCBTdHJpbmcgSFRN
TEltYWdlTG9hZGVyOjpzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyKSBjb25zdAog
ICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAK
LXZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit2
b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQogewot
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlKCk7CisgICAgQVNTRVJUKGltYWdl
KCkpOworICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9ICppbWFnZSgpOwogCiAgICAgUmVm
PEVsZW1lbnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKICAgICBJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoY2FjaGVkSW1hZ2UpOwogCi0gICAgYm9vbCBsb2FkRXJyb3IgPSBjYWNoZWRJbWFnZS0+
ZXJyb3JPY2N1cnJlZCgpIHx8IGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2Rl
KCkgPj0gNDAwOworICAgIGJvb2wgbG9hZEVycm9yID0gY2FjaGVkSW1hZ2UuZXJyb3JPY2N1cnJl
ZCgpIHx8IGNhY2hlZEltYWdlLnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDA7CiAg
ICAgaWYgKCFsb2FkRXJyb3IpIHsKICAgICAgICAgaWYgKCFlbGVtZW50KCkuaW5Eb2N1bWVudCgp
KSB7CiAgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0o
KTsKICAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgICAgICAgICAg
Ly8gRklYTUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byBy
ZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1OTUKLSAgICAgICAgICAgIHZtLmhlYXAuZGVw
cmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KGNhY2hlZEltYWdlLT5lbmNvZGVkU2l6ZSgpKTsKKyAg
ICAgICAgICAgIHZtLmhlYXAuZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KGNhY2hlZEltYWdl
LmVuY29kZWRTaXplKCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VMb2FkZXIuaAppbmRleCA5MDBjMzRiM2Y3YzYyMmFhYTRhYmQzNTc1NDAyNjAxNmViZWNh
NzdhLi5hODE1ODlhMGE4M2JiNjhiMTcxMzlhMTNkYjIwNTNhZGI3OThlM2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgKQEAgLTIwLDggKzIwLDcgQEAKICAqCiAgKi8KIAot
I2lmbmRlZiBIVE1MSW1hZ2VMb2FkZXJfaAotI2RlZmluZSBIVE1MSW1hZ2VMb2FkZXJfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgogCkBAIC0zNSw5ICszNCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiB9OwogCiB9Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDkwYTNmZWVjMTA1
ZjUwODY5YTIwYmViZGI4YWY3YmU2NjAxMmRhMDMuLjlhYjQ5Mjk1NzEyZjk3NWE0OGViYzg0ZTYz
YzkxYjI5MDVmYTc2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
QEAgLTEzMyw5ICsxMzMsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoKQogICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKIH0KIAotYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBDb250ZW50
RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWREb2N1
bWVudExvYWRlciB7IG1fZG9jdW1lbnRMb2FkZXIgfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpGaWx0ZXJpbmcpIHsKQEAgLTE0OCw0MiArMTQ3LDQxIEBAIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBjb25zCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAKLWJvb2wg
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIFJlZjxE
b2N1bWVudExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50TG9hZGVy
IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExP
RyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBk
YXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVy
IHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5S
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNo
Q29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRG
aWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0
YShkYXRhLCBsZW5ndGgpOwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCkKLSAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKnJlc291cmNl
KTsKKyAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKm1fbWFpblJlc291cmNlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRl
OjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCitib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0g
ICAgQVNTRVJUKHJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07CiAK
LSAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAobV9tYWluUmVzb3Vy
Y2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8
JXM+LlxuIiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRl
cmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGls
QmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAg
ICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAgICAgICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7Ci0gICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRh
KCpyZXNvdXJjZSk7CisgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKCptX21haW5SZXNv
dXJjZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZCkKQEAgLTI1MCw3ICsyNDgsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IEJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVk
KCZyZXNvdXJjZSwgcmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUo
KSk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKHJlc291cmNlLCByZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGlj
IGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmgKaW5kZXggYTg1MGMxYmVjODE3OTc3YjdmNWJjNWQyODdmZWI5ZTc3MzRhMmRjYS4uOGI0
ODE2NmI1OGMzZDFjZDU5NzBkNThkYTI3YjYxMmI4NGJiODFiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5oCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAogICAgIGJvb2wgY29udGludWVBZnRlcldpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLSAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgIGJv
b2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKKyAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRh
UmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBS
ZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IGM5ZmI5OTg4MzM5OGNkODI0ZDlhMTE4YzI4
MDRhZWMwYmQ1MGU4YzMuLjZiNjUwNDJlMmVhNzIxMTYxY2RlYWQwMTFkOTkwZjU3NDEzOWFmYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXIuY3BwCkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvCiAg
ICAgbG9hZGVyLnByZWZsaWdodFN1Y2Nlc3MoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCit2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAobV9yZXNvdXJjZS0+bG9hZEZh
aWxlZE9yQ2FuY2VsZWQoKSkgewogICAgICAgICBSZXNvdXJjZUVycm9yIHByZWZsaWdodEVycm9y
ID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpOwogICAgICAgICAvLyBJZiB0aGUgcHJlZmxp
Z2h0IHdhcyBjYW5jZWxsZWQgYnkgdW5kZXJseWluZyBjb2RlLCBpdCBwcm9iYWJseSBtZWFucyB0
aGUgcmVxdWVzdCB3YXMgYmxvY2tlZCBkdWUgdG8gc29tZSBhY2Nlc3MgY29udHJvbCBwb2xpY3ku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmgKaW5kZXggMDIyNDUxZjc4ZDQxYzNkYmFkOTgwNTZmZDQ0YTEwNzlhYmQ1MGFlYS4uNjk3
MWMzMWY5NmIwZjgyZGFkN2M2ZDUxNzUzMjM0MDc4OWQ3NjljNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBmaW5hbDsKKyAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBzdGF0
aWMgdm9pZCBoYW5kbGVMb2FkaW5nRmFpbHVyZShEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCB1
bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgdmFs
aWRhdGVQcmVmbGlnaHRSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMWMwZDI5MGY4MGYyMzgy
MmU0NDAzYzNiZTQ0Y2RmZmQ3MWM4Y2QxOC4uZWRhOTMxMDEwYjRhMWZjNGExY2JkMzFlNGJlOTg4
ODViN2VjNTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0zNzMsMTQgKzM3MywxNCBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25z
dAogICAgIHJldHVybiBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAhbV9zdWJyZXNvdXJjZUxv
YWRlcnMuaXNFbXB0eSgpIHx8ICFtX3BsdWdJblN0cmVhbUxvYWRlcnMuaXNFbXB0eSgpOwogfQog
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCit2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmICht
X2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZp
bmlzaGVkKHJlc291cmNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCBtX21haW5SZXNvdXJjZSA9PSByZXNvdXJjZSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgbV9tYWluUmVzb3VyY2UgPT0gJnJlc291cmNlKTsKICAgICBBU1NF
UlQobV9tYWluUmVzb3VyY2UpOwogICAgIGlmICghbV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSAmJiAhbV9tYWluUmVzb3VyY2UtPndhc0NhbmNlbGVkKCkpIHsKICAgICAgICAgZmluaXNo
ZWRMb2FkaW5nKG1fbWFpblJlc291cmNlLT5sb2FkRmluaXNoVGltZSgpKTsKQEAgLTQ3MSw3ICs0
NzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3co
KQogICAgIGlmIChyZXNwb25zZS51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZShtX3JlcXVlc3QudXJsKCksIG1fc3Vic3RpdHV0ZURhdGEubWltZVR5
cGUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0
YS50ZXh0RW5jb2RpbmcoKSk7CiAKLSAgICByZXNwb25zZVJlY2VpdmVkKDAsIHJlc3BvbnNlKTsK
KyAgICByZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6c3RhcnREYXRhTG9hZFRpbWVyKCkKQEAgLTQ5Miw5ICs0OTIsOSBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKCkKICAgICAgICAgc3RhcnREYXRh
TG9hZFRpbWVyKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIERvY3VtZW50TG9hZGVy
OjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQog
ewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fbWFpblJlc291cmNl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3Vy
Y2UpOwogICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0K
IApAQCAtNjMyLDE0ICs2MzIsMTkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdB
ZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCgKICAgICAgICAg
Y2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlci0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1
ZXN0KSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCBtX21haW5SZXNvdXJjZSA9PSAmcmVzb3VyY2UpOworICAgIHJlc3BvbnNl
UmVjZWl2ZWQocmVzcG9uc2UpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRG
aWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc291cmNlLCByZXNwb25zZSkp
CisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgog
Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9tYWluUmVzb3VyY2UgPT0gcmVzb3VyY2Up
OwogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgYm9v
bCB3aWxsTG9hZEZhbGxiYWNrID0gbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByZXNwb25zZSk7CiAKQEAgLTgyMSw3ICs4
MjYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQobnVsbHB0
ciwgY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICAgICAgZGF0YVJl
Y2VpdmVkKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nKDApOwog
ICAgIH0KQEAgLTkyOSwxNiArOTM0LDIxIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERh
dGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAgICAgbV93cml0ZXIuYWRkRGF0
YShieXRlcywgbGVuZ3RoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAgICBkYXRhUmVjZWl2ZWQo
ZGF0YSwgbGVuZ3RoKTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChyZXNvdXJjZSwgZGF0YSwgbGVuZ3RoKSkKKyAgICBpZiAobV9j
b250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKICAgICBBU1NFUlQo
ZGF0YSk7CiAgICAgQVNTRVJUKGxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
cmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051
bGwoKSk7CiAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJh
Y2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGJmZDg3ODdlMWNjODQxZGNlMzFj
ZjQ5MDlhM2JjMzcyOGY4ZTgyMzUuLmMzNDZmZWNkNmRkMjJjMDdkNThkYWE0ODIxNzQxYTljYTYy
NTNlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zMTYsMTAg
KzMxNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1h
aW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBv
dmVycmlkZTsKKworICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKIAogICAgICAgICBib29sIG1heWJlTG9hZEVtcHR5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXgg
NDNmMGE5MDI1OGRkY2Q3NmY4ZDc4MTkxOTUyNDI4ZTY2YzdmMWViMi4uNGI0YWFkNWNlNWE5MjZm
MmQwNGYyOGUzNmZjNzNhODNkMzA3YmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyMSwxMCArMjIxLDEwIEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCByZXBvcnRSZWRpcmVjdGlvbldpdGhCYWRTY2hlbWUoVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYgY2xpZW50CiAgICAgY2xpZW50LmRpZEZhaWwoUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJSZWRpcmVjdGlvbiB0byBVUkwgd2l0
aCBhIHNjaGVtZSB0aGF0IGlzIG5vdCBIVFRQKFMpLiIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wpKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGly
ZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZjxEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCkBAIC0yNzYsMTYg
KzI3NiwxNiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cgogICAgIG1ha2VDcm9zc09yaWdpbkFj
Y2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFTZW50KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhU2VudChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAg
bV9jbGllbnQtPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0K
IAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3Zv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIHJlc3BvbnNlLCBtX3Jlc291
cmNlLT5yZXNwb25zZVRhaW50aW5nKCkpOwogfQogCkBAIC0zMDcsOSArMzA3LDkgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBt
X3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7CiAgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApAQCAtMzIwLDEwICszMjAsMTAgQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNo
YXIqIGRhdGEsIGkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0
aCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIEFTU0VSVCht
X2NsaWVudCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlk
RmFpbChtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3Io
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKaW5kZXggNzA2YWUwMjZjOWEwMDZhYTBkOTFlMjI2YmJhNTc0MTg1OWRmNDA0Zi4uMGZmMjkw
ZDgyNTYzODNhMDcxYmZkZjFmOGRkMWJlNzY4ZWZlNGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtNzcsMTEgKzc3LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhclJlc291cmNlKCk7CiAKICAg
ICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKLSAgICAgICAgdm9pZCBkYXRhU2VudChD
YWNoZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7Ci0gICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlc3Bv
bnNlOjpUYWludGluZyk7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA4MDE2ZTgyNmI2OGU5ZjY0MjgyNTJjODUz
YWM4YjBjMGI2MWJjMTc5Li5hNTNhZjExYmI5ZjkzYmEyYTgxMjNkYjFhODEwZjM4ODc5OTZmZGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTI3MCwxMCArMjcwLDEw
IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vy
cm9yKCkKICAgICB1cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIEltYWdlTG9hZGVy
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJU
KG1fZmFpbGVkTG9hZFVSTC5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX2lt
YWdlLmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9p
bWFnZS5nZXQoKSk7CiAKICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVlOwogICAgIGlmICghaGFz
UGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpKQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSW1hZ2VM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBpZiAo
IW1faGFzUGVuZGluZ0xvYWRFdmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc291
cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3NDb250cm9sKCkpIHsKKyAgICBpZiAobV9pbWFn
ZS0+cmVzb3VyY2VFcnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIGNsZWFySW1h
Z2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KCk7CiAKICAgICAgICAgbV9oYXNQ
ZW5kaW5nRXJyb3JFdmVudCA9IHRydWU7CkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBJbWFnZUxv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlc291cmNlLT53YXNDYW5jZWxlZCgpKSB7CisgICAg
aWYgKG1faW1hZ2UtPndhc0NhbmNlbGVkKCkpIHsKICAgICAgICAgbV9oYXNQZW5kaW5nTG9hZEV2
ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHByb3Rl
Y3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0ZWx5IGJlZm9yZSByZXR1cm5p
bmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRvaW5nIHNvIG1pZ2h0IHJlc3Vs
dCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmgKaW5kZXggNTY2MDViODFlYThmOWQ1ODc3YTM5Y2ZhMWUyYjBjZmE2YzRk
YWY5Zi4uNzcxNzY2N2Y2NzcwZGU3NDYzYjQ4NjBhMGU3MDg0ZmM1MDc5MTM5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTIwLDggKzIwLDcgQEAKICAqCiAgKi8KIAotI2lm
bmRlZiBJbWFnZUxvYWRlcl9oCi0jZGVmaW5lIEltYWdlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUhhbmRsZS5oIgpAQCAtNzMsNyArNzIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBJbWFnZUxvYWRlcihFbGVtZW50Jik7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hMb2FkRXZlbnQoKSA9IDA7CkBAIC0xMDcsNSArMTA2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggNmE4YzQxMTgw
M2Y3MzNjMzgzZTU3MjgyNDAzMThiYzE1OTE0NjY0NC4uMDEwMzdkN2FiYjE1OTA1MTA3MDZmOGU3
NzgwOWExOTg3ZGM0NTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAt
NjUsMTkgKzY1LDE5IEBAIExpbmtMb2FkZXI6On5MaW5rTG9hZGVyKCkKICAgICAgICAgbV9wcmVs
b2FkUmVzb3VyY2VDbGllbnQtPmNsZWFyKCk7CiB9CiAKLXZvaWQgTGlua0xvYWRlcjo6dHJpZ2dl
ckV2ZW50cyhjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIExpbmtMb2FkZXI6
OnRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIGlm
IChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmIChyZXNvdXJjZS5lcnJvck9jY3Vy
cmVkKCkpCiAgICAgICAgIG1fY2xpZW50LmxpbmtMb2FkaW5nRXJyb3JlZCgpOwogICAgIGVsc2UK
ICAgICAgICAgbV9jbGllbnQubGlua0xvYWRlZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgpID09IHJlc291cmNlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX2NhY2hlZExpbmtSZXNvdXJjZS5nZXQoKSA9
PSAmcmVzb3VyY2UpOwogCi0gICAgdHJpZ2dlckV2ZW50cyhtX2NhY2hlZExpbmtSZXNvdXJjZS5n
ZXQoKSk7CisgICAgdHJpZ2dlckV2ZW50cygqbV9jYWNoZWRMaW5rUmVzb3VyY2UpOwogCiAgICAg
bV9jYWNoZWRMaW5rUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgbV9jYWNoZWRM
aW5rUmVzb3VyY2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXgg
ZmU3MGQxZTUxMTNkYjRkY2QzNWYyN2ZmYTcwMGE3MjAzNjkwMDM4Yi4uMmE0OTIxYzQxNWNmYWE2
ZGMwNGM3N2RhN2ViODE4NzIyNTA0OWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5o
CkBAIC0yOSw4ICsyOSw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgTGlua0xvYWRlcl9oCi0jZGVm
aW5lIExpbmtMb2FkZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCkBAIC01NiwxMCArNTUsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBPcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVz
b3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXMpOwogCiAgICAgV2Vha1B0
cjxMaW5rTG9hZGVyPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7IH0KLSAgICB2b2lkIHRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICB2b2lkIHRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25z
dCBVUkwmIGhyZWYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUpOwogCiAgICAgTGlua0xvYWRlckNsaWVudCYgbV9jbGllbnQ7CkBAIC02
Nyw3ICs2Niw1IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnQ+IG1fcHJlbG9hZFJlc291cmNlQ2xpZW50OwogICAgIFdlYWtQdHJGYWN0b3J5
PExpbmtMb2FkZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwotICAgIAotfQogCi0jZW5kaWYKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dHMuY3BwCmluZGV4IGZlN2VjYjU3MjI1Yzc4YWMyYzBkYzA3M2QxNDkzMTJjOGQ5ODUxOTguLjFj
ZDc0NDMwMGYzMjI3ZGMyODk3MjEwYjdmOGJmNjhkMDkzZTczNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmNwcApAQCAtMzcs
NyArMzcsNyBAQCBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50OjpMaW5rUHJlbG9hZFJlc291cmNl
Q2xpZW50KExpbmtMb2FkZXImIGxvYWRlciwgQ2FjaGVkUgogICAgIG1fcmVzb3VyY2UgPSAmcmVz
b3VyY2U7CiB9CiAKLXZvaWQgTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudDo6dHJpZ2dlckV2ZW50
cyhjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIExpbmtQcmVsb2FkUmVzb3Vy
Y2VDbGllbnQ6OnRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQog
ewogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2FkZXItPnRyaWdnZXJFdmVudHMocmVz
b3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJj
ZUNsaWVudHMuaAppbmRleCBkN2Q2MjM5ZjcyMjk4NjQwNDEwMWRhZDliMzU5MzAyNDUyMWJmNTJj
Li4yODQ2ZWUxMzZiODdmYjJkYjYyNjI2OTMzZTUwNWYxOGZiNTRlMjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5MaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50KCkgeyB9CiAKLSAgICB2b2lkIHRy
aWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIHRyaWdnZXJFdmVu
dHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0g
MDsKIApAQCAtODMsMTEgKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxpbmtQcmVsb2Fk
U2NyaXB0UmVzb3VyY2VDbGllbnQoKSB7IH0KIAogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQo
b3duZWRSZXNvdXJjZSgpID09IHJlc291cmNlKTsKLSAgICAgICAgdHJpZ2dlckV2ZW50cyhyZXNv
dXJjZSk7Ci0gICAgfQorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKSBvdmVycmlkZSB7IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOyB9CiAKICAgICB2b2lk
IGNsZWFyKCkgb3ZlcnJpZGUgeyBjbGVhclJlc291cmNlKCp0aGlzKTsgfQogCkBAIC0xMTAsOCAr
MTA2LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQq
IHJlc291cmNlKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAg
ICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSByZXNvdXJjZSk7Ci0gICAgICAgIHRyaWdn
ZXJFdmVudHMocmVzb3VyY2UpOworICAgICAgICB0cmlnZ2VyRXZlbnRzKCpyZXNvdXJjZSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsgY2xlYXJSZXNvdXJjZSgqdGhpcyk7
IH0KQEAgLTEzMywxMSArMTMwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TGlua1ByZWxv
YWRJbWFnZVJlc291cmNlQ2xpZW50KCkgeyB9CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChv
d25lZFJlc291cmNlKCkgPT0gcmVzb3VyY2UpOwotICAgICAgICB0cmlnZ2VyRXZlbnRzKHJlc291
cmNlKTsKLSAgICB9CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpIG92ZXJyaWRlIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KIAogICAgIHZvaWQg
Y2xlYXIoKSBvdmVycmlkZSB7IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CiAKQEAgLTE2MSw3ICsx
NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmIHJlc291cmNl
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSAmcmVz
b3VyY2UpOwotICAgICAgICB0cmlnZ2VyRXZlbnRzKCZyZXNvdXJjZSk7CisgICAgICAgIHRyaWdn
ZXJFdmVudHMocmVzb3VyY2UpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKSBvdmVycmlkZSB7
IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CkBAIC0xODMsMTEgKzE3Niw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfkxpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQoKSB7IH0KIAotICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG93bmVkUmVzb3VyY2UoKSA9PSByZXNvdXJjZSk7Ci0gICAgICAg
IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOwotICAgIH0KKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgb3ZlcnJpZGUgeyB0cmlnZ2VyRXZlbnRzKHJlc291
cmNlKTsgfQogCiAgICAgdm9pZCBjbGVhcigpIG92ZXJyaWRlIHsgY2xlYXJSZXNvdXJjZSgqdGhp
cyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDkxNzYzZDY1MTU3NzAyMjQ1YmIwNzIxNzU1YzAzMTJjZDc4ZmJhNGIuLjRhZjkyMGRl
M2QwODJmYTIwMjU4MDMwNmUxMGMzM2VmNDljY2UyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEyOSwxNSArMTI5LDE1IEBAIHZvaWQg
TWVkaWFSZXNvdXJjZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVyc0xvYWRpbmcpCiAgICAg
ICAgIG1fcmVzb3VyY2UtPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZyk7CiB9CiAKLXZv
aWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBNZWRpYVJlc291cmNl
OjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291
cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2xvYWRlci0+ZG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgaWYgKCFtX2xvYWRlci0+Y3Jvc3NPcmlnaW5Nb2RlKCkuaXNOdWxsKCkgJiYg
IXJlc291cmNlLT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fbG9hZGVyLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmICghbV9sb2FkZXItPmNyb3NzT3JpZ2lu
TW9kZSgpLmlzTnVsbCgpICYmICFtX3Jlc291cmNlLT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hl
Y2soKm1fbG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBjb25zb2xlTWVzc2FnZSgiQ3Jvc3Mt
b3JpZ2luIG1lZGlhIHJlc291cmNlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKTsKICAgICAgICAgbV9sb2FkZXItPmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBjb25zb2xlTWVzc2FnZS5nZXQoKSk7CiAgICAgICAgIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xD
aGVjayA9IGZhbHNlOwpAQCAtMTUyLDkgKzE1Miw5IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVz
CiAgICAgICAgIG1fY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSk7CiB9
CiAKLWJvb2wgTWVkaWFSZXNvdXJjZTo6c2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBNZWRp
YVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQpAQCAtMTYyLDQxICsx
NjIsNDEgQEAgYm9vbCBNZWRpYVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RS
ZWNlaXZlZCgqdGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi12b2lkIE1lZGlhUmVzb3Vy
Y2U6OmRhdGFTZW50KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3ZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNl
KTsKIAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogICAgIFJlZlB0
cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkK
ICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7
CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlKQordm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAog
ICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICht
X2NsaWVudCkgewotICAgICAgICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkp
Ci0gICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgcmVzb3VyY2UtPnJlc291
cmNlRXJyb3IoKSk7CisgICAgICAgIGlmIChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxl
ZCgpKQorICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRGYWlsZWQoKnRoaXMsIG1fcmVzb3VyY2Ut
PnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY2xpZW50LT5s
b2FkRmluaXNoZWQoKnRoaXMpOwogICAgIH0KQEAgLTIwNCw5ICsyMDQsOSBAQCB2b2lkIE1lZGlh
UmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAog
I2lmIFVTRShTT1VQKQotY2hhciogTWVkaWFSZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVy
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYg
YWN0dWFsU2l6ZSkKK2NoYXIqIE1lZGlhUmVzb3VyY2U6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFj
dHVhbFNpemUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVz
b3VyY2UpOwogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5nZXRPckNyZWF0ZVJlYWRC
dWZmZXIoKnRoaXMsIHJlcXVlc3RlZFNpemUsIGFjdHVhbFNpemUpIDogbnVsbHB0cjsKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
ZDI3ZGNmNTEwMmYwYTYyM2FkZDJjZjk0MWM4NTJkZTZjMTMxY2Q2Yi4uODE5OTc4MjFhZjI1YTBh
ZGI1ZWRjODAwNTkxODM2M2IzMWVjNzA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5oCkBAIC03MCwxNSArNzAsMTUgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0RGVmZXJzTG9hZGluZyhib29sKSBvdmVycmlkZTsKICAgICBib29sIGRpZFBhc3NBY2Nlc3ND
b250cm9sQ2hlY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2s7IH0KIAotICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50Ci0gICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSosIHVuc2ln
bmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICAv
LyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAorICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVu
c2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFNPVVApCi0gICAgY2hh
ciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwgc2l6ZV90IC8qcmVxdWVz
dGVkU2l6ZSovLCBzaXplX3QmIC8qYWN0dWFsU2l6ZSovKSBvdmVycmlkZTsKKyAgICBjaGFyKiBn
ZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UmLCBzaXplX3QgLypyZXF1ZXN0ZWRT
aXplKi8sIHNpemVfdCYgLyphY3R1YWxTaXplKi8pIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGY4NWQ1
ZDUzNTJjOWExNWFmMmNkMWE4OWQ5YWVkZTc1YjNmYjQxZjMuLjk2ZTkwYjVmZDIyZDUxOGMxNTNi
OWY4MzA0YTlkZTBkM2U4OWJiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuY3BwCkBAIC03OCwxNCArNzgsMTQgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmNhbmNl
bExvYWQoKQogICAgIH0KIH0KIAotdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVE
YXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9j
ZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKG1f
cmVzb3VyY2UgPT0gcmVzb3VyY2UpOwotICAgIAotICAgIGlmIChtX3N0YXRlID09IEZhaWxlZCB8
fCAhcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgbV9yZXNvdXJjZSA9PSAmcmVzb3VyY2UpOworCisgICAgaWYgKG1fc3RhdGUgPT0gRmFpbGVk
IHx8ICFtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgYXV0byogYnVmZmVyID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisKKyAgICBh
dXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmIChtX3Bh
cnNlT2Zmc2V0ID09IGJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMiwx
NCArMTAyLDE0IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVyeSB1bnVz
dWFsIHBhdHRlcm4sIG5vIG90aGVyIENhY2hlZFJlc291cmNlQ2xpZW50IGRvZXMgdGhpcy4gUmVm
YWN0b3IgdG8gdXNlIG5vdGlmeUZpbmlzaGVkKCkgaW5zdGVhZC4KLXZvaWQgVGV4dFRyYWNrTG9h
ZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKK3ZvaWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hl
ZFJlc291cmNlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBBU1NFUlQobV9yZXNv
dXJjZSA9PSByZXNvdXJjZSk7Ci0gICAgCi0gICAgaWYgKCFyZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJj
ZSk7CisKKyAgICBpZiAoIW1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBwcm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJjZSk7CisKKyAgICBwcm9j
ZXNzTmV3Q3VlRGF0YSgqbV9yZXNvdXJjZSk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpj
b3JzUG9saWN5UHJldmVudGVkTG9hZCgpCkBAIC0xMjAsMTkgKzEyMCwxOSBAQCB2b2lkIFRleHRU
cmFja0xvYWRlcjo6Y29yc1BvbGljeVByZXZlbnRlZExvYWQoKQogICAgIG1fc3RhdGUgPSBGYWls
ZWQ7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCit2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VSVChtX3Jlc291cmNlID09IHJlc291
cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJj
ZSk7CiAKLSAgICBpZiAocmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRyb2wo
KSkKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmlzQWNjZXNzQ29udHJvbCgp
KQogICAgICAgICBjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpOwogCiAgICAgaWYgKG1fc3RhdGUg
IT0gRmFpbGVkKSB7Ci0gICAgICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJlc291cmNlKTsKKyAgICAg
ICAgcHJvY2Vzc05ld0N1ZURhdGEoKm1fcmVzb3VyY2UpOwogICAgICAgICBpZiAobV9jdWVQYXJz
ZXIpCiAgICAgICAgICAgICBtX2N1ZVBhcnNlci0+ZmlsZUZpbmlzaGVkKCk7CiAgICAgICAgIGlm
IChtX3N0YXRlICE9IEZhaWxlZCkKLSAgICAgICAgICAgIG1fc3RhdGUgPSByZXNvdXJjZS0+ZXJy
b3JPY2N1cnJlZCgpID8gRmFpbGVkIDogRmluaXNoZWQ7CisgICAgICAgICAgICBtX3N0YXRlID0g
bV9yZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpID8gRmFpbGVkIDogRmluaXNoZWQ7CiAgICAgfQog
CiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQgJiYgbV9jdWVQYXJzZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKaW5kZXggMTIzZjE0ODg4NmExZmJjZTJjYjk2Zjcz
ZDI5NWYzNWRjMGRiY2EyNi4uYTUzNDY1MWNjY2M3MGRiMjA2NDI5ZDQxYmI0YTM2NzllYjY1Y2Q3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaApAQCAtNjQsMjAgKzY0
LDIwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAot
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSBv
dmVycmlkZTsKLSAgICAKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENh
Y2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisKICAgICAvLyBXZWJWVFRQYXJzZXJDbGllbnQKICAg
ICB2b2lkIG5ld0N1ZXNQYXJzZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIG5ld1JlZ2lvbnNQYXJz
ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbGVGYWlsZWRUb1BhcnNlKCkgb3ZlcnJpZGU7Ci0g
ICAgCi0gICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSopOworCisgICAg
dm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwogICAgIHZvaWQgY3VlTG9h
ZFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGNvcnNQb2xpY3lQcmV2ZW50ZWRMb2FkKCk7CiAKICAg
ICBlbnVtIFN0YXRlIHsgSWRsZSwgTG9hZGluZywgRmluaXNoZWQsIEZhaWxlZCB9OwotICAgIAor
CiAgICAgVGV4dFRyYWNrTG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViVlRUUGFyc2VyPiBtX2N1ZVBhcnNlcjsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRUZXh0VHJhY2s+IG1fcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA0MmVjYmJjMGQxMTZiYTczNzQ5MmNm
OThiNDZlMzJmNzQ1YmZlODY2Li43ZmNiZTgzMzg5YWUwODljMWY5M2ViMjIzOTU5MWFhOTRkODI4
MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkCiAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMg
PSB3Lm5leHQoKSkKLSAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKHRoaXMsIGRhdGEsIGxlbmd0aCk7
CisgICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBj
KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
ZGlyZWN0Q291bnQ7IGkrKykgewogICAgICAgICBSZWRpcmVjdFBhaXIgcmVkaXJlY3QgPSBtX3Jl
ZGlyZWN0Q2hhaW5baV07CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlZGlyZWN0
Lm1fcmVxdWVzdCk7Ci0gICAgICAgIGNsaWVudC5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVl
c3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIGNsaWVudC5yZWRpcmVj
dFJlY2VpdmVkKCp0aGlzLCByZXF1ZXN0LCByZWRpcmVjdC5tX3JlZGlyZWN0UmVzcG9uc2UpOwog
ICAgICAgICBpZiAoIWhhc0NsaWVudChjKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xNDUsMTIgKzE0NSwxMiBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQo
Q2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAgICAgICAgICBBU1NFUlQoIXZhbGlkYXRpb25J
blByb2dyZXNzKCkpOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVz
cG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwogICAgICAgICB9Ci0gICAgICAgIGNsaWVudC5y
ZXNwb25zZVJlY2VpdmVkKHRoaXMsIHJlc3BvbnNlKTsKKyAgICAgICAgY2xpZW50LnJlc3BvbnNl
UmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlKTsKICAgICB9CiAgICAgaWYgKCFoYXNDbGllbnQoYykp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9kYXRhKQotICAgICAgICBjbGllbnQuZGF0YVJl
Y2VpdmVkKHRoaXMsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgICAgIGNs
aWVudC5kYXRhUmVjZWl2ZWQoKnRoaXMsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7
CiAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgcmV0dXJuOwogICAgIENhY2hlZFJlc291
cmNlOjpkaWRBZGRDbGllbnQoY2xpZW50KTsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyYwogICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGll
bnRzKTsKICAgICAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0
KCkpCi0gICAgICAgICAgICBjLT5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlc3Bv
bnNlKTsKKyAgICAgICAgICAgIGMtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIHJlcXVlc3QsIHJl
c3BvbnNlKTsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChSZWRpcmVjdFBhaXIocmVx
dWVzdCwgcmVzcG9uc2UpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQocmVxdWVzdCwgcmVzcG9uc2UpOwpAQCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+
IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3
Lm5leHQoKSkKLSAgICAgICAgYy0+cmVzcG9uc2VSZWNlaXZlZCh0aGlzLCBtX3Jlc3BvbnNlKTsK
KyAgICAgICAgYy0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgbV9yZXNwb25zZSk7CiB9CiAKIGJv
b2wgQ2FjaGVkUmF3UmVzb3VyY2U6OnNob3VsZENhY2hlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkgewotICAgICAgICBpZiAoIWMtPnNob3VsZENh
Y2hlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQorICAgICAgICBpZiAoIWMtPnNob3VsZENhY2hl
UmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZwogewogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFTZW50KHRoaXMsIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICAgICAgYy0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2Vu
dCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6c3dp
dGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCmluZGV4IDFlMGM5ZmRm
OTE4NGM5NDVhZmNlMjljZWQ4ZTllMDlhNmFhYjNhM2IuLjgwMzBmMmUxYWMwMmZhNzI2MzlkMTZm
MTk4ZjQxODhlMmNiZWE0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCkBAIC0zNiwxMyArMzYsMTMgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyBy
ZXR1cm4gUmF3UmVzb3VyY2VUeXBlOyB9CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJl
c291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgp
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UqLCB1bnNpZ25l
ZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxC
eXRlc1RvQmVTZW50ICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGgg
Ki8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNl
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyAv
KiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQg
Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAjaWYgVVNFKFNPVVApCi0gICAg
dmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXpl
X3QgLyogcmVxdWVzdGVkU2l6ZSAqLywgc2l6ZV90JiAvKiBhY3R1YWxTaXplICovKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2Fj
aGVkUmVzb3VyY2UmLCBzaXplX3QgLyogcmVxdWVzdGVkU2l6ZSAqLywgc2l6ZV90JiAvKiBhY3R1
YWxTaXplICovKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDkzMTA1Y2E1ZmFi
M2E0MTg2YjQ2NmVkNGMzYmRkODdhZmJkOTdlNmUuLjYwZGEwZGEyYTQ4ODFlY2I1ZjE3NjVkNzVh
MzY2ODk2OTA3Nzg5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNo
ZWNrTm90aWZ5KCkKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291
cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCi0gICAgICAgIGNsaWVudC0+bm90aWZ5Rmlu
aXNoZWQodGhpcyk7CisgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMpOwogfQog
CiB2b2lkIENhY2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCkBAIC01
NDUsNyArNTQ1LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgaWYgKG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2su
cmVtb3ZlKCZjbGllbnQpKQogICAgICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwogICAgIGlm
ICghaXNMb2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAgIGNsaWVudC5ub3Rp
ZnlGaW5pc2hlZCh0aGlzKTsKKyAgICAgICAgY2xpZW50Lm5vdGlmeUZpbmlzaGVkKCp0aGlzKTsK
IH0KIAogYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlQ2xpZW50LmgKaW5kZXggMGI0NTQzZDVhNTk3OWVjYzQyZjZkMjY0YjQ0MmU3NDkz
MTNhNWM5ZC4uMTdjMzYxZDcxOTRlMDMzNjUwNGMwNTc2YjM5OTAyOGFkYWE2MWYwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgK
QEAgLTIxLDkgKzIxLDcgQEAKICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGFsbCBmdW5jdGlvbmFs
aXR5IG5lZWRlZCBmb3IgbG9hZGluZyBpbWFnZXMsIHN0eWxlIHNoZWV0cyBhbmQgaHRtbAogICAg
IHBhZ2VzIGZyb20gdGhlIHdlYi4gSXQgaGFzIGEgbWVtb3J5IGNhY2hlIGZvciB0aGVzZSBvYmpl
Y3RzLgogKi8KLQotI2lmbmRlZiBDYWNoZWRSZXNvdXJjZUNsaWVudF9oCi0jZGVmaW5lIENhY2hl
ZFJlc291cmNlQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQxLDggKzM5LDggQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5DYWNoZWRS
ZXNvdXJjZUNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXByZWNhdGVkRGlkUmVjZWl2ZUNh
Y2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNYTUxIdHRwUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJu
IEJhc2VSZXNvdXJjZVR5cGU7IH0KQEAgLTUzLDUgKzUxLDMgQEAgcHJvdGVjdGVkOgogfTsKIAog
fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKaW5kZXggOWEwZTRhZWZkNTYyN2Q4MDUxMGVjYTYwODk5ZDdjOWU4YjA2Zjc0NS4u
MWQ4MmJkNzFiNDJiZDlmMDE5ZGMyMDQxZWZmY2NlODRiNzJmNmY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZURhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQog
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50
ID0gd2Fsa2VyLm5leHQoKSkKLSAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNh
Y2hlZFJlc291cmNlKHRoaXMpOworICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZl
Q2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCiB2b2lkIENhY2hlZFRleHRUcmFjazo6YWRkRGF0
YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwCmluZGV4IGE4ZDMyODI1NjhhOWZlNmNhNjY2ZTc4NTgyMTgyMjdjMDg2OGY0
YzQuLjNiYWQ4YmYwMDRiYTg4ZGY0NzhiYmE2ZmMzMDFhZjFkYmU4NjU4NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC03OSwzMCArNzksMzAgQEAgdm9p
ZCBJY29uTG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgfQogfQogCi12b2lkIEljb25Mb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgSWNvbkxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VS
VChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAm
cmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICAvLyBJZiB3ZSBnb3QgYSBzdGF0dXMgY29k
ZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVzcG9uc2UsIHRoZW4gbGV0cwogICAgIC8vIGlnbm9y
ZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBkZWNvZGUgdGhlIGVycm9yIHBhZ2UgYXMgYW4gaWNv
bi4KLSAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgaW50
IHN0YXR1cyA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgYXV0
byogZGF0YSA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgaW50IHN0YXR1cyA9
IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVz
ICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkKICAgICAgICAgZGF0YSA9IG51bGxw
dHI7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciBwZGZNYWdpY051bWJlcltdID0gIiVQREYiOwog
ICAgIHN0YXRpYyB1bnNpZ25lZCBwZGZNYWdpY051bWJlckxlbmd0aCA9IHNpemVvZihwZGZNYWdp
Y051bWJlcikgLSAxOwogICAgIGlmIChkYXRhICYmIGRhdGEtPnNpemUoKSA+PSBwZGZNYWdpY051
bWJlckxlbmd0aCAmJiAhbWVtY21wKGRhdGEtPmRhdGEoKSwgcGRmTWFnaWNOdW1iZXIsIHBkZk1h
Z2ljTnVtYmVyTGVuZ3RoKSkgewotICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRl
cjo6ZmluaXNoTG9hZGluZygpIC0gSWdub3JpbmcgaWNvbiBhdCAlcyBiZWNhdXNlIGl0IGFwcGVh
cnMgdG8gYmUgYSBQREYiLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygp
IC0gSWdub3JpbmcgaWNvbiBhdCAlcyBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBQREYiLCBt
X3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGRhdGEg
PSBudWxscHRyOwogICAgIH0KIAotICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpm
aW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UiLCByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIG1fZnJhbWUubG9hZGVy
KCkuaWNvbigpLmNvbW1pdFRvRGF0YWJhc2UocmVzb3VyY2UtPnVybCgpKTsKKyAgICBMT0coSWNv
bkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29u
VVJMICVzIHRvIGRhdGFiYXNlIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgIG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLmNvbW1pdFRvRGF0YWJhc2UobV9y
ZXNvdXJjZS0+dXJsKCkpOwogICAgIC8vIFNldHRpbmcgdGhlIGljb24gZGF0YSBvbmx5IGFmdGVy
IGNvbW1pdHRpbmcgdG8gdGhlIGRhdGFiYXNlIGVuc3VyZXMgdGhhdCB0aGUgZGF0YSBpcwogICAg
IC8vIGtlcHQgaW4gbWVtb3J5IChzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0
aGUgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkpLCBzaW5jZQogICAgIC8vIHRoZXJlIGlzIGEgcGFn
ZSBVUkwgcmVmZXJlbmNpbmcgaXQuCi0gICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJ
Y29uVVJMKGRhdGEsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7CisgICAgaWNvbkRhdGFiYXNl
KCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygp
KTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUljb24o
KTsKICAgICBzdG9wTG9hZGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oCmluZGV4IDMwOTc1NTZlOWExMDk3NWZhZjgxYWFiNmQwNTZkNzZkYjY1NjhkODQuLmZl
YjAzNzAyMTY5NDZjZGQ5YjM4N2QzNDliM2IzMzA2MThlMjY0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTIwLDExICsyMCwxMCBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIEljb25Mb2FkZXJfaAotI2RlZmluZSBJY29uTG9hZGVyX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgpAQCAtNDYsMTIgKzQ1LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL0NhY2hlZFJhd1Jlc291cmNlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvc291cC9DYWNoZWRSYXdSZXNvdXJjZVNvdXAuY3BwCmluZGV4IGRmM2U1ZTUxMGE1MDdj
Y2E5ZGIwZjk3YWVkM2MzNzk5NDUwZGRjMjYuLjU0OTJkMjE0N2UxYTJjZDk2MTFkOGZmYjliNzMy
ZTdlYWRkYmU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL0NhY2hl
ZFJhd1Jlc291cmNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvQ2Fj
aGVkUmF3UmVzb3VyY2VTb3VwLmNwcApAQCAtMzEsNyArMzEsNyBAQCBjaGFyKiBDYWNoZWRSYXdS
ZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXpl
X3QmIGFjdAogewogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50KiBjID0gdy5uZXh0KCkpIHsKLSAgICAgICAgaWYgKGNoYXIqIGJ1ZmZlclB0ciA9IGMtPmdl
dE9yQ3JlYXRlUmVhZEJ1ZmZlcih0aGlzLCByZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKSkKKyAg
ICAgICAgaWYgKGNoYXIqIGJ1ZmZlclB0ciA9IGMtPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcigqdGhp
cywgcmVxdWVzdGVkU2l6ZSwgYWN0dWFsU2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVy
UHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGExZGMzODIzNWI2YjQ5NzUxZGU3MmUxZTFlMjVhNmI0MzQ2
ZTgzMjAuLjQwZjgwZjY3ODMzNGQ1MWY1MDQzOTM2OTFhMjk5MTQ2Njg2ODYyOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTEwOSwxMCArMTA5LDkgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjppbnZhbGlk
YXRlKCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4g
Mjk5KSkgewpAQCAtMTI0LDE0ICsxMjMsMTQgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqLCBpbnQp
Cit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqLCBpbnQpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RX
aXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogewotICAgIGlmIChyZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgeworICAg
IGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CiAgICAgICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS8xMzk4NzQxNz4gU2V0IHRoZSBjb250ZW50VHlwZSBvZiB0aGUgY29udGVudElu
Zm9ybWF0aW9uUmVxdWVzdCB0byBhbiBlbXB0eQogICAgICAgICAvLyBzdHJpbmcgdG8gdHJpZ2dl
ciBBVkFzc2V0J3MgcGxheWFibGUgdmFsdWUgdG8gY29tcGxldGUgbG9hZGluZy4KICAgICAgICAg
Ly8gRklYTUU6IGlmIChbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVz
dF0gJiYgIVtbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gY29u
dGVudFR5cGVdKQpAQCAtMTQ4LDkgKzE0Nyw5IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIHN0b3BM
b2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZnVsZmlsbFJl
cXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBlYWVjODgxYzcwN2UzN2NkZDE5ZDY0ZmMyN2Uw
MDRiZGJjMDhhNTMxLi5hMGYwZGQ4YjA4NDAwM2VmMjRmMGU4NDJlZDQ3NmQ4MTU2ZjMyMGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXJfaAotI2RlZmluZSBXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoQVZGT1VOREFUSU9OKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUp
CiAKQEAgLTU2LDEyICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkUmF3UmVzb3VyY2UqIHJl
c291cmNlKCk7CiAKIHByaXZhdGU6Ci0gICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKLSAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKKyAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJl
c291cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogbV9wYXJlbnQ7CkBAIC03MSw2ICs3MCw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8v
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgCi0KLSNlbmRpZiAvLyBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXJfaAorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmgKaW5kZXggOTMyYzExZjJhNjZhZDljODUwMjA5MzI3OTFhOGI2ODFkNGRhOWM3Yi4u
N2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJkYzRhYjhiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcl9oCi0jZGVmaW5lIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRB
VElPTikgJiYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogCkBAIC01NywxMSAr
NTYsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50
Ci0gICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJy
aWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsK
KyAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CiAK
ICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsKICAgICBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKQEAgLTcxLDYgKzcw
LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKSAKLQotI2VuZGlmIC8vIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcl9oCisjZW5k
aWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDY3OTc2NTIz
NTMzZWQ5OTdhMDZmMzViMjBmNzM1ZGYxNjE5Yjg0MjEuLjUwMTJkODZiNDkyMjIwNGM3Yzg3ZWY1
ZTEwMGU5NjlmZGM2MTU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTEwNiwxMCArMTA2LDkgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGUoKQogICAgIH0pOwogfQogCi12b2lkIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQocmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBpbnQgc3RhdHVz
ID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMg
PCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewpAQCAtMTIyLDcgKzEyMSw3IEBAIHZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgY29uc3QKIAogICAgICAgICBbY29udGVudEluZm8gc2V0Q29udGVudFR5cGU6dXRpXTsK
IAotICAgICAgICBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRlbnRSYW5nZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLmNvbnRlbnRSYW5nZSgpOworICAgICAgICBQYXJzZWRDb250ZW50UmFuZ2UmIGNv
bnRlbnRSYW5nZSA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuY29udGVudFJhbmdlKCk7CiAgICAg
ICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50TGVuZ3RoOmNvbnRlbnRSYW5nZS5pc1ZhbGlkKCkg
PyBjb250ZW50UmFuZ2UuaW5zdGFuY2VMZW5ndGgoKSA6IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpXTsKICAgICAgICAgW2NvbnRlbnRJbmZvIHNldEJ5dGVSYW5nZUFjY2Vzc1N1cHBv
cnRlZDpZRVNdOwogCkBAIC0xMzMsMjAgKzEzMiwyMCBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0
CiAgICAgfQogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciosIGludCkKK3ZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBjaGFyKiwgaW50KQogewogICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKHJl
c291cmNlKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgaWYg
KHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CisgICAgaWYgKHJlc291cmNlLmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3
NDE3PiBTZXQgdGhlIGNvbnRlbnRUeXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0
IHRvIGFuIGVtcHR5CiAgICAgICAgIC8vIHN0cmluZyB0byB0cmlnZ2VyIEFWQXNzZXQncyBwbGF5
YWJsZSB2YWx1ZSB0byBjb21wbGV0ZSBsb2FkaW5nLgogICAgICAgICBpZiAoW21fYXZSZXF1ZXN0
LmdldCgpIGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdICYmICFbW21fYXZSZXF1ZXN0LmdldCgp
IGNvbnRlbnRJbmZvcm1hdGlvblJlcXVlc3RdIGNvbnRlbnRUeXBlXSkKICAgICAgICAgICAgIFtb
bV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0gc2V0Q29udGVudFR5
cGU6QCIiXTsKIAotICAgICAgICBOU0Vycm9yKiBlcnJvciA9IHJlc291cmNlLT5lcnJvck9jY3Vy
cmVkKCkgPyByZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLm5zRXJyb3IoKSA6IG5pbDsKKyAgICAg
ICAgTlNFcnJvciogZXJyb3IgPSByZXNvdXJjZS5lcnJvck9jY3VycmVkKCkgPyByZXNvdXJjZS5y
ZXNvdXJjZUVycm9yKCkubnNFcnJvcigpIDogbmlsOwogICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0
KCkgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjplcnJvcl07CiAgICAgfSBlbHNlIHsKICAgICAgICAg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwpAQCAtMTU1LDIwICsxNTQsMTkg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1
ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBBU1NFUlQo
cmVzb3VyY2UpOwotICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBk
YXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAg
U2hhcmVkQnVmZmVyKiBkYXRhID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TVUludGVnZXIgcmVzcG9uc2VPZmZz
ZXQgPSAwOwotICAgIFBhcnNlZENvbnRlbnRSYW5nZSBjb250ZW50UmFuZ2UgPSByZXNvdXJjZS0+
cmVzcG9uc2UoKS5jb250ZW50UmFuZ2UoKTsKKyAgICBQYXJzZWRDb250ZW50UmFuZ2UgY29udGVu
dFJhbmdlID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5jb250ZW50UmFuZ2UoKTsKICAgICBpZiAo
Y29udGVudFJhbmdlLmlzVmFsaWQoKSkKICAgICAgICAgcmVzcG9uc2VPZmZzZXQgPSBzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPihjb250ZW50UmFuZ2UuZmlyc3RCeXRlUG9zaXRpb24oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDJjODM0MGU1ZmJhZDNi
MWEzZjMyMTdiMWJiNDY0YjM2ZDE1YTkxY2EuLmVjYWY5OTNjOTliZWEzYmE1ZTFkZjhiMTVkYzI4
ZDBkOTNlZGEzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApA
QCAtMzM4LDE0ICszMzgsMTQgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cmVwYWludE9yTWFya0Zvckxh
eW91dChJbWFnZVNpemVDaGFuZ2VUeXBlIGltYWdlU2l6ZUNoYW5nZSwgY28KICAgICBjb250ZW50
Q2hhbmdlZChJbWFnZUNoYW5nZWQpOwogfQogCi12b2lkIFJlbmRlckltYWdlOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogbmV3SW1hZ2UpCit2b2lkIFJlbmRlckltYWdlOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UpCiB7CiAgICAgaWYgKGRvY3VtZW50QmVp
bmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW52YWxpZGF0ZUJhY2tncm91
bmRPYnNjdXJhdGlvblN0YXR1cygpOwogCi0gICAgaWYgKG5ld0ltYWdlID09IGltYWdlUmVzb3Vy
Y2UoKS5jYWNoZWRJbWFnZSgpKSB7CisgICAgaWYgKCZuZXdJbWFnZSA9PSBpbWFnZVJlc291cmNl
KCkuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAvLyB0ZWxsIGFueSBwb3RlbnRpYWwgY29tcG9z
aXRpbmcgbGF5ZXJzCiAgICAgICAgIC8vIHRoYXQgdGhlIGltYWdlIGlzIGRvbmUgYW5kIHRoZXkg
Y2FuIHJlZmVyZW5jZSBpdCBkaXJlY3RseS4KICAgICAgICAgY29udGVudENoYW5nZWQoSW1hZ2VD
aGFuZ2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggYmQwNWQ5
MzFhYjk2NmE3MWM5NmU3ZWIxNTAwNmU5YTc0MDI2Y2RkZS4uZTIxMjU1YjJhMTIyMjhmZTEwZjE1
OWVmYTNhNDcxNzg3N2U2ZWY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKQEAgLTIyLDggKzIyLDcgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBSZW5kZXJJbWFnZV9oCi0j
ZGVmaW5lIFJlbmRlckltYWdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclJlcGxhY2VkLmgiCkBAIC0xMDUsNyArMTA0
LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIGZpbmFsOwogCiAg
ICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dC
b3gqKSBjb25zdCBmaW5hbDsKQEAgLTEzNyw1ICsxMzYsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVu
ZGVySW1hZ2UsIGlzUmVuZGVySW1hZ2UoKSkKLQotI2VuZGlmIC8vIFJlbmRlckltYWdlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAK
aW5kZXggMTIxMzhjNGE2MDBkNWIwOTc1NzdjZGNlN2E4YmZjNmY2YzliMWZmZC4uNWU1MWFmM2Nj
MTQ2YTg1Zjk2MzBkNjY3OTBhY2NlZjExZmM4ODZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKQEAgLTgzLDExICs4MywxMSBA
QCBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6fkZpbHRlckluZm8oKQogfQogCiB2b2lkIFJlbmRl
ckxheWVyOjpGaWx0ZXJJbmZvOjpzZXRSZW5kZXJlcihSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXI+JiYgcmVuZGVyZXIpCi17IAotICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgCit7CisgICAg
bV9yZW5kZXJlciA9IHJlbmRlcmVyOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZv
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit2b2lkIFJlbmRlckxheWVyOjpGaWx0
ZXJJbmZvOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCiB7CiAgICAgbV9sYXllci5m
aWx0ZXJOZWVkc1JlcGFpbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCBlNjg4OTFkMWI0OTYwMzBlNWJjZDU0MDFkM2Q4
NWM4OGFjZWEzNmVjLi5kMGFjZDNjZjVmYmIxMmEzMTI1OTNjMDljYzFiNGFjODA3MDI1OGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5o
CkBAIC0yOCw4ICsyOCw3IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlbmRl
ckxheWVyRmlsdGVySW5mb19oCi0jZGVmaW5lIFJlbmRlckxheWVyRmlsdGVySW5mb19oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCIKQEAgLTU1LDE1ICs1NCwxNSBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlTb3VyY2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9k
aXJ0eVNvdXJjZVJlY3Q7IH0KICAgICB2b2lkIGV4cGFuZERpcnR5U291cmNlUmVjdChjb25zdCBM
YXlvdXRSZWN0JiByZWN0KSB7IG1fZGlydHlTb3VyY2VSZWN0LnVuaXRlKHJlY3QpOyB9CiAgICAg
dm9pZCByZXNldERpcnR5U291cmNlUmVjdCgpIHsgbV9kaXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRS
ZWN0KCk7IH0KLSAgICAKKwogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlbmRlcmVyKFJl
ZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4mJik7Ci0gICAgCisKICAgICB2b2lkIHVwZGF0ZVJl
ZmVyZW5jZUZpbHRlckNsaWVudHMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIHZvaWQg
cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpOwogCiBwcml2YXRlOgotICAgIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxjb25z
dCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJJbmZvPj4mIG1hcCgpOwogCkBA
IC03Nyw1ICs3NiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBSZW5kZXJMYXllckZpbHRlckluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKaW5kZXggYzg1NWIzNDc4OTFiYjdkYzRlMjZhYjAzYmFmMmRlYWQ3
ZWQ5ZjFjOS4uZDkzZjI5ZTg3NTM0MzAxNDU4M2U2MzNkMmQ5ODg1MzA5Mjg4ZmE4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgcm9vdFBh
cmVudCkKICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKIH0KIAotdm9pZCBTVkdG
RUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQordm9pZCBTVkdG
RUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQogewogICAgIGlm
ICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oCmluZGV4IGE1ODVmM2JhYzgxNDg0N2I2YjEyMDdiY2Q1ZmU5YzZjMTc2NjRl
ODYuLmIzY2YyYzk0MDhmYmM1YWI3MmQ0ZTYyYWNmZjI0ZWRkYTY1YTRhYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC0xOCw4ICsxOCw3IEBACiAgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0ZFSW1hZ2VFbGVtZW50X2gK
LSNkZWZpbmUgU1ZHRkVJbWFnZUVsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
YWNoZWRJbWFnZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCkBA
IC01MSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYpIG92ZXJyaWRlOwpAQCAtNzMsNSArNzIsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApp
bmRleCAxYTZiMTA3ODc1OWZmZDA5ZTJiMGNkM2UwZTFkMGQ4YmMwMGMxZWIwLi4zY2VkYmMzY2U2
NjA0M2MyYmZlYTA0YzdhZWI5YTQ3NzU2NGNiNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCkBAIC01MzUsMTIgKzUzNSwxMiBAQCBib29sIFNWR1VzZUVsZW1lbnQ6OnNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogICAgIHJldHVybiB0YXJnZXRDbG9uZSAmJiB0YXJn
ZXRDbG9uZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCk7CiB9CiAKLXZvaWQgU1ZHVXNlRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBTVkdVc2VFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaW52
YWxpZGF0ZVNoYWRvd1RyZWUoKTsKLSAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkK
KyAgICBpZiAocmVzb3VyY2UuZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwot
ICAgIGVsc2UgaWYgKCFyZXNvdXJjZS0+d2FzQ2FuY2VsZWQoKSkKKyAgICBlbHNlIGlmICghcmVz
b3VyY2Uud2FzQ2FuY2VsZWQoKSkKICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZDo6ZGlzcGF0Y2hMb2FkRXZlbnQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCmluZGV4IGY0ZjM3ZjZjZGZhOTk0MWFkZjRhYTMxOTJmNzFmNTRjNjQ0OWZlNmYuLjE2ODhi
MWJhYjFhOGY4NmI1NDI2ODlkZDYxNjJhOTlhMTQyZDJmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaApAQCAtMTksOCArMTksNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCiAgKi8KIAotI2lmbmRlZiBTVkdVc2VFbGVtZW50X2gKLSNkZWZpbmUgU1ZHVXNlRWxlbWVu
dF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCIKQEAgLTcyLDcgKzcxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEhhdmVGaXJlZExvYWRFdmVudChib29sKSBvdmVycmlkZTsKICAg
ICBib29sIGhhdmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFRpbWVyKiBz
dmdMb2FkRXZlbnRUaW1lcigpIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJikgZmluYWw7CiAKICAgICBEb2N1bWVudCogZXh0ZXJuYWxEb2N1bWVudCgpIGNvbnN0
OwogICAgIHZvaWQgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpOwpAQCAtOTgsNSArOTcsMyBAQCBw
cml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzM4YzhhYTMxZWRmZWNiN2MwNjc1NGE3Yzg3
MjQ4NzQyMzJjMWIyNi4uYmUxMGNjODAyN2NmMGNmNzMwMzMxNTBjY2IwYzRmNTM1OTAyMDEyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAK
QEAgLTIyOCw5ICsyMjgsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJvck1l
c3NhZ2VCbG9jaygpCiAgICAgbV94bWxFcnJvcnMtPmluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7
CiB9CiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiB1bnVzZWRSZXNvdXJjZSkKK3ZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiB1bnVzZWRSZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KHVudXNlZFJlc291cmNlLCB1bnVzZWRSZXNvdXJjZSA9PSBtX3BlbmRpbmdTY3JpcHQpOworICAg
IEFTU0VSVF9VTlVTRUQodW51c2VkUmVzb3VyY2UsICZ1bnVzZWRSZXNvdXJjZSA9PSBtX3BlbmRp
bmdTY3JpcHQpOwogICAgIEFTU0VSVChtX3BlbmRpbmdTY3JpcHQtPmFjY2Vzc0NvdW50KCkgPiAw
KTsKIAogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3BlbmRpbmdTY3JpcHQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCmlu
ZGV4IDcxZDY2OWY1Y2Y3MDRjYzQ3NmY3MDhjNzdkMjM0NzU1NmEwMTM5YmUuLjI5MTc2ZGQyY2M3
NGFlMzhiN2Y2YTU0MzZmMjY2Njg4YzdlYzAwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBUZXh0
OwogICAgICAgICBib29sIHNob3VsZEFzc29jaWF0ZUNvbnNvbGVNZXNzYWdlc1dpdGhUZXh0UG9z
aXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNl
Q2xpZW50Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwogCiAgICAgICAgIHZvaWQgZW5kKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>