<?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>77988</bug_id>
          
          <creation_ts>2012-02-07 08:06:02 -0800</creation_ts>
          <short_desc>REGRESSION(r106932): Breaks Mac bots (Requested by pfeldman on #webkit).</short_desc>
          <delta_ts>2012-02-07 08:14:00 -0800</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>77875</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>pfeldman</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550989</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 08:06:02 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/106932 broke the build:
Breaks Mac bots (Requested by pfeldman on #webkit).

This is an automatic bug report generated by the sheriff-bot. 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 case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550990</commentid>
    <comment_count>1</comment_count>
      <attachid>125845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 08:06:34 -0800</bug_when>
    <thetext>Created attachment 125845
ROLLOUT of r106932

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>550996</commentid>
    <comment_count>2</comment_count>
      <attachid>125845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 08:13:55 -0800</bug_when>
    <thetext>Comment on attachment 125845
ROLLOUT of r106932

Clearing flags on attachment: 125845

Committed r106947: &lt;http://trac.webkit.org/changeset/106947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550997</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 08:14:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125845</attachid>
            <date>2012-02-07 08:06:34 -0800</date>
            <delta_ts>2012-02-07 08:13:55 -0800</delta_ts>
            <desc>ROLLOUT of r106932</desc>
            <filename>bug-77988-20120207160807.patch</filename>
            <type>text/plain</type>
            <size>76781</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBkYmZmYjZmZmQ4YjE3
MTY1YWJlM2UyNzhhOTVjOWUyYjNjODBlNS4uNWFhMTgwMzg4MzZmMGE0MmUzMDgyODVhNjNjZjRh
OWU4NTdlYTdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAyLTA3ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTA2OTMyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMDY5MzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3OTg4CisKKyAgICAgICAgQnJlYWtzIE1hYyBib3RzIChSZXF1ZXN0ZWQgYnkg
cGZlbGRtYW4gb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNw
ZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVzQXNUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6bW92ZVRvKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckhpc3RvcnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c2V0UHJv
cGVydHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRQcm9w
ZXJ0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6dGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
IChJbnNwZWN0b3JTdHlsZSk6CisgICAgICAgIChJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAg
ICAgKEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1Byb3BlcnR5LnByb3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuX3NlbGVjdGVkTm9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmhhbmRsZVNob3J0Y3V0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLmFkZE5ld0Js
YW5rUHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbi5wcm90b3R5cGUub25wb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlKToKKwogMjAxMi0wMi0wNyAgUHJpaXQgTGFlcyAg
PHBsYWVzQHBsYWVzLm9yZz4KIAogICAgICAgICBbR1RLXSBCdWlsZCBmYWlsdXJlIHdpdGggLS1l
bmFibGUtd2ViLWF1ZGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRkMDRjZjZmYjdhZjIyMjEz
NDYzODU2YWI2NmMzZDIxZmM0N2NhY2EuLjc1ZTNmZmFiMTFiMjE5N2ZmNDIzZTM3ZGM4OWRhYzBi
MGIzNDQ2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDEsNyArOTAxLDYgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
SGlzdG9yeS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCBkZmU0OTMxMWFiNmI0NDYzODkyOGUxMzdhYzg3YTE1YWQ3MDc0OWE1Li5lNDM4ODQ4NDMzNmRl
OTkzOThiYTg2OGIxMzU0YjdmOWIzN2UxZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTIzOTAsOCArMjM5MCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBcCi0JU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZDM0YzZkOTc4NTQ1MWE4
NzFkNjdhYjVmY2VkYTAwODM1NmU2NDA0Zi4uYzZhMmVjZWViMGY4ZDcxMDE1YWJlMjE2MTJmZTI0
YzhkZGQ0M2I0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC04NzcsNyArODc3LDYgQEAgU09VUkNFUyArPSBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIFwKQEAgLTE5NDQsNyArMTk0Myw2IEBAIEhFQURFUlMgKz0g
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmggXAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDdhMzQwZjhiNjJmZjE0MWVhN2JmZDU0NzM5NzUx
NzY5NWNlNjMzNC4uMTk1OWRkZjEyODgwZWJhNmJjZTQ2MTUxNTM1OGJjODE4M2I0ZDM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMjM4Niw4ICsyMzg2LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JIaXN0b3J5LmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
aCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGY0ZGM0N2M5
ZmI1M2FkMmI3ZDgzMjk3Y2JmNzUzMWIwODcyYjIyNC4uMzVkNDZkYTQxNzYzODBjMmQ5NmU0ZTcy
MTIzYWNlMjYyNWFjOWM5YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTcxNjU4LDMwICs3MTY1OCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JIaXN0b3J5
LmNwcCIKLQkJCQk+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29s
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlByb2R1Y3Rpb258
V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29s
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXEluc3BlY3Rvckhpc3RvcnkuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGE3OTgwMzQyZDNiM2ZkZDRk
YjQyZTc0M2RlNjk3YzZhYzE1Nzk5ZC4uZGJkN2YwYjI4OTNjMGZkYzAzNjRlYTkyMmNjMTk4NmJm
OTNlNzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTg4Nyw4ICsxODg3LDYgQEAKIAkJN0ExRjJCNTIxMjZDNjFCMjAwMDZB
N0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTFGMkI1MTEyNkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xp
ZW50LmNwcCAqLzsgfTsKIAkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRP
TUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi87IH07
CiAJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyNDU4N0ExMDIxRUFG
NDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0E1NDg1N0YxNEUwMkQ1MTAwNkFFMDVBIC8qIElu
c3BlY3Rvckhpc3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E1NDg1N0QxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuY3Bw
ICovOyB9OwotCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0Ux
NEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCAqLzsgfTsKIAkJN0E2NzRCREIw
RjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY3NEJEOTBGOUVCRjRFMDA2Q0Yw
OTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLzsgfTsKIAkJN0E2NzRCREMwRjlFQkY0
RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBh
Z2VHcm91cExvYWREZWZlcnJlci5oICovOyB9OwogCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUg
LyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwICovOyB9OwpAQCAtODc3MCw4ICs4NzY4LDYgQEAKIAkJN0Ex
RjJCNTExMjZDNjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9y
RE9NQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3QTEw
MjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0E1NDg1N0QxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySGlzdG9yeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBNTQ4NTdFMTRFMDJENTEwMDZBRTA1
QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckhpc3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1NjNF
NTQxMkRFMzJCMDAwRjQ1MzZEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBNTYzRjk1MTJERjVDOTEwMEY0NTM2RCAvKiBJbmplY3RlZFNj
cmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTY3
NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDA2MSw4ICsxNDA1Nyw2IEBACiAJCQkJ
N0EwRTc3MEIxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi8s
CiAJCQkJN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5o
ICovLAogCQkJCTdBMEU3NzBEMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhv
c3QuaWRsICovLAotCQkJCTdBNTQ4NTdEMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0
b3J5LmNwcCAqLywKLQkJCQk3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlz
dG9yeS5oICovLAogCQkJCTdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgKi8sCiAJCQkJN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmggKi8sCiAJCQkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8sCkBAIC0yNDE1NCw3ICsyNDE0OCw2IEBA
CiAJCQkJMUFBQUREQkYxNERDNjQwNzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFBQURERTQxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1Ry
ZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFBRERFOTE0REM4REY4MDBBRjY0QjMgLyog
U2Nyb2xsaW5nVHJlZU5vZGVNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBNTQ4NTgwMTRFMDJE
NTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MDkx
LDcgKzI3MDg0LDYgQEAKIAkJCQkxQUFBREREQTE0REM3NEVDMDBBRjY0QjMgLyogU2Nyb2xsaW5n
VHJlZVN0YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQURERTMxNERDOEM4RjAwQUY2
NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUFEREU4
MTREQzhERjgwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZU1hYy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTdBNTQ4NTdGMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4
IGUyMDRkOWNhMDk1ODNkNTc3NzU4YzJmZTExYmFmZmEzYzc4YTIzMTUuLjMxZThkOGExMTAyZGJl
YTgyZWIyOTM2MDBmM2Q1M2Q3Y2EyNTc1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KQEAgLTE1MTYsMTYgKzE1MTYsNiBAQAogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgbW91c2UgZXZlbnQtYmFzZWQg
dG91Y2ggZXZlbnQgZW11bGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAi
dW5kbyIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuZG9lcyB0aGUgbGFzdCBw
ZXJmb3JtZWQgYWN0aW9uLiIsCi0gICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAibWFya1Vu
ZG9hYmxlU3RhdGUiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJNYXJrcyBsYXN0
IHVuZG9hYmxlIHN0YXRlLiIsCi0gICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAg
ICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCmluZGV4IDM1MTczY2I5ZTAzNjdi
ZmFmNjBlMjkxZDE3NTI2ZjJhNDFiMzlhZDIuLjc4OWEyNzE4ZWQ1MzFkMjY3ODcyZDJjNzkxNTUw
ZTQ5ZDg5MWUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFs
bEluT25lLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JIaXN0b3J5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCA0ZTQyYWM0NDAxZjQyY2M4ZTQ3ZmE5MjU2YzdlY2JjNjQ3MmQy
ZjEzLi4wMTNmNGYzMjM4ZGUyMWVmMWE2ZTViZDUyMTE0Y2EyY2RlOThmMjExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTM5LDcgKzM5
LDYgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckhp
c3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKQEAgLTIxOCwxNTgg
KzIxNyw2IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBTZWxlY3RvclByb2ZpbGU6OnRv
SW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
IAotY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24gOiBwdWJsaWMgSW5z
cGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVNo
ZWV0QWN0aW9uKTsKLXB1YmxpYzoKLSAgICBTdHlsZVNoZWV0QWN0aW9uKGNvbnN0IFN0cmluZyYg
bmFtZSwgSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hl
ZXRJZCkKLSAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24obmFtZSkKLSAgICAgICAg
LCBtX2Nzc0FnZW50KGNzc0FnZW50KQotICAgICAgICAsIG1fc3R5bGVTaGVldElkKHN0eWxlU2hl
ZXRJZCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5
bGVTaGVldCA9IG1fY3NzQWdlbnQtPmFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywg
bV9zdHlsZVNoZWV0SWQpOwotICAgICAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBwZXJmb3JtKHN0eWxlU2hlZXQsIGVycm9yU3Ry
aW5nKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0g
bV9jc3NBZ2VudC0+YXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBtX3N0eWxlU2hl
ZXRJZCk7Ci0gICAgICAgIGlmICghc3R5bGVTaGVldCkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIHVuZG8oc3R5bGVTaGVldCwgZXJyb3JTdHJpbmcpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEluc3BlY3RvclN0eWxlU2hlZXQqLCBFcnJvclN0
cmluZyopID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEluc3BlY3RvclN0eWxlU2hlZXQq
LCBFcnJvclN0cmluZyopID0gMDsKLQotcHJvdGVjdGVkOgotICAgIEluc3BlY3RvckNTU0FnZW50
KiBtX2Nzc0FnZW50OwotICAgIFN0cmluZyBtX3N0eWxlU2hlZXRJZDsKLX07Ci0KLWNsYXNzIElu
c3BlY3RvckNTU0FnZW50OjpTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0
b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2V0U3R5bGVTaGVldFRleHRBY3Rpb24pOwotcHVibGljOgotICAgIFNldFN0eWxlU2hlZXRUZXh0
QWN0aW9uKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKLSAgICAgICAgOiBJbnNwZWN0b3JDU1NBZ2VudDo6
U3R5bGVTaGVldEFjdGlvbigiU2V0U3R5bGVTaGVldFRleHQiLCBjc3NBZ2VudCwgc3R5bGVTaGVl
dElkKQotICAgICAgICAsIG1fdGV4dCh0ZXh0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgcGVyZm9ybShJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0LCBF
cnJvclN0cmluZyopCi0gICAgewotICAgICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQtPmdl
dFRleHQoJm1fb2xkVGV4dCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
aWYgKGluc3BlY3RvclN0eWxlU2hlZXQtPnNldFRleHQobV90ZXh0KSkgewotICAgICAgICAgICAg
aW5zcGVjdG9yU3R5bGVTaGVldC0+cmVwYXJzZVN0eWxlU2hlZXQobV90ZXh0KTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JT
dHlsZVNoZWV0LCBFcnJvclN0cmluZyopCi0gICAgewotICAgICAgICBpZiAoaW5zcGVjdG9yU3R5
bGVTaGVldC0+c2V0VGV4dChtX29sZFRleHQpKSB7Ci0gICAgICAgICAgICBpbnNwZWN0b3JTdHls
ZVNoZWV0LT5yZXBhcnNlU3R5bGVTaGVldChtX29sZFRleHQpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBTdHJpbmcgbV90ZXh0OwotICAgIFN0cmluZyBtX29sZFRleHQ7Ci19OwotCi1jbGFz
cyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0UHJvcGVydHlUZXh0QWN0aW9uIDogcHVibGljIEluc3Bl
Y3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTZXRQcm9wZXJ0eVRleHRBY3Rpb24pOwotcHVibGljOgotICAgIFNldFByb3BlcnR5VGV4dEFj
dGlvbihJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVl
dElkLCBjb25zdCBJbnNwZWN0b3JDU1NJZCYgY3NzSWQsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgs
IGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUpCi0gICAgICAgIDogSW5zcGVjdG9y
Q1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24oIlNldFByb3BlcnR5VGV4dCIsIGNzc0FnZW50LCBz
dHlsZVNoZWV0SWQpCi0gICAgICAgICwgbV9jc3NJZChjc3NJZCkKLSAgICAgICAgLCBtX3Byb3Bl
cnR5SW5kZXgocHJvcGVydHlJbmRleCkKLSAgICAgICAgLCBtX3RleHQodGV4dCkKLSAgICAgICAg
LCBtX292ZXJ3cml0ZShvdmVyd3JpdGUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgU3Ry
aW5nIHRvU3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtZXJnZUlkKCkgKyAiOiAiICsg
bV9vbGRUZXh0ICsgIiAtPiAiICsgbV90ZXh0OwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBw
ZXJmb3JtKEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQsIEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZykKLSAgICB7Ci0gICAgICAgIFN0cmluZyBvbGRUZXh0OwotICAgICAg
ICBib29sIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPnNldFByb3BlcnR5VGV4dChlcnJv
clN0cmluZywgbV9jc3NJZCwgbV9wcm9wZXJ0eUluZGV4LCBtX3RleHQsIG1fb3ZlcndyaXRlLCAm
b2xkVGV4dCk7Ci0gICAgICAgIG1fb2xkVGV4dCA9IG9sZFRleHQuc3RyaXBXaGl0ZVNwYWNlKCk7
Ci0gICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBvbmNlIHRoZSBtb2RlbCBoYW5kbGVzIHRo
aXMgY2FzZS4KLSAgICAgICAgaWYgKCFtX29sZFRleHQuZW5kc1dpdGgoIjsiKSkKLSAgICAgICAg
ICAgIG1fb2xkVGV4dCArPSAiOyI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCBib29sIHVuZG8oSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVT
aGVldCwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQotICAgIHsKLSAgICAgICAgU3RyaW5nIHBs
YWNlaG9sZGVyOwotICAgICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0UHJvcGVy
dHlUZXh0KGVycm9yU3RyaW5nLCBtX2Nzc0lkLCBtX3Byb3BlcnR5SW5kZXgsIG1fb3ZlcndyaXRl
ID8gbV9vbGRUZXh0IDogIiIsIHRydWUsICZwbGFjZWhvbGRlcik7Ci0gICAgfQotCi0gICAgdmly
dHVhbCBTdHJpbmcgbWVyZ2VJZCgpCi0gICAgewotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIlNldFByb3BlcnR5VGV4dCAlczoldTolcyIsIG1fc3R5bGVTaGVldElkLnV0ZjgoKS5kYXRh
KCksIG1fcHJvcGVydHlJbmRleCwgbV9vdmVyd3JpdGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWVyZ2UoUGFzc093blB0cjxBY3Rpb24+IGFjdGlvbikK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChhY3Rpb24tPm1lcmdlSWQoKSA9PSBtZXJnZUlkKCkpOwot
Ci0gICAgICAgIFNldFByb3BlcnR5VGV4dEFjdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxTZXRQ
cm9wZXJ0eVRleHRBY3Rpb24qPihhY3Rpb24uZ2V0KCkpOwotICAgICAgICBtX3RleHQgPSBvdGhl
ci0+bV90ZXh0OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDU1NJZCBtX2Nzc0lk
OwotICAgIHVuc2lnbmVkIG1fcHJvcGVydHlJbmRleDsKLSAgICBTdHJpbmcgbV90ZXh0OwotICAg
IFN0cmluZyBtX29sZFRleHQ7Ci0gICAgYm9vbCBtX292ZXJ3cml0ZTsKLX07Ci0KLWNsYXNzIElu
c3BlY3RvckNTU0FnZW50OjpUb2dnbGVQcm9wZXJ0eUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JD
U1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9n
Z2xlUHJvcGVydHlBY3Rpb24pOwotcHVibGljOgotICAgIFRvZ2dsZVByb3BlcnR5QWN0aW9uKElu
c3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNv
bnN0IEluc3BlY3RvckNTU0lkJiBjc3NJZCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgYm9vbCBk
aXNhYmxlKQotICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uKCJU
b2dnbGVQcm9wZXJ0eSIsIGNzc0FnZW50LCBzdHlsZVNoZWV0SWQpCi0gICAgICAgICwgbV9jc3NJ
ZChjc3NJZCkKLSAgICAgICAgLCBtX3Byb3BlcnR5SW5kZXgocHJvcGVydHlJbmRleCkKLSAgICAg
ICAgLCBtX2Rpc2FibGUoZGlzYWJsZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29s
IHBlcmZvcm0oSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCwgRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxl
U2hlZXQtPnRvZ2dsZVByb3BlcnR5KGVycm9yU3RyaW5nLCBtX2Nzc0lkLCBtX3Byb3BlcnR5SW5k
ZXgsIG1fZGlzYWJsZSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIHVuZG8oSW5zcGVjdG9y
U3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
KQotICAgIHsKLSAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LT50b2dnbGVQcm9wZXJ0
eShlcnJvclN0cmluZywgbV9jc3NJZCwgbV9wcm9wZXJ0eUluZGV4LCAhbV9kaXNhYmxlKTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgSW5zcGVjdG9yQ1NTSWQgbV9jc3NJZDsKLSAgICB1bnNpZ25l
ZCBtX3Byb3BlcnR5SW5kZXg7Ci0gICAgYm9vbCBtX2Rpc2FibGU7Ci19OwotCiAvLyBzdGF0aWMK
IENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUq
IHJ1bGUpCiB7CkBAIC01OTEsMTMgKzQzOCwxOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwog
ICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5z
cGVjdG9yU3R5bGVTaGVldC0+Z2V0VGV4dChyZXN1bHQpOworICAgIGluc3BlY3RvclN0eWxlU2hl
ZXQtPnRleHQocmVzdWx0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVT
aGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hl
ZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+
cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0U3R5bGVTaGVldFRleHRBY3Rpb24odGhpcywgc3R5bGVT
aGVldElkLCB0ZXh0KSksIGVycm9yU3RyaW5nKTsKLSAgICBtX2RvbUFnZW50LT5oaXN0b3J5KCkt
Pm1hcmtVbmRvYWJsZVN0YXRlKCk7CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9y
U3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVl
dElkKTsKKyAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChpbnNwZWN0b3JTdHlsZVNoZWV0LT5zZXRUZXh0KHRleHQpKQorICAgICAgICBpbnNw
ZWN0b3JTdHlsZVNoZWV0LT5yZXBhcnNlU3R5bGVTaGVldCh0ZXh0KTsKKyAgICBlbHNlCisgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciBzZXR0aW5nIHN0eWxlIHNoZWV0IHRl
eHQiOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0
eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3Zlcndy
aXRlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQpAQCAtNjA5LDcgKzQ2Miw3IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFByb3BlcnR5VGV4dEFjdGlvbih0aGlzLCBjb21w
b3VuZElkLnN0eWxlU2hlZXRJZCgpLCBjb21wb3VuZElkLCBwcm9wZXJ0eUluZGV4LCB0ZXh0LCBv
dmVyd3JpdGUpKSwgZXJyb3JTdHJpbmcpOworICAgIGJvb2wgc3VjY2VzcyA9IGluc3BlY3RvclN0
eWxlU2hlZXQtPnNldFByb3BlcnR5VGV4dChlcnJvclN0cmluZywgY29tcG91bmRJZCwgcHJvcGVy
dHlJbmRleCwgdGV4dCwgb3ZlcndyaXRlKTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmVz
dWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShpbnNwZWN0b3JT
dHlsZVNoZWV0LT5zdHlsZUZvcklkKGNvbXBvdW5kSWQpKTsKIH0KQEAgLTYyMywxMCArNDc2LDkg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcgVG9nZ2xlUHJvcGVydHlBY3Rpb24odGhpcywgY29t
cG91bmRJZC5zdHlsZVNoZWV0SWQoKSwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgZGlzYWJs
ZSkpLCBlcnJvclN0cmluZyk7CisgICAgYm9vbCBzdWNjZXNzID0gaW5zcGVjdG9yU3R5bGVTaGVl
dC0+dG9nZ2xlUHJvcGVydHkoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQsIHByb3BlcnR5SW5kZXgs
IGRpc2FibGUpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXN1bHQgPSBpbnNwZWN0b3JT
dHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxl
Rm9ySWQoY29tcG91bmRJZCkpOwotICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+bWFya1VuZG9h
YmxlU3RhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9y
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCmluZGV4IGViYjMxMzZiYTAzNzg2ODkyOWI2ODMwNWIyNjVkY2Q1MTNmNDkzMjEuLjY0ZTI3
MjQyYzIxYWI2MmZlNGRlYjRlMjY0ZTU3YzJhZGJkYTI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05OCwxMSArOTgsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRQcm9jZXNzUnVsZSgpOwogCiBwcml2YXRlOgotICAgIGNsYXNzIFN0eWxl
U2hlZXRBY3Rpb247Ci0gICAgY2xhc3MgU2V0U3R5bGVTaGVldFRleHRBY3Rpb247Ci0gICAgY2xh
c3MgU2V0UHJvcGVydHlUZXh0QWN0aW9uOwotICAgIGNsYXNzIFRvZ2dsZVByb3BlcnR5QWN0aW9u
OwotCiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiA+IElkVG9JbnNwZWN0b3JTdHlsZVNoZWV0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggOTQ2NTZjMmQyNGQ3OGUxNWQxY2NlMjczYWMxMmU2ZTdkNDQzMmQ5Yi4uNDkwZDFjOTE2NmM1
MzU4NTQ4MjEwNjc1YmJiZDJkNTU1MDA4ZDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05NSwyNDMgKzk1LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgewotCi1jbGFzcyBET01BY3Rpb24gOiBwdWJsaWMg
SW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKLXB1YmxpYzoKLSAgICBET01BY3Rpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKSA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbihuYW1lKSB7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCBwZXJmb3JtKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKLSAgICB7Ci0g
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBib29sIHJlc3VsdCA9IHBlcmZv
cm0oZWMpOwotICAgICAgICBpZiAoZWMpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7Ci0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSBkZXNj
cmlwdGlvbi5uYW1lOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQgJiYgIWVjOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykK
LSAgICB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBib29sIHJlc3Vs
dCA9IHVuZG8oZWMpOwotICAgICAgICBpZiAoZWMpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7Ci0gICAgICAgICAgICAqZXJyb3JTdHJpbmcg
PSBkZXNjcmlwdGlvbi5uYW1lOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQgJiYg
IWVjOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJikgPSAwOwotCi1wcml2
YXRlOgotICAgIFJlZlB0cjxOb2RlPiBtX3BhcmVudE5vZGU7Ci0gICAgUmVmUHRyPE5vZGU+IG1f
bm9kZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwotfTsKLQotY2xhc3MgUmVtb3Zl
Q2hpbGRBY3Rpb24gOiBwdWJsaWMgRE9NQWN0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZW1vdmVDaGlsZEFjdGlvbik7Ci1wdWJsaWM6Ci0gICAgUmVtb3ZlQ2hpbGRBY3Rpb24oTm9k
ZSogcGFyZW50Tm9kZSwgTm9kZSogbm9kZSkKLSAgICAgICAgOiBET01BY3Rpb24oIlJlbW92ZUNo
aWxkIikKLSAgICAgICAgLCBtX3BhcmVudE5vZGUocGFyZW50Tm9kZSkKLSAgICAgICAgLCBtX25v
ZGUobm9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0
aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBtX2FuY2hvck5vZGUgPSBtX25vZGUtPm5leHRT
aWJsaW5nKCk7Ci0gICAgICAgIHJldHVybiBtX3BhcmVudE5vZGUtPnJlbW92ZUNoaWxkKG1fbm9k
ZS5nZXQoKSwgZWMpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNv
ZGUmIGVjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3Jl
KG1fbm9kZS5nZXQoKSwgbV9hbmNob3JOb2RlLmdldCgpLCBlYyk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIFJlZlB0cjxOb2RlPiBtX3BhcmVudE5vZGU7Ci0gICAgUmVmUHRyPE5vZGU+IG1fbm9k
ZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwotfTsKLQotY2xhc3MgSW5zZXJ0QmVm
b3JlQWN0aW9uIDogcHVibGljIERPTUFjdGlvbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zZXJ0QmVmb3JlQWN0aW9uKTsKLXB1YmxpYzoKLSAgICBJbnNlcnRCZWZvcmVBY3Rpb24oTm9k
ZSogcGFyZW50Tm9kZSwgTm9kZSogbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKLSAgICAgICAgOiBE
T01BY3Rpb24oIkluc2VydEJlZm9yZSIpCi0gICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5v
ZGUpCi0gICAgICAgICwgbV9ub2RlKG5vZGUpCi0gICAgICAgICwgbV9hbmNob3JOb2RlKGFuY2hv
ck5vZGUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlv
bkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0g
ICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gYWRvcHRQdHIobmV3IFJlbW92ZUNoaWxk
QWN0aW9uKG1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUuZ2V0KCkpKTsKLSAgICAgICAgICAg
IGlmICghbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybShlYykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3BhcmVudE5vZGUtPmlu
c2VydEJlZm9yZShtX25vZGUuZ2V0KCksIG1fYW5jaG9yTm9kZS5nZXQoKSwgZWMpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAg
ICAgaWYgKG1fcmVtb3ZlQ2hpbGRBY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gbV9yZW1vdmVD
aGlsZEFjdGlvbi0+dW5kbyhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+cmVt
b3ZlQ2hpbGQobV9ub2RlLmdldCgpLCBlYyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFJlZlB0
cjxOb2RlPiBtX3BhcmVudE5vZGU7Ci0gICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKLSAgICBSZWZQ
dHI8Tm9kZT4gbV9hbmNob3JOb2RlOwotICAgIE93blB0cjxSZW1vdmVDaGlsZEFjdGlvbj4gbV9y
ZW1vdmVDaGlsZEFjdGlvbjsKLX07Ci0KLWNsYXNzIFJlbW92ZUF0dHJpYnV0ZUFjdGlvbiA6IHB1
YmxpYyBET01BY3Rpb24gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW92ZUF0dHJpYnV0
ZUFjdGlvbik7Ci1wdWJsaWM6Ci0gICAgUmVtb3ZlQXR0cmlidXRlQWN0aW9uKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgOiBET01BY3Rpb24oIlJlbW92ZUF0
dHJpYnV0ZSIpCi0gICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgICAgICwgbV9uYW1l
KG5hbWUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlv
bkNvZGUmKQotICAgIHsKLSAgICAgICAgbV92YWx1ZSA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRl
KG1fbmFtZSk7Ci0gICAgICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKG1fbmFtZSk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2Vw
dGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9u
YW1lLCBtX3ZhbHVlLCBlYyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwotICAgIFN0cmluZyBtX25hbWU7Ci0g
ICAgU3RyaW5nIG1fdmFsdWU7Ci19OwotCi1jbGFzcyBTZXRBdHRyaWJ1dGVBY3Rpb24gOiBwdWJs
aWMgRE9NQWN0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXRBdHRyaWJ1dGVBY3Rp
b24pOwotcHVibGljOgotICAgIFNldEF0dHJpYnV0ZUFjdGlvbihFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIDogRE9NQWN0
aW9uKCJTZXRBdHRyaWJ1dGUiKQotICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQotICAgICAg
ICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgICAgICwgbV9o
YWRBdHRyaWJ1dGUoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtKEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgbV9oYWRBdHRyaWJ1dGUgPSBt
X2VsZW1lbnQtPmhhc0F0dHJpYnV0ZShtX25hbWUpOwotICAgICAgICBpZiAobV9oYWRBdHRyaWJ1
dGUpCi0gICAgICAgICAgICBtX29sZFZhbHVlID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUobV9u
YW1lKTsKLSAgICAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9uYW1lLCBtX3ZhbHVlLCBl
Yyk7Ci0gICAgICAgIHJldHVybiAhZWM7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIHVuZG8o
RXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBpZiAobV9oYWRBdHRyaWJ1dGUpCi0g
ICAgICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX25hbWUsIG1fb2xkVmFsdWUsIGVj
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUo
bV9uYW1lKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFJl
ZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcg
bV92YWx1ZTsKLSAgICBib29sIG1faGFkQXR0cmlidXRlOwotICAgIFN0cmluZyBtX29sZFZhbHVl
OwotfTsKLQotY2xhc3MgU2V0T3V0ZXJIVE1MQWN0aW9uIDogcHVibGljIERPTUFjdGlvbiB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2V0T3V0ZXJIVE1MQWN0aW9uKTsKLXB1YmxpYzoKLSAg
ICBTZXRPdXRlckhUTUxBY3Rpb24oTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sKQotICAg
ICAgICA6IERPTUFjdGlvbigiU2V0T3V0ZXJIVE1MIikKLSAgICAgICAgLCBtX25vZGUobm9kZSkK
LSAgICAgICAgLCBtX2h0bWwoaHRtbCkKLSAgICAgICAgLCBtX25ld05vZGUoMCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAg
ewotICAgICAgICBtX29sZEhUTUwgPSBjcmVhdGVNYXJrdXAobV9ub2RlLmdldCgpKTsKLSAgICAg
ICAgRE9NRWRpdG9yIGRvbUVkaXRvcihtX25vZGUtPm93bmVyRG9jdW1lbnQoKSk7Ci0gICAgICAg
IG1fbmV3Tm9kZSA9IGRvbUVkaXRvci5wYXRjaE5vZGUobV9ub2RlLmdldCgpLCBtX2h0bWwsIGVj
KTsKLSAgICAgICAgcmV0dXJuICFlYzsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhF
eGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIERPTUVkaXRvciBkb21FZGl0b3IobV9u
b2RlLT5vd25lckRvY3VtZW50KCkpOwotICAgICAgICBkb21FZGl0b3IucGF0Y2hOb2RlKG1fbm9k
ZS5nZXQoKSwgbV9vbGRIVE1MLCBlYyk7Ci0gICAgICAgIHJldHVybiAhZWM7Ci0gICAgfQotCi0g
ICAgTm9kZSogbmV3Tm9kZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9uZXdOb2RlOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwotICAgIFN0cmluZyBtX2h0
bWw7Ci0gICAgU3RyaW5nIG1fb2xkSFRNTDsKLSAgICBOb2RlKiBtX25ld05vZGU7Ci19OwotCi1j
bGFzcyBSZXBsYWNlV2hvbGVUZXh0QWN0aW9uIDogcHVibGljIERPTUFjdGlvbiB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmVwbGFjZVdob2xlVGV4dEFjdGlvbik7Ci1wdWJsaWM6Ci0gICAg
UmVwbGFjZVdob2xlVGV4dEFjdGlvbihUZXh0KiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0
KQotICAgICAgICA6IERPTUFjdGlvbigiUmVwbGFjZVdob2xlVGV4dCIpCi0gICAgICAgICwgbV90
ZXh0Tm9kZSh0ZXh0Tm9kZSkKLSAgICAgICAgLCBtX3RleHQodGV4dCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAg
ICAgICBtX29sZFRleHQgPSBtX3RleHROb2RlLT53aG9sZVRleHQoKTsKLSAgICAgICAgbV90ZXh0
Tm9kZS0+cmVwbGFjZVdob2xlVGV4dChtX3RleHQsIGVjKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAg
ewotICAgICAgICBtX3RleHROb2RlLT5yZXBsYWNlV2hvbGVUZXh0KG1fb2xkVGV4dCwgZWMpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFRleHQ+
IG1fdGV4dE5vZGU7Ci0gICAgU3RyaW5nIG1fdGV4dDsKLSAgICBTdHJpbmcgbV9vbGRUZXh0Owot
fTsKLQotfQotCiBuYW1lc3BhY2UgRE9NQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciBk
b2N1bWVudFJlcXVlc3RlZFtdID0gImRvY3VtZW50UmVxdWVzdGVkIjsKIApAQCAtNDIzLDcgKzE4
Niw2IEBAIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJCiAgICAgLCBtX2RvbUxpc3RlbmVyKDApCiAg
ICAgLCBtX2xhc3ROb2RlSWQoMSkKICAgICAsIG1fc2VhcmNoaW5nRm9yTm9kZShmYWxzZSkKLSAg
ICAsIG1faGlzdG9yeShhZG9wdFB0cihuZXcgSW5zcGVjdG9ySGlzdG9yeSgpKSkKIHsKIH0KIApA
QCAtNDkxLDcgKzI1Myw3IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRlZE5v
ZGUoKSBjb25zdAogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiB7Ci0gICAgbV9o
aXN0b3J5LT5yZXNldCgpOworICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIG1fc2VhcmNoUmVz
dWx0cy5jbGVhcigpOwogICAgIGRpc2NhcmRCaW5kaW5ncygpOwogICAgIGlmIChtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrKQpAQCAtNzU2LDggKzUxOCwxMCBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVt
ZW50SQogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9oaXN0b3J5
LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBTZXRBdHRyaWJ1dGVBY3Rpb24oZWxlbWVudCwgbmFtZSwg
dmFsdWUpKSwgZXJyb3JTdHJpbmcpOwotICAgIG1faGlzdG9yeS0+bWFya1VuZG9hYmxlU3RhdGUo
KTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgICplcnJvclN0cmluZyA9ICJJ
bnRlcm5hbCBlcnJvcjogY291bGQgbm90IHNldCBhdHRyaWJ1dGUgdmFsdWUiOwogfQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcq
IGNvbnN0IG5hbWUpCkBAIC03ODcsNyArNTUxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4K
IAogICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IHRvRWxlbWVudChjaGlsZCk7CiAgICAgaWYg
KCFjaGlsZEVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSAmJiBuYW1lKSB7Ci0gICAgICAgIG1faGlz
dG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgUmVtb3ZlQXR0cmlidXRlQWN0aW9uKGVsZW1lbnQs
ICpuYW1lKSksIGVycm9yU3RyaW5nKTsKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRl
KCpuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk3LDI0ICs1NjEsMjAgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KICAgICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCiAg
ICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gY2hpbGRFbGVtZW50LT5hdHRyaWJ1
dGVJdGVtKGkpOwogICAgICAgICBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZm91bmRPcmlnaW5h
bEF0dHJpYnV0ZSB8fCAobmFtZSAmJiBhdHRyaWJ1dGUtPm5hbWUoKS50b1N0cmluZygpID09ICpu
YW1lKTsKLSAgICAgICAgaWYgKCFtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldEF0
dHJpYnV0ZUFjdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUtPm5hbWUoKS50b1N0cmluZygpLCBhdHRy
aWJ1dGUtPnZhbHVlKCkpKSwgZXJyb3JTdHJpbmcpKQotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+
dmFsdWUoKSk7CiAgICAgfQogCi0gICAgaWYgKCFmb3VuZE9yaWdpbmFsQXR0cmlidXRlICYmIG5h
bWUgJiYgIW5hbWUtPnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgbV9oaXN0
b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZW1vdmVBdHRyaWJ1dGVBY3Rpb24oZWxlbWVudCwg
Km5hbWUpKSwgZXJyb3JTdHJpbmcpOwotCi0gICAgbV9oaXN0b3J5LT5tYXJrVW5kb2FibGVTdGF0
ZSgpOworICAgIGlmICghZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSAmJiBuYW1lKSB7CisgICAgICAg
IGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUF0dHJpYnV0ZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgZWxlbWVudElk
KTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faGlzdG9yeS0+
cGVyZm9ybShhZG9wdFB0cihuZXcgUmVtb3ZlQXR0cmlidXRlQWN0aW9uKGVsZW1lbnQsIG5hbWUp
KSwgZXJyb3JTdHJpbmcpOwotICAgIG1faGlzdG9yeS0+bWFya1VuZG9hYmxlU3RhdGUoKTsKKyAg
ICBpZiAoZWxlbWVudCkKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUpOwog
fQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCkKQEAgLTgyOSwxMSArNTg5LDEzIEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnJlbW92ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0
UHRyKG5ldyBSZW1vdmVDaGlsZEFjdGlvbihwYXJlbnROb2RlLCBub2RlKSksIGVycm9yU3RyaW5n
KTsKLSAgICBtX2hpc3RvcnktPm1hcmtVbmRvYWJsZVN0YXRlKCk7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgcGFyZW50Tm9kZS0+cmVtb3ZlQ2hpbGQobm9kZSwgZWMpOworICAgIGlm
IChlYykKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCByZW1vdmUgbm9kZSBkdWUg
dG8gRE9NIGV4Y2VwdGlvbiI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVO
YW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0
YWdOYW1lLCBpbnQqIG5ld0lkKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZU5hbWUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHRhZ05hbWUsIGludCogbmV3
SWQpCiB7CiAgICAgKm5ld0lkID0gMDsKIApAQCAtODUxLDE4ICs2MTMsMTYgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6c2V0Tm9kZU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjb25zdAogCiAgICAgLy8gQ29weSBvdmVyIHRoZSBvcmlnaW5hbCBub2RlJ3MgY2hp
bGRyZW4uCiAgICAgTm9kZSogY2hpbGQ7Ci0gICAgd2hpbGUgKChjaGlsZCA9IG9sZE5vZGUtPmZp
cnN0Q2hpbGQoKSkpIHsKLSAgICAgICAgaWYgKCFtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIo
bmV3IEluc2VydEJlZm9yZUFjdGlvbihuZXdFbGVtLmdldCgpLCBjaGlsZCwgMCkpLCBlcnJvclN0
cmluZykpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHdoaWxlICgoY2hpbGQgPSBv
bGROb2RlLT5maXJzdENoaWxkKCkpKQorICAgICAgICBuZXdFbGVtLT5hcHBlbmRDaGlsZChjaGls
ZCwgZWMpOwogCiAgICAgLy8gUmVwbGFjZSB0aGUgb2xkIG5vZGUgd2l0aCB0aGUgbmV3IG5vZGUK
ICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBvbGROb2RlLT5wYXJlbnROb2RlKCk7Ci0gICAg
aWYgKCFtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IEluc2VydEJlZm9yZUFjdGlvbihw
YXJlbnQsIG5ld0VsZW0uZ2V0KCksIG9sZE5vZGUtPm5leHRTaWJsaW5nKCkpKSwgZXJyb3JTdHJp
bmcpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQ
dHIobmV3IFJlbW92ZUNoaWxkQWN0aW9uKHBhcmVudCwgb2xkTm9kZSkpLCBlcnJvclN0cmluZykp
CisgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUobmV3RWxlbSwgb2xkTm9kZS0+bmV4dFNpYmxpbmco
KSwgZWMpOworICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQob2xkTm9kZSwgZWMpOworCisgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm47Ci0gICAgbV9oaXN0b3J5LT5tYXJrVW5kb2FibGVTdGF0ZSgp
OwogCiAgICAgKm5ld0lkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChuZXdFbGVtLmdldCgpKTsK
ICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQpAQCAtODk4LDE0
ICs2NTgsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0T3V0ZXJIVE1MKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKIAogICAgIERPTUVkaXRvciBkb21F
ZGl0b3IoZG9jdW1lbnQpOwogCi0gICAgT3duUHRyPFNldE91dGVySFRNTEFjdGlvbj4gYWN0aW9u
ID0gYWRvcHRQdHIobmV3IFNldE91dGVySFRNTEFjdGlvbihub2RlLCBvdXRlckhUTUwpKTsKLSAg
ICBTZXRPdXRlckhUTUxBY3Rpb24qIHJhd0FjdGlvbiA9IGFjdGlvbi5nZXQoKTsKLSAgICBOb2Rl
KiBuZXdOb2RlID0gMDsKLSAgICBpZiAoIW1faGlzdG9yeS0+cGVyZm9ybShhY3Rpb24ucmVsZWFz
ZSgpLCBlcnJvclN0cmluZykpCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgTm9kZSog
bmV3Tm9kZSA9IGRvbUVkaXRvci5wYXRjaE5vZGUobm9kZSwgb3V0ZXJIVE1MLCBlYyk7CisgICAg
aWYgKGVjKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihl
Yyk7CisgICAgICAgICplcnJvclN0cmluZyA9IGRlc2NyaXB0aW9uLm5hbWU7CiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2hpc3RvcnktPm1hcmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICBuZXdOb2Rl
ID0gcmF3QWN0aW9uLT5uZXdOb2RlKCk7CisgICAgfQogCiAgICAgaWYgKCFuZXdOb2RlKSB7CiAg
ICAgICAgIC8vIFRoZSBvbmx5IGNoaWxkIG5vZGUgaGFzIGJlZW4gZGVsZXRlZC4KQEAgLTkzMCw3
ICs2ODksMTEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgUmVwbGFjZVdob2xlVGV4
dEFjdGlvbihzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSksIHZhbHVlKSksIGVycm9yU3RyaW5nKTsK
KyAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihub2RlKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICB0ZXh0Tm9kZS0+cmVwbGFjZVdob2xlVGV4dCh2YWx1ZSwg
ZWMpOworICAgIGlmIChlYykKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkRPTSBFcnJvciB3aGls
ZSBzZXR0aW5nIHRoZSBub2RlIHZhbHVlIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgbGlzdGVuZXJzQXJyYXkpCkBAIC0xMjY3LDMxICsxMDMwLDMzIEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKQogICAg
IG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
Om1vdmVUbyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGludCB0YXJnZXRF
bGVtZW50SWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9yTm9kZUlkLCBpbnQqIG5ld05vZGVJZCkK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdmVUbyhFcnJvclN0cmluZyogZXJyb3IsIGludCBu
b2RlSWQsIGludCB0YXJnZXRFbGVtZW50SWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9yTm9kZUlk
LCBpbnQqIG5ld05vZGVJZCkKIHsKLSAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0
cmluZywgbm9kZUlkKTsKKyAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvciwgbm9kZUlk
KTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVsZW1lbnQqIHRhcmdl
dEVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVycm9yU3RyaW5nLCB0YXJnZXRFbGVtZW50SWQpOwor
ICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVycm9yLCB0YXJnZXRF
bGVtZW50SWQpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgTm9kZSogYW5jaG9yTm9kZSA9IDA7CiAgICAgaWYgKGFuY2hvck5vZGVJZCAmJiAqYW5jaG9y
Tm9kZUlkKSB7Ci0gICAgICAgIGFuY2hvck5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCAq
YW5jaG9yTm9kZUlkKTsKKyAgICAgICAgYW5jaG9yTm9kZSA9IGFzc2VydE5vZGUoZXJyb3IsICph
bmNob3JOb2RlSWQpOwogICAgICAgICBpZiAoIWFuY2hvck5vZGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGlmIChhbmNob3JOb2RlLT5wYXJlbnROb2RlKCkgIT0gdGFyZ2V0RWxlbWVu
dCkgewotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkFuY2hvciBub2RlIG11c3QgYmUgY2hp
bGQgb2YgdGhlIHRhcmdldCBlbGVtZW50IjsKKyAgICAgICAgICAgICplcnJvciA9ICJBbmNob3Ig
bm9kZSBtdXN0IGJlIGNoaWxkIG9mIHRoZSB0YXJnZXQgZWxlbWVudCI7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1faGlzdG9yeS0+cGVyZm9ybShh
ZG9wdFB0cihuZXcgSW5zZXJ0QmVmb3JlQWN0aW9uKHRhcmdldEVsZW1lbnQsIG5vZGUsIGFuY2hv
ck5vZGUpKSwgZXJyb3JTdHJpbmcpKQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJv
b2wgc3VjY2VzcyA9IHRhcmdldEVsZW1lbnQtPmluc2VydEJlZm9yZShub2RlLCBhbmNob3JOb2Rl
LCBlYyk7CisgICAgaWYgKGVjIHx8ICFzdWNjZXNzKSB7CisgICAgICAgICplcnJvciA9ICJDb3Vs
ZCBub3QgZHJvcCBub2RlIjsKICAgICAgICAgcmV0dXJuOwotICAgIG1faGlzdG9yeS0+bWFya1Vu
ZG9hYmxlU3RhdGUoKTsKLQorICAgIH0KICAgICAqbmV3Tm9kZUlkID0gcHVzaE5vZGVQYXRoVG9G
cm9udGVuZChub2RlKTsKIH0KIApAQCAtMTMwOCwxNiArMTA3Myw2IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJv
b2wgZW5hYmxlCiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5kbyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcpCi17Ci0gICAgbV9oaXN0b3J5LT51bmRvKGVycm9yU3RyaW5n
KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bWFya1VuZG9hYmxlU3RhdGUoRXJyb3JT
dHJpbmcqKQotewotICAgIG1faGlzdG9yeS0+bWFya1VuZG9hYmxlU3RhdGUoKTsKLX0KLQogdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgcmVzdWx0KQogewogICAgIFN0cmluZyBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RH
cm91cCA/ICpvYmplY3RHcm91cCA6ICIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCA4NmUzYzY3ZTE4MmFiMGU4ZWZmNzcyYTYzZWJhN2NjN2M0
NTA3MmIyLi4yNTlmZWY2NDNlMDU5MTA0OGRiOWZjOGUzNzYxYzhmNjJjN2IwM2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAKQEAgLTE0NCw4ICsxNDMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpOwogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25zdCBpbnQqIGFuY2hv
ck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb3VjaEVtdWxh
dGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5kbyhF
cnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZShFcnJvclN0
cmluZyopOwogCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKQEAgLTE3OSw4
ICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogICAgIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCopIGNvbnN0OwogCi0g
ICAgSW5zcGVjdG9ySGlzdG9yeSogaGlzdG9yeSgpIHsgcmV0dXJuIG1faGlzdG9yeS5nZXQoKTsg
fQotCiAgICAgLy8gV2UgcmVwcmVzZW50IGVtYmVkZGVkIGRvbXMgYXMgYSBwYXJ0IG9mIHRoZSBz
YW1lIGhpZXJhcmNoeS4gSGVuY2Ugd2UgdHJlYXQgY2hpbGRyZW4gb2YgZnJhbWUgb3duZXJzIGRp
ZmZlcmVudGx5LgogICAgIC8vIFdlIGFsc28gc2tpcCB3aGl0ZXNwYWNlIHRleHQgbm9kZXMgY29u
ZGl0aW9uYWxseS4gRm9sbG93aW5nIG1ldGhvZHMgZW5jYXBzdWxhdGUgdGhlc2Ugc3BlY2lmaWNz
LgogICAgIHN0YXRpYyBOb2RlKiBpbm5lckZpcnN0Q2hpbGQoTm9kZSopOwpAQCAtMjQ1LDcgKzI0
MCw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IG1faGlnaGxpZ2h0RGF0
YTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBib29sIG1fc2VhcmNoaW5n
Rm9yTm9kZTsKLSAgICBPd25QdHI8SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OwogfTsKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySGlzdG9yeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNjhj
MWZmNWQxYTNkYTI2NWQ3MjI4MmUyODliYWU0MDRlNzM4YWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckhpc3RvcnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLQotI2luY2x1ZGUgIk5vZGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgewotCi1jbGFzcyBVbmRvYWJsZVN0YXRlTWFyayA6IHB1YmxpYyBJbnNwZWN0b3JI
aXN0b3J5OjpBY3Rpb24gewotcHVibGljOgotICAgIFVuZG9hYmxlU3RhdGVNYXJrKCkgOiBJbnNw
ZWN0b3JIaXN0b3J5OjpBY3Rpb24oIltVbmRvYWJsZVN0YXRlXSIpIHsgfQotCi0gICAgdmlydHVh
bCBib29sIHBlcmZvcm0oRXJyb3JTdHJpbmcqKSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgdW5kbyhFcnJvclN0cmluZyopIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1
YWwgYm9vbCBpc1VuZG9hYmxlU3RhdGVNYXJrKCkgeyByZXR1cm4gdHJ1ZTsgfQotfTsKLQotfQot
Ci1JbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb246OkFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpIDog
bV9uYW1lKG5hbWUpCi17Ci19Ci0KLUluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6fkFjdGlvbigp
Ci17Ci19Ci0KLVN0cmluZyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb246OnRvU3RyaW5nKCkKLXsK
LSAgICByZXR1cm4gbV9uYW1lOwotfQotCi1ib29sIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6
aXNVbmRvYWJsZVN0YXRlTWFyaygpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcg
SW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uOjptZXJnZUlkKCkKLXsKLSAgICByZXR1cm4gIiI7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uOjptZXJnZShQYXNzT3duUHRyPEFjdGlv
bj4pCi17Ci19Ci0KLUluc3BlY3Rvckhpc3Rvcnk6Okluc3BlY3Rvckhpc3RvcnkoKSB7IH0KLQot
SW5zcGVjdG9ySGlzdG9yeTo6fkluc3BlY3Rvckhpc3RvcnkoKSB7IH0KLQotYm9vbCBJbnNwZWN0
b3JIaXN0b3J5OjpwZXJmb3JtKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24sIEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZykKLXsKLSAgICBpZiAoIWFjdGlvbi0+cGVyZm9ybShlcnJvclN0cmluZykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbV9oaXN0b3J5LmlzRW1wdHkoKSAm
JiAhYWN0aW9uLT5tZXJnZUlkKCkuaXNFbXB0eSgpICYmIGFjdGlvbi0+bWVyZ2VJZCgpID09IG1f
aGlzdG9yeS5maXJzdCgpLT5tZXJnZUlkKCkpCi0gICAgICAgIG1faGlzdG9yeS5maXJzdCgpLT5t
ZXJnZShhY3Rpb24pOwotICAgIGVsc2UKLSAgICAgICAgbV9oaXN0b3J5LnByZXBlbmQoYWN0aW9u
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEluc3BlY3Rvckhpc3Rvcnk6Om1hcmtV
bmRvYWJsZVN0YXRlKCkKLXsKLSAgICBtX2hpc3RvcnkucHJlcGVuZChhZG9wdFB0cihuZXcgVW5k
b2FibGVTdGF0ZU1hcmsoKSkpOwotfQotCi1ib29sIEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nKQotewotICAgIHdoaWxlICghbV9oaXN0b3J5LmlzRW1wdHko
KSAmJiBtX2hpc3RvcnkuZmlyc3QoKS0+aXNVbmRvYWJsZVN0YXRlTWFyaygpKQotICAgICAgICBt
X2hpc3RvcnkucmVtb3ZlRmlyc3QoKTsKLQotICAgIHdoaWxlICghbV9oaXN0b3J5LmlzRW1wdHko
KSkgewotICAgICAgICBPd25QdHI8QWN0aW9uPiBmaXJzdCA9IG1faGlzdG9yeS50YWtlRmlyc3Qo
KTsKLSAgICAgICAgaWYgKCFmaXJzdC0+dW5kbyhlcnJvclN0cmluZykpIHsKLSAgICAgICAgICAg
IG1faGlzdG9yeS5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGZpcnN0LT5pc1VuZG9hYmxlU3RhdGVNYXJrKCkpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJbnNwZWN0b3JI
aXN0b3J5OjpyZXNldCgpCi17Ci0gICAgbV9oaXN0b3J5LmNsZWFyKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTUwNmUwNWI5MDI2MmY3MzUxNGU0ZmM1YTJhYzFiN2Y3ZjQ1ZWQ1My4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgSW5zcGVjdG9ySGlzdG9yeV9oCi0jZGVmaW5lIEluc3BlY3Rvckhpc3RvcnlfaAot
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENvbnRhaW5lck5vZGU7Ci1jbGFzcyBFbGVt
ZW50OwotY2xhc3MgTm9kZTsKLQotdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7Ci0KLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotCi1jbGFzcyBJbnNwZWN0b3JIaXN0b3J5IHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JIaXN0b3J5KTsKLXB1YmxpYzoKLSAgICBjbGFzcyBBY3Rp
b24gewotICAgIHB1YmxpYzoKLSAgICAgICAgQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0g
ICAgICAgIHZpcnR1YWwgfkFjdGlvbigpOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmlu
ZygpOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1VuZG9hYmxlU3RhdGVNYXJrKCk7Ci0KLSAg
ICAgICAgdmlydHVhbCBTdHJpbmcgbWVyZ2VJZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbWVy
Z2UoUGFzc093blB0cjxBY3Rpb24+KTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShF
cnJvclN0cmluZyopID0gMDsKLSAgICAgICAgdmlydHVhbCBib29sIHVuZG8oRXJyb3JTdHJpbmcq
KSA9IDA7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICB9OwotCi0g
ICAgSW5zcGVjdG9ySGlzdG9yeSgpOwotICAgIHZpcnR1YWwgfkluc3BlY3Rvckhpc3RvcnkoKTsK
LQotICAgIGJvb2wgcGVyZm9ybShQYXNzT3duUHRyPEFjdGlvbj4sIEVycm9yU3RyaW5nKik7Ci0g
ICAgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZSgpOwotCi0gICAgYm9vbCB1bmRvKEVycm9yU3RyaW5n
Kik7Ci0gICAgdm9pZCByZXNldCgpOwotCi1wcml2YXRlOgotICAgIHZvaWQgZHVtcCgpOwotICAg
IERlcXVlPE93blB0cjxBY3Rpb24+ID4gbV9oaXN0b3J5OwotfTsKLQotI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3Rvckhpc3RvcnlfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBjN2M0ZWRiNzdhMzg5NGIyYjRiZTYyZTQ4MWQ1
NGU3MzllZTRhMmM3Li41N2RmOTkyZTk5MmI3NmFiMTQ1NTIwZjZjZmJlZTU1MmRlMDY5YTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC0yODAsNyArMjgwLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9y
U3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3QKIC8vCiAvLyBUaGUgcHJv
cGVydHlUZXh0IChpZiBub3QgZW1wdHkpIGlzIGNoZWNrZWQgdG8gYmUgYSB2YWxpZCBzdHlsZSBk
ZWNsYXJhdGlvbiAoY29udGFpbmluZyBhdCBsZWFzdCBvbmUgcHJvcGVydHkpLiBJZiBub3QsCiAv
LyB0aGUgbWV0aG9kIHJldHVybnMgZmFsc2UgKGRlbm90aW5nIGFuIGVycm9yKS4KLWJvb2wgSW5z
cGVjdG9yU3R5bGU6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVu
c2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VGV4dCwgYm9vbCBvdmVyd3JpdGUs
IFN0cmluZyogb2xkVGV4dCkKK2Jvb2wgSW5zcGVjdG9yU3R5bGU6OnNldFByb3BlcnR5VGV4dChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHBy
b3BlcnR5VGV4dCwgYm9vbCBvdmVyd3JpdGUpCiB7CiAgICAgQVNTRVJUKG1fcGFyZW50U3R5bGVT
aGVldCk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGJvZ3VzUHJvcGVydHlOYW1l
LCAoIi13ZWJraXQtYm9ndXotcHJvcGVydGVlIikpOwpAQCAtMzI4LDEwICszMjgsOSBAQCBib29s
IEluc3BlY3RvclN0eWxlOjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCwgYwogICAgIH0KIAogICAgIEluc3BlY3RvclN0eWxlVGV4dEVkaXRv
ciBlZGl0b3IoJmFsbFByb3BlcnRpZXMsICZtX2Rpc2FibGVkUHJvcGVydGllcywgdGV4dCwgbmV3
TGluZUFuZFdoaXRlc3BhY2VEZWxpbWl0ZXJzKCkpOwotICAgIGlmIChvdmVyd3JpdGUpIHsKLSAg
ICAgICAgKm9sZFRleHQgPSBhbGxQcm9wZXJ0aWVzLmF0KGluZGV4KS5yYXdUZXh0OworICAgIGlm
IChvdmVyd3JpdGUpCiAgICAgICAgIGVkaXRvci5yZXBsYWNlUHJvcGVydHkoaW5kZXgsIHByb3Bl
cnR5VGV4dCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZQogICAgICAgICBlZGl0b3IuaW5zZXJ0UHJv
cGVydHkoaW5kZXgsIHByb3BlcnR5VGV4dCwgc291cmNlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5z
dHlsZUJvZHlSYW5nZS5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gYXBwbHlTdHlsZVRleHQoZWRp
dG9yLnN0eWxlVGV4dCgpKTsKQEAgLTM4Niw3ICszODUsNyBAQCBib29sIEluc3BlY3RvclN0eWxl
OjpzdHlsZVRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFN0cmluZyBzdHlsZVNoZWV0VGV4dDsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX3BhcmVu
dFN0eWxlU2hlZXQtPmdldFRleHQoJnN0eWxlU2hlZXRUZXh0KTsKKyAgICBib29sIHN1Y2Nlc3Mg
PSBtX3BhcmVudFN0eWxlU2hlZXQtPnRleHQoJnN0eWxlU2hlZXRUZXh0KTsKICAgICBpZiAoIXN1
Y2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzMwLDcgKzcyOSw3IEBAIGJvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0UnVsZVNlbGVjdG9yKGNvbnN0IEluc3BlY3RvckNTU0lk
JiBpZCwgY29uc3QgU3RyaW5nCiBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OmFk
ZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKIHsKICAgICBTdHJpbmcgc3R5bGVTaGVldFRl
eHQ7Ci0gICAgYm9vbCBzdWNjZXNzID0gZ2V0VGV4dCgmc3R5bGVTaGVldFRleHQpOworICAgIGJv
b2wgc3VjY2VzcyA9IHRleHQoJnN0eWxlU2hlZXRUZXh0KTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgIHJldHVybiAwOwogCkBAIC03NzgsNyArNzc3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgp
CiAgICAgcmVzdWx0LT5zZXRBcnJheSgicnVsZXMiLCBjc3NSdWxlcy5yZWxlYXNlKCkpOwogCiAg
ICAgU3RyaW5nIHN0eWxlU2hlZXRUZXh0OwotICAgIGJvb2wgc3VjY2VzcyA9IGdldFRleHQoJnN0
eWxlU2hlZXRUZXh0KTsKKyAgICBib29sIHN1Y2Nlc3MgPSB0ZXh0KCZzdHlsZVNoZWV0VGV4dCk7
CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJ0ZXh0Iiwgc3R5
bGVTaGVldFRleHQpOwogCkBAIC04NTgsNyArODU3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVE
ZWMKICAgICAvLyBTdHlsZSB0ZXh0IGNhbm5vdCBiZSByZXRyaWV2ZWQgd2l0aG91dCBzdHlsZXNo
ZWV0LCBzbyBzZXQgY3NzVGV4dCBoZXJlLgogICAgIGlmIChzb3VyY2VEYXRhKSB7CiAgICAgICAg
IFN0cmluZyBzaGVldFRleHQ7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGdldFRleHQoJnNoZWV0
VGV4dCk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRleHQoJnNoZWV0VGV4dCk7CiAgICAgICAg
IGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBjb25zdCBTb3VyY2VSYW5nZSYgYm9keVJhbmdl
ID0gc291cmNlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5zdHlsZUJvZHlSYW5nZTsKICAgICAgICAg
ICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJjc3NUZXh0Iiwgc2hlZXRUZXh0LnN1YnN0cmluZyhib2R5
UmFuZ2Uuc3RhcnQsIGJvZHlSYW5nZS5lbmQgLSBib2R5UmFuZ2Uuc3RhcnQpKTsKQEAgLTg2OCw3
ICs4NjcsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlYwogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi1ib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFByb3BlcnR5VGV4dChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCwgdW5zaWdu
ZWQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3Ry
aW5nKiBvbGRUZXh0KQorYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRQcm9wZXJ0eVRleHQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQsIHVuc2ln
bmVkIHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUpCiB7
CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IGluc3BlY3RvclN0
eWxlRm9ySWQoaWQpOwogICAgIGlmICghaW5zcGVjdG9yU3R5bGUpIHsKQEAgLTg3Niw3ICs4NzUs
NyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5zZXRQcm9wZXJ0eVRleHQoZXJyb3JTdHJp
bmcsIHByb3BlcnR5SW5kZXgsIHRleHQsIG92ZXJ3cml0ZSwgb2xkVGV4dCk7CisgICAgcmV0dXJu
IGluc3BlY3RvclN0eWxlLT5zZXRQcm9wZXJ0eVRleHQoZXJyb3JTdHJpbmcsIHByb3BlcnR5SW5k
ZXgsIHRleHQsIG92ZXJ3cml0ZSk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6dG9n
Z2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JDU1NJ
ZCYgaWQsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSkKQEAgLTg5Nyw3ICs4
OTYsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdAogICAgIHJldHVybiBzdWNjZXNzOwogfQog
Ci1ib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmdldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0
Citib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiB7
CiAgICAgaWYgKCFlbnN1cmVUZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNDIs
NyArMTI0MSw3IEBAIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRN
b2RpZnlFbGVtZW50QXR0cmlidXRlKCkKICAgICBtX3J1bGVTb3VyY2VEYXRhLmNsZWFyKCk7CiB9
CiAKLWJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpnZXRUZXh0KFN0cmlu
ZyogcmVzdWx0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6
OnRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzU3R5bGVUZXh0VmFs
aWQpIHsKICAgICAgICAgbV9zdHlsZVRleHQgPSBlbGVtZW50U3R5bGVUZXh0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCBkNjI3YjFk
ZGFlMWQzNzI3ZWNiN2RhYmM2MDI2NGYwN2EyYTgzN2JiLi5mMzE5NWU4ODllN2MyMGJjMmE4Nzc5
NDFmZGM4N2Q1NTNiZDNiZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNv
bnN0OwogICAgIGJvb2wgaGFzRGlzYWJsZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1f
ZGlzYWJsZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc2V0UHJvcGVydHlUZXh0
KEVycm9yU3RyaW5nKiwgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBv
dmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCk7CisgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQoRXJy
b3JTdHJpbmcqLCB1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3
cml0ZSk7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIHVuc2lnbmVkIGlu
ZGV4LCBib29sIGRpc2FibGUpOwogCiBwcml2YXRlOgpAQCAtMTc0LDEwICsxNzQsMTAgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclN0eWxl
U2hlZXRJbmZvKCk7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKik7Ci0gICAgYm9vbCBzZXRQ
cm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmlu
Zyogb2xkUHJvcGVydHlUZXh0KTsKKyAgICBib29sIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmlu
ZyosIGNvbnN0IEluc3BlY3RvckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSk7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eShF
cnJvclN0cmluZyosIGNvbnN0IEluc3BlY3RvckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRl
eCwgYm9vbCBkaXNhYmxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRUZXh0KFN0cmluZyogcmVz
dWx0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7
CiAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUZvcklkKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50
LCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKICAgICB2b2lkIGRpZE1vZGlmeUVsZW1lbnRBdHRy
aWJ1dGUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1
YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYg
aWQpIGNvbnN0IHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxp
bmVTdHlsZSgpOyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCA3YjQ4NzJlNzRhMWYyNGVmNjcw
NTc5MGIxYmJkOTkyNjNjZWNhNjdhLi4xZWI3ZDAzMmZhYWQ1YTVjMDEyM2E2NzVhNTZkOGJlMmU5
ODZkMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzCkBAIC02NDMsOCArNjQzLDYgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3Bl
cnR5LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBBbiBpbmRleCBwYXN0IGFsbCB0aGUgcHJv
cGVydGllcyBhZGRzIGEgbmV3IHByb3BlcnR5IHRvIHRoZSBzdHlsZS4KICAgICAgICAgQ1NTQWdl
bnQuc2V0UHJvcGVydHlUZXh0KHRoaXMub3duZXJTdHlsZS5pZCwgdGhpcy5pbmRleCwgcHJvcGVy
dHlUZXh0LCB0aGlzLmluZGV4IDwgdGhpcy5vd25lclN0eWxlLnBhc3RMYXN0U291cmNlUHJvcGVy
dHlJbmRleCgpLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICAgICAgaWYgKG1ham9yQ2hhbmdl
KQotICAgICAgICAgICAgRE9NQWdlbnQubWFya1VuZG9hYmxlU3RhdGUoKTsKICAgICB9LAogCiAg
ICAgc2V0VmFsdWU6IGZ1bmN0aW9uKG5ld1ZhbHVlLCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCmluZGV4IGNhYWU3ZTg4N2M2Y2Q2NGNjY2U2OWI4Mjg0YjQxMWU5ZTdkYjE3ZWUuLjUy
NTZiZDEwNDM5MmNkMjc3YzQ2MWE0NmIxNDM4NDIyOTJiMjZiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTE2Nywx
NiArMTY3LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYihmYWxzZSk7CiAKLSAgICAgICAgdGhpcy5fdXBk
YXRlU2lkZWJhcnMoKTsKLQotICAgICAgICBpZiAoc2VsZWN0ZWROb2RlKSB7Ci0gICAgICAgICAg
ICBDb25zb2xlQWdlbnQuYWRkSW5zcGVjdGVkTm9kZShzZWxlY3RlZE5vZGUuaWQpOwotICAgICAg
ICAgICAgdGhpcy5fbGFzdFZhbGlkU2VsZWN0ZWROb2RlID0gc2VsZWN0ZWROb2RlOwotICAgICAg
ICB9Ci0gICAgfSwKLQotICAgIF91cGRhdGVTaWRlYmFyczogZnVuY3Rpb24oKQotICAgIHsKICAg
ICAgICAgZm9yICh2YXIgcGFuZSBpbiB0aGlzLnNpZGViYXJQYW5lcykKICAgICAgICAgICAgdGhp
cy5zaWRlYmFyUGFuZXNbcGFuZV0ubmVlZHNVcGRhdGUgPSB0cnVlOwogCkBAIC0xODQsNiArMTc0
LDExIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy51cGRhdGVNZXRyaWNzKCk7CiAgICAgICAgIHRoaXMudXBkYXRlUHJvcGVydGllcygpOwog
ICAgICAgICB0aGlzLnVwZGF0ZUV2ZW50TGlzdGVuZXJzKCk7CisKKyAgICAgICAgaWYgKHNlbGVj
dGVkTm9kZSkgeworICAgICAgICAgICAgQ29uc29sZUFnZW50LmFkZEluc3BlY3RlZE5vZGUoc2Vs
ZWN0ZWROb2RlLmlkKTsKKyAgICAgICAgICAgIHRoaXMuX2xhc3RWYWxpZFNlbGVjdGVkTm9kZSA9
IHNlbGVjdGVkTm9kZTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9u
KCkKQEAgLTkxMiw3ICs5MDcsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgewogICAgICAgICAvLyBDbWQvQ29udHJvbCArIFNoaWZ0ICsgQyBzaG91bGQg
YmUgYSBzaG9ydGN1dCB0byBjbGlja2luZyB0aGUgTm9kZSBTZWFyY2ggQnV0dG9uLgogICAgICAg
ICAvLyBUaGlzIHNob3J0Y3V0IG1hdGNoZXMgRmlyZWJ1Zy4KLSAgICAgICAgaWYgKGV2ZW50Lmtl
eUlkZW50aWZpZXIgPT09ICJVKzAwNDMiKSB7IC8vIEMga2V5CisgICAgICAgIGlmIChldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiVSswMDQzIikgeyAgICAgLy8gQyBrZXkKICAgICAgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuaXNNYWMoKSkKICAgICAgICAgICAgICAgICB2YXIgaXNOb2RlU2VhcmNo
S2V5ID0gZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5ICYm
IGV2ZW50LnNoaWZ0S2V5OwogICAgICAgICAgICAgZWxzZQpAQCAtOTIzLDEwICs5MTgsNyBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
ZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5ldmVudEhhc0N0cmxPck1ldGEoZXZlbnQpICYmIGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJVKzAwNUEiKSAgLy8gWiBrZXkKLSAgICAgICAgICAgIERPTUFn
ZW50LnVuZG8odGhpcy5fdXBkYXRlU2lkZWJhcnMuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAg
IGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBmNDNh
YTU4OWM2OGQ2NTc0MWRkZjFiMmZlOTFiODIwM2QyOWVhMDA3Li42YmVjNjEwODNlOTJhOTMyODE0
YjA4NWQwYzc1ODNmOWM0MGUwY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTEwNjgsNyArMTA2OCw3
IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHZhciBpbmhlcml0ZWQgPSB0aGlzLmlzUHJvcGVydHlJbmhlcml0ZWQocHJvcGVy
dHkubmFtZSk7CiAgICAgICAgICAgICB2YXIgb3ZlcmxvYWRlZCA9IHRoaXMuaXNQcm9wZXJ0eU92
ZXJsb2FkZWQocHJvcGVydHkubmFtZSwgaXNTaG9ydGhhbmQpOwogCi0gICAgICAgICAgICB2YXIg
aXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50KHRoaXMsIHRo
aXMuX3BhcmVudFBhbmUsIHRoaXMuc3R5bGVSdWxlLCBzdHlsZSwgcHJvcGVydHksIGlzU2hvcnRo
YW5kLCBpbmhlcml0ZWQsIG92ZXJsb2FkZWQpOworICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcg
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudCh0aGlzLl9wYXJlbnRQYW5lLCB0
aGlzLnN0eWxlUnVsZSwgc3R5bGUsIHByb3BlcnR5LCBpc1Nob3J0aGFuZCwgaW5oZXJpdGVkLCBv
dmVybG9hZGVkKTsKICAgICAgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmFwcGVu
ZENoaWxkKGl0ZW0pOwogICAgICAgICAgICAgaGFuZGxlZFByb3BlcnRpZXNbcHJvcGVydHkubmFt
ZV0gPSBwcm9wZXJ0eTsKICAgICAgICAgfQpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dmFyIHN0eWxlID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGU7CiAgICAgICAgIHZhciBwcm9wZXJ0eSA9
IHN0eWxlLm5ld0JsYW5rUHJvcGVydHkoKTsKLSAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudCh0aGlzLCB0aGlzLl9wYXJlbnRQYW5lLCB0
aGlzLnN0eWxlUnVsZSwgc3R5bGUsIHByb3BlcnR5LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dCh0aGlzLl9wYXJlbnRQYW5lLCB0aGlzLnN0eWxlUnVsZSwgc3R5bGUsIHByb3BlcnR5LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBw
ZW5kQ2hpbGQoaXRlbSk7CiAgICAgICAgIGl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50
ID0gIiI7CiAgICAgICAgIGl0ZW0uX25ld1Byb3BlcnR5ID0gdHJ1ZTsKQEAgLTEyOTgsNyArMTI5
OCw3IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuaXF1ZVByb3BlcnRpZXMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHVuaXF1ZVByb3BlcnRpZXNb
aV07CiAgICAgICAgICAgICB2YXIgaW5oZXJpdGVkID0gdGhpcy5faXNQcm9wZXJ0eUluaGVyaXRl
ZChwcm9wZXJ0eS5uYW1lKTsKLSAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQodGhpcywgbnVsbCwgdGhpcy5zdHlsZVJ1bGUsIHN0
eWxlLCBwcm9wZXJ0eSwgZmFsc2UsIGluaGVyaXRlZCwgZmFsc2UpOworICAgICAgICAgICAgdmFy
IGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudChudWxsLCB0
aGlzLnN0eWxlUnVsZSwgc3R5bGUsIHByb3BlcnR5LCBmYWxzZSwgaW5oZXJpdGVkLCBmYWxzZSk7
CiAgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChpdGVt
KTsKICAgICAgICAgICAgIHRoaXMuX3Byb3BlcnR5VHJlZUVsZW1lbnRzW3Byb3BlcnR5Lm5hbWVd
ID0gaXRlbTsKICAgICAgICAgfQpAQCAtMTQyNCw5ICsxNDI0LDggQEAgV2ViSW5zcGVjdG9yLkJs
YW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLlN0eWwKICAqIEBleHRlbmRzIHtUcmVlRWxlbWVudH0KICAqIEBwYXJhbSB7P1dlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZX0gcGFyZW50UGFuZQogICovCi1XZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc2VjdGlvbiwgcGFyZW50UGFuZSwgc3R5
bGVSdWxlLCBzdHlsZSwgcHJvcGVydHksIHNob3J0aGFuZCwgaW5oZXJpdGVkLCBvdmVybG9hZGVk
KQorV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHBhcmVu
dFBhbmUsIHN0eWxlUnVsZSwgc3R5bGUsIHByb3BlcnR5LCBzaG9ydGhhbmQsIGluaGVyaXRlZCwg
b3ZlcmxvYWRlZCkKIHsKLSAgICB0aGlzLnNlY3Rpb24gPSBzZWN0aW9uOwogICAgIHRoaXMuX3Bh
cmVudFBhbmUgPSBwYXJlbnRQYW5lOwogICAgIHRoaXMuX3N0eWxlUnVsZSA9IHN0eWxlUnVsZTsK
ICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CkBAIC0xODIwLDcgKzE4MTksNyBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgdmFyIGxpdmVQcm9wZXJ0eSA9IHRoaXMuc3R5bGUuZ2V0TGl2ZVByb3Bl
cnR5KG5hbWUpOwotICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydHlUcmVlRWxlbWVudCh0aGlzLCB0aGlzLl9wYXJlbnRQYW5lLCB0aGlzLl9zdHlsZVJ1
bGUsIHRoaXMuc3R5bGUsIGxpdmVQcm9wZXJ0eSwgZmFsc2UsIGluaGVyaXRlZCwgb3ZlcmxvYWRl
ZCk7CisgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50KHRoaXMuX3BhcmVudFBhbmUsIHRoaXMuX3N0eWxlUnVsZSwgdGhpcy5zdHls
ZSwgbGl2ZVByb3BlcnR5LCBmYWxzZSwgaW5oZXJpdGVkLCBvdmVybG9hZGVkKTsKICAgICAgICAg
ICAgIHRoaXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAgICAgICAgIH0KICAgICB9LApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdh
MWYwYjc2YWVmZDVkODlhZDA2MmMzZjJjOGIyNzFlNWQ2NzM2OTIuLmQ1MDYxNTdmYTMzOTI0Mzhh
Y2RmNTUwYzUzYzVkOWEzYjdlNjY2MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wMi0w
NyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNjkzMi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTA2OTMyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Nzk4OAorCisgICAgICAgIEJyZWFrcyBNYWMgYm90cyAoUmVxdWVz
dGVkIGJ5IHBmZWxkbWFuIG9uICN3ZWJraXQpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3Qu
SW5zcGVjdG9yVGVzdC5yYW5nZVRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy91
bmRvLWRvbS1lZGl0cy0yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZWxlbWVudHMvdW5kby1kb20tZWRpdHMtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9lbGVtZW50cy91bmRvLWRvbS1lZGl0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy91bmRvLWFkZC1wcm9wZXJ0eS1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy91bmRvLWFkZC1wcm9wZXJ0
eS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvdW5kby1jaGFuZ2Ut
cHJvcGVydHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHls
ZXMvdW5kby1jaGFuZ2UtcHJvcGVydHkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL3VuZG8tcHJvcGVydHktdG9nZ2xlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3VuZG8tcHJvcGVydHktdG9nZ2xlLmh0bWw6IFJlbW92
ZWQuCisKIDIwMTItMDItMDcgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCBhIGNvdXBsZSBtb3JlIGNocm9taXVtIHJlYmFzZWxpbmVz
IGFmdGVyIHIxMDY5MTguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZWxlbWVudHMtdGVzdC5qcwppbmRleCBlOWFhNjYwYjJlZjkzYjgyM2M2MDFhZGY2ZTFkZDdiYWY0
YjMzM2Y1Li4yZGM5OTdjNWUwNGY0ZGZhZTY1NGM4YTVkY2Q0NTNhNjgyZWMwNGY0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAg
LTM4MSwzNyArMzgxLDYgQEAgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQgPSBmdW5jdGlvbihyYW5n
ZSkKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gIlt1bmRlZmluZWQtdW5kZWZpbmVk
XSI7CiAgICAgcmV0dXJuICJbIiArIHJhbmdlLnN0YXJ0ICsgIi0iICsgcmFuZ2UuZW5kICsgIl0i
OwotfQotCi1JbnNwZWN0b3JUZXN0LmdlbmVyYXRlVW5kb1Rlc3QgPSBmdW5jdGlvbih0ZXN0Qm9k
eSkKLXsKLSAgICBmdW5jdGlvbiByZXN1bHQobmV4dCkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXN0
Tm9kZSA9IEluc3BlY3RvclRlc3QuZXhwYW5kZWROb2RlV2l0aElkKC9mdW5jdGlvblxzKFteKF0q
KS8uZXhlYyh0ZXN0Qm9keSlbMV0pOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
SW5pdGlhbDoiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRWxlbWVudHNUcmVlKHRlc3RO
b2RlKTsKLQotICAgICAgICB0ZXN0Qm9keShzdGVwMSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gc3Rl
cDEoKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUG9z
dC1hY3Rpb246Iik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBFbGVtZW50c1RyZWUo
dGVzdE5vZGUpOwotICAgICAgICAgICAgRE9NQWdlbnQudW5kbyhzdGVwMik7Ci0gICAgICAgIH0K
LQotICAgICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJQb3N0LXVuZG8gKGluaXRpYWwpOiIpOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wRWxlbWVudHNUcmVlKHRlc3ROb2RlKTsKLSAgICAgICAgICAgIG5l
eHQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXN1bHQudG9TdHJpbmcgPSBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGVzdEJvZHkudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KK307CiAKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMvdW5kby1kb20tZWRpdHMtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMvdW5kby1kb20tZWRpdHMtMi1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMWFlZDY5NGJhNDlkZTg4YjhlMTgwYTNkODBhYjBi
ZjI2OGZhOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRzLTItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotVGVzdHMgdGhhdCBET00gbW9kaWZp
Y2F0aW9ucyBkb25lIGluIHRoZSBFbGVtZW50cyBwYW5lbCBhcmUgdW5kb2FibGUgKFBhcnQgMiku
Ci0KLQotUnVubmluZzogdGVzdFNldFVwCi0KLVJ1bm5pbmc6IHRlc3RTZXRBdHRyaWJ1dGUKLUlu
aXRpYWw6Ci0tIDxkaXYgaWQ9InRlc3RTZXRBdHRyaWJ1dGUiPgotICAgICAgPGRpdiBmb289ImF0
dHJpYnV0ZSB2YWx1ZSIgaWQ9Im5vZGUtdG8tc2V0LWF0dHJpYnV0ZSI+PC9kaXY+Ci0gIDwvZGl2
PgotUG9zdC1hY3Rpb246Ci0tIDxkaXYgaWQ9InRlc3RTZXRBdHRyaWJ1dGUiPgotICAgICAgPGRp
diBpZD0ibm9kZS10by1zZXQtYXR0cmlidXRlIiBiYXI9ImVkaXRlZCBhdHRyaWJ1dGUiPjwvZGl2
PgotICA8L2Rpdj4KLVBvc3QtdW5kbyAoaW5pdGlhbCk6Ci0tIDxkaXYgaWQ9InRlc3RTZXRBdHRy
aWJ1dGUiPgotICAgICAgPGRpdiBpZD0ibm9kZS10by1zZXQtYXR0cmlidXRlIiBmb289ImF0dHJp
YnV0ZSB2YWx1ZSI+PC9kaXY+Ci0gIDwvZGl2PgotCi1SdW5uaW5nOiB0ZXN0UmVtb3ZlQXR0cmli
dXRlCi1Jbml0aWFsOgotLSA8ZGl2IGlkPSJ0ZXN0UmVtb3ZlQXR0cmlidXRlIj4KLSAgICAgIDxk
aXYgZm9vPSJhdHRyaWJ1dGUgdmFsdWUiIGlkPSJub2RlLXRvLXJlbW92ZS1hdHRyaWJ1dGUiPjwv
ZGl2PgotICA8L2Rpdj4KLVBvc3QtYWN0aW9uOgotLSA8ZGl2IGlkPSJ0ZXN0UmVtb3ZlQXR0cmli
dXRlIj4KLSAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tcmVtb3ZlLWF0dHJpYnV0ZSI+PC9kaXY+Ci0g
IDwvZGl2PgotUG9zdC11bmRvIChpbml0aWFsKToKLS0gPGRpdiBpZD0idGVzdFJlbW92ZUF0dHJp
YnV0ZSI+Ci0gICAgICA8ZGl2IGlkPSJub2RlLXRvLXJlbW92ZS1hdHRyaWJ1dGUiIGZvbz0iYXR0
cmlidXRlIHZhbHVlIj48L2Rpdj4KLSAgPC9kaXY+Ci0KLVJ1bm5pbmc6IHRlc3RBZGRBdHRyaWJ1
dGUKLUluaXRpYWw6Ci0tIDxkaXYgaWQ9InRlc3RBZGRBdHRyaWJ1dGUiPgotICAgICAgPGRpdiBp
ZD0ibm9kZS10by1hZGQtYXR0cmlidXRlIj48L2Rpdj4KLSAgPC9kaXY+Ci1Qb3N0LWFjdGlvbjoK
LS0gPGRpdiBpZD0idGVzdEFkZEF0dHJpYnV0ZSI+Ci0gICAgICA8ZGl2IGlkPSJub2RlLXRvLWFk
ZC1hdHRyaWJ1dGUiIG5ld2F0dHI9Im5ldy12YWx1ZSI+PC9kaXY+Ci0gIDwvZGl2PgotUG9zdC11
bmRvIChpbml0aWFsKToKLS0gPGRpdiBpZD0idGVzdEFkZEF0dHJpYnV0ZSI+Ci0gICAgICA8ZGl2
IGlkPSJub2RlLXRvLWFkZC1hdHRyaWJ1dGUiPjwvZGl2PgotICA8L2Rpdj4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRzLTIuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy91bmRvLWRvbS1lZGl0cy0yLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNzg2YzFiMzM4MDg4NmZkOWQ5ZWE1Yzk3YjI5
NDg0ZjI5MDMxZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRzLTIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIHRl
c3RTdWl0ZSA9IFtdOwotCi0gICAgZnVuY3Rpb24gdGVzdFNldFVwKG5leHQpCi0gICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZEVsZW1lbnRzVHJlZShuZXh0KTsKLSAgICB9Ci0gICAg
dGVzdFN1aXRlLnB1c2godGVzdFNldFVwKTsKLQotCi0gICAgZnVuY3Rpb24gdGVzdFNldEF0dHJp
YnV0ZShjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBub2RlID0gSW5zcGVjdG9yVGVzdC5l
eHBhbmRlZE5vZGVXaXRoSWQoIm5vZGUtdG8tc2V0LWF0dHJpYnV0ZSIpOyAKLSAgICAgICAgbm9k
ZS5zZXRBdHRyaWJ1dGUoImZvbyIsICJiYXI9XCJlZGl0ZWQgYXR0cmlidXRlXCIiLCBjYWxsYmFj
ayk7Ci0gICAgfQotICAgIHRlc3RTdWl0ZS5wdXNoKEluc3BlY3RvclRlc3QuZ2VuZXJhdGVVbmRv
VGVzdCh0ZXN0U2V0QXR0cmlidXRlKSk7Ci0KLQotICAgIGZ1bmN0aW9uIHRlc3RSZW1vdmVBdHRy
aWJ1dGUoY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IEluc3BlY3RvclRlc3Qu
ZXhwYW5kZWROb2RlV2l0aElkKCJub2RlLXRvLXJlbW92ZS1hdHRyaWJ1dGUiKTsgCi0gICAgICAg
IG5vZGUucmVtb3ZlQXR0cmlidXRlKCJmb28iLCBjYWxsYmFjayk7Ci0gICAgfQotICAgIHRlc3RT
dWl0ZS5wdXNoKEluc3BlY3RvclRlc3QuZ2VuZXJhdGVVbmRvVGVzdCh0ZXN0UmVtb3ZlQXR0cmli
dXRlKSk7Ci0KLQotICAgIGZ1bmN0aW9uIHRlc3RBZGRBdHRyaWJ1dGUoY2FsbGJhY2spCi0gICAg
ewotICAgICAgICB2YXIgbm9kZSA9IEluc3BlY3RvclRlc3QuZXhwYW5kZWROb2RlV2l0aElkKCJu
b2RlLXRvLWFkZC1hdHRyaWJ1dGUiKTsgCi0gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCIiLCAi
bmV3YXR0cj1cIm5ldy12YWx1ZVwiIiwgY2FsbGJhY2spOwotICAgIH0KLSAgICB0ZXN0U3VpdGUu
cHVzaChJbnNwZWN0b3JUZXN0LmdlbmVyYXRlVW5kb1Rlc3QodGVzdEFkZEF0dHJpYnV0ZSkpOwot
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZSh0ZXN0U3VpdGUpOwotfQotCi08L3Nj
cmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyB0
aGF0IERPTSBtb2RpZmljYXRpb25zIGRvbmUgaW4gdGhlIEVsZW1lbnRzIHBhbmVsIGFyZSB1bmRv
YWJsZSAoUGFydCAyKS4KLTwvcD4KLQotPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4KLSAgICA8
ZGl2IGlkPSJ0ZXN0U2V0QXR0cmlidXRlIj4KLSAgICAgICAgPGRpdiBmb289ImF0dHJpYnV0ZSB2
YWx1ZSIgaWQ9Im5vZGUtdG8tc2V0LWF0dHJpYnV0ZSI+PC9kaXY+Ci0gICAgPC9kaXY+Ci0KLSAg
ICA8ZGl2IGlkPSJ0ZXN0UmVtb3ZlQXR0cmlidXRlIj4KLSAgICAgICAgPGRpdiBmb289ImF0dHJp
YnV0ZSB2YWx1ZSIgaWQ9Im5vZGUtdG8tcmVtb3ZlLWF0dHJpYnV0ZSI+PC9kaXY+Ci0gICAgPC9k
aXY+Ci0KLSAgICA8ZGl2IGlkPSJ0ZXN0QWRkQXR0cmlidXRlIj4KLSAgICAgICAgPGRpdiBpZD0i
bm9kZS10by1hZGQtYXR0cmlidXRlIj48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotCi08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMv
dW5kby1kb20tZWRpdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzL3VuZG8tZG9tLWVkaXRzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOWE2MWI3MzkyMjY5OTA1MTRlMDc4MDZkYWExOTQ4MGY1ZDdkZDRmNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMvdW5kby1kb20tZWRpdHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNjYgKzAsMCBAQAotVGVzdHMgdGhhdCBET00gbW9kaWZpY2F0aW9ucyBkb25lIGluIHRoZSBF
bGVtZW50cyBwYW5lbCBhcmUgdW5kb2FibGUuCi0KLQotUnVubmluZzogdGVzdFNldFVwCi0KLVJ1
bm5pbmc6IHRlc3RSZW1vdmUKLUluaXRpYWw6Ci0tIDxkaXYgaWQ9InRlc3RSZW1vdmUiPgotICAg
ICAgPGRpdiBpZD0ibm9kZS10by1yZW1vdmUiPjwvZGl2PgotICA8L2Rpdj4KLVBvc3QtYWN0aW9u
OgotLSA8ZGl2IGlkPSJ0ZXN0UmVtb3ZlIj4KLSAgPC9kaXY+Ci1Qb3N0LXVuZG8gKGluaXRpYWwp
OgotLSA8ZGl2IGlkPSJ0ZXN0UmVtb3ZlIj4KLSAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tcmVtb3Zl
Ij48L2Rpdj4KLSAgPC9kaXY+Ci0KLVJ1bm5pbmc6IHRlc3RTZXROb2RlTmFtZQotSW5pdGlhbDoK
LS0gPGRpdiBpZD0idGVzdFNldE5vZGVOYW1lIj4KLSAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tc2V0
LW5hbWUiPjwvZGl2PgotICA8L2Rpdj4KLVBvc3QtYWN0aW9uOgotLSA8ZGl2IGlkPSJ0ZXN0U2V0
Tm9kZU5hbWUiPgotICAgICAgPHNwYW4gaWQ9Im5vZGUtdG8tc2V0LW5hbWUiPjwvc3Bhbj4KLSAg
PC9kaXY+Ci1Qb3N0LXVuZG8gKGluaXRpYWwpOgotLSA8ZGl2IGlkPSJ0ZXN0U2V0Tm9kZU5hbWUi
PgotICAgICAgPGRpdiBpZD0ibm9kZS10by1zZXQtbmFtZSI+PC9kaXY+Ci0gIDwvZGl2PgotCi1S
dW5uaW5nOiB0ZXN0U2V0Tm9kZVZhbHVlCi1Jbml0aWFsOgotLSA8ZGl2IGlkPSJ0ZXN0U2V0Tm9k
ZVZhbHVlIj4KLSAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tc2V0LXZhbHVlIj5UZXh0PC9kaXY+Ci0g
IDwvZGl2PgotUG9zdC1hY3Rpb246Ci0tIDxkaXYgaWQ9InRlc3RTZXROb2RlVmFsdWUiPgotICAg
ICAgPGRpdiBpZD0ibm9kZS10by1zZXQtdmFsdWUiPk5ldyBUZXh0PC9kaXY+Ci0gIDwvZGl2Pgot
UG9zdC11bmRvIChpbml0aWFsKToKLS0gPGRpdiBpZD0idGVzdFNldE5vZGVWYWx1ZSI+Ci0gICAg
ICA8ZGl2IGlkPSJub2RlLXRvLXNldC12YWx1ZSI+VGV4dDwvZGl2PgotICA8L2Rpdj4KLQotUnVu
bmluZzogdGVzdEVkaXRBc0hUTUwKLUluaXRpYWw6Ci0tIDxkaXYgaWQ9InRlc3RFZGl0QXNIVE1M
Ij4KLSAgICAtIDxkaXYgaWQ9Im5vZGUtdG8tZWRpdC1hcy1odG1sIj4KLSAgICAgICAgICA8c3Bh
biBpZD0ic3BhbiI+VGV4dDwvc3Bhbj4KLSAgICAgIDwvZGl2PgotICA8L2Rpdj4KLVBvc3QtYWN0
aW9uOgotLSA8ZGl2IGlkPSJ0ZXN0RWRpdEFzSFRNTCI+Ci0gICAgLSA8ZGl2IGlkPSJub2RlLXRv
LWVkaXQtYXMtaHRtbCI+Ci0gICAgICAgICAgPGRpdiBpZD0ic3BhbjIiPlRleHQyPC9kaXY+Ci0g
ICAgICA8L2Rpdj4KLSAgPC9kaXY+Ci1Qb3N0LXVuZG8gKGluaXRpYWwpOgotLSA8ZGl2IGlkPSJ0
ZXN0RWRpdEFzSFRNTCI+Ci0gICAgLSA8ZGl2IGlkPSJub2RlLXRvLWVkaXQtYXMtaHRtbCI+Ci0g
ICAgICAgICAgPHNwYW4gaWQ9InNwYW4iPlRleHQ8L3NwYW4+Ci0gICAgICA8L2Rpdj4KLSAgPC9k
aXY+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy91bmRvLWRv
bS1lZGl0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVk
aXRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViZDkyZGU2MDU3NDU4NDE1
MTNmZjM1NTg1ZWQyMDNiNmI1M2U1NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVk
aXRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVt
ZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHZhciB0ZXN0U3VpdGUgPSBbXTsKLQotICAgIGZ1bmN0aW9uIHRlc3RTZXRVcChuZXh0KQot
ICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRFbGVtZW50c1RyZWUobmV4dCk7Ci0g
ICAgfQotICAgIHRlc3RTdWl0ZS5wdXNoKHRlc3RTZXRVcCk7Ci0KLQotICAgIGZ1bmN0aW9uIHRl
c3RSZW1vdmUoY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IEluc3BlY3RvclRl
c3QuZXhwYW5kZWROb2RlV2l0aElkKCJub2RlLXRvLXJlbW92ZSIpOyAKLSAgICAgICAgbm9kZS5y
ZW1vdmVOb2RlKGNhbGxiYWNrKTsKLSAgICB9Ci0gICAgdGVzdFN1aXRlLnB1c2goSW5zcGVjdG9y
VGVzdC5nZW5lcmF0ZVVuZG9UZXN0KHRlc3RSZW1vdmUpKTsKLQotCi0gICAgZnVuY3Rpb24gdGVz
dFNldE5vZGVOYW1lKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSBJbnNwZWN0
b3JUZXN0LmV4cGFuZGVkTm9kZVdpdGhJZCgibm9kZS10by1zZXQtbmFtZSIpOyAKLSAgICAgICAg
bm9kZS5zZXROb2RlTmFtZSgic3BhbiIsIGNhbGxiYWNrKTsKLSAgICB9Ci0gICAgdGVzdFN1aXRl
LnB1c2goSW5zcGVjdG9yVGVzdC5nZW5lcmF0ZVVuZG9UZXN0KHRlc3RTZXROb2RlTmFtZSkpOwot
Ci0KLSAgICBmdW5jdGlvbiB0ZXN0U2V0Tm9kZVZhbHVlKGNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgdmFyIG5vZGUgPSBJbnNwZWN0b3JUZXN0LmV4cGFuZGVkTm9kZVdpdGhJZCgibm9kZS10by1z
ZXQtdmFsdWUiKTsgCi0gICAgICAgIG5vZGUuZmlyc3RDaGlsZC5zZXROb2RlVmFsdWUoIk5ldyBU
ZXh0IiwgY2FsbGJhY2spOwotICAgIH0KLSAgICB0ZXN0U3VpdGUucHVzaChJbnNwZWN0b3JUZXN0
LmdlbmVyYXRlVW5kb1Rlc3QodGVzdFNldE5vZGVWYWx1ZSkpOwotCi0gICAgZnVuY3Rpb24gdGVz
dEVkaXRBc0hUTUwoY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IEluc3BlY3Rv
clRlc3QuZXhwYW5kZWROb2RlV2l0aElkKCJub2RlLXRvLWVkaXQtYXMtaHRtbCIpOyAKLSAgICAg
ICAgbm9kZS5zZXRPdXRlckhUTUwoIjxkaXYgaWQ9XCJub2RlLXRvLWVkaXQtYXMtaHRtbFwiPjxk
aXYgaWQ9XCJzcGFuMlwiPlRleHQyPC9kaXY+PC9kaXY+IiwgY2FsbGJhY2spOwotICAgIH0KLSAg
ICB0ZXN0U3VpdGUucHVzaChJbnNwZWN0b3JUZXN0LmdlbmVyYXRlVW5kb1Rlc3QodGVzdEVkaXRB
c0hUTUwpKTsKLQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUodGVzdFN1aXRlKTsK
LX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxw
PgotVGVzdHMgdGhhdCBET00gbW9kaWZpY2F0aW9ucyBkb25lIGluIHRoZSBFbGVtZW50cyBwYW5l
bCBhcmUgdW5kb2FibGUuCi08L3A+Ci0KLTxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Ci0gICAg
PGRpdiBpZD0idGVzdFJlbW92ZSI+Ci0gICAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tcmVtb3ZlIj48
L2Rpdj4KLSAgICA8L2Rpdj4KLQotICAgIDxkaXYgaWQ9InRlc3RTZXROb2RlTmFtZSI+Ci0gICAg
ICAgIDxkaXYgaWQ9Im5vZGUtdG8tc2V0LW5hbWUiPjwvZGl2PgotICAgIDwvZGl2PgotCi0gICAg
PGRpdiBpZD0idGVzdFNldE5vZGVWYWx1ZSI+Ci0gICAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tc2V0
LXZhbHVlIj5UZXh0PC9kaXY+Ci0gICAgPC9kaXY+Ci0KLSAgICA8ZGl2IGlkPSJ0ZXN0RWRpdEFz
SFRNTCI+Ci0gICAgICAgIDxkaXYgaWQ9Im5vZGUtdG8tZWRpdC1hcy1odG1sIj48c3BhbiBpZD0i
c3BhbiI+VGV4dDwvc3Bhbj48L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VuZG8tYWRk
LXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvdW5k
by1hZGQtcHJvcGVydHktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5MmVlZTlhMzFiOTUxZWEzZWM4ZTY0YjI3N2IwZTc5OTc0YWUwODBiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvdW5kby1hZGQtcHJvcGVydHktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NDYgKzAsMCBAQAotVGVzdHMgdGhhdCBhZGRpbmcgYSBwcm9wZXJ0eSBpcyB1bmRvbmUgcHJvcGVy
bHkuCi0KLUluaXRpYWwgdmFsdWUKLVtleHBhbmRlZF0gCi1lbGVtZW50LnN0eWxlICB7ICgpCi0K
LT09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09Ci1bZXhwYW5kZWRdIAotI2NvbnRh
aW5lciAgeyAodW5kby1hZGQtcHJvcGVydHkuaHRtbDo3KQotZm9udC13ZWlnaHQ6IGJvbGQ7Ci0K
LVtleHBhbmRlZF0gCi1kaXYgIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKLWRpc3BsYXk6IGJs
b2NrOwotCi0KLUFmdGVyIGFkZGluZyBwcm9wZXJ0eQotW2V4cGFuZGVkXSAKLWVsZW1lbnQuc3R5
bGUgIHsgKCkKLQotPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KLVtleHBhbmRl
ZF0gCi0jY29udGFpbmVyICB7ICh1bmRvLWFkZC1wcm9wZXJ0eS5odG1sOjcpCi1mb250LXdlaWdo
dDogYm9sZDsKLW1hcmdpbi1sZWZ0OiAxcHg7Ci0KLVtleHBhbmRlZF0gCi1kaXYgIHsgKHVzZXIg
YWdlbnQgc3R5bGVzaGVldCkKLWRpc3BsYXk6IGJsb2NrOwotCi0KLUFmdGVyIHVuZG8KLVtleHBh
bmRlZF0gCi1lbGVtZW50LnN0eWxlICB7ICgpCi0KLT09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVz
ID09PT09PT09Ci1bZXhwYW5kZWRdIAotI2NvbnRhaW5lciAgeyAodW5kby1hZGQtcHJvcGVydHku
aHRtbDo3KQotZm9udC13ZWlnaHQ6IGJvbGQ7Ci0KLVtleHBhbmRlZF0gCi1kaXYgIHsgKHVzZXIg
YWdlbnQgc3R5bGVzaGVldCkKLWRpc3BsYXk6IGJsb2NrOwotCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91bmRvLWFkZC1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91bmRvLWFkZC1wcm9wZXJ0eS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmOWJlYjU5N2JiZTRhYmViMTUzMWQ2NzIzMTY4OTlhNTBlNWY1
ZDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvdW5kby1hZGQtcHJvcGVydHkuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDY1ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2Ny
aXB0PgotCi08c3R5bGU+Ci0jY29udGFpbmVyIHsKLSAgZm9udC13ZWlnaHQ6IGJvbGQKLX0KLTwv
c3R5bGU+Ci0KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIEluc3BlY3RvclRl
c3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImNvbnRhaW5lciIsIHN0ZXAxKTsKLQotICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJJbml0aWFsIHZhbHVlIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxl
bWVudFN0eWxlcyh0cnVlKTsKLQotICAgICAgICB2YXIgdHJlZUl0ZW0gPSBJbnNwZWN0b3JUZXN0
LmdldE1hdGNoZWRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgICAg
IHZhciB0cmVlRWxlbWVudCA9IHRyZWVJdGVtLnNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgp
OwotICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgdHJlZUVsZW1l
bnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAibWFyZ2luLWxlZnQiOwotICAgICAgICB0cmVl
RWxlbWVudC5uYW1lRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5
RXZlbnQoIkVudGVyIikpOwotICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQudGV4dENv
bnRlbnQgPSAiMXB4IjsKLSAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQuZGlzcGF0Y2hF
dmVudChJbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiQWZ0ZXIgYWRkaW5nIHByb3BlcnR5Iik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNl
bGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKTsKLSAgICAgICAgRE9NQWdlbnQudW5kbyhzdGVwMyk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDMoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC53YWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBzdGVwNCk7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuZWxlbWVudHMuX3VwZGF0ZVNpZGViYXJzKCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gc3RlcDQoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFm
dGVyIHVuZG8iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5
bGVzKHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH0K
LX0KLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4K
LVRlc3RzIHRoYXQgYWRkaW5nIGEgcHJvcGVydHkgaXMgdW5kb25lIHByb3Blcmx5LgotPC9wPgot
Ci08ZGl2IGlkPSJjb250YWluZXIiPgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvdW5kby1jaGFuZ2UtcHJvcGVydHkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91bmRvLWNoYW5nZS1w
cm9wZXJ0eS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZGM0
ODU4ZDEyNTZkM2E3NzM0OWMwZjNiMWY1MjljNWI2MmM1ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91
bmRvLWNoYW5nZS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi1UZXN0cyB0aGF0IGNoYW5naW5nIGEgcHJvcGVydHkgaXMgdW5kb25lIHByb3Blcmx5
LgotCi1Jbml0aWFsIHZhbHVlCi1bZXhwYW5kZWRdIAotZWxlbWVudC5zdHlsZSAgeyAoKQotCi09
PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQotW2V4cGFuZGVkXSAKLSNjb250YWlu
ZXIgIHsgKHVuZG8tY2hhbmdlLXByb3BlcnR5Lmh0bWw6NykKLWZvbnQtd2VpZ2h0OiBib2xkOwot
Ci1bZXhwYW5kZWRdIAotZGl2ICB7ICh1c2VyIGFnZW50IHN0eWxlc2hlZXQpCi1kaXNwbGF5OiBi
bG9jazsKLQotCi1BZnRlciBjaGFuZ2luZyBwcm9wZXJ0eQotW2V4cGFuZGVkXSAKLWVsZW1lbnQu
c3R5bGUgIHsgKCkKLQotPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KLVtleHBh
bmRlZF0gCi0jY29udGFpbmVyICB7ICh1bmRvLWNoYW5nZS1wcm9wZXJ0eS5odG1sOjcpCi1mb250
LXdlaWdodDogbm9ybWFsOwotCi1bZXhwYW5kZWRdIAotZGl2ICB7ICh1c2VyIGFnZW50IHN0eWxl
c2hlZXQpCi1kaXNwbGF5OiBibG9jazsKLQotCi1BZnRlciB1bmRvCi1bZXhwYW5kZWRdIAotZWxl
bWVudC5zdHlsZSAgeyAoKQotCi09PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQot
W2V4cGFuZGVkXSAKLSNjb250YWluZXIgIHsgKHVuZG8tY2hhbmdlLXByb3BlcnR5Lmh0bWw6NykK
LWZvbnQtd2VpZ2h0OiBib2xkOwotCi1bZXhwYW5kZWRdIAotZGl2ICB7ICh1c2VyIGFnZW50IHN0
eWxlc2hlZXQpCi1kaXNwbGF5OiBibG9jazsKLQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvdW5kby1jaGFuZ2UtcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvdW5kby1jaGFuZ2UtcHJvcGVydHkuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjM4MjcyZmRiOGExZTAzYjZkMTAyMDViOWIwNWJjOWViMjBjMzg1
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VuZG8tY2hhbmdlLXByb3BlcnR5Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3Nj
cmlwdD4KLQotPHN0eWxlPgotI2NvbnRhaW5lciB7Ci0gIGZvbnQtd2VpZ2h0OiBib2xkCi19Ci08
L3N0eWxlPgotCi08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBzdGVwMSk7Ci0KLSAg
ICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiSW5pdGlhbCB2YWx1ZSIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVs
ZW1lbnRTdHlsZXModHJ1ZSk7Ci0KLSAgICAgICAgdmFyIHRyZWVJdGVtID0gSW5zcGVjdG9yVGVz
dC5nZXRNYXRjaGVkU3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOwotICAgICAg
ICB0cmVlSXRlbS5hcHBseVN0eWxlVGV4dCgiZm9udC13ZWlnaHQ6IG5vcm1hbCIsIHRydWUsIGZh
bHNlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBz
dGVwMik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIGNoYW5naW5nIHByb3BlcnR5Iik7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKTsKLSAgICAgICAg
RE9NQWdlbnQudW5kbyhzdGVwMyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDMoKQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBzdGVw
NCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuX3VwZGF0ZVNpZGViYXJz
KCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDQoKQotICAgIHsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIHVuZG8iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIHRoYXQgY2hhbmdpbmcgYSBwcm9wZXJ0eSBpcyB1
bmRvbmUgcHJvcGVybHkuCi08L3A+Ci0KLTxkaXYgaWQ9ImNvbnRhaW5lciI+Ci08L2Rpdj4KLQot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy91bmRvLXByb3BlcnR5LXRvZ2dsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL3VuZG8tcHJvcGVydHktdG9nZ2xlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGM1MThkNWNiNWQ2NDA2ZGExMWViNzczMWFjNTYyZmU3Mjk5Yzgw
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VuZG8tcHJvcGVydHktdG9nZ2xlLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgdGhhdCBkaXNhYmxpbmcgc3R5bGUg
aXMgdW5kb25lIHByb3Blcmx5LgotCi1CZWZvcmUgZGlzYWJsZQotZm9udC13ZWlnaHQ6IGJvbGQ7
Ci1BZnRlciBkaXNhYmxlCi0vLS0gb3ZlcmxvYWRlZCAtLS8gLy0tIGRpc2FibGVkIC0tLyBmb250
LXdlaWdodDogYm9sZDsKLUFmdGVyIHVuZG8KLWZvbnQtd2VpZ2h0OiBib2xkOwotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VuZG8tcHJvcGVydHktdG9nZ2xlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VuZG8tcHJvcGVydHktdG9nZ2xlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMmNmMDM0ZWQ3OWY2MjcxZDEzOGMy
MTNhMDkyMGRjOTJmOTY5NDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91bmRvLXByb3BlcnR5LXRvZ2ds
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVu
dHMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBz
dGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVwMShub2RlKQotICAgIHsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkJlZm9yZSBkaXNhYmxlIik7Ci0gICAgICAgIHZhciB0cmVlSXRl
bSA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiZm9udC13
ZWlnaHQiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlSXRlbSh0cmVlSXRl
bSwgIiIpOwotCi0gICAgICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6IHsgY2hl
Y2tlZDogZmFsc2UgfSB9KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKCJj
b250YWluZXIiLCBzdGVwMik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIGRpc2FibGUiKTsKLSAgICAg
ICAgdmFyIHRyZWVJdGVtID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRy
ZWVJdGVtKCJmb250LXdlaWdodCIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRy
ZWVJdGVtKHRyZWVJdGVtLCAiIik7Ci0KLSAgICAgICAgRE9NQWdlbnQudW5kbygpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRGb3JTdHlsZXMoImNvbnRhaW5lciIsIHN0ZXAzKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBzdGVwMygpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiQWZ0ZXIgdW5kbyIpOwotICAgICAgICB2YXIgdHJlZUl0ZW0gPSBJbnNwZWN0b3JU
ZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlVHJlZUl0ZW0odHJlZUl0ZW0sICIiKTsKLQotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH0KLX0KLTwvc2NyaXB0Pgot
PC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIHRoYXQgZGlz
YWJsaW5nIHN0eWxlIGlzIHVuZG9uZSBwcm9wZXJseS4KLTwvcD4KLQotPGRpdiBpZD0iY29udGFp
bmVyIiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZCI+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>