<?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>132965</bug_id>
          
          <creation_ts>2014-05-15 12:11:21 -0700</creation_ts>
          <short_desc>REGRESSION(r168899): Broke some compositing regions tests on Mavericks (Requested by mihnea___ on #webkit).</short_desc>
          <delta_ts>2014-05-15 12:17:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>132121</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>abucur</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009595</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-15 12:11:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/168899 broke the build:
Broke some compositing regions tests on Mavericks (Requested by mihnea___ on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009597</commentid>
    <comment_count>1</comment_count>
      <attachid>231529</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-15 12:12:05 -0700</bug_when>
    <thetext>Created attachment 231529
ROLLOUT of r168899

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009600</commentid>
    <comment_count>2</comment_count>
      <attachid>231529</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-15 12:17:56 -0700</bug_when>
    <thetext>Comment on attachment 231529
ROLLOUT of r168899

Clearing flags on attachment: 231529

Committed r168905: &lt;http://trac.webkit.org/changeset/168905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009601</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-15 12:17:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231529</attachid>
            <date>2014-05-15 12:12:05 -0700</date>
            <delta_ts>2014-05-15 12:17:56 -0700</delta_ts>
            <desc>ROLLOUT of r168899</desc>
            <filename>bug-132965-20140515121142.patch</filename>
            <type>text/plain</type>
            <size>91818</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUzNGIwMGZlMzMwYjIz
NTk5ZTU5NTdjYTI0Mjk3ODU5ZDcyNGQ4Zi4uMDQ3NDk4YTEzNWU5ZjQwZDhjNmFjM2M2NjQyNDY1
OTQ0NzdmN2NlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA1LTE1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTY4ODk5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMyOTY1CisKKyAgICAgICAgQnJva2Ugc29tZSBjb21wb3NpdGluZyBy
ZWdpb25zIHRlc3RzIG9uIE1hdmVyaWNrcyAoUmVxdWVzdGVkCisgICAgICAgIGJ5IG1paG5lYV9f
XyBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IltDU1MgUmVnaW9uc10gUmVkdWNlIHRoZSBSZW5kZXJSZWdpb24gaW52YXNpdmVuZXNzIGluCisg
ICAgICAgIHJlbmRlcmluZyBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMyMTIxCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE2ODg5OQorCiAyMDE0LTA1LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHBvaW50ZXIgbG9jayB0byBmZWF0dXJlcyB3
aXRob3V0IGVuYWJsaW5nIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDA5NTU0NDgzMGRjMWQ3YmRiMjNkNTZkMzRm
MjgxYjEzYzY5ZTMyYmYuLmU3ODllOTYyMTBiZWE4YzQ1YWJhMGIyOTA3MzQzOTNiYzQ1ZTRmMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKQEAgLTE0NzksNyArMTQ3OSw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IE1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VuCiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbGF5ZXItPnBh
aW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnMsIG51bGxwdHIsIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRp
bmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CisgICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+Y29udGV4
dCgpLCBwYWludGluZ1JlY3QsIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMs
IG51bGxwdHIsIG51bGxwdHIsIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3Np
dGluZ0FsbFBoYXNlcyk7CiAKICAgICByZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5jcHAKaW5kZXggOWQyZWQz
NzY2NThlMzY1MzZjNGJkMzlhNTgwNjg1OWEwZjIyYTI2My4uZmM1ODcxNDc4ZTE0YmY3MDMxNWQ1
Mjc5NjlhZWYxNzJkMzMxZTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RMb2NhdGlvbi5jcHAKQEAgLTQ3LDcgKzQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSGl0VGVzdExvY2F0aW9uOjpIaXRUZXN0TG9jYXRp
b24oKQotICAgIDogbV9pc1JlY3RCYXNlZChmYWxzZSkKKyAgICA6IG1fcmVnaW9uKDApCisgICAg
LCBtX2lzUmVjdEJhc2VkKGZhbHNlKQogICAgICwgbV9pc1JlY3RpbGluZWFyKHRydWUpCiB7CiB9
CkBAIC01Nyw2ICs1OCw3IEBAIEhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKICAgICAsIG1fYm91bmRpbmdCb3gocmVjdEZvclBvaW50KHBv
aW50LCAwLCAwLCAwLCAwKSkKICAgICAsIG1fdHJhbnNmb3JtZWRQb2ludChwb2ludCkKICAgICAs
IG1fdHJhbnNmb3JtZWRSZWN0KG1fYm91bmRpbmdCb3gpCisgICAgLCBtX3JlZ2lvbigwKQogICAg
ICwgbV9pc1JlY3RCYXNlZChmYWxzZSkKICAgICAsIG1faXNSZWN0aWxpbmVhcih0cnVlKQogewpA
QCAtNjcsNiArNjksNyBAQCBIaXRUZXN0TG9jYXRpb246OkhpdFRlc3RMb2NhdGlvbihjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkKICAgICAsIG1fYm91bmRpbmdCb3gocmVjdEZvclBvaW50KG1fcG9p
bnQsIDAsIDAsIDAsIDApKQogICAgICwgbV90cmFuc2Zvcm1lZFBvaW50KHBvaW50KQogICAgICwg
bV90cmFuc2Zvcm1lZFJlY3QobV9ib3VuZGluZ0JveCkKKyAgICAsIG1fcmVnaW9uKDApCiAgICAg
LCBtX2lzUmVjdEJhc2VkKGZhbHNlKQogICAgICwgbV9pc1JlY3RpbGluZWFyKHRydWUpCiB7CkBA
IC03NSw2ICs3OCw3IEBAIEhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQogSGl0VGVzdExvY2F0aW9uOjpIaXRUZXN0TG9jYXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICA6IG1fdHJhbnNm
b3JtZWRQb2ludChwb2ludCkKICAgICAsIG1fdHJhbnNmb3JtZWRSZWN0KHF1YWQpCisgICAgLCBt
X3JlZ2lvbigwKQogICAgICwgbV9pc1JlY3RCYXNlZCh0cnVlKQogewogICAgIG1fcG9pbnQgPSBm
bG9vcmVkTGF5b3V0UG9pbnQocG9pbnQpOwpAQCAtODYsMTcgKzkwLDE5IEBAIEhpdFRlc3RMb2Nh
dGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5z
aWduZWQgdG9wUGFkCiAgICAgOiBtX3BvaW50KGNlbnRlclBvaW50KQogICAgICwgbV9ib3VuZGlu
Z0JveChyZWN0Rm9yUG9pbnQoY2VudGVyUG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKQogICAgICwgbV90cmFuc2Zvcm1lZFBvaW50KGNl
bnRlclBvaW50KQorICAgICwgbV9yZWdpb24oMCkKICAgICAsIG1faXNSZWN0QmFzZWQodG9wUGFk
ZGluZyB8fCByaWdodFBhZGRpbmcgfHwgYm90dG9tUGFkZGluZyB8fCBsZWZ0UGFkZGluZykKICAg
ICAsIG1faXNSZWN0aWxpbmVhcih0cnVlKQogewogICAgIG1fdHJhbnNmb3JtZWRSZWN0ID0gRmxv
YXRRdWFkKG1fYm91bmRpbmdCb3gpOwogfQogCi1IaXRUZXN0TG9jYXRpb246OkhpdFRlc3RMb2Nh
dGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXQpCitIaXRUZXN0TG9jYXRpb246OkhpdFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRp
b24mIG90aGVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIFJlbmRlclJlZ2lvbiogcmVnaW9u
KQogICAgIDogbV9wb2ludChvdGhlci5tX3BvaW50KQogICAgICwgbV9ib3VuZGluZ0JveChvdGhl
ci5tX2JvdW5kaW5nQm94KQogICAgICwgbV90cmFuc2Zvcm1lZFBvaW50KG90aGVyLm1fdHJhbnNm
b3JtZWRQb2ludCkKICAgICAsIG1fdHJhbnNmb3JtZWRSZWN0KG90aGVyLm1fdHJhbnNmb3JtZWRS
ZWN0KQorICAgICwgbV9yZWdpb24ocmVnaW9uID8gcmVnaW9uIDogb3RoZXIubV9yZWdpb24pCiAg
ICAgLCBtX2lzUmVjdEJhc2VkKG90aGVyLm1faXNSZWN0QmFzZWQpCiAgICAgLCBtX2lzUmVjdGls
aW5lYXIob3RoZXIubV9pc1JlY3RpbGluZWFyKQogewpAQCAtMTA4LDYgKzExNCw3IEBAIEhpdFRl
c3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIp
CiAgICAgLCBtX2JvdW5kaW5nQm94KG90aGVyLm1fYm91bmRpbmdCb3gpCiAgICAgLCBtX3RyYW5z
Zm9ybWVkUG9pbnQob3RoZXIubV90cmFuc2Zvcm1lZFBvaW50KQogICAgICwgbV90cmFuc2Zvcm1l
ZFJlY3Qob3RoZXIubV90cmFuc2Zvcm1lZFJlY3QpCisgICAgLCBtX3JlZ2lvbihvdGhlci5tX3Jl
Z2lvbikKICAgICAsIG1faXNSZWN0QmFzZWQob3RoZXIubV9pc1JlY3RCYXNlZCkKICAgICAsIG1f
aXNSZWN0aWxpbmVhcihvdGhlci5tX2lzUmVjdGlsaW5lYXIpCiB7CkBAIC0xMjMsNiArMTMwLDcg
QEAgSGl0VGVzdExvY2F0aW9uJiBIaXRUZXN0TG9jYXRpb246Om9wZXJhdG9yPShjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIG90aGVyKQogICAgIG1fYm91bmRpbmdCb3ggPSBvdGhlci5tX2JvdW5kaW5n
Qm94OwogICAgIG1fdHJhbnNmb3JtZWRQb2ludCA9IG90aGVyLm1fdHJhbnNmb3JtZWRQb2ludDsK
ICAgICBtX3RyYW5zZm9ybWVkUmVjdCA9IG90aGVyLm1fdHJhbnNmb3JtZWRSZWN0OworICAgIG1f
cmVnaW9uID0gb3RoZXIubV9yZWdpb247CiAgICAgbV9pc1JlY3RCYXNlZCA9IG90aGVyLm1faXNS
ZWN0QmFzZWQ7CiAgICAgbV9pc1JlY3RpbGluZWFyID0gb3RoZXIubV9pc1JlY3RpbGluZWFyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKaW5kZXggODFiNjA0
NTA0YWRkYmJiOGQwMzljZGI3ZDYyNzAyNDAxNjc5MDUxNi4uYzMxYmEzNDYyZGI4Yjc5ZTliNThh
MmQ3Mjk1MGQ3NGRlMDZmMzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
TG9jYXRpb24uaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xh
c3MgSW1hZ2U7CiBjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOworY2xhc3MgUmVuZGVyUmVnaW9uOwog
Y2xhc3MgU2Nyb2xsYmFyOwogCiBjbGFzcyBIaXRUZXN0TG9jYXRpb24gewpAQCAtNTQsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUGFzcyBub24temVybyBwYWRkaW5nIHZhbHVlcyB0byBwZXJm
b3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgTGF5
b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsK
ICAgICAvLyBNYWtlIGEgY29weSB0aGUgSGl0VGVzdExvY2F0aW9uIGluIGEgbmV3IHJlZ2lvbiBi
eSBhcHBseWluZyBnaXZlbiBvZmZzZXQgdG8gaW50ZXJuYWwgcG9pbnQgYW5kIGFyZWEuCi0gICAg
SGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFNpemUm
IG9mZnNldCk7CisgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNv
bnN0IExheW91dFNpemUmIG9mZnNldCwgUmVuZGVyUmVnaW9uKiA9IDApOwogICAgIEhpdFRlc3RM
b2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsKICAgICB+SGl0VGVzdExvY2F0aW9uKCk7
CiAgICAgSGl0VGVzdExvY2F0aW9uJiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdExvY2F0aW9uJik7
CkBAIC02Miw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX3BvaW50OyB9CiAgICAgSW50UG9pbnQgcm91bmRlZFBvaW50KCkg
Y29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50KG1fcG9pbnQpOyB9CiAKKyAgICBSZW5kZXJS
ZWdpb24qIHJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uOyB9CisKICAgICAvLyBSZWN0
LWJhc2VkIGhpdCB0ZXN0IHJlbGF0ZWQgbWV0aG9kcy4KICAgICBib29sIGlzUmVjdEJhc2VkVGVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWN0QmFzZWQ7IH0KICAgICBib29sIGlzUmVjdGlsaW5l
YXIoKSBjb25zdCB7IHJldHVybiBtX2lzUmVjdGlsaW5lYXI7IH0KQEAgLTkyLDYgKzk1LDggQEAg
cHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fdHJhbnNmb3JtZWRQb2ludDsKICAgICBGbG9hdFF1
YWQgbV90cmFuc2Zvcm1lZFJlY3Q7CiAKKyAgICBSZW5kZXJSZWdpb24qIG1fcmVnaW9uOyAvLyBU
aGUgcmVnaW9uIHdlJ3JlIGluc2lkZS4KKwogICAgIGJvb2wgbV9pc1JlY3RCYXNlZDsKICAgICBi
b29sIG1faXNSZWN0aWxpbmVhcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaAppbmRleCA2ZWM4Y2EzNTZkMDI5OThmMjFiMmU5N2YwZTVlMWJjMDg2ZmE2NTRhLi4w
MzQwNTNjNjcyMzYwMTE4MTNmZTM0OTgyOWU0ODExMzVjODBhMzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIEltYWdlOwogY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKK2NsYXNz
IFJlbmRlclJlZ2lvbjsKIGNsYXNzIFNjcm9sbGJhcjsKIAogY2xhc3MgSGl0VGVzdFJlc3VsdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKaW5kZXggMzc5ZjkyMzBjYTVlMmI4N2Vk
MjcwYWUzOTNlMTc2NTE4MDYwNjdjOS4uMDkxMWJhOTAzNDgxYzQwMDAxYjg1ZjQzZDFjZmViYzk5
MjZkNTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtNDAsNiArNDAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQ7
CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OworY2xh
c3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIHR5cGVk
ZWYgSGFzaE1hcDxPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVz
dFJlcXVlc3RNYXA7CkBAIC01MCwxMyArNTEsMTQgQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJsYXBU
ZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAqLwog
c3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFp
bnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAotICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1N1
YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogbmV3
T3V0bGluZU9iamVjdHMgPSBudWxscHRyLAorICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1N1YnRy
ZWVQYWludFJvb3QgPSBudWxscHRyLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93
RnJhZ21lbnQgPSBudWxscHRyLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogbmV3T3V0bGlu
ZU9iamVjdHMgPSBudWxscHRyLAogICAgICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJs
YXBUZXN0UmVxdWVzdHMgPSBudWxscHRyLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBu
ZXdQYWludENvbnRhaW5lciA9IG51bGxwdHIpCiAgICAgICAgICAgICA6IGNvbnRleHQobmV3Q29u
dGV4dCkKICAgICAgICAgICAgICwgcmVjdChuZXdSZWN0KQogICAgICAgICAgICAgLCBwaGFzZShu
ZXdQaGFzZSkKICAgICAgICAgICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9yKQog
ICAgICAgICAgICAgLCBzdWJ0cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCisgICAg
ICAgICAgICAsIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KG5hbWVkRmxvd0ZyYWdtZW50KQogICAg
ICAgICAgICAgLCBvdXRsaW5lT2JqZWN0cyhuZXdPdXRsaW5lT2JqZWN0cykKICAgICAgICAgICAg
ICwgb3ZlcmxhcFRlc3RSZXF1ZXN0cyhvdmVybGFwVGVzdFJlcXVlc3RzKQogICAgICAgICAgICAg
LCBwYWludENvbnRhaW5lcihuZXdQYWludENvbnRhaW5lcikKQEAgLTEwNSw2ICsxMDcsNyBAQCBz
dHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBQYWludFBoYXNlIHBoYXNlOwogICAgIFBhaW50QmVoYXZp
b3IgcGFpbnRCZWhhdmlvcjsKICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3Q7IC8v
IHVzZWQgdG8gZHJhdyBqdXN0IG9uZSBlbGVtZW50IGFuZCBpdHMgdmlzdWFsIGNoaWxkcmVuCisg
ICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OwogICAg
IExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBvdXRsaW5lT2JqZWN0czsgLy8gdXNlZCB0byBs
aXN0IG91dGxpbmVzIHRoYXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgYSBibG9jayB3aXRoIGlubGlu
ZSBjaGlsZHJlbgogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0
czsKICAgICBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lcjsgLy8g
dGhlIGxheWVyIG9iamVjdCB0aGF0IG9yaWdpbmF0ZXMgdGhlIGN1cnJlbnQgcGFpbnRpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDc1MmI0NzFlMGM0ZjQ4
NWI2ODY3NmY0MjRjYmIwZWFkNDAxN2Q3ODQuLjhlYjU3YTQ2MWU4MTFkY2Y0YTA1ZWNjODJjNDI2
MzM3NzdhNmNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMTQ2MiwxNiArMTQ2MiwxNSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAgIFBh
aW50UGhhc2UgcGhhc2UgPSBwYWludEluZm8ucGhhc2U7CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKTsKICAgICAvLyBDaGVjayBvdXIgcmVnaW9uIHJhbmdlIHRvIG1ha2Ugc3VyZSB3ZSBuZWVk
IHRvIGJlIHBhaW50aW5nIGluIHRoaXMgcmVnaW9uLgotICAgIGlmIChuYW1lZEZsb3dGcmFnbWVu
dCAmJiAhbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKS0+b2JqZWN0U2hvdWxkRnJhZ21l
bnRJbkZsb3dSZWdpb24odGhpcywgbmFtZWRGbG93RnJhZ21lbnQpKQorICAgIGlmIChwYWludElu
Zm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgJiYgIXBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC0+Zmxvd1RocmVhZCgpLT5vYmplY3RTaG91bGRGcmFnbWVudEluRmxvd1JlZ2lvbih0
aGlzLCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIGF0IGFsbC4KICAgICAv
LyBGSVhNRTogQ291bGQgZWxpbWluYXRlIHRoZSBpc1Jvb3QoKSBjaGVjayBpZiB3ZSBmaXggYmFj
a2dyb3VuZCBwYWludGluZyBzbyB0aGF0IHRoZSBSZW5kZXJWaWV3CiAgICAgLy8gcGFpbnRzIHRo
ZSByb290J3MgYmFja2dyb3VuZC4KICAgICBpZiAoIWlzUm9vdCgpKSB7Ci0gICAgICAgIExheW91
dFJlY3Qgb3ZlcmZsb3dCb3ggPSBvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihuYW1lZEZs
b3dGcmFnbWVudCk7CisgICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3dCb3ggPSBvdmVyZmxvd1Jl
Y3RGb3JQYWludFJlamVjdGlvbihwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwog
ICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZsb3dCb3gpOwogICAgICAgICBvdmVyZmxv
d0JveC5pbmZsYXRlKG1heGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8ucGhhc2UpKTsKICAgICAg
ICAgb3ZlcmZsb3dCb3gubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwpAQCAtMTYwMSw4ICsx
NjAwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgaWYgKGhhc0JveERlY29y
YXRpb25zKCkpIHsKICAgICAgICAgICAgIGJvb2wgZGlkQ2xpcFRvUmVnaW9uID0gZmFsc2U7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZs
b3dGcmFnbWVudCA9IGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotICAgICAgICAg
ICAgaWYgKHBhaW50SW5mby5wYWludENvbnRhaW5lciAmJiBuYW1lZEZsb3dGcmFnbWVudCAmJiBw
YWludEluZm8ucGFpbnRDb250YWluZXItPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkpIHsKKyAg
ICAgICAgICAgIGlmIChwYWludEluZm8ucGFpbnRDb250YWluZXIgJiYgcGFpbnRJbmZvLnJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50ICYmIHBhaW50SW5mby5wYWludENvbnRhaW5lci0+aXNSZW5kZXJO
YW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYm94IGdvZXMg
YmV5b25kIHRoZSBjdXJyZW50IHJlZ2lvbiwgdGhlbiBtYWtlIHN1cmUgbm90IHRvIG92ZXJmbG93
IHRoZSByZWdpb24uCiAgICAgICAgICAgICAgICAgLy8gVGhpcyAob3ZlcmZsb3dpbmcgcmVnaW9u
IFggYWx0b3VnaCBhbHNvIGZyYWdtZW50ZWQgdG8gcmVnaW9uIFgrMSkgY291bGQgaGFwcGVuIHdo
ZW4gb25lIG9mIHRoaXMgYm94J3MgY2hpbGRyZW4KICAgICAgICAgICAgICAgICAvLyBvdmVyZmxv
d3MgcmVnaW9uIFggYW5kIGlzIGFuIHVuc3BsaXR0YWJsZSBlbGVtZW50IChsaWtlIGFuIGltYWdl
KS4KQEAgLTE2MTEsNyArMTYwOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgICAgICAgICBkaWRD
bGlwVG9SZWdpb24gPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXAodG9SZW5kZXJOYW1lZEZsb3dUaHJlYWQocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS0+
ZGVjb3JhdGlvbnNDbGlwUmVjdEZvckJveEluTmFtZWRGbG93RnJhZ21lbnQoKnRoaXMsICpuYW1l
ZEZsb3dGcmFnbWVudCkpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
KHRvUmVuZGVyTmFtZWRGbG93VGhyZWFkKHBhaW50SW5mby5wYWludENvbnRhaW5lciktPmRlY29y
YXRpb25zQ2xpcFJlY3RGb3JCb3hJbk5hbWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqcGFpbnRJbmZv
LnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CkBAIC0xOTE5LDEw
ICsxOTE3LDkgQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcHMoUmVuZGVyQmxv
Y2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHIKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0Zy
YWdtZW50ID0gY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0gICAgaWYgKHBhaW50
SW5mbyAmJiBuYW1lZEZsb3dGcmFnbWVudCAmJiBwYWludEluZm8tPnBhaW50Q29udGFpbmVyLT5p
c1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgIGlmIChwYWludEluZm8gJiYgcGFpbnRJbmZvLT5y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCAmJiBwYWludEluZm8tPnBhaW50Q29udGFpbmVyLT5pc1Jl
bmRlckZsb3dUaHJlYWQoKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGN1cnJlbnQgb2Jq
ZWN0IGlzIGFjdHVhbGx5IGZsb3dlZCBpbnRvIHRoZSByZWdpb24gYmVpbmcgcGFpbnRlZC4KLSAg
ICAgICAgaWYgKCF0b1JlbmRlckZsb3dUaHJlYWQocGFpbnRJbmZvLT5wYWludENvbnRhaW5lcikt
Pm9iamVjdFNob3VsZEZyYWdtZW50SW5GbG93UmVnaW9uKHRoaXMsIG5hbWVkRmxvd0ZyYWdtZW50
KSkKKyAgICAgICAgaWYgKCF0b1JlbmRlckZsb3dUaHJlYWQocGFpbnRJbmZvLT5wYWludENvbnRh
aW5lciktPm9iamVjdFNob3VsZEZyYWdtZW50SW5GbG93UmVnaW9uKHRoaXMsIHBhaW50SW5mby0+
cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTI0NjAsMTIgKzI0NTcsMTQgQEAgYm9vbCBSZW5kZXJCbG9jazo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAg
ICBMYXlvdXRQb2ludCBhZGp1c3RlZExvY2F0aW9uKGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRp
b24oKSk7CiAgICAgTGF5b3V0U2l6ZSBsb2NhbE9mZnNldCA9IHRvTGF5b3V0U2l6ZShhZGp1c3Rl
ZExvY2F0aW9uKTsKIAotICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhy
ZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVk
Rmxvd0ZyYWdtZW50ID0gZmxvd1RocmVhZCA/IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoZmxv
d1RocmVhZC0+Y3VycmVudFJlZ2lvbigpKSA6IG51bGxwdHI7CiAgICAgLy8gSWYgd2UgYXJlIG5v
dyBzZWFyY2hpbmcgaW5zaWRlIGEgcmVnaW9uLCBtYWtlIHN1cmUgdGhpcyBlbGVtZW50CiAgICAg
Ly8gaXMgYmVpbmcgZnJhZ21lbnRlZCBpbnRvIHRoaXMgcmVnaW9uLgotICAgIGlmIChuYW1lZEZs
b3dGcmFnbWVudCAmJiAhZmxvd1RocmVhZC0+b2JqZWN0U2hvdWxkRnJhZ21lbnRJbkZsb3dSZWdp
b24odGhpcywgbmFtZWRGbG93RnJhZ21lbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGxvY2F0aW9uSW5Db250YWluZXIucmVnaW9uKCkpIHsKKyAgICAgICAgUmVuZGVyRmxvd1Ro
cmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICAgICAg
QVNTRVJUKGZsb3dUaHJlYWQpOworICAgICAgICBpZiAoIWZsb3dUaHJlYWQtPm9iamVjdFNob3Vs
ZEZyYWdtZW50SW5GbG93UmVnaW9uKHRoaXMsIGxvY2F0aW9uSW5Db250YWluZXIucmVnaW9uKCkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGlmICghaXNSZW5kZXJW
aWV3KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byBkbyBhbnl0aGluZyBhdCBh
bGwuCkBAIC0yNTIyLDcgKzI1MjEsNyBAQCBib29sIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdQogICAgIC8v
IElmIHdlIGhhdmUgY2xpcHBpbmcsIHRoZW4gd2UgY2FuJ3QgaGF2ZSBhbnkgc3BpbGxvdXQuCiAg
ICAgYm9vbCB1c2VPdmVyZmxvd0NsaXAgPSBoYXNPdmVyZmxvd0NsaXAoKSAmJiAhaGFzU2VsZlBh
aW50aW5nTGF5ZXIoKTsKICAgICBib29sIHVzZUNsaXAgPSAoaGFzQ29udHJvbENsaXAoKSB8fCB1
c2VPdmVyZmxvd0NsaXApOwotICAgIGJvb2wgY2hlY2tDaGlsZHJlbiA9ICF1c2VDbGlwIHx8ICho
YXNDb250cm9sQ2xpcCgpID8gbG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKGNvbnRyb2xD
bGlwUmVjdChhZGp1c3RlZExvY2F0aW9uKSkgOiBsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2Vj
dHMob3ZlcmZsb3dDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9uLCBuYW1lZEZsb3dGcmFnbWVudCwg
SW5jbHVkZU92ZXJsYXlTY3JvbGxiYXJTaXplKSkpOworICAgIGJvb2wgY2hlY2tDaGlsZHJlbiA9
ICF1c2VDbGlwIHx8IChoYXNDb250cm9sQ2xpcCgpID8gbG9jYXRpb25JbkNvbnRhaW5lci5pbnRl
cnNlY3RzKGNvbnRyb2xDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9uKSkgOiBsb2NhdGlvbkluQ29u
dGFpbmVyLmludGVyc2VjdHMob3ZlcmZsb3dDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9uLCBsb2Nh
dGlvbkluQ29udGFpbmVyLnJlZ2lvbigpLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpKSk7
CiAgICAgaWYgKGNoZWNrQ2hpbGRyZW4pIHsKICAgICAgICAgLy8gSGl0IHRlc3QgZGVzY2VuZGFu
dHMgZmlyc3QuCiAgICAgICAgIExheW91dFNpemUgc2Nyb2xsZWRPZmZzZXQobG9jYWxPZmZzZXQg
LSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IGEyMWJiYWQ0ZjJkYzM3Yjc4MjZiNTA5YTVjYWM2NDMzMzNiOTUzZmMuLmZm
M2I1NGY5MWNkMzBjNDJkYzUxMjJkYWU5NTYwMjEyZjIzYmQyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTM2LDEyICsxMTM2LDE0IEBAIGJvb2wgUmVuZGVy
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uVG9Vc2UgPSBmbG93VGhyZWFkID8gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChm
bG93VGhyZWFkLT5jdXJyZW50UmVnaW9uKCkpIDogbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvblRvVXNlID0gbG9jYXRpb25JbkNvbnRhaW5lci5yZWdpb24oKTsKKyAgICBpZiAocmVn
aW9uVG9Vc2UpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lv
blRvVXNlLT5mbG93VGhyZWFkKCk7CiAKLSAgICAvLyBJZiB0aGUgYm94IGlzIG5vdCBjb250YWlu
ZWQgYnkgdGhpcyByZWdpb24gdGhlcmUncyBubyBwb2ludCBpbiBnb2luZyBmdXJ0aGVyLgotICAg
IGlmIChyZWdpb25Ub1VzZSAmJiAhZmxvd1RocmVhZC0+b2JqZWN0U2hvdWxkRnJhZ21lbnRJbkZs
b3dSZWdpb24odGhpcywgcmVnaW9uVG9Vc2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIC8vIElmIHRoZSBib3ggaXMgbm90IGNvbnRhaW5lZCBieSB0aGlzIHJlZ2lvbiB0aGVyZSdz
IG5vIHBvaW50IGluIGdvaW5nIGZ1cnRoZXIuCisgICAgICAgIGlmICghZmxvd1RocmVhZC0+b2Jq
ZWN0U2hvdWxkRnJhZ21lbnRJbkZsb3dSZWdpb24odGhpcywgcmVnaW9uVG9Vc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIC8vIENoZWNrIG91ciBib3VuZHMgbmV4
dC4gRm9yIHRoaXMgcHVycG9zZSBhbHdheXMgYXNzdW1lIHRoYXQgd2UgY2FuIG9ubHkgYmUgaGl0
IGluIHRoZQogICAgIC8vIGZvcmVncm91bmQgcGhhc2UgKHdoaWNoIGlzIHRydWUgZm9yIHJlcGxh
Y2VkIGVsZW1lbnRzIGxpa2UgaW1hZ2VzKS4KQEAgLTEyMTEsNyArMTIxMyw3IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpCiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KCp0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBi
b3JkZXJCb3hSZWN0SW5SZWdpb24oY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpOwor
ICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gYm9yZGVyQm94UmVjdEluUmVnaW9uKHBhaW50SW5m
by5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CiAgICAgcGFpbnRSZWN0Lm1vdmVCeShwYWludE9m
ZnNldCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNjgzLDcgKzE2ODUsNyBAQCBib29sIFJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdQogICAgICAgICBwYWludE9iamVjdChwYWludEluZm8sIGFjY3VtdWxh
dGVkT2Zmc2V0KTsKICAgICAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kczsKICAgICB9Ci0gICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QoaXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNl
dCkgOiBvdmVyZmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5w
aGFzZSkpOworICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGlzQ29u
dHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dD
bGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LCBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgcGFpbnRJbmZvLnBoYXNlKSk7CiAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRp
dXMoKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QoYWNj
dW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA2ZjQ1NzU0OWU1ZjJmZWM2Yjk0MjM3
YTAwM2NmNDAyYTcyNDM1NTZjLi41N2Y2M2I3NTZkMzMyNzdhNDVjNmU0NWNhODI4NmYxZTU0MjQy
ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKQEAgLTU5NCwxNCArNTk0LDE0IEBAIHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93
Rm9yQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAg
ICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+
cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiB9CiAK
LXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdl
QnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0IEludFJlY3QmIG1hc2tSZWN0LCBJbmxpbmVGbG93Qm94
KiBib3gsIGNvbnN0IExheW91dFJlY3QmIHNjcm9sbGVkUGFpbnRSZWN0KQordm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJ
bWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3Qg
TGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBu
YW1lZEZsb3dGcmFnbWVudCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRl
eHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xh
dGUoLW1hc2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7CiAKICAgICAvLyBOb3cgYWRkIHRoZSB0
ZXh0IHRvIHRoZSBjbGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50aW5nIHVzaW5nIGEgc3BlY2lhbCBw
YWludCBwaGFzZSB0aGF0IHNpZ25hbHMgdG8KICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0
aGV5IHNob3VsZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KLSAgICBQYWlu
dEluZm8gaW5mbyhtYXNrSW1hZ2VDb250ZXh0LCBtYXNrUmVjdCwgUGFpbnRQaGFzZVRleHRDbGlw
LCBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQsIDApOworICAgIFBhaW50SW5mbyBpbmZvKG1h
c2tJbWFnZUNvbnRleHQsIG1hc2tSZWN0LCBQYWludFBoYXNlVGV4dENsaXAsIFBhaW50QmVoYXZp
b3JGb3JjZUJsYWNrVGV4dCwgMCwgbmFtZWRGbG93RnJhZ21lbnQpOwogICAgIGlmIChib3gpIHsK
ICAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGJveC0+cm9vdCgpOwogICAg
ICAgICBib3gtPnBhaW50KGluZm8sIExheW91dFBvaW50KHNjcm9sbGVkUGFpbnRSZWN0LngoKSAt
IGJveC0+eCgpLCBzY3JvbGxlZFBhaW50UmVjdC55KCkgLSBib3gtPnkoKSksIHJvb3RCb3gubGlu
ZVRvcCgpLCByb290Qm94LmxpbmVCb3R0b20oKSk7CkBAIC03MTUsNyArNzE1LDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY28KICAgICBpZiAoY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewog
ICAgICAgICAvLyBDbGlwIHRvIHRoZSBvdmVyZmxvdyBhcmVhLgogICAgICAgICBSZW5kZXJCb3gq
IHRoaXNCb3ggPSB0b1JlbmRlckJveCh0aGlzKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcCh0aGlz
Qm94LT5vdmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KCkpKTsKKyAgICAgICAgY29udGV4dC0+Y2xpcCh0aGlzQm94LT5vdmVyZmxv
d0NsaXBSZWN0KHJlY3QubG9jYXRpb24oKSwgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KSk7CiAgICAgICAgIAogICAgICAgICAvLyBBZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVm
bGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQgYm94IHdpdGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAg
ICAgICAgSW50U2l6ZSBvZmZzZXQgPSB0aGlzQm94LT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsK
QEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBtYXNr
SW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7
CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBw
YWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNj
cm9sbGVkUGFpbnRSZWN0KTsKKyAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFza0lt
YWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCwgcGFpbnRJbmZvLnJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKIAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVlbiBj
cmVhdGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNrZ3Jv
dW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCBkYWM5MGQwNTFiZWM5NTgxZWI5ZjU2YzBlYzYx
YjBiMDgzNTZhZjA1Li5jNWViZmNiYWFjMGQ4OGI5NmI0MTg1ZjhiYjgzMjA1MjllMjNjYWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApA
QCAtMzI3LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRo
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3Qg
Qm9yZGVyRWRnZVtdLAogICAgICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25l
c3MsIEJveFNpZGUsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgQ29sb3IsIEVCb3JkZXJT
dHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIHZvaWQgcGFpbnRNYXNrRm9y
VGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRSZWN0JiwgSW5saW5lRmxvd0JveCos
IGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KElt
YWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRS
ZWN0JiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqKTsKIAogICAgIHZvaWQgcGl4ZWxTbmFwQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnlGb3JQYWludGluZyhCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYp
IGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IGJiYjQ0YjY3OWJkNTkwMTgyYTE2ZTg5Zjk2MjIwNzM2NzQ5MDIyZDcuLjhiNjYyNDBhYzFhZWJh
NzBkM2E1NmQ4ZTIzMTQzODEzM2E4MTk5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtMzUzMywxMSArMzUzMywxMSBAQCBib29sIFJlbmRlckxheWVyOjpz
Y3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVs
YXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCwgUGFpbnRMYXllckZsYWdzIHBh
aW50RmxhZ3MpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVz
dHM7CiAKLSAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5n
SW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgTGF5b3V0U2l6ZSgpLCBzdWJ0cmVl
UGFpbnRSb290LCAmb3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CisgICAgTGF5ZXJQYWludGluZ0luZm8g
cGFpbnRpbmdJbmZvKHRoaXMsIGVuY2xvc2luZ0ludFJlY3QoZGFtYWdlUmVjdCksIHBhaW50QmVo
YXZpb3IsIExheW91dFNpemUoKSwgc3VidHJlZVBhaW50Um9vdCwgbmFtZWRGbG93RnJhZ21lbnQs
ICZvdmVybGFwVGVzdFJlcXVlc3RzKTsKICAgICBwYWludExheWVyKGNvbnRleHQsIHBhaW50aW5n
SW5mbywgcGFpbnRGbGFncyk7CiAKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9y
IGVuZCA9IG92ZXJsYXBUZXN0UmVxdWVzdHMuZW5kKCk7CkBAIC0zNjgxLDE2ICszNjgxLDE3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYKICAgICAvLyBEb24ndCBwYWludCB0aGUgbGF5ZXIgaWYg
dGhlIHJlbmRlcmVyIGRvZXNuJ3QgYmVsb25nIHRvIHRoaXMgcmVnaW9uLgogICAgIC8vIFRoaXMg
aXMgdHJ1ZSBhcyBsb25nIGFzIHdlIGNsYW1wIHRoZSByYW5nZSBvZiBhIGJveCB0byBpdHMgY29u
dGFpbmluZyBibG9jayByYW5nZS4KIAotICAgIC8vIERpc2FibGUgbmFtZWQgZmxvdyByZWdpb24g
aW5mb3JtYXRpb24gZm9yIGluIGZsb3cgdGhyZWFkcyBzdWNoIGFzIG11bHRpLWNvbC4KLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3VycmVudFJlbmRlckZsb3dUaHJlYWREaXNhYmxlcj4gZmxvd1RocmVh
ZERpc2FibGVyOwotICAgIGlmIChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSkKLSAgICAgICAg
Zmxvd1RocmVhZERpc2FibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJyZW50UmVuZGVyRmxvd1Ro
cmVhZERpc2FibGVyPigmcmVuZGVyZXIoKS52aWV3KCkpOwotCi0gICAgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KCk7CisgICAgLy8gRklYTUU6IEhhY2sgdG8gZGlzYWJsZSByZWdpb24gaW5mb3JtYXRpb24g
Zm9yIGluIGZsb3cgdGhyZWFkcy4gSW1wbGVtZW50IHRoaXMgbG9naWMgaW4gYSBkaWZmZXJlbnQg
d2F5LgorICAgIExheWVyUGFpbnRpbmdJbmZvJiBpbmZvID0gY29uc3RfY2FzdDxMYXllclBhaW50
aW5nSW5mbyY+KHBhaW50aW5nSW5mbyk7CisgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5h
bWVkRmxvd0ZyYWdtZW50ID0gaW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKICAgICBpZiAo
bmFtZWRGbG93RnJhZ21lbnQpIHsKLSAgICAgICAgQVNTRVJUKG5hbWVkRmxvd0ZyYWdtZW50LT5p
c1ZhbGlkKCkpOwotICAgICAgICBpZiAoIW5hbWVkRmxvd0ZyYWdtZW50LT5mbG93VGhyZWFkKCkt
Pm9iamVjdFNob3VsZEZyYWdtZW50SW5GbG93UmVnaW9uKCZyZW5kZXJlcigpLCBuYW1lZEZsb3dG
cmFnbWVudCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChlbmNsb3NpbmdQYWdp
bmF0aW9uTGF5ZXIoKSkKKyAgICAgICAgICAgIGluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQg
PSBudWxscHRyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChuYW1lZEZsb3dG
cmFnbWVudC0+aXNWYWxpZCgpKTsKKyAgICAgICAgICAgIGlmICghbmFtZWRGbG93RnJhZ21lbnQt
PmZsb3dUaHJlYWQoKS0+b2JqZWN0U2hvdWxkRnJhZ21lbnRJbkZsb3dSZWdpb24oJnJlbmRlcmVy
KCksIG5hbWVkRmxvd0ZyYWdtZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8u
cGFpbnRCZWhhdmlvcikpCkBAIC0zNzAwLDggKzM3MDEsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJgogICAgIGlmIChwYWludHNXaXRoVHJhbnNmb3JtKHBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yKSAmJiAhKHBhaW50RmxhZ3MgJiBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSkpIHsKICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm0gPSByZW5kZXJhYmxlVHJh
bnNmb3JtKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAgICAgLy8gSWYgdGhlIHRy
YW5zZm9ybSBjYW4ndCBiZSBpbnZlcnRlZCwgdGhlbiBkb24ndCBwYWludCBhbnl0aGluZy4KLSAg
ICAgICAgaWYgKCFsYXllclRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgaWYgKCFs
YXllclRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkgeworICAgICAgICAgICAgaW5mby5yZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCA9IG5hbWVkRmxvd0ZyYWdtZW50OwogICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zcGFyZW5jeSBsYXll
ciBlbmNsb3NpbmcgdXMgYW5kIHdlIGFyZSB0aGUgcm9vdCBvZiBhIHRyYW5zZm9ybSwgdGhlbiB3
ZSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgdHJhbnNwYXJlbmN5CiAgICAgICAgIC8vIGxheWVyIGZy
b20gdGhlIHBhcmVudCBub3csIGFzc3VtaW5nIHRoZXJlIGlzIGEgcGFyZW50CkBAIC0zNzE0LDEz
ICszNzE3LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYKIAogICAgICAgICBpZiAoZW5jbG9z
aW5nUGFnaW5hdGlvbkxheWVyKCkpIHsKICAgICAgICAgICAgIHBhaW50VHJhbnNmb3JtZWRMYXll
ckludG9GcmFnbWVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKKyAgICAg
ICAgICAgIGluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgPSBuYW1lZEZsb3dGcmFnbWVudDsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGUgcGFyZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAgICAgICAgQ2xp
cFJlY3QgY2xpcFJlY3QgPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgICAgIGlm
IChwYXJlbnQoKSkgewotICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250
ZXh0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIChwYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBv
cmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywK
KyAgICAgICAgICAgIENsaXBSZWN0c0NvbnRleHQgY2xpcFJlY3RzQ29udGV4dChwYWludGluZ0lu
Zm8ucm9vdExheWVyLCBwYWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIChwYWlu
dEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVj
dHMgOiBQYWludGluZ0NsaXBSZWN0cywKICAgICAgICAgICAgICAgICBJZ25vcmVPdmVybGF5U2Ny
b2xsYmFyU2l6ZSwgKHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRl
bnRzKSA/IElnbm9yZU92ZXJmbG93Q2xpcCA6IFJlc3BlY3RPdmVyZmxvd0NsaXApOwogICAgICAg
ICAgICAgY2xpcFJlY3QgPSBiYWNrZ3JvdW5kQ2xpcFJlY3QoY2xpcFJlY3RzQ29udGV4dCk7CiAg
ICAgICAgICAgICBjbGlwUmVjdC5pbnRlcnNlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
KTsKQEAgLTM3MzUsMTAgKzM3MzksMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogICAgICAg
ICBpZiAocGFyZW50KCkpCiAgICAgICAgICAgICBwYXJlbnQoKS0+cmVzdG9yZUNsaXAoY29udGV4
dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBjbGlwUmVjdCk7CiAKKyAgICAgICAgaW5m
by5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IG5hbWVkRmxvd0ZyYWdtZW50OwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24o
Y29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKKyAgICBpbmZvLnJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50ID0gbmFtZWRGbG93RnJhZ21lbnQ7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncykKQEAgLTQwNTIsNyArNDA1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
CiAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgPSB0cnVlOwog
ICAgICAgICAgICAgcGFpbnREaXJ0eVJlY3QgPSBzZWxmQ2xpcFJlY3QoKTsKICAgICAgICAgfQot
ICAgICAgICBjb2xsZWN0RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBsb2NhbFBhaW50aW5nSW5m
by5yb290TGF5ZXIsIHBhaW50RGlydHlSZWN0LAorICAgICAgICBjb2xsZWN0RnJhZ21lbnRzKGxh
eWVyRnJhZ21lbnRzLCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIGxvY2FsUGFpbnRpbmdJ
bmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCBwYWludERpcnR5UmVjdCwKICAgICAgICAgICAg
IChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBv
cmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLCBJZ25vcmVPdmVybGF5U2Nyb2xsYmFy
U2l6ZSwKICAgICAgICAgICAgIChpc1BhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVP
dmVyZmxvd0NsaXAgOiBSZXNwZWN0T3ZlcmZsb3dDbGlwLCAmb2Zmc2V0RnJvbVJvb3QpOwogICAg
ICAgICB1cGRhdGVQYWludGluZ0luZm9Gb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MsIHNob3VsZFBhaW50Q29udGVudCwgJm9mZnNl
dEZyb21Sb290KTsKQEAgLTQxNDksNyArNDE1NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QK
IAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBi
ZSB1cy4KICAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyh0aGlz
LCBMYXlvdXRSZWN0KGVuY2xvc2luZ1JlY3RGb3JQYWludGluZyh0cmFuc2Zvcm0uaW52ZXJzZSgp
Lm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3Ip
KSwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsCi0gICAgICAgIGFkanVzdGVkU3ViUGl4ZWxB
Y2N1bXVsYXRpb24sIHBhaW50aW5nSW5mby5zdWJ0cmVlUGFpbnRSb290LCBwYWludGluZ0luZm8u
b3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CisgICAgICAgIGFkanVzdGVkU3ViUGl4ZWxBY2N1bXVsYXRp
b24sIHBhaW50aW5nSW5mby5zdWJ0cmVlUGFpbnRSb290LCBwYWludGluZ0luZm8ucmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQsIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzKTsKICAgICBw
YWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRp
bmdJbmZvLCBwYWludEZsYWdzKTsKIH0KIApAQCAtNDE5Niw3ICs0MjAyLDcgQEAgUmVuZGVyTGF5
ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUoY29uc3Qg
UmVuZGVyTGF5ZXIqIHIKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y29s
bGVjdEZyYWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zdCBSZW5kZXJMYXll
ciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsCit2b2lkIFJlbmRlckxh
eWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnN0IFJl
bmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBMYXlvdXRS
ZWN0JiBkaXJ0eVJlY3QsCiAgICAgQ2xpcFJlY3RzVHlwZSBjbGlwUmVjdHNUeXBlLCBPdmVybGF5
U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5LCBT
aG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwIHJlc3BlY3RPdmVyZmxvd0NsaXAsIGNvbnN0IExheW91
dFBvaW50KiBvZmZzZXRGcm9tUm9vdCwKICAgICBjb25zdCBMYXlvdXRSZWN0KiBsYXllckJvdW5k
aW5nQm94LCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyBhcHBseVJvb3RPZmZzZXRU
b0ZyYWdtZW50cykKIHsKQEAgLTQyMDQsNyArNDIxMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNv
bGxlY3RGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdtZW50cywgY29uc3QgUmVuZGVyTGF5
ZXIqCiAgICAgaWYgKCFwYWdpbmF0aW9uTGF5ZXIgfHwgaGFzVHJhbnNmb3JtKCkpIHsKICAgICAg
ICAgLy8gRm9yIHVucGFnaW5hdGVkIGxheWVycywgdGhlcmUgaXMgb25seSBvbmUgZnJhZ21lbnQu
CiAgICAgICAgIExheWVyRnJhZ21lbnQgZnJhZ21lbnQ7Ci0gICAgICAgIENsaXBSZWN0c0NvbnRl
eHQgY2xpcFJlY3RzQ29udGV4dChyb290TGF5ZXIsIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNj
cm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOworICAgICAgICBDbGlw
UmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQocm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0
c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0Ns
aXApOwogICAgICAgICBjYWxjdWxhdGVSZWN0cyhjbGlwUmVjdHNDb250ZXh0LCBkaXJ0eVJlY3Qs
IGZyYWdtZW50LmxheWVyQm91bmRzLCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdCwgZnJhZ21lbnQu
Zm9yZWdyb3VuZFJlY3QsIGZyYWdtZW50Lm91dGxpbmVSZWN0LCBvZmZzZXRGcm9tUm9vdCk7CiAg
ICAgICAgIGZyYWdtZW50cy5hcHBlbmQoZnJhZ21lbnQpOwogICAgICAgICByZXR1cm47CkBAIC00
MjE2LDcgKzQyMjIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVy
RnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnN0IFJlbmRlckxheWVyKgogICAgIAogICAgIC8vIENh
bGN1bGF0ZSBjbGlwIHJlY3RzIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5
ZXIuIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2FsbCBpcyB0byBkZXRlcm1pbmUgb3VyIGJvdW5kcyBj
bGlwcGVkIHRvIGludGVybWVkaWF0ZQogICAgIC8vIGxheWVycyBiZXR3ZWVuIHVzIGFuZCB0aGUg
cGFnaW5hdGlvbiBjb250ZXh0LiBJdCdzIGltcG9ydGFudCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVy
IG9mIGZyYWdtZW50cyB3ZSBuZWVkIHRvIGNyZWF0ZSBhbmQgdGhpcyBoZWxwcyB3aXRoIHRoYXQu
Ci0gICAgQ2xpcFJlY3RzQ29udGV4dCBwYWdpbmF0aW9uQ2xpcFJlY3RzQ29udGV4dChwYWdpbmF0
aW9uTGF5ZXIsIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ks
IHJlc3BlY3RPdmVyZmxvd0NsaXApOworICAgIENsaXBSZWN0c0NvbnRleHQgcGFnaW5hdGlvbkNs
aXBSZWN0c0NvbnRleHQocGFnaW5hdGlvbkxheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGlu
T3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOwogICAg
IExheW91dFJlY3QgbGF5ZXJCb3VuZHNJbkZsb3dUaHJlYWQ7CiAgICAgQ2xpcFJlY3QgYmFja2dy
b3VuZFJlY3RJbkZsb3dUaHJlYWQ7CiAgICAgQ2xpcFJlY3QgZm9yZWdyb3VuZFJlY3RJbkZsb3dU
aHJlYWQ7CkBAIC00MjQxLDcgKzQyNDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJh
Z21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnN0IFJlbmRlckxheWVyKgogICAg
ICAgICBsYXllckZyYWdtZW50Qm91bmRpbmdCb3hJblBhcmVudFBhZ2luYXRpb25MYXllci5tb3Zl
Qnkob2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXIpOwogICAgICAgICAKICAgICAgICAg
Ly8gTm93IGNvbGxlY3QgYW5jZXN0b3IgZnJhZ21lbnRzLgotICAgICAgICBwYXJlbnRQYWdpbmF0
aW9uTGF5ZXItPmNvbGxlY3RGcmFnbWVudHMoYW5jZXN0b3JGcmFnbWVudHMsIHJvb3RMYXllciwg
ZGlydHlSZWN0LCBjbGlwUmVjdHNUeXBlLCBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5
LCByZXNwZWN0T3ZlcmZsb3dDbGlwLCBudWxscHRyLCAmbGF5ZXJGcmFnbWVudEJvdW5kaW5nQm94
SW5QYXJlbnRQYWdpbmF0aW9uTGF5ZXIsIEFwcGx5Um9vdE9mZnNldFRvRnJhZ21lbnRzKTsKKyAg
ICAgICAgcGFyZW50UGFnaW5hdGlvbkxheWVyLT5jb2xsZWN0RnJhZ21lbnRzKGFuY2VzdG9yRnJh
Z21lbnRzLCByb290TGF5ZXIsIHJlZ2lvbiwgZGlydHlSZWN0LCBjbGlwUmVjdHNUeXBlLCBpbk92
ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5LCByZXNwZWN0T3ZlcmZsb3dDbGlwLCBudWxscHRy
LCAmbGF5ZXJGcmFnbWVudEJvdW5kaW5nQm94SW5QYXJlbnRQYWdpbmF0aW9uTGF5ZXIsIEFwcGx5
Um9vdE9mZnNldFRvRnJhZ21lbnRzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChhbmNlc3RvckZy
YWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MzAzLDcgKzQzMDks
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiBm
cmFnbWVudHMsIGNvbnN0IFJlbmRlckxheWVyKgogICAgIC8vIEdldCB0aGUgcGFyZW50IGNsaXAg
cmVjdHMgb2YgdGhlIHBhZ2luYXRpb24gbGF5ZXIsIHNpbmNlIHdlIG5lZWQgdG8gaW50ZXJzZWN0
IHdpdGggdGhhdCB3aGVuIHBhaW50aW5nIGNvbHVtbiBjb250ZW50cy4KICAgICBDbGlwUmVjdCBh
bmNlc3RvckNsaXBSZWN0ID0gZGlydHlSZWN0OwogICAgIGlmIChwYWdpbmF0aW9uTGF5ZXItPnBh
cmVudCgpKSB7Ci0gICAgICAgIENsaXBSZWN0c0NvbnRleHQgY2xpcFJlY3RzQ29udGV4dChyb290
TGF5ZXIsIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJl
c3BlY3RPdmVyZmxvd0NsaXApOworICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0Nv
bnRleHQocm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJh
clNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOwogICAgICAgICBhbmNlc3RvckNs
aXBSZWN0ID0gcGFnaW5hdGlvbkxheWVyLT5iYWNrZ3JvdW5kQ2xpcFJlY3QoY2xpcFJlY3RzQ29u
dGV4dCk7CiAgICAgICAgIGFuY2VzdG9yQ2xpcFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CiAg
ICAgfQpAQCAtNDMzOSw3ICs0MzQ1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUGFpbnRp
bmdJbmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnMKICAgICAg
ICAgZnJhZ21lbnQuc2hvdWxkUGFpbnRDb250ZW50ID0gc2hvdWxkUGFpbnRDb250ZW50OwogICAg
ICAgICBpZiAodGhpcyAhPSBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIgfHwgIShsb2NhbFBh
aW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSkgewogICAgICAg
ICAgICAgTGF5b3V0UG9pbnQgbmV3T2Zmc2V0RnJvbVJvb3QgPSAqb2Zmc2V0RnJvbVJvb3QgKyBm
cmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0OwotICAgICAgICAgICAgZnJhZ21lbnQuc2hvdWxkUGFp
bnRDb250ZW50ICY9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGZyYWdtZW50LmxheWVyQm91bmRzLCBm
cmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXll
ciwgJm5ld09mZnNldEZyb21Sb290LCBmcmFnbWVudC5oYXNCb3VuZGluZ0JveCA/ICZmcmFnbWVu
dC5ib3VuZGluZ0JveCA6IDApOworICAgICAgICAgICAgZnJhZ21lbnQuc2hvdWxkUGFpbnRDb250
ZW50ICY9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGZyYWdtZW50LmxheWVyQm91bmRzLCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgJm5l
d09mZnNldEZyb21Sb290LCBsb2NhbFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCwgZnJhZ21lbnQuaGFzQm91bmRpbmdCb3ggPyAmZnJhZ21lbnQuYm91bmRpbmdCb3ggOiAwKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQzNDksNyArNDM1NSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjCiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50
czsKICAgICBMYXlvdXRQb2ludCBvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290OwogICAg
IExheW91dFJlY3QgdHJhbnNmb3JtZWRFeHRlbnQgPSB0cmFuc3BhcmVuY3lDbGlwQm94KHRoaXMs
IGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCBQYWludGluZ1RyYW5zcGFyZW5jeUNsaXBCb3gs
IFJvb3RPZlRyYW5zcGFyZW5jeUNsaXBCb3gsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsK
LSAgICBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29sbGVjdEZyYWdtZW50cyhlbmNsb3Np
bmdQYWdpbmF0aW9uRnJhZ21lbnRzLCBwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludGluZ0lu
Zm8ucGFpbnREaXJ0eVJlY3QsCisgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCktPmNvbGxl
Y3RGcmFnbWVudHMoZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50cywgcGFpbnRpbmdJbmZvLnJv
b3RMYXllciwgcGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCBwYWludGluZ0lu
Zm8ucGFpbnREaXJ0eVJlY3QsCiAgICAgICAgIChwYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBv
cmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywg
SWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsCiAgICAgICAgIChwYWludEZsYWdzICYgUGFpbnRM
YXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBSZXNw
ZWN0T3ZlcmZsb3dDbGlwLCAmb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCwgJnRyYW5z
Zm9ybWVkRXh0ZW50KTsKICAgICAKQEAgLTQzNjQsNyArNDM3MCw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjCiAgICAgICAgIGlmIChwYXJlbnQoKSAhPSBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5
ZXIoKSkgewogICAgICAgICAgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCktPmNvbnZlcnRU
b0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIG9mZnNldE9mUGFnaW5hdGlvbkxh
eWVyRnJvbVJvb3QpOwogICAgIAotICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVj
dHNDb250ZXh0KGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCAocGFpbnRGbGFncyAmIFBhaW50
TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdD
bGlwUmVjdHMsCisgICAgICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQo
ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIHBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCwgKHBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRl
bXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLAogICAgICAgICAgICAgICAgIEln
bm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGlu
Z092ZXJmbG93Q29udGVudHMpID8gSWdub3JlT3ZlcmZsb3dDbGlwIDogUmVzcGVjdE92ZXJmbG93
Q2xpcCk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHBhcmVudENsaXBSZWN0ID0gYmFja2dyb3Vu
ZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJlY3QoKTsKICAgICAgICAgICAgIHBhcmVudENs
aXBSZWN0Lm1vdmVCeShmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0T2ZQYWdpbmF0
aW9uTGF5ZXJGcm9tUm9vdCk7CkBAIC00Mzk4LDcgKzQ0MDQsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQuCiAgICAg
ICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20g
dGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4K
LSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5k
UmVjdC5yZWN0KCksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZpb3IsIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbnVsbHB0ciwgbnVsbHB0ciwgJmxvY2FsUGFpbnRp
bmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIFBhaW50SW5mbyBwYWludElu
Zm8oY29udGV4dCwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlQmxv
Y2tCYWNrZ3JvdW5kLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIs
IGxvY2FsUGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCAwLCAwLCAmbG9jYWxQ
YWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAgcmVuZGVyZXIoKS5w
YWludChwYWludEluZm8sIHRvTGF5b3V0UG9pbnQoZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9jYXRp
b24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50aW5nSW5mby5zdWJQaXhlbEFj
Y3VtdWxhdGlvbikpOwogCiAgICAgICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0
eVJlY3QpCkBAIC00NDcxLDcgKzQ0NzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVn
cm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAg
ICAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBUb1JlY3QobG9jYWxQYWludGlu
Z0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVj
dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QpOwogICAgIAotICAgICAgICBQYWludEluZm8gcGFp
bnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSwgcGhhc2UsIHBh
aW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbnVsbHB0ciwgbnVsbHB0
ciwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIFBh
aW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgp
LCBwaGFzZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2Nh
bFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRp
bmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChwaGFzZSA9PSBQYWlu
dFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgICAgIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVl
c3RzID0gbG9jYWxQYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0czsKICAgICAgICAgcmVu
ZGVyZXIoKS5wYWludChwYWludEluZm8sIHRvTGF5b3V0UG9pbnQoZnJhZ21lbnQubGF5ZXJCb3Vu
ZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50aW5nSW5mby5z
dWJQaXhlbEFjY3VtdWxhdGlvbikpOwpAQCAtNDQ5MCw3ICs0NDk2LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXll
ckZyYWdtZW50cywKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIAogICAgICAgICAvLyBQYWlu
dCBvdXIgb3duIG91dGxpbmUKLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBm
cmFnbWVudC5vdXRsaW5lUmVjdC5yZWN0KCksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgcGFpbnRC
ZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAm
bG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgUGFpbnRJ
bmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5vdXRsaW5lUmVjdC5yZWN0KCksIFBhaW50
UGhhc2VTZWxmT3V0bGluZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRl
cmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgMCwgMCwgJmxv
Y2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGNsaXBUb1Jl
Y3QobG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCwgZnJhZ21lbnQub3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZG
b3JCb3JkZXJSYWRpdXMpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9M
YXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9j
YXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CiAgICAg
ICAgIHJlc3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
LCBmcmFnbWVudC5vdXRsaW5lUmVjdCk7CkBAIC00NTEwLDcgKzQ1MTYsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbnRzLCBHcgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2suCiAgICAg
ICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20g
dGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4K
LSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5k
UmVjdC5yZWN0KCksIFBhaW50UGhhc2VNYXNrLCBQYWludEJlaGF2aW9yTm9ybWFsLCBzdWJ0cmVl
UGFpbnRSb290Rm9yUmVuZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5m
by5yb290TGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNv
bnRleHQsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZU1hc2ssIFBh
aW50QmVoYXZpb3JOb3JtYWwsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWlu
dGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIDAsIDAsICZsb2NhbFBhaW50aW5nSW5m
by5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50
SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVu
ZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9u
KSk7CiAgICAgICAgIAogICAgICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlS
ZWN0KQpAQCAtNDU0NCw3ICs0NTUwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgIGlm
ICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygpKQogICAgICAgICBoaXRUZXN0QXJlYS5pbnRlcnNl
Y3QocmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KExlZ2Fj
eUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKIAotICAgIFJlbmRlckxheWVyKiBpbnNpZGVMYXll
ciA9IGhpdFRlc3RMYXllcih0aGlzLCBudWxscHRyLCByZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RB
cmVhLCBoaXRUZXN0TG9jYXRpb24sIGZhbHNlKTsKKyAgICBSZW5kZXJMYXllciogaW5zaWRlTGF5
ZXIgPSBoaXRUZXN0TGF5ZXIodGhpcywgMCwgcmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0QXJlYSwg
aGl0VGVzdExvY2F0aW9uLCBmYWxzZSk7CiAgICAgaWYgKCFpbnNpZGVMYXllcikgewogICAgICAg
ICAvLyBXZSBkaWRuJ3QgaGl0IGFueSBsYXllci4gSWYgd2UgYXJlIHRoZSByb290IGxheWVyIGFu
ZCB0aGUgbW91c2UgaXMgLS0gb3IganVzdCB3YXMgLS0gZG93biwgCiAgICAgICAgIC8vIHJldHVy
biBvdXJzZWx2ZXMuIFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRpbmcg
ZGVsaXZlcmVkIGFmdGVyIGEgZHJhZyBoYXMgCkBAIC00NjkzLDcgKzQ2OTksNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RGaXhlZExheWVyc0luTmFtZWRGbG93cyhSZW5kZXJM
YXllciogLypyb290TGF5ZQogICAgICAgICBSZW5kZXJMYXllciogZml4ZWRMYXllciA9IGZpeGVk
TGF5ZXJzLmF0KGkpOwogCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQu
aGl0VGVzdExvY2F0aW9uKCkpOwotICAgICAgICBSZW5kZXJMYXllciogaGl0TGF5ZXIgPSBmaXhl
ZExheWVyLT5oaXRUZXN0TGF5ZXIoZml4ZWRMYXllci0+cmVuZGVyZXIoKS5mbG93VGhyZWFkQ29u
dGFpbmluZ0Jsb2NrKCktPmxheWVyKCksIG51bGxwdHIsIHJlcXVlc3QsIHRlbXBSZXN1bHQsCisg
ICAgICAgIFJlbmRlckxheWVyKiBoaXRMYXllciA9IGZpeGVkTGF5ZXItPmhpdFRlc3RMYXllcihm
aXhlZExheWVyLT5yZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKS0+bGF5ZXIo
KSwgMCwgcmVxdWVzdCwgdGVtcFJlc3VsdCwKICAgICAgICAgICAgIGhpdFRlc3RSZWN0LCBoaXRU
ZXN0TG9jYXRpb24sIGZhbHNlLCB0cmFuc2Zvcm1TdGF0ZSwgek9mZnNldEZvckRlc2NlbmRhbnRz
KTsKIAogICAgICAgICAvLyBJZiBpdCBhIHJlY3QtYmFzZWQgdGVzdCwgd2UgY2FuIHNhZmVseSBh
cHBlbmQgdGhlIHRlbXBvcmFyeSByZXN1bHQgc2luY2UgaXQgbWlnaHQgaGFkIGhpdApAQCAtNDcy
OCwxOSArNDczNCwxNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihS
ZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAgIGlmICghaXNTZWxm
UGFpbnRpbmdMYXllcigpICYmICFoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93
RnJhZ21lbnQgPSBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKLQogICAgIC8vIFBy
ZXZlbnQgaGl0dGluZyB0aGUgZml4ZWQgbGF5ZXJzIGluc2lkZSB0aGUgZmxvdyB0aHJlYWQgd2hl
biBoaXR0aW5nIHRocm91Z2ggcmVnaW9ucy4KLSAgICBpZiAocmVuZGVyZXIoKS5maXhlZFBvc2l0
aW9uZWRXaXRoTmFtZWRGbG93Q29udGFpbmluZ0Jsb2NrKCkgJiYgbmFtZWRGbG93RnJhZ21lbnQp
CisgICAgaWYgKHJlbmRlcmVyKCkuZml4ZWRQb3NpdGlvbmVkV2l0aE5hbWVkRmxvd0NvbnRhaW5p
bmdCbG9jaygpICYmIGhpdFRlc3RMb2NhdGlvbi5yZWdpb24oKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAvLyBEb24ndCBoaXQtdGVzdCB0aGUgbGF5ZXIgaWYgdGhlIHJlbmRlcmVyIGRvZXNu
J3QgYmVsb25nIHRvIHRoaXMgcmVnaW9uLgogICAgIC8vIFRoaXMgaXMgdHJ1ZSBhcyBsb25nIGFz
IHdlIGNsYW1wIHRoZSByYW5nZSBvZiBhIGJveCB0byBpdHMgY29udGFpbmluZyBibG9jayByYW5n
ZS4KICAgICAvLyBGSVhNRTogRml4IGhpdCB0ZXN0aW5nIHdpdGggaW4tZmxvdyB0aHJlYWRzIGlu
Y2x1ZGVkIGluIG91dC1vZi1mbG93IHRocmVhZHMuCi0gICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50
KSB7Ci0gICAgICAgIEFTU0VSVChuYW1lZEZsb3dGcmFnbWVudC0+aXNWYWxpZCgpKTsKLSAgICAg
ICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5hbWVkRmxvd0ZyYWdtZW50LT5mbG93
VGhyZWFkKCk7Ci0gICAgICAgIGlmICghZmxvd1RocmVhZC0+b2JqZWN0U2hvdWxkRnJhZ21lbnRJ
bkZsb3dSZWdpb24oJnJlbmRlcmVyKCksIG5hbWVkRmxvd0ZyYWdtZW50KSkKKyAgICBpZiAoaGl0
VGVzdExvY2F0aW9uLnJlZ2lvbigpKSB7CisgICAgICAgIEFTU0VSVChoaXRUZXN0TG9jYXRpb24u
cmVnaW9uKCktPmlzVmFsaWQoKSk7CisgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQgPSBoaXRUZXN0TG9jYXRpb24ucmVnaW9uKCktPmZsb3dUaHJlYWQoKTsKKyAgICAgICAgaWYg
KCFmbG93VGhyZWFkLT5vYmplY3RTaG91bGRGcmFnbWVudEluRmxvd1JlZ2lvbigmcmVuZGVyZXIo
KSwgaGl0VGVzdExvY2F0aW9uLnJlZ2lvbigpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIApAQCAtNDc1Myw3ICs0NzU3LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRU
ZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKIAogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhcmVudCdzIGNsaXAgcmVjdHMgaGF2ZSBiZWVuIGNhbGN1
bGF0ZWQuCiAgICAgICAgIGlmIChwYXJlbnQoKSkgewotICAgICAgICAgICAgQ2xpcFJlY3RzQ29u
dGV4dCBjbGlwUmVjdHNDb250ZXh0KHJvb3RMYXllciwgUm9vdFJlbGF0aXZlQ2xpcFJlY3RzLCBJ
bmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOworICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4
dCBjbGlwUmVjdHNDb250ZXh0KHJvb3RMYXllciwgaGl0VGVzdExvY2F0aW9uLnJlZ2lvbigpLCBS
b290UmVsYXRpdmVDbGlwUmVjdHMsIEluY2x1ZGVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CiAgICAg
ICAgICAgICBDbGlwUmVjdCBjbGlwUmVjdCA9IGJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVjdHND
b250ZXh0KTsKICAgICAgICAgICAgIC8vIEdvIGFoZWFkIGFuZCB0ZXN0IHRoZSBlbmNsb3Npbmcg
Y2xpcCBub3cuCiAgICAgICAgICAgICBpZiAoIWNsaXBSZWN0LmludGVyc2VjdHMoaGl0VGVzdExv
Y2F0aW9uKSkKQEAgLTQ4NDMsNyArNDg0Nyw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6
aGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAK
ICAgICAvLyBDb2xsZWN0IHRoZSBmcmFnbWVudHMuIFRoaXMgd2lsbCBjb21wdXRlIHRoZSBjbGlw
IHJlY3RhbmdsZXMgZm9yIGVhY2ggbGF5ZXIgZnJhZ21lbnQuCiAgICAgTGF5ZXJGcmFnbWVudHMg
bGF5ZXJGcmFnbWVudHM7Ci0gICAgY29sbGVjdEZyYWdtZW50cyhsYXllckZyYWdtZW50cywgcm9v
dExheWVyLCBoaXRUZXN0UmVjdCwgUm9vdFJlbGF0aXZlQ2xpcFJlY3RzLCBJbmNsdWRlT3Zlcmxh
eVNjcm9sbGJhclNpemUpOworICAgIGNvbGxlY3RGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIHJv
b3RMYXllciwgaGl0VGVzdExvY2F0aW9uLnJlZ2lvbigpLCBoaXRUZXN0UmVjdCwgUm9vdFJlbGF0
aXZlQ2xpcFJlY3RzLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOwogCiAgICAgaWYgKGNh
blJlc2l6ZSgpICYmIGhpdFRlc3RSZXNpemVySW5GcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGhp
dFRlc3RMb2NhdGlvbikpIHsKICAgICAgICAgcmVuZGVyZXIoKS51cGRhdGVIaXRUZXN0UmVzdWx0
KHJlc3VsdCwgaGl0VGVzdExvY2F0aW9uLnBvaW50KCkpOwpAQCAtNDk0OCw3ICs0OTUyLDcgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0VHJhbnNmb3JtZWRMYXllckluRnJhZ21l
bnRzKFJlbmRlckxheWVyKiByb290TGEKICAgICBMYXllckZyYWdtZW50cyBlbmNsb3NpbmdQYWdp
bmF0aW9uRnJhZ21lbnRzOwogICAgIExheW91dFBvaW50IG9mZnNldE9mUGFnaW5hdGlvbkxheWVy
RnJvbVJvb3Q7CiAgICAgTGF5b3V0UmVjdCB0cmFuc2Zvcm1lZEV4dGVudCA9IHRyYW5zcGFyZW5j
eUNsaXBCb3godGhpcywgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIEhpdFRlc3RpbmdUcmFu
c3BhcmVuY3lDbGlwQm94LCBSb290T2ZUcmFuc3BhcmVuY3lDbGlwQm94KTsKLSAgICBlbmNsb3Np
bmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29sbGVjdEZyYWdtZW50cyhlbmNsb3NpbmdQYWdpbmF0aW9u
RnJhZ21lbnRzLCByb290TGF5ZXIsIGhpdFRlc3RSZWN0LAorICAgIGVuY2xvc2luZ1BhZ2luYXRp
b25MYXllcigpLT5jb2xsZWN0RnJhZ21lbnRzKGVuY2xvc2luZ1BhZ2luYXRpb25GcmFnbWVudHMs
IHJvb3RMYXllciwgaGl0VGVzdExvY2F0aW9uLnJlZ2lvbigpLCBoaXRUZXN0UmVjdCwKICAgICAg
ICAgUm9vdFJlbGF0aXZlQ2xpcFJlY3RzLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUsIFJl
c3BlY3RPdmVyZmxvd0NsaXAsICZvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290LCAmdHJh
bnNmb3JtZWRFeHRlbnQpOwogCiAgICAgZm9yIChpbnQgaSA9IGVuY2xvc2luZ1BhZ2luYXRpb25G
cmFnbWVudHMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKQEAgLTQ5NjIsNyArNDk2Niw3IEBA
IFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdFRyYW5zZm9ybWVkTGF5ZXJJbkZyYWdt
ZW50cyhSZW5kZXJMYXllciogcm9vdExhCiAgICAgICAgIGlmIChwYXJlbnQoKSAhPSBlbmNsb3Np
bmdQYWdpbmF0aW9uTGF5ZXIoKSkgewogICAgICAgICAgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVyKCktPmNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgb2Zmc2V0T2ZQYWdpbmF0aW9u
TGF5ZXJGcm9tUm9vdCk7CiAgICAgCi0gICAgICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBS
ZWN0c0NvbnRleHQoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIFJvb3RSZWxhdGl2ZUNsaXBS
ZWN0cywgSW5jbHVkZU92ZXJsYXlTY3JvbGxiYXJTaXplKTsKKyAgICAgICAgICAgIENsaXBSZWN0
c0NvbnRleHQgY2xpcFJlY3RzQ29udGV4dChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSwgaGl0
VGVzdExvY2F0aW9uLnJlZ2lvbigpLCBSb290UmVsYXRpdmVDbGlwUmVjdHMsIEluY2x1ZGVPdmVy
bGF5U2Nyb2xsYmFyU2l6ZSk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHBhcmVudENsaXBSZWN0
ID0gYmFja2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJlY3QoKTsKICAgICAgICAg
ICAgIHBhcmVudENsaXBSZWN0Lm1vdmVCeShmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zm
c2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCk7CiAgICAgICAgICAgICBjbGlwUmVjdC5pbnRl
cnNlY3QocGFyZW50Q2xpcFJlY3QpOwpAQCAtNTEyNSwxNiArNTEyOSwxMSBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3Rz
Q29udGV4dCkKICNlbmRpZgogfQogCi1ib29sIFJlbmRlckxheWVyOjptYXBMYXllckNsaXBSZWN0
c1RvRnJhZ21lbnRhdGlvbkxheWVyKENsaXBSZWN0cyYgY2xpcFJlY3RzKSBjb25zdAordm9pZCBS
ZW5kZXJMYXllcjo6bWFwTGF5ZXJDbGlwUmVjdHNUb0ZyYWdtZW50YXRpb25MYXllcihSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQsIENsaXBSZWN0cyYgY2xpcFJlY3Rz
KSBjb25zdAogewotICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVu
dCA9IGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotICAgIGlmICghbmFtZWRGbG93
RnJhZ21lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChuYW1lZEZsb3dG
cmFnbWVudC0+cGFyZW50KCkgJiYgbmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudCgpLT5pc1JlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpOworICAgIEFTU0VSVChuYW1lZEZsb3dGcmFn
bWVudCAmJiBuYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50KCkgJiYgbmFtZWRGbG93RnJhZ21lbnQt
PnBhcmVudCgpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpOwogICAgIAot
ICAgIEN1cnJlbnRSZW5kZXJGbG93VGhyZWFkRGlzYWJsZXIgZmxvd1RocmVhZERpc2FibGVyKCZy
ZW5kZXJlcigpLnZpZXcoKSk7Ci0gICAgQ2xpcFJlY3RzQ29udGV4dCB0YXJnZXRDbGlwUmVjdHND
b250ZXh0KCZuYW1lZEZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWluZXJMYXllcigpLCBUZW1w
b3JhcnlDbGlwUmVjdHMpOworICAgIENsaXBSZWN0c0NvbnRleHQgdGFyZ2V0Q2xpcFJlY3RzQ29u
dGV4dCgmbmFtZWRGbG93RnJhZ21lbnQtPmZyYWdtZW50Q29udGFpbmVyTGF5ZXIoKSwgMCwgVGVt
cG9yYXJ5Q2xpcFJlY3RzKTsKICAgICBuYW1lZEZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWlu
ZXJMYXllcigpLmNhbGN1bGF0ZUNsaXBSZWN0cyh0YXJnZXRDbGlwUmVjdHNDb250ZXh0LCBjbGlw
UmVjdHMpOwogCiAgICAgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlvblJlY3QgPSBuYW1lZEZs
b3dGcmFnbWVudC0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCk7CkBAIC01MTU0LDggKzUxNTMsNiBA
QCBib29sIFJlbmRlckxheWVyOjptYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVy
KENsaXBSZWN0cyYgY2xpcFJlY3RzKSBjbwogICAgIENsaXBSZWN0IG5ld1Bvc0NsaXBSZWN0ID0g
Y2xpcFJlY3RzLnBvc0NsaXBSZWN0KCk7CiAgICAgbmV3UG9zQ2xpcFJlY3QubW92ZShtb3ZlT2Zm
c2V0KTsKICAgICBjbGlwUmVjdHMuc2V0UG9zQ2xpcFJlY3QobmV3UG9zQ2xpcFJlY3QpOwotCi0g
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0
cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBDbGlwUmVjdHMmIGNs
aXBSZWN0cykgY29uc3QKQEAgLTUxNjksOCArNTE2NiwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4
dCwgQwogICAgIENsaXBSZWN0c1R5cGUgY2xpcFJlY3RzVHlwZSA9IGNsaXBSZWN0c0NvbnRleHQu
Y2xpcFJlY3RzVHlwZTsKICAgICBib29sIHVzZUNhY2hlZCA9IGNsaXBSZWN0c1R5cGUgIT0gVGVt
cG9yYXJ5Q2xpcFJlY3RzOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dU
aHJlYWQoKSAmJiBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKGNsaXBSZWN0
cykpCisgICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSAmJiBjbGlw
UmVjdHNDb250ZXh0LnJlZ2lvbikgeworICAgICAgICBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21l
bnRhdGlvbkxheWVyKHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoY2xpcFJlY3RzQ29udGV4dC5y
ZWdpb24pLCBjbGlwUmVjdHMpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gRm9y
IHRyYW5zZm9ybWVkIGxheWVycywgdGhlIHJvb3QgbGF5ZXIgd2FzIHNoaWZ0ZWQgdG8gYmUgdXMs
IHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8KICAgICAvLyBleGFtaW5lIHRoZSBwYXJlbnQuIFdlIHdh
bnQgdG8gY2FjaGUgY2xpcCByZWN0cyB3aXRoIHVzIGFzIHRoZSByb290LgpAQCAtNTIxNiw3ICs1
MjE1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBS
ZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIEMKICAgICAgICAgICAgIG9mZnNldCAtPSBy
ZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9u
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAocmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSkg
ewotICAgICAgICAgICAgQ2xpcFJlY3QgbmV3T3ZlcmZsb3dDbGlwID0gdG9SZW5kZXJCb3gocmVu
ZGVyZXIoKSkub3ZlcmZsb3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKG9mZnNldCwgY3VycmVudFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIGNsaXBSZWN0c0NvbnRleHQub3ZlcmxheVNjcm9sbGJh
clNpemVSZWxldmFuY3kpOworICAgICAgICAgICAgQ2xpcFJlY3QgbmV3T3ZlcmZsb3dDbGlwID0g
dG9SZW5kZXJCb3gocmVuZGVyZXIoKSkub3ZlcmZsb3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKG9m
ZnNldCwgY2xpcFJlY3RzQ29udGV4dC5yZWdpb24sIGNsaXBSZWN0c0NvbnRleHQub3ZlcmxheVNj
cm9sbGJhclNpemVSZWxldmFuY3kpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUo
KS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgICAgICAgICBuZXdPdmVyZmxvd0NsaXAuc2V0
SGFzUmFkaXVzKHRydWUpOwogICAgICAgICAgICAgY2xpcFJlY3RzLnNldE92ZXJmbG93Q2xpcFJl
Y3QoaW50ZXJzZWN0aW9uKG5ld092ZXJmbG93Q2xpcCwgY2xpcFJlY3RzLm92ZXJmbG93Q2xpcFJl
Y3QoKSkpOwpAQCAtNTIyNCw3ICs1MjIzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRl
Q2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIEMKICAg
ICAgICAgICAgICAgICBjbGlwUmVjdHMuc2V0UG9zQ2xpcFJlY3QoaW50ZXJzZWN0aW9uKG5ld092
ZXJmbG93Q2xpcCwgY2xpcFJlY3RzLnBvc0NsaXBSZWN0KCkpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAocmVuZGVyZXIoKS5oYXNDbGlwKCkpIHsKLSAgICAgICAgICAgIExheW91dFJlY3QgbmV3
UG9zQ2xpcCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLmNsaXBSZWN0KG9mZnNldCwgY3VycmVu
dFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBuZXdQ
b3NDbGlwID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuY2xpcFJlY3Qob2Zmc2V0LCBjbGlwUmVj
dHNDb250ZXh0LnJlZ2lvbik7CiAgICAgICAgICAgICBjbGlwUmVjdHMuc2V0UG9zQ2xpcFJlY3Qo
aW50ZXJzZWN0aW9uKG5ld1Bvc0NsaXAsIGNsaXBSZWN0cy5wb3NDbGlwUmVjdCgpKSk7CiAgICAg
ICAgICAgICBjbGlwUmVjdHMuc2V0T3ZlcmZsb3dDbGlwUmVjdChpbnRlcnNlY3Rpb24obmV3UG9z
Q2xpcCwgY2xpcFJlY3RzLm92ZXJmbG93Q2xpcFJlY3QoKSkpOwogICAgICAgICAgICAgY2xpcFJl
Y3RzLnNldEZpeGVkQ2xpcFJlY3QoaW50ZXJzZWN0aW9uKG5ld1Bvc0NsaXAsIGNsaXBSZWN0cy5m
aXhlZENsaXBSZWN0KCkpKTsKQEAgLTUyMzUsOCArNTIzNCwxMCBAQCB2b2lkIFJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29u
dGV4dCwgQwogdm9pZCBSZW5kZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0
c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIENsaXBSZWN0cyYgY2xpcFJlY3RzKSBjb25zdAog
ewogICAgIEFTU0VSVChwYXJlbnQoKSk7Ci0gICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSAmJiBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKGNs
aXBSZWN0cykpCisgICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSAm
JiBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbikgeworICAgICAgICBtYXBMYXllckNsaXBSZWN0c1Rv
RnJhZ21lbnRhdGlvbkxheWVyKHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoY2xpcFJlY3RzQ29u
dGV4dC5yZWdpb24pLCBjbGlwUmVjdHMpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
aWYgKGNsaXBSZWN0c0NvbnRleHQuY2xpcFJlY3RzVHlwZSA9PSBUZW1wb3JhcnlDbGlwUmVjdHMp
IHsKICAgICAgICAgcGFyZW50KCktPmNhbGN1bGF0ZUNsaXBSZWN0cyhjbGlwUmVjdHNDb250ZXh0
LCBjbGlwUmVjdHMpOwpAQCAtNTI5OCwxMSArNTI5OSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNh
bGN1bGF0ZVJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIGNv
bnN0CiAgICAgZWxzZQogICAgICAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhjbGlwUmVjdHNDb250
ZXh0LnJvb3RMYXllciwgb2Zmc2V0KTsKIAotCi0gICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQq
IG5hbWVkRmxvd0ZyYWdtZW50ID0gY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAg
ICAgLy8gSWYgdGhlIHZpZXcgaXMgc2Nyb2xsZWQsIHRoZSBmbG93IHRocmVhZCBpcyBub3Qgc2Ny
b2xsZWQgd2l0aCBpdCBhbmQgd2Ugc2hvdWxkCiAgICAgLy8gdGFrZSB0aGUgc2Nyb2xsIG9mZnNl
dCBpbnRvIGFjY291bnQuCi0gICAgaWYgKGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyLT5pc091
dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSAmJiAhbmFtZWRGbG93RnJhZ21lbnQpIHsKKyAgICBp
ZiAoY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXItPmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVh
ZCgpICYmICFjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbikgewogICAgICAgICBGbG9hdFBvaW50IGFi
c1BvcyA9IHJlbmRlcmVyKCkudmlldygpLmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIElz
Rml4ZWQpOwogICAgICAgICBvZmZzZXQgKz0gTGF5b3V0U2l6ZShhYnNQb3MueCgpLCBhYnNQb3Mu
eSgpKTsKICAgICB9CkBAIC01MzEyLDExICs1MzExLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNh
bGN1bGF0ZVJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIGNv
bnN0CiAgICAgZm9yZWdyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsKICAgICBvdXRsaW5lUmVj
dCA9IGJhY2tncm91bmRSZWN0OwogCi0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9
IG5hbWVkRmxvd0ZyYWdtZW50ID8gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKSA6IDA7
CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGNsaXBSZWN0c0NvbnRleHQucmVn
aW9uID8gY2xpcFJlY3RzQ29udGV4dC5yZWdpb24tPmZsb3dUaHJlYWQoKSA6IDA7CiAgICAgaWYg
KGlzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiBmbG93VGhyZWFkICYmICFyZW5kZXJlcigpLmlzSW5G
bG93UmVuZGVyRmxvd1RocmVhZCgpKSB7Ci0gICAgICAgIEFTU0VSVChuYW1lZEZsb3dGcmFnbWVu
dC0+aXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKGNsaXBSZWN0c0NvbnRleHQucmVnaW9uLT5p
c1ZhbGlkKCkpOwogICAgICAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94TW9kZWxP
YmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKCkpOwotICAgICAgICBMYXlv
dXRSZWN0IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93ID0gbmFtZWRGbG93RnJhZ21lbnQt
PnZpc3VhbE92ZXJmbG93UmVjdEZvckJveCgmYm94TW9kZWxPYmplY3QpOworICAgICAgICBMYXlv
dXRSZWN0IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93ID0gY2xpcFJlY3RzQ29udGV4dC5y
ZWdpb24tPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveCgmYm94TW9kZWxPYmplY3QpOwogCiAgICAg
ICAgIC8vIExheWVycyBhcmUgaW4gcGh5c2ljYWwgY29vcmRpbmF0ZXMgc28gdGhlIG9yaWdpbiBt
dXN0IGJlIG1vdmVkIHRvIHRoZSBwaHlzaWNhbCB0b3AtbGVmdCBvZiB0aGUgZmxvd3RocmVhZC4K
ICAgICAgICAgaWYgKCZib3hNb2RlbE9iamVjdCA9PSBmbG93VGhyZWFkICYmIGZsb3dUaHJlYWQt
PnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgewpAQCAtNTMzNSwxMCArNTMz
NCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBDbGlwUmVjdHND
b250ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBjb25zdAogCiAgICAgICAgIGZvcmVncm91bmRSZWN0
ID0gYmFja2dyb3VuZFJlY3Q7CiAgICAgICAgIG91dGxpbmVSZWN0ID0gYmFja2dyb3VuZFJlY3Q7
Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSByZWdpb24gZG9lcyBub3QgY2xpcCBpdHMg
b3ZlcmZsb3csIGluZmxhdGUgdGhlIG91dGxpbmUgcmVjdC4KLSAgICAgICAgaWYgKG5hbWVkRmxv
d0ZyYWdtZW50KSB7Ci0gICAgICAgICAgICBpZiAoIShuYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50
KCktPmhhc092ZXJmbG93Q2xpcCgpICYmICgmbmFtZWRGbG93RnJhZ21lbnQtPmZyYWdtZW50Q29u
dGFpbmVyTGF5ZXIoKSAhPSBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllciB8fCBjbGlwUmVjdHND
b250ZXh0LnJlc3BlY3RPdmVyZmxvd0NsaXAgPT0gUmVzcGVjdE92ZXJmbG93Q2xpcCkpKQorICAg
ICAgICBpZiAoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24tPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKSkgeworICAgICAgICAgICAgaWYgKCEoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24tPnBhcmVu
dCgpLT5oYXNPdmVyZmxvd0NsaXAoKSAmJiAoJnRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoY2xp
cFJlY3RzQ29udGV4dC5yZWdpb24pLT5mcmFnbWVudENvbnRhaW5lckxheWVyKCkgIT0gY2xpcFJl
Y3RzQ29udGV4dC5yb290TGF5ZXIgfHwgY2xpcFJlY3RzQ29udGV4dC5yZXNwZWN0T3ZlcmZsb3dD
bGlwID09IFJlc3BlY3RPdmVyZmxvd0NsaXApKSkKICAgICAgICAgICAgICAgICBvdXRsaW5lUmVj
dC5pbmZsYXRlKHJlbmRlcmVyKCkubWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5l
KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MzQ3LDE0ICs1MzQ2LDE0IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0Nv
bnRleHQsIGNvbnN0CiAgICAgaWYgKHJlbmRlcmVyKCkuaGFzQ2xpcE9yT3ZlcmZsb3dDbGlwKCkp
IHsKICAgICAgICAgLy8gVGhpcyBsYXllciBlc3RhYmxpc2hlcyBhIGNsaXAgb2Ygc29tZSBraW5k
LgogICAgICAgICBpZiAocmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiAodGhpcyAhPSBj
bGlwUmVjdHNDb250ZXh0LnJvb3RMYXllciB8fCBjbGlwUmVjdHNDb250ZXh0LnJlc3BlY3RPdmVy
Zmxvd0NsaXAgPT0gUmVzcGVjdE92ZXJmbG93Q2xpcCkpIHsKLSAgICAgICAgICAgIGZvcmVncm91
bmRSZWN0LmludGVyc2VjdCh0b1JlbmRlckJveChyZW5kZXJlcigpKS5vdmVyZmxvd0NsaXBSZWN0
KG9mZnNldCwgbmFtZWRGbG93RnJhZ21lbnQsIGNsaXBSZWN0c0NvbnRleHQub3ZlcmxheVNjcm9s
bGJhclNpemVSZWxldmFuY3kpKTsKKyAgICAgICAgICAgIGZvcmVncm91bmRSZWN0LmludGVyc2Vj
dCh0b1JlbmRlckJveChyZW5kZXJlcigpKS5vdmVyZmxvd0NsaXBSZWN0KG9mZnNldCwgY2xpcFJl
Y3RzQ29udGV4dC5yZWdpb24sIGNsaXBSZWN0c0NvbnRleHQub3ZlcmxheVNjcm9sbGJhclNpemVS
ZWxldmFuY3kpKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVy
UmFkaXVzKCkpCiAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZFJlY3Quc2V0SGFzUmFkaXVzKHRy
dWUpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlbmRlcmVyKCkuaGFzQ2xpcCgpKSB7CiAg
ICAgICAgICAgICAvLyBDbGlwIGFwcGxpZXMgdG8gKnVzKiBhcyB3ZWxsLCBzbyBnbyBhaGVhZCBh
bmQgdXBkYXRlIHRoZSBkYW1hZ2VSZWN0LgotICAgICAgICAgICAgTGF5b3V0UmVjdCBuZXdQb3ND
bGlwID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuY2xpcFJlY3Qob2Zmc2V0LCBuYW1lZEZsb3dG
cmFnbWVudCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IG5ld1Bvc0NsaXAgPSB0b1JlbmRlckJv
eChyZW5kZXJlcigpKS5jbGlwUmVjdChvZmZzZXQsIGNsaXBSZWN0c0NvbnRleHQucmVnaW9uKTsK
ICAgICAgICAgICAgIGJhY2tncm91bmRSZWN0LmludGVyc2VjdChuZXdQb3NDbGlwKTsKICAgICAg
ICAgICAgIGZvcmVncm91bmRSZWN0LmludGVyc2VjdChuZXdQb3NDbGlwKTsKICAgICAgICAgICAg
IG91dGxpbmVSZWN0LmludGVyc2VjdChuZXdQb3NDbGlwKTsKQEAgLTUzNjYsMTYgKzUzNjUsMTYg
QEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4
dCYgY2xpcFJlY3RzQ29udGV4dCwgY29uc3QKICAgICAgICAgaWYgKHJlbmRlckJveCgpLT5oYXNW
aXN1YWxPdmVyZmxvdygpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogRG9lcyBub3QgZG8gdGhl
IHJpZ2h0IHRoaW5nIHdpdGggQ1NTIHJlZ2lvbnMgeWV0LCBzaW5jZSB3ZSBkb24ndCB5ZXQgZmFj
dG9yIGluIHRoZQogICAgICAgICAgICAgLy8gaW5kaXZpZHVhbCByZWdpb24gYm94ZXMgYXMgb3Zl
cmZsb3cuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJm
bG93ID0gbmFtZWRGbG93RnJhZ21lbnQgPyBuYW1lZEZsb3dGcmFnbWVudC0+dmlzdWFsT3ZlcmZs
b3dSZWN0Rm9yQm94KHJlbmRlckJveCgpKSA6IHJlbmRlckJveCgpLT52aXN1YWxPdmVyZmxvd1Jl
Y3QoKTsKKyAgICAgICAgICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHNXaXRoVmlzdWFsT3ZlcmZs
b3cgPSBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbiA/IGNsaXBSZWN0c0NvbnRleHQucmVnaW9uLT52
aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3gocmVuZGVyQm94KCkpIDogcmVuZGVyQm94KCktPnZpc3Vh
bE92ZXJmbG93UmVjdCgpOwogICAgICAgICAgICAgcmVuZGVyQm94KCktPmZsaXBGb3JXcml0aW5n
TW9kZShsYXllckJvdW5kc1dpdGhWaXN1YWxPdmVyZmxvdyk7IC8vIExheWVycyBhcmUgaW4gcGh5
c2ljYWwgY29vcmRpbmF0ZXMsIHNvIHRoZSBvdmVyZmxvdyBoYXMgdG8gYmUgZmxpcHBlZC4KICAg
ICAgICAgICAgIGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93Lm1vdmVCeShvZmZzZXQpOwog
ICAgICAgICAgICAgaWYgKHRoaXMgIT0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXIgfHwgY2xp
cFJlY3RzQ29udGV4dC5yZXNwZWN0T3ZlcmZsb3dDbGlwID09IFJlc3BlY3RPdmVyZmxvd0NsaXAp
CiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFJlY3QuaW50ZXJzZWN0KGxheWVyQm91bmRzV2l0
aFZpc3VhbE92ZXJmbG93KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNoaWZ0
IHRoZSBib3VuZHMgdG8gYmUgZm9yIG91ciByZWdpb24gb25seS4KLSAgICAgICAgICAgIExheW91
dFJlY3QgYm91bmRzID0gcmVuZGVyQm94KCktPmJvcmRlckJveFJlY3RJblJlZ2lvbihuYW1lZEZs
b3dGcmFnbWVudCk7Ci0gICAgICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQpCi0gICAgICAg
ICAgICAgICAgYm91bmRzID0gbmFtZWRGbG93RnJhZ21lbnQtPnJlY3RGbG93UG9ydGlvbkZvckJv
eChyZW5kZXJCb3goKSwgYm91bmRzKTsKKyAgICAgICAgICAgIExheW91dFJlY3QgYm91bmRzID0g
cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3RJblJlZ2lvbihjbGlwUmVjdHNDb250ZXh0LnJlZ2lv
bik7CisgICAgICAgICAgICBpZiAoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pCisgICAgICAgICAg
ICAgICAgYm91bmRzID0gY2xpcFJlY3RzQ29udGV4dC5yZWdpb24tPnJlY3RGbG93UG9ydGlvbkZv
ckJveChyZW5kZXJCb3goKSwgYm91bmRzKTsKIAogICAgICAgICAgICAgYm91bmRzLm1vdmVCeShv
ZmZzZXQpOwogICAgICAgICAgICAgaWYgKHRoaXMgIT0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5
ZXIgfHwgY2xpcFJlY3RzQ29udGV4dC5yZXNwZWN0T3ZlcmZsb3dDbGlwID09IFJlc3BlY3RPdmVy
Zmxvd0NsaXApCkBAIC01NDAzLDcgKzU0MDIsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpj
aGlsZHJlbkNsaXBSZWN0KCkgY29uc3QKICAgICBSZW5kZXJMYXllciogY2xpcHBpbmdSb290TGF5
ZXIgPSBjbGlwcGluZ1Jvb3RGb3JQYWludGluZygpOwogICAgIExheW91dFJlY3QgbGF5ZXJCb3Vu
ZHM7CiAgICAgQ2xpcFJlY3QgYmFja2dyb3VuZFJlY3QsIGZvcmVncm91bmRSZWN0LCBvdXRsaW5l
UmVjdDsKLSAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQoY2xpcHBpbmdSb290
TGF5ZXIsIFRlbXBvcmFyeUNsaXBSZWN0cyk7CisgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVj
dHNDb250ZXh0KGNsaXBwaW5nUm9vdExheWVyLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMpOwogICAg
IC8vIE5lZWQgdG8gdXNlIHRlbXBvcmFyeSBjbGlwIHJlY3RzLCBiZWNhdXNlIHRoZSB2YWx1ZSBv
ZiAnZG9udENsaXBUb092ZXJmbG93JyBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHBhaW50aW5n
IHBhdGggKDxyZGFyOi8vcHJvYmxlbS8xMTg0NDkwOT4pLgogICAgIGNhbGN1bGF0ZVJlY3RzKGNs
aXBSZWN0c0NvbnRleHQsIHJlbmRlcmVyKCkudmlldygpLnVuc2NhbGVkRG9jdW1lbnRSZWN0KCks
IGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJlY3QsIG91dGxpbmVSZWN0
KTsKICAgICByZXR1cm4gY2xpcHBpbmdSb290TGF5ZXItPnJlbmRlcmVyKCkubG9jYWxUb0Fic29s
dXRlUXVhZChGbG9hdFF1YWQoZm9yZWdyb3VuZFJlY3QucmVjdCgpKSkuZW5jbG9zaW5nQm91bmRp
bmdCb3goKTsKQEAgLTU0MTYsNyArNTQxNSw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OnNl
bGZDbGlwUmVjdCgpIGNvbnN0CiAgICAgUmVuZGVyTGF5ZXIqIGNsaXBwaW5nUm9vdExheWVyID0g
Y2xpcHBpbmdSb290Rm9yUGFpbnRpbmcoKTsKICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzOwog
ICAgIENsaXBSZWN0IGJhY2tncm91bmRSZWN0LCBmb3JlZ3JvdW5kUmVjdCwgb3V0bGluZVJlY3Q7
Ci0gICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KGNsaXBwaW5nUm9vdExheWVy
LCBQYWludGluZ0NsaXBSZWN0cyk7CisgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250
ZXh0KGNsaXBwaW5nUm9vdExheWVyLCAwLCBQYWludGluZ0NsaXBSZWN0cyk7CiAgICAgY2FsY3Vs
YXRlUmVjdHMoY2xpcFJlY3RzQ29udGV4dCwgcmVuZGVyZXIoKS52aWV3KCkuZG9jdW1lbnRSZWN0
KCksIGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJlY3QsIG91dGxpbmVS
ZWN0KTsKICAgICByZXR1cm4gY2xpcHBpbmdSb290TGF5ZXItPnJlbmRlcmVyKCkubG9jYWxUb0Fi
c29sdXRlUXVhZChGbG9hdFF1YWQoYmFja2dyb3VuZFJlY3QucmVjdCgpKSkuZW5jbG9zaW5nQm91
bmRpbmdCb3goKTsKIH0KQEAgLTU0MzQsNyArNTQzMyw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5
ZXI6OmxvY2FsQ2xpcFJlY3QoYm9vbCYgY2xpcEV4Y2VlZHNCb3VuZHMpIGNvbnN0CiAKICAgICBM
YXlvdXRSZWN0IGxheWVyQm91bmRzOwogICAgIENsaXBSZWN0IGJhY2tncm91bmRSZWN0LCBmb3Jl
Z3JvdW5kUmVjdCwgb3V0bGluZVJlY3Q7Ci0gICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHND
b250ZXh0KGNsaXBwaW5nUm9vdExheWVyLCBQYWludGluZ0NsaXBSZWN0cyk7CisgICAgQ2xpcFJl
Y3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KGNsaXBwaW5nUm9vdExheWVyLCAwLCBQYWludGlu
Z0NsaXBSZWN0cyk7CiAgICAgY2FsY3VsYXRlUmVjdHMoY2xpcFJlY3RzQ29udGV4dCwgTGF5b3V0
UmVjdDo6aW5maW5pdGVSZWN0KCksIGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdy
b3VuZFJlY3QsIG91dGxpbmVSZWN0LCAmb2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgTGF5b3V0UmVj
dCBjbGlwUmVjdCA9IGJhY2tncm91bmRSZWN0LnJlY3QoKTsKQEAgLTU0NDMsNyArNTQ0Miw3IEBA
IExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmxvY2FsQ2xpcFJlY3QoYm9vbCYgY2xpcEV4Y2VlZHNC
b3VuZHMpIGNvbnN0CiAKICAgICBpZiAocmVuZGVyZXIoKS5oYXNDbGlwKCkpIHsKICAgICAgICAg
Ly8gQ1NTIGNsaXAgbWF5IGJlIGxhcmdlciB0aGFuIG91ciBib3JkZXIgYm94LgotICAgICAgICBM
YXlvdXRSZWN0IGNzc0NsaXBSZWN0ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuY2xpcFJlY3Qo
b2Zmc2V0RnJvbVJvb3QsIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKTsKKyAgICAg
ICAgTGF5b3V0UmVjdCBjc3NDbGlwUmVjdCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLmNsaXBS
ZWN0KG9mZnNldEZyb21Sb290LCBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbik7CiAgICAgICAgIGNs
aXBFeGNlZWRzQm91bmRzID0gIWNsaXBSZWN0LmNvbnRhaW5zKGNzc0NsaXBSZWN0KTsKICAgICB9
CiAKQEAgLTU0NzcsMTQgKzU0NzYsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVwYWludEJsb2Nr
U2VsZWN0aW9uR2FwcygpCiAgICAgTGF5b3V0UmVjdCByZWN0ID0gbV9ibG9ja1NlbGVjdGlvbkdh
cHNCb3VuZHM7CiAgICAgcmVjdC5tb3ZlKC1zY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7CiAgICAg
aWYgKHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIXVzZXNDb21wb3NpdGVkU2Nyb2xs
aW5nKCkpCi0gICAgICAgIHJlY3QuaW50ZXJzZWN0KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLm92
ZXJmbG93Q2xpcFJlY3QoTGF5b3V0UG9pbnQoKSwgbnVsbHB0cikpOyAvLyBGSVhNRTogUmVnaW9u
cyBub3QgYWNjb3VudGVkIGZvci4KKyAgICAgICAgcmVjdC5pbnRlcnNlY3QodG9SZW5kZXJCb3go
cmVuZGVyZXIoKSkub3ZlcmZsb3dDbGlwUmVjdChMYXlvdXRQb2ludCgpLCAwKSk7IC8vIEZJWE1F
OiBSZWdpb25zIG5vdCBhY2NvdW50ZWQgZm9yLgogICAgIGlmIChyZW5kZXJlcigpLmhhc0NsaXAo
KSkKLSAgICAgICAgcmVjdC5pbnRlcnNlY3QodG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuY2xpcFJl
Y3QoTGF5b3V0UG9pbnQoKSwgbnVsbHB0cikpOyAvLyBGSVhNRTogUmVnaW9ucyBub3QgYWNjb3Vu
dGVkIGZvci4KKyAgICAgICAgcmVjdC5pbnRlcnNlY3QodG9SZW5kZXJCb3gocmVuZGVyZXIoKSku
Y2xpcFJlY3QoTGF5b3V0UG9pbnQoKSwgMCkpOyAvLyBGSVhNRTogUmVnaW9ucyBub3QgYWNjb3Vu
dGVkIGZvci4KICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZW5kZXJlcigpLnJl
cGFpbnRSZWN0YW5nbGUocmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNE
YW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0
JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRQ
b2ludCogb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dFJlY3QqIGNhY2hlZEJvdW5kaW5nQm94
KSBjb25zdAorYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9v
dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IExheW91dFJlY3QqIGNhY2hlZEJvdW5kaW5n
Qm94KSBjb25zdAogewogICAgIC8vIEFsd2F5cyBleGFtaW5lIHRoZSBjYW52YXMgYW5kIHRoZSBy
b290LgogICAgIC8vIEZJWE1FOiBDb3VsZCBlbGltaW5hdGUgdGhlIGlzUm9vdCgpIGNoZWNrIGlm
IHdlIGZpeCBiYWNrZ3JvdW5kIHBhaW50aW5nIHNvIHRoYXQgdGhlIFJlbmRlclZpZXcKQEAgLTU1
MDEsMTQgKzU1MDAsMTMgQEAgYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW8KICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZs
b3dGcmFnbWVudCA9IGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogICAgIC8vIFdo
ZW4gdXNpbmcgcmVnaW9ucywgc29tZSBib3hlcyBtaWdodCBoYXZlIHRoZWlyIGZyYW1lIHJlY3Qg
cmVsYXRpdmUgdG8gdGhlIGZsb3cgdGhyZWFkLCB3aGljaCBjb3VsZAogICAgIC8vIGNhdXNlIHRo
ZSBwYWludCByZWplY3Rpb24gYWxnb3JpdGhtIHRvIHByZXZlbnQgdGhlbSBmcm9tIHBhaW50aW5n
IHdoZW4gdXNpbmcgZGlmZmVyZW50IHdpZHRoIHJlZ2lvbnMuCiAgICAgLy8gZS5nLiBhbiBhYnNv
bHV0ZWx5IHBvc2l0aW9uZWQgYm94IHdpdGggYm90dG9tOjBweCBhbmQgcmlnaHQ6MHB4IHdvdWxk
IGhhdmUgaXQncyBmcmFtZVJlY3QueCByZWxhdGl2ZQogICAgIC8vIHRvIHRoZSBmbG93IHRocmVh
ZCwgbm90IHRoZSBsYXN0IHJlZ2lvbiAoaW4gd2hpY2ggaXQgd2lsbCBlbmQgdXAgYmVjYXVzZSBv
ZiBib3R0b206MHB4KQotICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudCAmJiByZW5kZXJlcigpLmZs
b3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkgeworICAgIGlmIChyZWdpb24gJiYgcmVuZGVyZXIo
KS5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgTGF5b3V0UmVjdCBiID0g
bGF5ZXJCb3VuZHM7Ci0gICAgICAgIGIubW92ZUJ5KG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxP
dmVyZmxvd1JlY3RGb3JCb3godG9SZW5kZXJCb3hNb2RlbE9iamVjdCgmcmVuZGVyZXIoKSkpLmxv
Y2F0aW9uKCkpOworICAgICAgICBiLm1vdmVCeShyZWdpb24tPnZpc3VhbE92ZXJmbG93UmVjdEZv
ckJveCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KCZyZW5kZXJlcigpKSkubG9jYXRpb24oKSk7CiAg
ICAgICAgIGIuaW5mbGF0ZShyZW5kZXJlcigpLnZpZXcoKS5tYXhpbWFsT3V0bGluZVNpemUoKSk7
CiAgICAgICAgIGlmIChiLmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU2NzIsNyArNTY3MCw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmNh
bGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjCiAK
ICAgICBpZiAoUmVuZGVyTGF5ZXIqIHJlZmxlY3Rpb24gPSByZWZsZWN0aW9uTGF5ZXIoKSkgewog
ICAgICAgICBpZiAoIXJlZmxlY3Rpb24tPmlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgICAgICBM
YXlvdXRSZWN0IGNoaWxkVW5pb25Cb3VuZHMgPSByZWZsZWN0aW9uLT5jYWxjdWxhdGVMYXllckJv
dW5kcyh0aGlzLCBudWxscHRyLCBkZXNjZW5kYW50RmxhZ3MpOworICAgICAgICAgICAgTGF5b3V0
UmVjdCBjaGlsZFVuaW9uQm91bmRzID0gcmVmbGVjdGlvbi0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHMo
dGhpcywgMCwgZGVzY2VuZGFudEZsYWdzKTsKICAgICAgICAgICAgIHVuaW9uQm91bmRzLnVuaXRl
KGNoaWxkVW5pb25Cb3VuZHMpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTY4OCw3ICs1Njg2LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVu
ZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBu
ZWdaT3JkZXJMaXN0LT5hdChpKTsKICAgICAgICAgICAgIGlmIChmbGFncyAmIEluY2x1ZGVDb21w
b3NpdGVkRGVzY2VuZGFudHMgfHwgIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSkgewotICAgICAg
ICAgICAgICAgIExheW91dFJlY3QgY2hpbGRVbmlvbkJvdW5kcyA9IGN1ckxheWVyLT5jYWxjdWxh
dGVMYXllckJvdW5kcyh0aGlzLCBudWxscHRyLCBkZXNjZW5kYW50RmxhZ3MpOworICAgICAgICAg
ICAgICAgIExheW91dFJlY3QgY2hpbGRVbmlvbkJvdW5kcyA9IGN1ckxheWVyLT5jYWxjdWxhdGVM
YXllckJvdW5kcyh0aGlzLCAwLCBkZXNjZW5kYW50RmxhZ3MpOwogICAgICAgICAgICAgICAgIHVu
aW9uQm91bmRzLnVuaXRlKGNoaWxkVW5pb25Cb3VuZHMpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC01NzAwLDcgKzU2OTgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxh
dGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgYwogICAgICAg
ICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gcG9zWk9yZGVyTGlzdC0+YXQoaSk7CiAgICAg
ICAgICAgICAvLyBUaGUgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGlzIGlnbm9yZWQgd2hlbiB3ZSBj
YWxjdWxhdGUgdGhlIGJvdW5kcyBvZiB0aGUgUmVuZGVyVmlldy4KICAgICAgICAgICAgIGlmICgo
ZmxhZ3MgJiBJbmNsdWRlQ29tcG9zaXRlZERlc2NlbmRhbnRzIHx8ICFjdXJMYXllci0+aXNDb21w
b3NpdGVkKCkpICYmICFjdXJMYXllci0+aXNGbG93VGhyZWFkQ29sbGVjdGluZ0dyYXBoaWNzTGF5
ZXJzVW5kZXJSZWdpb25zKCkpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGNoaWxkVW5p
b25Cb3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgbnVsbHB0ciwg
ZGVzY2VuZGFudEZsYWdzKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGNoaWxkVW5pb25C
b3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgMCwgZGVzY2VuZGFu
dEZsYWdzKTsKICAgICAgICAgICAgICAgICB1bmlvbkJvdW5kcy51bml0ZShjaGlsZFVuaW9uQm91
bmRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTcxNCw3ICs1NzEyLDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5
ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gd2F5IHdl
IGNvdWxkIGhpdCBhIFJlbmRlck5hbWVkRmxvd1RocmVhZCBoZXJlLgogICAgICAgICAgICAgQVNT
RVJUKCFjdXJMYXllci0+aXNGbG93VGhyZWFkQ29sbGVjdGluZ0dyYXBoaWNzTGF5ZXJzVW5kZXJS
ZWdpb25zKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzICYgSW5jbHVkZUNvbXBvc2l0ZWREZXNj
ZW5kYW50cyB8fCAhY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAg
TGF5b3V0UmVjdCBjdXJBYnNCb3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHMo
dGhpcywgbnVsbHB0ciwgZGVzY2VuZGFudEZsYWdzKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRS
ZWN0IGN1ckFic0JvdW5kcyA9IGN1ckxheWVyLT5jYWxjdWxhdGVMYXllckJvdW5kcyh0aGlzLCAw
LCBkZXNjZW5kYW50RmxhZ3MpOwogICAgICAgICAgICAgICAgIHVuaW9uQm91bmRzLnVuaXRlKGN1
ckFic0JvdW5kcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTY2ODgsMTEgKzY2ODYs
OCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbgogICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICBj
b250ZXh0LT50cmFuc2xhdGUoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpKTsKIAotICAgIEN1cnJlbnRSZW5kZXJGbG93VGhyZWFkTWFpbnRhaW5lciBmbG93
VGhyZWFkTWFpbnRhaW5lcih0b1JlbmRlckZsb3dUaHJlYWQoJnJlbmRlcmVyKCkpKTsKLSAgICBD
dXJyZW50UmVuZGVyUmVnaW9uTWFpbnRhaW5lciByZWdpb25NYWludGFpbmVyKCpyZWdpb24pOwot
CiAgICAgcmVnaW9uLT5zZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUoKTsKLSAgICBwYWludChj
b250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgbnVsbHB0ciwgcGFpbnRGbGFn
cyB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOworICAgIHBhaW50KGNvbnRleHQsIHBh
aW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCAwLCByZWdpb24sIHBhaW50RmxhZ3MgfCBQYWlu
dExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICByZWdpb24tPnJlc3RvcmVSZWdpb25PYmpl
Y3RzT3JpZ2luYWxTdHlsZSgpOwogCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtNjc4Nywx
NiArNjc4MiwxMyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RGbG93VGhyZWFk
SWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbQogICAgICAgICBIaXRUZXN0UmVx
dWVzdCBuZXdSZXF1ZXN0KHJlcXVlc3QudHlwZSgpIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNs
aXBwaW5nIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAKICAgICAg
ICAgLy8gTWFrZSBhIG5ldyB0ZW1wb3JhcnkgSGl0VGVzdExvY2F0aW9uIGluIHRoZSBuZXcgcmVn
aW9uLgotICAgICAgICBIaXRUZXN0TG9jYXRpb24gbmV3SGl0VGVzdExvY2F0aW9uKGhpdFRlc3RM
b2NhdGlvbiwgaGl0VGVzdE9mZnNldCk7CisgICAgICAgIEhpdFRlc3RMb2NhdGlvbiBuZXdIaXRU
ZXN0TG9jYXRpb24oaGl0VGVzdExvY2F0aW9uLCBoaXRUZXN0T2Zmc2V0LCByZWdpb24pOwogCiAg
ICAgICAgIC8vIEV4cGFuZCB0aGUgaGl0LXRlc3QgcmVjdCB0byB0aGUgZmxvdyB0aHJlYWQncyBj
b29yZGluYXRlIHN5c3RlbS4KICAgICAgICAgTGF5b3V0UmVjdCBoaXRUZXN0UmVjdEluRmxvd1Ro
cmVhZCA9IGhpdFRlc3RSZWN0OwogICAgICAgICBoaXRUZXN0UmVjdEluRmxvd1RocmVhZC5tb3Zl
KGhpdFRlc3RPZmZzZXQud2lkdGgoKSwgaGl0VGVzdE9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAg
IGhpdFRlc3RSZWN0SW5GbG93VGhyZWFkLmV4cGFuZChMYXlvdXRTaXplKGZhYnMoKGRvdWJsZSlo
aXRUZXN0T2Zmc2V0LndpZHRoKCkpLCBmYWJzKChkb3VibGUpaGl0VGVzdE9mZnNldC5oZWlnaHQo
KSkpKTsKIAotICAgICAgICBDdXJyZW50UmVuZGVyRmxvd1RocmVhZE1haW50YWluZXIgZmxvd1Ro
cmVhZE1haW50YWluZXIoZmxvd1RocmVhZCk7Ci0gICAgICAgIEN1cnJlbnRSZW5kZXJSZWdpb25N
YWludGFpbmVyIHJlZ2lvbk1haW50YWluZXIoKnJlZ2lvbik7Ci0KICAgICAgICAgSGl0VGVzdFJl
c3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRUZXN0TG9jYXRpb24oKSk7CiAgICAgICAgIFJlbmRl
ckxheWVyKiBoaXRMYXllciA9IGZsb3dUaHJlYWQtPmxheWVyKCktPmhpdFRlc3RMYXllcihmbG93
VGhyZWFkLT5sYXllcigpLCAwLCBuZXdSZXF1ZXN0LCB0ZW1wUmVzdWx0LCBoaXRUZXN0UmVjdElu
Rmxvd1RocmVhZCwgbmV3SGl0VGVzdExvY2F0aW9uLCBmYWxzZSwgdHJhbnNmb3JtU3RhdGUsIHpP
ZmZzZXRGb3JEZXNjZW5kYW50cyk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNSZWN0QmFzZWRUZXN0
KCkpCkBAIC02ODEzLDExICs2ODA1LDYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRU
ZXN0Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ20KICAgICBy
ZXR1cm4gcmVzdWx0TGF5ZXI7CiB9CiAKLVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBSZW5kZXJM
YXllcjo6Y3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gcmVuZGVyZXIoKS5jdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAppbmRleCAzOWVhM2JjNWZiNmVjNDYxMDRmMDhjZDY5NmRmOTI1MmIw
ZjY2ZDMyLi5mZWJiN2UyNGY5YTllYWIxYmIxZGY5NTAwMDg2MjI5NTVhYzQ5MDAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzUxLDcgKzM1MSw3IEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJMYXllciogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7
IH0KICAgICBSZW5kZXJMYXllciogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9
CiAKLSAgICB2b2lkIGFkZENoaWxkKFJlbmRlckxheWVyKiBuZXdDaGlsZCwgUmVuZGVyTGF5ZXIq
IGJlZm9yZUNoaWxkID0gbnVsbHB0cik7CisgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJMYXllciog
bmV3Q2hpbGQsIFJlbmRlckxheWVyKiBiZWZvcmVDaGlsZCA9IDApOwogICAgIFJlbmRlckxheWVy
KiByZW1vdmVDaGlsZChSZW5kZXJMYXllciopOwogCiAgICAgdm9pZCByZW1vdmVPbmx5VGhpc0xh
eWVyKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBTY3Jv
bGxpbmcgbWV0aG9kcyBmb3IgbGF5ZXJzIHRoYXQgY2FuIHNjcm9sbCB0aGVpciBvdmVyZmxvdy4K
LSAgICB2b2lkIHNjcm9sbEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50U2l6ZSYsIFNjcm9sbE9mZnNl
dENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0VW5jbGFtcGVkLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9s
bGVkQXJlYSA9IG51bGxwdHIpOworICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJ
bnRTaXplJiwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQsIFNj
cm9sbGFibGVBcmVhKiogc2Nyb2xsZWRBcmVhID0gMCk7CiAgICAgdm9pZCBzY3JvbGxUb09mZnNl
dChjb25zdCBJbnRTaXplJiwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNs
YW1wZWQpOwogICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4LCBTY3JvbGxPZmZzZXRDbGFt
cGluZyBjbGFtcCA9IFNjcm9sbE9mZnNldFVuY2xhbXBlZCkgeyBzY3JvbGxUb09mZnNldChJbnRT
aXplKHgsIHNjcm9sbFlPZmZzZXQoKSksIGNsYW1wKTsgfQogICAgIHZvaWQgc2Nyb2xsVG9ZT2Zm
c2V0KGludCB5LCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCA9IFNjcm9sbE9mZnNldFVuY2xh
bXBlZCkgeyBzY3JvbGxUb09mZnNldChJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSwgeSksIGNsYW1w
KTsgfQpAQCAtNjY2LDIxICs2NjYsMjQgQEAgcHVibGljOgogICAgIC8vIHBhaW50cyB0aGUgbGF5
ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVjdCBmcm9tIGJhY2sgdG8KICAgICAvLyBm
cm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZlbnRzIGJ5IHdhbGtp
bmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZyb20gZnJvbnQgdG8g
YmFjay4KLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3Qm
IGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yTm9ybWFsLCBSZW5kZXJP
YmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBQYWludExheWVyRmxhZ3MgPSAwKTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QsIFBhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yTm9ybWFsLCBSZW5kZXJPYmplY3Qq
IHN1YnRyZWVQYWludFJvb3QgPSAwLAorICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
PSAwLCBQYWludExheWVyRmxhZ3MgPSAwKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgSGl0VGVzdFJlc3VsdCYpOwotICAg
IHZvaWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQ
YWludFJvb3QgPSBudWxscHRyKTsKKyAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlv
ciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gMCk7CiAKICAgICB2b2lkIHBhaW50
TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdyYXBoaWNzQ29udGV4dCosIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KiwgTGF5b3V0UmVjdCwgTGF5b3V0UG9pbnQsIFBhaW50QmVoYXZpb3IgPSBQ
YWludEJlaGF2aW9yTm9ybWFsLCBQYWludExheWVyRmxhZ3MgPSAwKTsKIAogICAgIHN0cnVjdCBD
bGlwUmVjdHNDb250ZXh0IHsKLSAgICAgICAgQ2xpcFJlY3RzQ29udGV4dChjb25zdCBSZW5kZXJM
YXllciogaW5Sb290TGF5ZXIsIENsaXBSZWN0c1R5cGUgaW5DbGlwUmVjdHNUeXBlLCBPdmVybGF5
U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0g
SWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIFNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXAgaW5S
ZXNwZWN0T3ZlcmZsb3dDbGlwID0gUmVzcGVjdE92ZXJmbG93Q2xpcCkKKyAgICAgICAgQ2xpcFJl
Y3RzQ29udGV4dChjb25zdCBSZW5kZXJMYXllciogaW5Sb290TGF5ZXIsIFJlbmRlclJlZ2lvbiog
aW5SZWdpb24sIENsaXBSZWN0c1R5cGUgaW5DbGlwUmVjdHNUeXBlLCBPdmVybGF5U2Nyb2xsYmFy
U2l6ZVJlbGV2YW5jeSBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3Zl
cmxheVNjcm9sbGJhclNpemUsIFNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXAgaW5SZXNwZWN0T3Zl
cmZsb3dDbGlwID0gUmVzcGVjdE92ZXJmbG93Q2xpcCkKICAgICAgICAgICAgIDogcm9vdExheWVy
KGluUm9vdExheWVyKQorICAgICAgICAgICAgLCByZWdpb24oaW5SZWdpb24pCiAgICAgICAgICAg
ICAsIGNsaXBSZWN0c1R5cGUoaW5DbGlwUmVjdHNUeXBlKQogICAgICAgICAgICAgLCBvdmVybGF5
U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeShpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5KQog
ICAgICAgICAgICAgLCByZXNwZWN0T3ZlcmZsb3dDbGlwKGluUmVzcGVjdE92ZXJmbG93Q2xpcCkK
ICAgICAgICAgeyB9CiAgICAgICAgIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXI7CisgICAg
ICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uOwogICAgICAgICBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0
c1R5cGU7CiAgICAgICAgIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IG92ZXJsYXlTY3Jv
bGxiYXJTaXplUmVsZXZhbmN5OwogICAgICAgICBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwIHJl
c3BlY3RPdmVyZmxvd0NsaXA7CkBAIC02OTEsNyArNjk0LDcgQEAgcHVibGljOgogICAgIC8vIGZv
ciBwYWludGluZy9ldmVudCBoYW5kbGluZy4KICAgICAvLyBQYXNzIG9mZnNldEZyb21Sb290IGlm
IGtub3duLgogICAgIHZvaWQgY2FsY3VsYXRlUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYs
IGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBMYXlvdXRSZWN0JiBsYXllckJvdW5k
cywKLSAgICAgICAgQ2xpcFJlY3QmIGJhY2tncm91bmRSZWN0LCBDbGlwUmVjdCYgZm9yZWdyb3Vu
ZFJlY3QsIENsaXBSZWN0JiBvdXRsaW5lUmVjdCwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZy
b21Sb290ID0gbnVsbHB0cikgY29uc3Q7CisgICAgICAgIENsaXBSZWN0JiBiYWNrZ3JvdW5kUmVj
dCwgQ2xpcFJlY3QmIGZvcmVncm91bmRSZWN0LCBDbGlwUmVjdCYgb3V0bGluZVJlY3QsIGNvbnN0
IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDApIGNvbnN0OwogCiAgICAgLy8gQ29tcHV0
ZSBhbmQgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSBnaXZlbiBsYXllciBhcyB0
aGUgcm9vdAogICAgIHZvaWQgdXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQm
KTsKQEAgLTcxMCw3ICs3MTMsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UmVjdCBsb2NhbENsaXBS
ZWN0KGJvb2wmIGNsaXBFeGNlZWRzQm91bmRzKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgYmFja2dy
b3VuZCBjbGlwIHJlY3Qgb2YgdGhlIGxheWVyIGluIHRoZSBsb2NhbCBjb29yZGluYXRlIHNwYWNl
LgogCiAgICAgLy8gUGFzcyBvZmZzZXRGcm9tUm9vdCBpZiBrbm93bi4KLSAgICBib29sIGludGVy
c2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBM
YXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QgPSBudWxscHRyLCBjb25zdCBMYXlvdXRSZWN0KiBj
YWNoZWRCb3VuZGluZ0JveCA9IG51bGxwdHIpIGNvbnN0OworICAgIGJvb2wgaW50ZXJzZWN0c0Rh
bWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3Qm
IGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFBv
aW50KiBvZmZzZXRGcm9tUm9vdCA9IDAsIFJlbmRlclJlZ2lvbiogPSAwLCBjb25zdCBMYXlvdXRS
ZWN0KiBjYWNoZWRCb3VuZGluZ0JveCA9IDApIGNvbnN0OwogCiAgICAgZW51bSBDYWxjdWxhdGVM
YXllckJvdW5kc0ZsYWcgewogICAgICAgICBJbmNsdWRlU2VsZlRyYW5zZm9ybSA9IDEgPDwgMCwK
QEAgLTcyNSw3ICs3MjgsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDYWxjdWxh
dGVMYXllckJvdW5kc0ZsYWdzOwogCiAgICAgLy8gQm91bmRpbmcgYm94IHJlbGF0aXZlIHRvIHNv
bWUgYW5jZXN0b3IgbGF5ZXIuIFBhc3Mgb2Zmc2V0RnJvbVJvb3QgaWYga25vd24uCi0gICAgTGF5
b3V0UmVjdCBib3VuZGluZ0JveChjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBDYWxjdWxh
dGVMYXllckJvdW5kc0ZsYWdzID0gMCwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290
ID0gbnVsbHB0cikgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveChjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzID0gMCwgY29uc3Qg
TGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290ID0gMCkgY29uc3Q7CiAgICAgLy8gQm91bmRpbmcg
Ym94IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGlzIGxheWVyLgogICAgIExheW91dFJlY3QgbG9j
YWxCb3VuZGluZ0JveChDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzID0gMCkgY29uc3Q7CiAgICAg
Ly8gRGVwcmVjYXRlZDogUGl4ZWwgc25hcHBlZCBib3VuZGluZyBib3ggcmVsYXRpdmUgdG8gdGhl
IHJvb3QuCkBAIC03NDUsNyArNzQ4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDYW4g
cGFzcyBvZmZzZXRGcm9tUm9vdCBpZiBrbm93bi4KLSAgICBMYXlvdXRSZWN0IGNhbGN1bGF0ZUxh
eWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zdCBMYXlvdXRQ
b2ludCogb2Zmc2V0RnJvbVJvb3QgPSBudWxscHRyLCBDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdz
ID0gRGVmYXVsdENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MpIGNvbnN0OworICAgIExheW91dFJl
Y3QgY2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIs
IGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDAsIENhbGN1bGF0ZUxheWVyQm91
bmRzRmxhZ3MgPSBEZWZhdWx0Q2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncykgY29uc3Q7CiAgICAg
CiAgICAgLy8gV0FSTklORzogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgb2Zmc2V0IGZvciB0aGUg
cGFyZW50IGFzIHRoaXMgaXMgd2hhdCB1cGRhdGVMYXllclBvc2l0aW9ucyBleHBlY3RzLgogICAg
IExheW91dFBvaW50IGNvbXB1dGVPZmZzZXRGcm9tUm9vdChib29sJiBoYXNMYXllck9mZnNldCkg
Y29uc3Q7CkBAIC05MDMsNyArOTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZURlc2Nl
bmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOwogICAgIHZvaWQgdXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKGNvbnN0IEhhc2hN
YXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+JiwgaW50JiBtaW5JbmRleCwgaW50JiBtYXhJbmRl
eCwgaW50JiBjb3VudCwgYm9vbCBmaXJzdEl0ZXJhdGlvbik7CiAKLSAgICB2b2lkIGNvbXB1dGVS
ZXBhaW50UmVjdHMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgY29uc3QgUmVuZGVyR2VvbWV0cnlNYXAqID0gbnVsbHB0cik7CisgICAgdm9pZCBjb21wdXRl
UmVwYWludFJlY3RzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwKiA9IDApOwogICAgIHZvaWQgY29tcHV0ZVJlcGFp
bnRSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CiAgICAgdm9pZCBjbGVhclJlcGFpbnRSZWN0
cygpOwogCkBAIC05MjgsNyArOTMxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIHBvc2l0aW9uIGNoYW5nZWQuCiAgICAgYm9vbCB1cGRhdGVMYXllclBvc2l0aW9uKCk7
CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zKFJlbmRlckdlb21ldHJ5TWFwKiA9IG51
bGxwdHIsIFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgPSBkZWZhdWx0RmxhZ3MpOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnMoUmVuZGVyR2VvbWV0cnlNYXAqID0gMCwgVXBkYXRlTGF5
ZXJQb3NpdGlvbnNGbGFncyA9IGRlZmF1bHRGbGFncyk7CiAKICAgICBlbnVtIFVwZGF0ZUxheWVy
UG9zaXRpb25zQWZ0ZXJTY3JvbGxGbGFnIHsKICAgICAgICAgTm9GbGFnID0gMCwKQEAgLTk2MCwx
MSArOTYzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVy
TGlzdHNJZk5lZWRlZCgpOwogCiAgICAgc3RydWN0IExheWVyUGFpbnRpbmdJbmZvIHsKLSAgICAg
ICAgTGF5ZXJQYWludGluZ0luZm8oUmVuZGVyTGF5ZXIqIGluUm9vdExheWVyLCBjb25zdCBMYXlv
dXRSZWN0JiBpbkRpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBpblBhaW50QmVoYXZpb3IsIGNvbnN0
IExheW91dFNpemUmIGluU3ViUGl4ZWxBY2N1bXVsYXRpb24sIFJlbmRlck9iamVjdCogaW5TdWJ0
cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBpbk92ZXJsYXBU
ZXN0UmVxdWVzdHMgPSBudWxscHRyKQorICAgICAgICBMYXllclBhaW50aW5nSW5mbyhSZW5kZXJM
YXllciogaW5Sb290TGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIGluRGlydHlSZWN0LCBQYWludEJl
aGF2aW9yIGluUGFpbnRCZWhhdmlvciwgY29uc3QgTGF5b3V0U2l6ZSYgaW5TdWJQaXhlbEFjY3Vt
dWxhdGlvbiwgUmVuZGVyT2JqZWN0KiBpblN1YnRyZWVQYWludFJvb3QgPSAwLCBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSAwLCBPdmVybGFwVGVzdFJlcXVlc3RN
YXAqIGluT3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDApCiAgICAgICAgICAgICA6IHJvb3RMYXllcihp
blJvb3RMYXllcikKICAgICAgICAgICAgICwgc3VidHJlZVBhaW50Um9vdChpblN1YnRyZWVQYWlu
dFJvb3QpCiAgICAgICAgICAgICAsIHBhaW50RGlydHlSZWN0KGluRGlydHlSZWN0KQogICAgICAg
ICAgICAgLCBzdWJQaXhlbEFjY3VtdWxhdGlvbihpblN1YlBpeGVsQWNjdW11bGF0aW9uKQorICAg
ICAgICAgICAgLCByZW5kZXJOYW1lZEZsb3dGcmFnbWVudChuYW1lZEZsb3dGcmFnbWVudCkKICAg
ICAgICAgICAgICwgb3ZlcmxhcFRlc3RSZXF1ZXN0cyhpbk92ZXJsYXBUZXN0UmVxdWVzdHMpCiAg
ICAgICAgICAgICAsIHBhaW50QmVoYXZpb3IoaW5QYWludEJlaGF2aW9yKQogICAgICAgICAgICAg
LCBjbGlwVG9EaXJ0eVJlY3QodHJ1ZSkKQEAgLTk3Myw2ICs5NzcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3Q7IC8vIG9ubHkgcGFpbnQgZGVzY2Vu
ZGFudHMgb2YgdGhpcyBvYmplY3QKICAgICAgICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdDsg
Ly8gcmVsYXRpdmUgdG8gcm9vdExheWVyOwogICAgICAgICBMYXlvdXRTaXplIHN1YlBpeGVsQWNj
dW11bGF0aW9uOworICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ7IC8vIE1heSBiZSBudWxsLgogICAgICAgICBPdmVybGFwVGVzdFJlcXVlc3RN
YXAqIG92ZXJsYXBUZXN0UmVxdWVzdHM7IC8vIE1heSBiZSBudWxsLgogICAgICAgICBQYWludEJl
aGF2aW9yIHBhaW50QmVoYXZpb3I7CiAgICAgICAgIGJvb2wgY2xpcFRvRGlydHlSZWN0OwpAQCAt
OTkyLDkgKzk5Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3Mp
OwogICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwogCi0gICAg
dm9pZCBjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LAorICAgIHZvaWQgY29sbGVj
dEZyYWdtZW50cyhMYXllckZyYWdtZW50cyYsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIs
IFJlbmRlclJlZ2lvbiosIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwKICAgICAgICAgQ2xp
cFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xs
YmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLAotICAgICAgICBT
aG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwID0gUmVzcGVjdE92ZXJmbG93Q2xpcCwgY29uc3QgTGF5
b3V0UG9pbnQqIG9mZnNldEZyb21Sb290ID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0UmVjdCogbGF5
ZXJCb3VuZGluZ0JveCA9IG51bGxwdHIsIFNob3VsZEFwcGx5Um9vdE9mZnNldFRvRnJhZ21lbnRz
ID0gSWdub3JlUm9vdE9mZnNldEZvckZyYWdtZW50cyk7CisgICAgICAgIFNob3VsZFJlc3BlY3RP
dmVyZmxvd0NsaXAgPSBSZXNwZWN0T3ZlcmZsb3dDbGlwLCBjb25zdCBMYXlvdXRQb2ludCogb2Zm
c2V0RnJvbVJvb3QgPSAwLCBjb25zdCBMYXlvdXRSZWN0KiBsYXllckJvdW5kaW5nQm94ID0gMCwg
U2hvdWxkQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgPSBJZ25vcmVSb290T2Zmc2V0Rm9yRnJh
Z21lbnRzKTsKICAgICB2b2lkIHVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyhMYXllckZy
YWdtZW50cyYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBib29s
IHNob3VsZFBhaW50Q29udGVudCwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290KTsK
ICAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYsIEdyYXBoaWNzQ29udGV4dCosIEdyYXBoaWNzQ29udGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJD
b250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5
UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBh
aW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwpAQCAt
MTAwOCwxNSArMTAxMywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRUcmFuc2Zvcm1lZExh
eWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYsIFBhaW50TGF5ZXJGbGFncyk7CiAKICAgICBSZW5kZXJMYXllciogaGl0VGVzdExheWVyKFJl
bmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwgY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwKLSAgICAgICAg
Y29uc3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGJv
b2wgYXBwbGllZFRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0
YXRlKiA9IG51bGxwdHIsIGRvdWJsZSogek9mZnNldCA9IG51bGxwdHIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYsIGJvb2wgYXBwbGllZFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNmb3JtU3Rh
dGUgPSAwLCBkb3VibGUqIHpPZmZzZXQgPSAwKTsKICAgICBSZW5kZXJMYXllciogaGl0VGVzdExh
eWVyQnlBcHBseWluZ1RyYW5zZm9ybShSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXll
ciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
Ci0gICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mLCBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqID0gbnVsbHB0ciwgZG91Ymxl
KiB6T2Zmc2V0ID0gbnVsbHB0ciwKKyAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJl
Y3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0
ZSogPSAwLCBkb3VibGUqIHpPZmZzZXQgPSAwLAogICAgICAgICBjb25zdCBMYXlvdXRQb2ludCYg
dHJhbnNsYXRpb25PZmZzZXQgPSBMYXlvdXRQb2ludCgpKTsKICAgICBSZW5kZXJMYXllciogaGl0
VGVzdExpc3QoVmVjdG9yPFJlbmRlckxheWVyKj4qLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LAotICAg
ICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiwKLSAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiwgZG91YmxlKiB6T2Zm
c2V0Rm9yRGVzY2VuZGFudHMsIGRvdWJsZSogek9mZnNldCwKLSAgICAgICAgY29uc3QgSGl0VGVz
dGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLCBib29sIGRlcHRo
U29ydERlc2NlbmRhbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5
b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNm
b3JtU3RhdGUsIGRvdWJsZSogek9mZnNldEZvckRlc2NlbmRhbnRzLCBkb3VibGUqIHpPZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1T
dGF0ZSogdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZSwgYm9vbCBkZXB0aFNvcnREZXNjZW5kYW50
cyk7CiAKICAgICBSZW5kZXJMYXllciogaGl0VGVzdEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKFJl
bmRlckxheWVyKiByb290TGF5ZXIsCiAgICAgICAgIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsCkBAIC0xMDI3LDE1ICsxMDMyLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwogCiAgICAgUGFzc1JlZlB0cjxIaXRUZXN0aW5nVHJh
bnNmb3JtU3RhdGU+IGNyZWF0ZUxvY2FsVHJhbnNmb3JtU3RhdGUoUmVuZGVyTGF5ZXIqIHJvb3RM
YXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxheWVyLAotICAgICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwKLSAgICAgICAgY29uc3Qg
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiBjb250YWluZXJUcmFuc2Zvcm1TdGF0ZSwKLSAgICAg
ICAgY29uc3QgTGF5b3V0UG9pbnQmIHRyYW5zbGF0aW9uT2Zmc2V0ID0gTGF5b3V0UG9pbnQoKSkg
Y29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgaGl0
VGVzdFJlY3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiBjb250YWluZXJUcmFuc2Zvcm1T
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRQb2ludCYgdHJh
bnNsYXRpb25PZmZzZXQgPSBMYXlvdXRQb2ludCgpKSBjb25zdDsKICAgICAKICAgICBib29sIGhp
dFRlc3RDb250ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgSGl0VGVz
dEZpbHRlcikgY29uc3Q7CiAgICAgYm9vbCBoaXRUZXN0Q29udGVudHNGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0RmlsdGVyLCBib29sJiBpbnNpZGVDbGlw
UmVjdCkgY29uc3Q7CiAgICAgYm9vbCBoaXRUZXN0UmVzaXplckluRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJikgY29uc3Q7CiAgICAgUmVuZGVy
TGF5ZXIqIGhpdFRlc3RUcmFuc2Zvcm1lZExheWVySW5GcmFnbWVudHMoUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxheWVyLCBjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLAotICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVj
dCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
KiA9IG51bGxwdHIsIGRvdWJsZSogek9mZnNldCA9IG51bGxwdHIpOworICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgSGl0
VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiA9IDAsIGRvdWJsZSogek9mZnNldCA9IDApOwogCiAgICAg
Ym9vbCBsaXN0QmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IFZlY3RvcjxS
ZW5kZXJMYXllcio+KiwgY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogCkBAIC0xMDk3LDcgKzEx
MDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2Nl
bmRhbnRTdGF0dXMoKTsKICAgICB2b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2Vu
ZGFudCgpOwogCi0gICAgdm9pZCB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFzaFNl
dDxjb25zdCBSZW5kZXJPYmplY3QqPiogb3V0T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdCbG9j
a3MgPSBudWxscHRyKTsKKyAgICB2b2lkIHVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyhI
YXNoU2V0PGNvbnN0IFJlbmRlck9iamVjdCo+KiBvdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmlu
Z0Jsb2NrcyA9IDApOwogICAgIGJvb2wgY2hlY2tJZkRlc2NlbmRhbnRDbGlwcGluZ0NvbnRleHRO
ZWVkc1VwZGF0ZShib29sIGlzQ2xpcHBpbmcpOwogCiAgICAgYm9vbCBoYXMzRFRyYW5zZm9ybWVk
RGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnQ7
IH0KQEAgLTExODUsOSArMTE5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IEhpdFRlc3Rp
bmdUcmFuc2Zvcm1TdGF0ZSosIGRvdWJsZSogek9mZnNldEZvckRlc2NlbmRhbnRzLAogICAgICAg
ICBkb3VibGUqIHpPZmZzZXQsIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdW5mbGF0
dGVuZWRUcmFuc2Zvcm1TdGF0ZSwgYm9vbCBkZXB0aFNvcnREZXNjZW5kYW50cyk7CiAgICAgdm9p
ZCBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXll
ckZsYWdzKTsKLSAgICBib29sIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIo
Q2xpcFJlY3RzJikgY29uc3Q7Ci0KLSAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogY3VycmVu
dFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7CisgICAgdm9pZCBtYXBMYXllckNsaXBS
ZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiwgQ2xpcFJl
Y3RzJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gVGhlIGJpdGZpZWxkcyBhcmUgdXAgaGVy
ZSBzbyB0aGV5IHdpbGwgZmFsbCBpbnRvIHRoZSBwYWRkaW5nIGZyb20gU2Nyb2xsYWJsZUFyZWEg
b24gNjQtYml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCA4YjI3ZDEyNjk4YWEzOTI0NTJlMjE0MDIwOGI0NzBlMDZlMGMwNTUyLi4x
ZjBhNTY1MTBjNGZjMjJhYTcyNzQyMGE5YmRkODY5MWE4ZGYxMDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNDYwLDcgKzQ2MCw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKCkKICAg
ICAgICAgICAgIGNsaXBwaW5nQm91bmRzID0gdmlldy51bnNjYWxlZERvY3VtZW50UmVjdCgpOwog
CiAgICAgICAgIGlmICgmbV9vd25pbmdMYXllciAhPSByb290TGF5ZXIpCi0gICAgICAgICAgICBj
bGlwcGluZ0JvdW5kcy5pbnRlcnNlY3QobV9vd25pbmdMYXllci5iYWNrZ3JvdW5kQ2xpcFJlY3Qo
UmVuZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQocm9vdExheWVyLCBBYnNvbHV0ZUNsaXBSZWN0
cykpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgorICAgICAg
ICAgICAgY2xpcHBpbmdCb3VuZHMuaW50ZXJzZWN0KG1fb3duaW5nTGF5ZXIuYmFja2dyb3VuZENs
aXBSZWN0KFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0KHJvb3RMYXllciwgMCwgQWJzb2x1
dGVDbGlwUmVjdHMpKS5yZWN0KCkpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9u
cy4KIAogICAgICAgICBMYXlvdXRQb2ludCBkZWx0YTsKICAgICAgICAgbV9vd25pbmdMYXllci5j
b252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIGRlbHRhLCBSZW5kZXJMYXllcjo6QWRqdXN0
Rm9yQ29sdW1ucyk7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIC8vIGxheWVyLiBOb3RlIHRo
YXQgd2UgY2FsbCBpdCB3aXRoIHRlbXBvcmFyeUNsaXBSZWN0cyA9IHRydWUgYmVjYXVzZSBub3Jt
YWxseSB3aGVuIGNvbXB1dGluZyBjbGlwIHJlY3RzCiAgICAgICAgIC8vIGZvciBhIGNvbXBvc2l0
aW5nIGxheWVyLCByb290TGF5ZXIgaXMgdGhlIGxheWVyIGl0c2VsZi4KICAgICAgICAgU2hvdWxk
UmVzcGVjdE92ZXJmbG93Q2xpcCBzaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwID0gY29tcEFuY2Vz
dG9yLT5pc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpID8gUmVzcGVjdE92ZXJmbG93Q2xpcCA6
IElnbm9yZU92ZXJmbG93Q2xpcDsKLSAgICAgICAgUmVuZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRl
eHQgY2xpcFJlY3RzQ29udGV4dChjb21wQW5jZXN0b3IsIFRlbXBvcmFyeUNsaXBSZWN0cywgSWdu
b3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXApOworICAg
ICAgICBSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KGNvbXBB
bmNlc3RvciwgMCwgVGVtcG9yYXJ5Q2xpcFJlY3RzLCBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6
ZSwgc2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCk7CiAgICAgICAgIExheW91dFJlY3QgcGFyZW50
Q2xpcFJlY3QgPSBtX293bmluZ0xheWVyLmJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVjdHNDb250
ZXh0KS5yZWN0KCk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgogICAgICAg
ICBBU1NFUlQocGFyZW50Q2xpcFJlY3QgIT0gTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCkpOwog
ICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChw
YXJlbnRDbGlwUmVjdC5sb2NhdGlvbigpIC0gZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IGJhOGE1MjRjOGJkZWViYjNjZWE1YWJlYzlmNDYyNTZhMzU1M2Q2ZDguLjE5M2U0
ODNmOGMwOWFjZGMxOGQyYzg2NjFiYTM0NDhmMzYyZmNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMDE5LDcgKzEw
MTksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFwKE92ZXJs
YXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxheWVyJgogICAgICAgICBib3VuZHNDb21wdXRlZCA9
IHRydWU7CiAgICAgfQogCi0gICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QobGF5ZXIuYmFja2dyb3VuZENsaXBSZWN0KFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0
KCZyb290UmVuZGVyTGF5ZXIoKSwgQWJzb2x1dGVDbGlwUmVjdHMpKS5yZWN0KCkpOyAvLyBGSVhN
RTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KKyAgICBJbnRSZWN0IGNsaXBSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChsYXllci5iYWNrZ3JvdW5kQ2xpcFJlY3QoUmVuZGVyTGF5ZXI6OkNs
aXBSZWN0c0NvbnRleHQoJnJvb3RSZW5kZXJMYXllcigpLCAwLCBBYnNvbHV0ZUNsaXBSZWN0cykp
LnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgogCiAgICAgLy8g
T24gaU9TLCBwYWdlU2NhbGVGYWN0b3IoKSBpcyBub3QgYXBwbGllZCBieSBSZW5kZXJWaWV3LCBz
byB3ZSBzaG91bGQgbm90IHNjYWxlIGhlcmUuCiAgICAgLy8gRklYTUU6IFNldCBTZXR0aW5nczo6
ZGVsZWdhdGVzUGFnZVNjYWxpbmcgdG8gdHJ1ZSBmb3IgaU9TLgpAQCAtMjMzNiw3ICsyMzM2LDcg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsaXBwZWRCeUFuY2VzdG9yKFJlbmRlckxh
eWVyJiBsYXllcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICByZXR1cm4gbGF5ZXIuYmFja2dyb3VuZENsaXBSZWN0KFJlbmRlckxheWVyOjpDbGlwUmVjdHND
b250ZXh0KGNvbXB1dGVDbGlwUm9vdCwgVGVtcG9yYXJ5Q2xpcFJlY3RzKSkucmVjdCgpICE9IExh
eW91dFJlY3Q6OmluZmluaXRlUmVjdCgpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVn
aW9ucy4KKyAgICByZXR1cm4gbGF5ZXIuYmFja2dyb3VuZENsaXBSZWN0KFJlbmRlckxheWVyOjpD
bGlwUmVjdHNDb250ZXh0KGNvbXB1dGVDbGlwUm9vdCwgMCwgVGVtcG9yYXJ5Q2xpcFJlY3RzKSku
cmVjdCgpICE9IExheW91dFJlY3Q6OmluZmluaXRlUmVjdCgpOyAvLyBGSVhNRTogSW5jb3JyZWN0
IGZvciBDU1MgcmVnaW9ucy4KIH0KIAogLy8gUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGxheWVy
IGlzIGEgc3RhY2tpbmcgY29udGV4dCBhbmQgaGFzIGNvbXBvc2l0aW5nIGNoaWxkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDJkNjM4ZjMwNWRjMmY3ZGMz
NTU3Mzk4ODIzMzY2MDE5ODZjNTM3NjcuLjhhM2ZhM2U5ZDQwNjk3NTE3MzBlZjY4Y2U5Y2M5OTIw
ZWMwNDhjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBA
IC01NCw4ICs1NCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgotI2luY2x1ZGUg
IlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgiIAorI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyUGFy
dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCkBAIC0yNDc0LDIyICsyNDczLDYgQEAgYm9v
bCBSZW5kZXJPYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KiBSZW5kZXJPYmplY3Q6OmN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCgpIGNvbnN0Ci17Ci0gICAgaWYgKGZsb3dUaHJlYWRTdGF0ZSgpID09IE5vdEluc2lkZUZsb3dU
aHJlYWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1RocmVhZCA9IHZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmN1cnJlbnRSZW5kZXJG
bG93VGhyZWFkKCk7Ci0gICAgaWYgKCFmbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIEFTU0VSVChmbG93VGhyZWFkID09IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2so
KSk7Ci0gICAgQVNTRVJUKGZsb3dUaHJlYWQtPmN1cnJlbnRSZWdpb24oKSAmJiBmbG93VGhyZWFk
LT5jdXJyZW50UmVnaW9uKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSk7Ci0KLSAgICBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KGZsb3dUaHJlYWQtPmN1cnJlbnRSZWdpb24oKSk7Ci0gICAgcmV0dXJuIG5h
bWVkRmxvd0ZyYWdtZW50OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYg
TkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggYjgwMDRi
NjQzOTllNGIzODQzYzkxNTRmYjYyMTczYmYwZWFmNGUwZi4uMDExMmM0ZjUwYjI4YjI2NzViYjU0
ZjBjYzdmMGZkZmRkMzVhMjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtMjE4LDggKzIxOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxvY2F0ZUZs
b3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICB9CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7Ci0KICAgICAv
LyBGSVhNRTogVGhlIG1lYW5pbmcgb2YgdGhpcyBmdW5jdGlvbiBpcyB1bmNsZWFyLgogICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWZpcnN0Q2hpbGRTbG93KCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggODJl
OWMxNDgwZjQ2NDQzMjlkMzc3NGFmYWIxMTBhNjAzNDQ2OGIwYy4uMzBjNWEwZmY4OTkxYzNhZDE2
ZDdiZmU3MjRlNTc2YjBmMTk5YTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCkBAIC0yMDYsOSArMjA2LDggQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6
c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE8KICAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dG
cmFnbWVudCA9IGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogICAgIC8vIENoZWNr
IG91ciByZWdpb24gcmFuZ2UgdG8gbWFrZSBzdXJlIHdlIG5lZWQgdG8gYmUgcGFpbnRpbmcgaW4g
dGhpcyByZWdpb24uCi0gICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50ICYmICFuYW1lZEZsb3dGcmFn
bWVudC0+Zmxvd1RocmVhZCgpLT5vYmplY3RTaG91bGRGcmFnbWVudEluRmxvd1JlZ2lvbih0aGlz
LCBuYW1lZEZsb3dGcmFnbWVudCkpCisgICAgaWYgKHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCAmJiAhcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5mbG93VGhyZWFk
KCktPm9iamVjdFNob3VsZEZyYWdtZW50SW5GbG93UmVnaW9uKHRoaXMsIHBhaW50SW5mby5yZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExheW91
dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKaW5kZXggMzY3ZDJjMzkw
YTljMzhmNzMxZmMyODAwYWYwZDFlNTk3YTY4Mjk3MC4uYWI0MGUyZWYwYTRmOGM2ZTdlMzc0ODc1
ODNmYzg0MzNiZWFiYTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxpY2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlclJlcGxpY2E6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAg
IC8vIFR1cm4gYXJvdW5kIGFuZCBwYWludCB0aGUgcGFyZW50IGxheWVyLiBVc2UgdGVtcG9yYXJ5
IGNsaXBSZWN0cywgc28gdGhhdCB0aGUgbGF5ZXIgZG9lc24ndCBlbmQgdXAgY2FjaGluZyBjbGlw
IHJlY3RzCiAgICAgICAgIC8vIGNvbXB1dGluZyB1c2luZyB0aGUgd3Jvbmcgcm9vdExheWVyCiAg
ICAgICAgIFJlbmRlckxheWVyKiByb290UGFpbnRpbmdMYXllciA9IGxheWVyKCktPnRyYW5zZm9y
bSgpID8gbGF5ZXIoKS0+cGFyZW50KCkgOiBsYXllcigpLT5lbmNsb3NpbmdUcmFuc2Zvcm1lZEFu
Y2VzdG9yKCk7Ci0gICAgICAgIFJlbmRlckxheWVyOjpMYXllclBhaW50aW5nSW5mbyBwYWludGlu
Z0luZm8ocm9vdFBhaW50aW5nTGF5ZXIsIHBhaW50SW5mby5yZWN0LCBQYWludEJlaGF2aW9yTm9y
bWFsLCBMYXlvdXRTaXplKCksIDApOworICAgICAgICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGlu
Z0luZm8gcGFpbnRpbmdJbmZvKHJvb3RQYWludGluZ0xheWVyLCBwYWludEluZm8ucmVjdCwgUGFp
bnRCZWhhdmlvck5vcm1hbCwgTGF5b3V0U2l6ZSgpLCAwLCBwYWludEluZm8ucmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQpOwogICAgICAgICBSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWdzIGZsYWdz
ID0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5IHwgUmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJUZW1w
b3JhcnlDbGlwUmVjdHMgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlv
bjsKICAgICAgICAgbGF5ZXIoKS0+cGFyZW50KCktPnBhaW50TGF5ZXIocGFpbnRJbmZvLmNvbnRl
eHQsIHBhaW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VNYXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKaW5kZXggY2NiNGNiZjg5YTExZTkyOWI2ZWE2MjIxNWI2NGQ1ODk3MjBjYmMwNi4uYzBjMzA3
ZDc3MDRjOGNmMzkzYmI4MTI1ODdiNjgxMzdkMjEyYTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTGF5b3V0
UmVwYWludGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGFibGVDYXB0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGFibGVDb2wuaCIKQEAgLTE0OTQsNyArMTQ5Myw3IEBAIGJvb2wgUmVu
ZGVyVGFibGU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1CiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbiA9IGFjY3Vt
dWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKIAogICAgIC8vIENoZWNrIGtpZHMgZmlyc3QuCi0g
ICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAoKSB8fCBsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2Vj
dHMob3ZlcmZsb3dDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9uLCBjdXJyZW50UmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoKSkpKSB7CisgICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAoKSB8fCBsb2NhdGlv
bkluQ29udGFpbmVyLmludGVyc2VjdHMob3ZlcmZsb3dDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9u
LCBsb2NhdGlvbkluQ29udGFpbmVyLnJlZ2lvbigpKSkpIHsKICAgICAgICAgZm9yIChSZW5kZXJP
YmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0JveCgpICYmICF0b1JlbmRl
ckJveChjaGlsZCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkgJiYgKGNoaWxkLT5pc1RhYmxlU2Vj
dGlvbigpIHx8IGNoaWxkLT5pc1RhYmxlQ2FwdGlvbigpKSkgewogICAgICAgICAgICAgICAgIExh
eW91dFBvaW50IGNoaWxkUG9pbnQgPSBmbGlwRm9yV3JpdGluZ01vZGVGb3JDaGlsZCh0b1JlbmRl
ckJveChjaGlsZCksIGFkanVzdGVkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBiNWNmMDE0ZTQ1YWEwYWI3YTQzOTFm
Mzg1NmE5MGI4Y2FjMzMwNTczLi4xZmRlZWM5ZTM1OTRlOWFmNDdhZDM3M2VkNTZlNmJjMTgwY2Mw
MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKLSNpbmNsdWRlICJSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKQEAg
LTE0OTUsNyArMTQ5NCw3IEBAIGJvb2wgUmVuZGVyVGFibGVTZWN0aW9uOjpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAgLy8gSnVzdCBm
b3J3YXJkIHRvIG91ciBjaGlsZHJlbiBhbHdheXMuCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRM
b2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKIAotICAgIGlmIChoYXNP
dmVyZmxvd0NsaXAoKSAmJiAhbG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKG92ZXJmbG93
Q2xpcFJlY3QoYWRqdXN0ZWRMb2NhdGlvbiwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCkpKSkKKyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWxvY2F0aW9uSW5Db250YWluZXIu
aW50ZXJzZWN0cyhvdmVyZmxvd0NsaXBSZWN0KGFkanVzdGVkTG9jYXRpb24sIGxvY2F0aW9uSW5D
b250YWluZXIucmVnaW9uKCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhh
c092ZXJmbG93aW5nQ2VsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKaW5kZXggYWVmMDIxNjJhMWVmN2QxZGVkZWJjOWQwZDM2YzBjZjBiYzEy
NjMwZS4uYjg0MWUwNWM3MTA3ZjQ4MDA4MmExZDk3OGVkNjNjYjg0OWRhNWJjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNzQxLDcgKzc0
MSw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjbGlw
IHJlY3RzIHdlIHNob3VsZCB1c2UuCiAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAgICBD
bGlwUmVjdCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0OwotICAgIGwt
PmNhbGN1bGF0ZVJlY3RzKFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0KHJvb3RMYXllciwg
VGVtcG9yYXJ5Q2xpcFJlY3RzKSwgcGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VS
ZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0KTsKKyAgICBsLT5jYWxjdWxhdGVSZWN0
cyhSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dChyb290TGF5ZXIsIDAsIFRlbXBvcmFyeUNs
aXBSZWN0cyksIHBhaW50RGlydHlSZWN0LCBsYXllckJvdW5kcywgZGFtYWdlUmVjdCwgY2xpcFJl
Y3RUb0FwcGx5LCBvdXRsaW5lUmVjdCk7CiAKICAgICAvLyBFbnN1cmUgb3VyIGxpc3RzIGFyZSB1
cC10by1kYXRlLgogICAgIGwtPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGRjNmU1ZDgxMzAyZmIwYTc5
YzZjM2FjNjRkMTc0YTU3ZDNhM2I5MWIuLjYzOGFmMWI1NTM4Njc0YTQyMzdmZjA3ZjAzYjYyOTg3
NTcxZTBlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAK
QEAgLTE3MywxMiArMTczLDEwIEBAIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnRFbGxpcHNpc0Jv
eChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAKIHZvaWQgUm9v
dElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20p
CiB7Ci0gICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gcmVu
ZGVyZXIoKS5jdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKLQogICAgIC8vIENoZWNr
IGlmIHdlIGFyZSBpbiB0aGUgY29ycmVjdCByZWdpb24uCi0gICAgaWYgKG5hbWVkRmxvd0ZyYWdt
ZW50KSB7CisgICAgaWYgKHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkgewogICAg
ICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IGNvbnRhaW5pbmdSZWdpb24oKTsKLSAgICAgICAg
aWYgKHJlZ2lvbiAmJiByZWdpb24gIT0gcmVpbnRlcnByZXRfY2FzdDxSZW5kZXJSZWdpb24qPihu
YW1lZEZsb3dGcmFnbWVudCkpCisgICAgICAgIGlmIChyZWdpb24gJiYgcmVnaW9uICE9IHJlaW50
ZXJwcmV0X2Nhc3Q8UmVuZGVyUmVnaW9uKj4ocGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA3ZmFmOTgyOGY4ZTE3MTRm
OThjMmYyNDFjOGUzMGIzYzJhZmQ1OTA3Li4wNmNkZWY1NDI1NTNlZTFkNWMwZjU5NGY4ZGU4NDMx
Njc5MzE4MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludAogCiAg
ICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwCiAgICAgaWYgKHNob3VsZEFwcGx5Vmll
d3BvcnRDbGlwKCkpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAocGl4ZWxT
bmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50UmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+
Y2xpcChwaXhlbFNuYXBwZWRJbnRSZWN0KG92ZXJmbG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIHBh
aW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkpKTsKIAogICAgIC8vIENvbnZlcnQgZnJv
bSBjb250YWluZXIgb2Zmc2V0cyAoaHRtbCByZW5kZXJlcnMpIHRvIGEgcmVsYXRpdmUgdHJhbnNm
b3JtIChzdmcgcmVuZGVyZXJzKS4KICAgICAvLyBUcmFuc2Zvcm0gZnJvbSBvdXIgcGFpbnQgY29u
dGFpbmVyJ3MgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gb3VyIGxvY2FsIGNvb3Jkcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>