<?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>105957</bug_id>
          
          <creation_ts>2013-01-02 15:17:44 -0800</creation_ts>
          <short_desc>[V8] Remove INC_STATS because it is unused</short_desc>
          <delta_ts>2013-01-02 15:42:27 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>798960</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:17:44 -0800</bug_when>
    <thetext>[V8] Remove INC_STATS because it is unused</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798963</commentid>
    <comment_count>1</comment_count>
      <attachid>181078</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:19:49 -0800</bug_when>
    <thetext>Created attachment 181078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798972</commentid>
    <comment_count>2</comment_count>
      <attachid>181078</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:24:17 -0800</bug_when>
    <thetext>Comment on attachment 181078
Patch

Looks like I&apos;ll need to rebase this patch to top-of-tree before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798987</commentid>
    <comment_count>3</comment_count>
      <attachid>181078</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-01-02 15:30:51 -0800</bug_when>
    <thetext>Comment on attachment 181078
Patch

RS=me

Looks like you have some merge conflicts to resolve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798995</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:32:33 -0800</bug_when>
    <thetext>Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799002</commentid>
    <comment_count>5</comment_count>
      <attachid>181087</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:38:00 -0800</bug_when>
    <thetext>Created attachment 181087
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799003</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:38:32 -0800</bug_when>
    <thetext>In the interest of avoiding merge conflicts, I&apos;m going to do the blank line fixups in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799009</commentid>
    <comment_count>7</comment_count>
      <attachid>181087</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:42:24 -0800</bug_when>
    <thetext>Comment on attachment 181087
Patch for landing

Clearing flags on attachment: 181087

Committed r138665: &lt;http://trac.webkit.org/changeset/138665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799010</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 15:42:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181078</attachid>
            <date>2013-01-02 15:19:49 -0800</date>
            <delta_ts>2013-01-02 15:37:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105957-20130102151656.patch</filename>
            <type>text/plain</type>
            <size>232413</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlhMzJlMzlhNjg3YzZh
NTc3N2RkZmI2ZTIwZDg3ZjIzMzM2ODJiNC4uYWFkOTg1MDVjZGQ5NDdjZWNkMjVkNjJjYmViNGE3
M2RhZmRhY2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzOSBAQAorMjAxMy0wMS0wMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gUmVtb3ZlIElOQ19T
VEFUUyBiZWNhdXNlIGl0IGlzIHVudXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1OTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gY29tcGlsZSB3aXRoIElO
Q19TVEFUUyB0dXJuZWQgb24gaW4gYSBsb25nCisgICAgICAgIHRpbWUuIFRoaXMgcGF0Y2gganVz
dCByZW1vdmVzIHRoaXMgYW5jaWVudCBjcnVmdC4gSSBnZW5lcmF0ZWQgdGhpcworICAgICAgICBw
YXRjaCB1c2luZworCisgICAgICAgICAgICBmaW5kIC4gLXR5cGUgZiB8IHhhcmdzIHNlZCAtaSAn
L0lOQ19TVEFUUy9kJworCisgICAgICAgIGFuZCB0aGVuIGZpeGluZyB1cCBzb21lIGJsYW5rIGxp
bmVzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChHZW5l
cmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVj
dG9yR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAg
IChHZW5lcmF0ZVJlcGxhY2VhYmxlQXR0clNldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1h
bEF0dHJTZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2spOgor
ICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChH
ZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkQ29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2Fs
bGJhY2spOgorICAgICAgICAoR2VuZXJhdGVDdXN0b21Db25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOYW1l
ZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOElu
dGVybmFsOjpmb29DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOElu
dGVybmFsOjpzZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6
Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdGdW5jdGlvbkNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFs
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RBY3RpdmVET01P
YmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OlRlc3RBY3RpdmVET01PYmplY3REb21h
aW5TYWZlRnVuY3Rpb25TZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJWOEludGVybmFsOjphbm90aGVyRnVuY3Rpb25DYWxsYmFjayk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRy
MUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3JWOElu
dGVybmFsOjphdHRyMkF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RFdmVudFRhcmdldFY4SW50ZXJuYWw6Oml0ZW1DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6cmVtb3ZlRXZlbnRM
aXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldFY4SW50
ZXJuYWw6OmRpc3BhdGNoRXZlbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXhj
ZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRl
cmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMUF0
dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1
cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZh
Y2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bE5vZGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVy
bmFsOjpzdXBwbGVtZW50YWxNZXRob2QxQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9k
NENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0
b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJWOEludGVybmFsOjptZXRob2RDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RP
YmpBdHRyQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0ckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0
dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNp
Z25lZFNob3J0QXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmxvbmdBdHRyQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5n
QXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
cmluZ0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZElu
dGVncmFsQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWdu
ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVS
TEF0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVS
TEF0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0
eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlc0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0
dHIzQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0clNldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0
dHIxQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5h
YmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRl
eHRBdHRyMUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0
dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJy
YXlBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpmbG9h
dEFycmF5QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
ZG91YmxlQXJyYXlBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpkb3VibGVBcnJheUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRy
U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5
QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdi
ZXJyeUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
cmljdEZsb2F0QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6c3RyaWN0RmxvYXRBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpkZXNjcmlwdGlvbkF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmlkQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6aWRBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpoYXNoQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnZvaWRNZXRob2RDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhvZFdpdGhBcmdz
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRo
b2RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ01l
dGhvZFdpdGhBcmdzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6Om9iak1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpzZXJpYWxpemVkVmFsdWVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6aWRiS2V5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6Om9wdGlvbnNPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlbW92ZUV2ZW50TGlzdGVu
ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdFN0YXRlVm9pZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpFeGNl
cHRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlv
bmFsQXJnQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3
b09wdGlvbmFsQXJnc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhDYWxsYmFja0FyZ0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdB
bmRDYWxsYmFja0FyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjptZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbE1ldGhvZDFDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxNZXRob2Qy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlv
bmFsTWV0aG9kM0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kNUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVk
TWV0aG9kNkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpv
dmVybG9hZGVkTWV0aG9kN0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpvdmVybG9hZGVkTWV0aG9kOENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kOUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMTBDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDExQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRN
ZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2xh
c3NNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDEyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9kV2l0aENsYW1wQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRo
b2QxQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRBdFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDJDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5j
dGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpnZXRT
VkdEb2N1bWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojpjb252ZXJ0MUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojpjb252ZXJ0MkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojpjb252ZXJ0NENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojpjb252ZXJ0NUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjptdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om9yYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY0RvdWJs
ZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2
YXJpYWRpY05vZGVNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6
OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMkNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNvbnN0cnVjdG9yM0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yNENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjpyZWFkb25seVZhbHVlQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2Fj
aGVkVmFsdWVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJu
YWw6OnBvcnRzQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVY4SW50ZXJuYWw6OmFjY2VwdFRyYW5zZmVyTGlzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjptdWx0aVRy
YW5zZmVyTGlzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nTWFjcm9zLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpidWZmZXJBY2Nlc3NvclNldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlRdWVyeSk6
CisgICAgICAgIChXZWJDb3JlOjpWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFBy
b3BlcnR5U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OnR5cGVzQWNjZXNzb3JH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDb25zb2xlOjphc3NlcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNv
bGU6OnByb2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2Zp
bGVFbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0
ZXNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOENvb3JkaW5hdGVzOjphbHRpdHVk
ZUFjY3VyYWN5QWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhDb29yZGluYXRl
czo6aGVhZGluZ0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29vcmRpbmF0
ZXM6OnNwZWVkQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRXZlbnQ6
OmRldGFpbEFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhE
T01Gb3JtRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjph
cHBlbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NU3RyaW5nTWFwOjpuYW1lZFBy
b3BlcnR5UXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01TdHJpbmdNYXA6Om5hbWVkUHJv
cGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01TdHJpbmdNYXA6Om5hbWVkUHJv
cGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NU3RyaW5nTWFwOjpuYW1l
ZFByb3BlcnR5RGVsZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVN0cmluZ01hcDo6bmFt
ZWRQcm9wZXJ0eVNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjphZGRFdmVudExp
c3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnJlbW92ZUV2
ZW50TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6cG9z
dE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6d2Via2l0
UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6dG9T
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6cmVsZWFzZUV2
ZW50c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpjYXB0dXJlRXZl
bnRzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnNob3dNb2RhbERp
YWxvZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpvcGVuQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6c2V0VGltZW91dENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpzZXRJbnRlcnZhbENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhEYXRhVmlldzo6Z2V0VWludDhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFW
aWV3OjpzZXRJbnQ4Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0
VWludDhDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERlZGljYXRlZFdv
cmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25BY2Nlc3Nv
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERldmljZU1vdGlvbkV2ZW50OjphY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5QWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VjhEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25SYXRlQWNjZXNzb3JHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJ2YWxBY2Nlc3NvckdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFs
cGhhQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VPcmllbnRhdGlv
bkV2ZW50OjpiZXRhQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VP
cmllbnRhdGlvbkV2ZW50OjpnYW1tYUFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGVBY2Nlc3NvckdldHRlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhEb2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEZpbGVSZWFkZXI6OnJlc3VsdEFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEdl
b2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9w
ZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cml0ZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cml0ZWxuQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6Om9wZW5DYWxsYmFjayk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTEZvcm1FbGVtZW50OjppbmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhIVE1MRm9ybUVsZW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVj
dGlvblN0YXJ0QWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25TdGFydEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmRBY2Nlc3NvclNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVj
dGlvbkFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTElucHV0RWxlbWVu
dDo6c2VsZWN0aW9uRGlyZWN0aW9uQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VjhIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JTZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9sbGVyQWNjZXNz
b3JTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoQWNjZXNzb3JTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4ZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFBy
b3BlcnR5U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPdXRwdXRFbGVtZW50
OjpodG1sRm9yQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3V0cHV0
RWxlbWVudDo6aHRtbEZvckFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEhUTUxBcHBsZXRFbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4SFRNTEVtYmVkRWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOEhUTUxPYmplY3RFbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTEFwcGxldEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRW1iZWRFbGVtZW50OjpuYW1lZFByb3BlcnR5U2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9iamVjdEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQXBwbGV0RWxlbWVudDo6Y2FsbEFzRnVu
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxFbWJlZEVsZW1lbnQ6OmNh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT2JqZWN0RWxl
bWVudDo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpucE9iamVj
dEluZGV4ZWRHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RJbmRleGVkU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEFwcGxldEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0
eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxFbWJlZEVsZW1lbnQ6OmluZGV4ZWRQ
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPYmplY3RFbGVtZW50Ojpp
bmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQXBwbGV0RWxl
bWVudDo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEVt
YmVkRWxlbWVudDo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTE9iamVjdEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eVNldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZUNhbGxiYWNrKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4SGlzdG9yeTo6c3RhdGVBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9z
dDo6aXNIVE1MQWxsQ29sbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5q
ZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlsc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXNDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5l
cnNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojpk
YXRhYmFzZUlkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhv
c3Q6OnN0b3JhZ2VJZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpldmFsdWF0ZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SmF2
YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlwZUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dGhpc09iamVjdEFjY2Vz
c29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dHlw
ZUFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpoYXNoQWNjZXNzb3JT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6aG9zdEFjY2Vzc29yU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246Omhvc3RuYW1lQWNjZXNzb3JTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6aHJlZkFjY2Vzc29yU2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnBhdGhuYW1lQWNjZXNzb3JTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cG9ydEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TG9jYXRpb246OnByb3RvY29sQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhMb2NhdGlvbjo6c2VhcmNoQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TG9jYXRpb246OnJlbG9hZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246
OnJlcGxhY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjp0b1N0cmluZ0NhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3NvckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2Fn
ZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNz
YWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlUG9ydDo6d2Via2l0UG9z
dE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TmFtZWROb2RlTWFwOjppbmRl
eGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhOYW1lZE5vZGVNYXA6Om5h
bWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjppbnNlcnRCZWZvcmVDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OnJlcGxhY2VDaGlsZENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4Tm9kZTo6cmVtb3ZlQ2hpbGRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOE5vZGU6OmFwcGVuZENoaWxkQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9k
ZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5v
dGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4Tm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOE9zY2lsbGF0b3JOb2RlOjp0eXBlQWNjZXNzb3JTZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhQb3BTdGF0ZUV2ZW50OjpzdGF0ZUFjY2Vzc29yR2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0
ZVNxbENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTVkdMZW5ndGg6OnZhbHVlQWNjZXNzb3JH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhTVkdMZW5ndGg6OnZhbHVlQWNjZXNzb3JTZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVu
aXRzQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhTdG9yYWdlOjpuYW1lZFByb3BlcnR5R2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0eVNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpWOFN0b3JhZ2U6OmluZGV4ZWRQcm9wZXJ0eURlbGV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhTdG9yYWdlOjpuYW1lZFByb3BlcnR5RGVsZXRlcik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhTdHlsZVNoZWV0TGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRyYWNrRXZlbnQ6OnRyYWNrQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBh
cmFtZXRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRFeHRlbnNpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRQcm9ncmFtUGFyYW1ldGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTFmdkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMWl2Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0yZnZDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2Q2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXZDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGl2Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXgyZnZDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2Q2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFm
dkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWIyZnZDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2Z2Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdkNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhXZWJLaXRBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50QWNjZXNzb3JH
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRz
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjpzZXRUaW1lb3V0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjpzZXRJbnRlcnZh
bENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdvcmtlcjo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0QWNjZXNzb3JHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBY2Nlc3NvckdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpvcGVuQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXJDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlckNhbGxiYWNr
KToKKwogMjAxMy0wMS0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgT3B0aW1pemUgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5KCkgZm9y
IHg4Nl82NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCBmYWI5ZTMyZDdkMzE2ZGZlZGE2ZmZjMzk1ODY5YjkxMDhhOGIwNjM1
Li43NjUyY2QyNTU0OWMzZmY4Nzg5ZjNmNzg0MGU4N2ExNmEyNDY5MzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNzg5
LDcgKzc4OSw2IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUyhcIkRPTS4kaW50ZXJm
YWNlTmFtZS4kZnVuY05hbWUuX2dldFwiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KCRuZXdUZW1wbGF0ZVN0cmluZyk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xk
ZXIuSXNFbXB0eSgpKSB7CkBAIC04MjEsNyArODIwLDYgQEAgc3ViIEdlbmVyYXRlRG9tYWluU2Fm
ZUZ1bmN0aW9uU2V0dGVyCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3Rh
dGljIHZvaWQgJHtpbnRlcmZhY2VOYW1lfURvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJGludGVyZmFjZU5h
bWUuX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oJHt2OEludGVyZmFjZU5hbWV9OjpHZXRU
ZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtODQzLDcgKzg0MSw2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yR2V0dGVyCiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKFwi
RE9NLiRpbnRlcmZhY2VOYW1lLmNvbnN0cnVjdG9ycy5fZ2V0XCIpOwogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBkYXRhID0gaW5mby5EYXRhKCk7CiAgICAgQVNTRVJUKGRhdGEtPklzRXh0ZXJu
YWwoKSk7CiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRl
eHREYXRhOjpmcm9tKGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpKTsKQEAgLTg4OSw3
ICs4ODYsNiBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJO
YW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJGludGVyZmFjZU5hbWUuJGF0
dHJOYW1lLl9nZXQiKTsKIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIEdlbmVyYXRl
RmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsKIApAQCAtMTEz
Myw3ICsxMTI5LDYgQEAgc3ViIEdlbmVyYXRlUmVwbGFjZWFibGVBdHRyU2V0dGVyCiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHZvaWQgJHtpbnRlcmZhY2VOYW1l
fVJlcGxhY2VhYmxlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uJGludGVyZmFjZU5hbWUucmVwbGFjZWFibGUuX3NldCIpOwogRU5E
CiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24o
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pKTsKIApAQCAt
MTE2Nyw3ICsxMTYyLDYgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgInN0YXRpYyB2
b2lkICR7YXR0ck5hbWV9QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG57
XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIElOQ19TVEFUUyhcIkRPTS4k
aW50ZXJmYWNlTmFtZS4kYXR0ck5hbWUuX3NldFwiKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pKTsKIAogICAgICMgSWYgdGhl
ICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBhbmQg
dGhlIGF0dHJpYnV0ZSdzIHR5cGUgaXMgYW4KQEAgLTEzNjQsNyArMTM1OCw2IEBAIHN1YiBHZW5l
cmF0ZUV2ZW50TGlzdGVuZXJDYWxsYmFjawogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8
RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jdGlvbk5hbWV9RXZlbnRM
aXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS4ke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyKCki
KTsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6Omdl
dEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZCR7bG9va3VwVHlwZX0p
OwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHN0cmluZ1Jlc291cmNlLCBh
cmdzWzBdKTsKQEAgLTE0NzMsNyArMTQ2Niw2IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5j
dGlvbkNhbGxiYWNrCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoXCJET00uJGludGVyZmFjZU5hbWUuJG5hbWVcIik7
CiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZh
dGlvbigkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3Vy
ZUFzIn0pKTsKIApAQCAtMTUyNCw3ICsxNTE2LDYgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxs
YmFjawogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKFwiRE9NLiRpbnRlcmZhY2VOYW1lLiRuYW1lXCIpOwogRU5ECiAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE1lYXN1cmVBcyJ9KSk7
CiAKQEAgLTE4NDgsNyArMTgzOSw2IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3Rv
ckNhbGxiYWNrCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9
LkNvbnN0cnVjdG9yIik7CiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVDb25z
dHJ1Y3RvckhlYWRlcigpKTsKIApAQCAtMTkwMCw3ICsxODkwLDYgQEAgc3ViIEdlbmVyYXRlU2lu
Z2xlQ29uc3RydWN0b3JDYWxsYmFjawogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvciR7b3Zl
cmxvYWRlZEluZGV4U3RyaW5nfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciR7b3Zlcmxv
YWRlZEluZGV4U3RyaW5nfSIpOwogICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0KIEVORAogCkBA
IC0xOTc4LDcgKzE5NjcsNiBAQCBzdWIgR2VuZXJhdGVDdXN0b21Db25zdHJ1Y3RvckNhbGxiYWNr
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9LkNvbnN0cnVj
dG9yIik7CiAgICAgJHttYXliZU9ic2VydmVGZWF0dXJlfQogRU5ECiAgICAgcHVzaChAaW1wbENv
bnRlbnQsIEdlbmVyYXRlQ29uc3RydWN0b3JIZWFkZXIoKSk7CkBAIC0yMDE0LDcgKzIwMDIsNiBA
QCBzdWIgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2sKICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbnRlcmZhY2VOYW1lfTo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElO
Q19TVEFUUygiRE9NLiR7aW50ZXJmYWNlTmFtZX0uQ29uc3RydWN0b3IiKTsKIEVORAogICAgIHB1
c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVhZGVyKCkpOwogCkBAIC0yMDc1
LDcgKzIwNjIsNiBAQCBzdWIgR2VuZXJhdGVUeXBlZEFycmF5Q29uc3RydWN0b3JDYWxsYmFjawog
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgk
e2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db250cnVjdG9y
Iik7CiAgICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8JGludGVyZmFjZU5hbWUsIFY4JHtp
bnRlcmZhY2VOYW1lfSwgJHR5cGU+KGFyZ3MsICZpbmZvLCAkdmlld1R5cGUpOwogfQogCkBAIC0y
MTE3LDcgKzIxMDMsNiBAQCBXcmFwcGVyVHlwZUluZm8gJHt2OEludGVyZmFjZU5hbWV9Q29uc3Ry
dWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cgogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFj
ZU5hbWV9LkNvbnN0cnVjdG9yIik7CiAgICAgJHttYXliZU9ic2VydmVGZWF0dXJlfQogRU5ECiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQ29uc3RydWN0b3JIZWFkZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4Rmxv
YXQ2NEFycmF5LmNwcAppbmRleCBmYjQxMmE1ZDhhYzJlZmYxZmQyMmIwMDliMzdjMWVhNDIxY2Ez
ODJlLi40ZGFhZjM1MTFmZDc4YWY0ZDcwZTIxNGM2ZDYwYjBhMWNiYzcxYTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
VjhfVVNFKFQpIHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZvb0NhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRmxvYXQ2
NEFycmF5LmZvbyIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIEZs
b2F0NjRBcnJheSogaW1wID0gVjhGbG9hdDY0QXJyYXk6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwpAQCAtNjAsNyArNTksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZvb0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5GbG9hdDY0QXJyYXkuc2V0Iik7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlI
ZWxwZXI8RmxvYXQ2NEFycmF5LCBWOEZsb2F0NjRBcnJheT4oYXJncyk7CiB9CiAKQEAgLTgxLDcg
Kzc5LDYgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNr
IFY4RmxvYXQ2NEFycmF5Q2FsbGJhY2tzW10gPSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEZsb2F0NjRBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkZsb2F0NjRBcnJheS5Db250cnVjdG9yIik7CiAg
ICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8RmxvYXQ2NEFycmF5LCBWOEZsb2F0NjRBcnJh
eSwgZG91YmxlPihhcmdzLCAmaW5mbywgdjg6OmtFeHRlcm5hbERvdWJsZUFycmF5KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA3MTRmOTI2ZGVkZjNlNmQ1NzJj
ZGJmN2Q0MzgwMGYwOGYwMTljZjUwLi4xYTYwMjA1Yjg5MDhlNDk2ZjQwZDFjYzQ0MjI2ZGEyOWUw
MDYxYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNDEsMTQgKzQx
LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNpdGluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLlRlc3RBY3RpdmVET01PYmplY3QuZXhjaXRpbmdBdHRyLl9nZXQiKTsKICAg
ICBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5leGNpdGluZ0F0
dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGV4Y2l0aW5nRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RBY3RpdmVET01PYmplY3QuZXhjaXRpbmdGdW5jdGlv
biIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RBY3RpdmVE
T01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CkBAIC02MSw3ICs1OSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhj
aXRpbmdGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RBY3RpdmVET01PYmplY3Qu
cG9zdE1lc3NhZ2UiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwpAQCAtNzIsNyArNjksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdEFjdGl2ZURPTU9iamVjdC5wb3N0TWVzc2FnZS5fZ2V0Iik7
CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRl
VGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0
TWVzc2FnZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhUZXN0
QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVy
LklzRW1wdHkoKSkgewpAQCAtOTUsNyArOTEsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwog
CiBzdGF0aWMgdm9pZCBUZXN0QWN0aXZlRE9NT2JqZWN0RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
QWN0aXZlRE9NT2JqZWN0Ll9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4
IGY1OTQ4NTRjZmI4MTczNzUzOGRjOTUxODM0NjM5YmVjYjEwM2NhYWUuLjkwYTAwZDk3NDk5N2Vh
ZDQ0YWRkMGIwN2MyOTdjOTlhOTdkN2I1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBW
OF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW5vdGhlckZ1bmN0
aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuYW5vdGhlckZ1bmN0aW9uIik7CiAgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXAg
PSBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjk1YTgzYjVmNWU5MmRmZGVhYzBi
MTFjYWFlOGI0OWY2N2RmNDk1NC4uMTNkMDExMDVmZTBlZDJlMmRjNTdmMjQ5ZTcwOWQ5OGI2NTk3
NzBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtNDAsMTQgKzQw
LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uVGVzdEV2ZW50Q29uc3RydWN0b3IuYXR0cjEuX2dldCIpOwogICAgIFRlc3RFdmVudENv
bnN0cnVjdG9yKiBpbXAgPSBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5hdHRyMSgpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVjdG9yLmF0dHIyLl9nZXQi
KTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+YXR0
cjIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtNjMsNyArNjEsNiBAQCBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHRyc1tdCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdEV2ZW50Q29uc3RydWN0b3IuQ29uc3RydWN0b3IiKTsKICAg
ICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGRjYjczYmYxOGQ2MDg3YzRm
MjFjMDcwZDI3MTUzOWRkMTJmMmE0ZDUuLjMxZTJlZmFhNDQ2ZjYyMDM4NDkwYzg4OTVkYTViMmFj
MTI0NGJiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtNDMsNyArNDMsNiBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gaXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEV2ZW50VGFyZ2V0Lml0ZW0iKTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0RXZlbnRUYXJnZXQqIGltcCA9IFY4VGVz
dEV2ZW50VGFyZ2V0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTYyLDcgKzYxLDYgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0RXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFy
Z3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPckNyZWF0ZSk7CiAgICAgaWYgKGxpc3RlbmVyKSB7
CiAgICAgICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJj
ZTxXaXRoTnVsbENoZWNrPiwgc3RyaW5nUmVzb3VyY2UsIGFyZ3NbMF0pOwpAQCAtNzQsNyArNzIs
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFkZEV2ZW50TGlzdGVuZXJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RFdmVudFRhcmdldC5yZW1vdmVFdmVudExpc3Rl
bmVyKCkiKTsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBw
ZXI6OmdldEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZE9ubHkpOwog
ICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09V
UkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHN0cmluZ1Jlc291cmNlLCBhcmdz
WzBdKTsKQEAgLTg2LDcgKzgzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1v
dmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkaXNwYXRjaEV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0RXZlbnRUYXJnZXQuZGlz
cGF0Y2hFdmVudCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RFdmVudFRhcmdldCogaW1wID0gVjhUZXN0RXZlbnRUYXJnZXQ6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA1MmJmODRkOTllMWIxNjIxZjViYzNl
MzBmY2RkZTE1M2Y0MWRlNDZlLi5mYmU5NzVlN2VlZTQwNWRjMDA2YmJmMjAzYzE0NjIwN2ZhZGU1
MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtMzksNyArMzksNiBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbmFtZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEV4Y2VwdGlv
bi5uYW1lLl9nZXQiKTsKICAgICBUZXN0RXhjZXB0aW9uKiBpbXAgPSBWOFRlc3RFeGNlcHRpb246
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAtPm5hbWUo
KSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0NjA5
NGNkNmNlYmJiODA0ODNjODVjMjNkYjdiZWMwNGJlMTJiY2M3Li44OTdmMGM1NzliMGNmNDRiOGMy
YmJkNDU5ZTYzYTdkMDcxMzAyN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtNTAsNyAr
NTAsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0ci5fZ2V0Iik7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihUZXN0U3Vw
cGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIoKSwgaW5mby5HZXRJc29s
YXRlKCkpOwogfQogCkBAIC02MCw3ICs1OSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8CiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxT
dGF0aWNBdHRyLl9nZXQiKTsKICAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6
c3VwcGxlbWVudGFsU3RhdGljQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTcw
LDcgKzY4LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0
aWNBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmkKIAogc3RhdGljIHZvaWQgc3VwcGxl
bWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsU3RhdGljQXR0
ci5fc2V0Iik7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3Ry
aW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBs
ZW1lbnRhbFN0YXRpY0F0dHIodik7CiAgICAgcmV0dXJuOwpAQCAtODIsNyArNzksNiBAQCBzdGF0
aWMgdm9pZCBzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvYwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBs
ZW1lbnRhbFN0cjFBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZh
Y2Uuc3VwcGxlbWVudGFsU3RyMS5fZ2V0Iik7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhU
ZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJp
bmcoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMShpbXApLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CkBAIC05Myw3ICs4OSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxTdHIyLl9nZXQi
KTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdXBw
bGVtZW50YWxTdHIyKGltcCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KQEAgLTEwNCw3ICs5OSw2
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0
cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbFN0cjIuX3NldCIpOwogICAgIFRlc3RJ
bnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3Vy
Y2U8PiwgdiwgdmFsdWUpOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0
cjIoaW1wLCB2KTsKQEAgLTExNyw3ICsxMTEsNiBAQCBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxT
dHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4Ogog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsTm9kZS5f
Z2V0Iik7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9WOEZhc3QoVGVzdFN1cHBsZW1lbnRhbDo6
c3VwcGxlbWVudGFsTm9kZShpbXApLCBpbmZvLCBpbXApOwogfQpAQCAtMTI4LDcgKzEyMSw2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbE5vZGUuX3NldCIpOwogICAgIFRlc3RJbnRl
cmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgTm9kZSogdiA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhOb2RlOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFRlc3RTdXBw
bGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoaW1wLCBXVEY6OmdldFB0cih2KSk7CkBAIC0x
NDEsNyArMTMzLDYgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1l
bnRhbE1ldGhvZDEiKTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbE1ldGhvZDEoaW1wKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKQEAgLTE1Myw3ICsx
NDQsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDFD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsTWV0
aG9kMiIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RJbnRl
cmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBA
IC0xNzcsNyArMTY3LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50
YWxNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIAogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2Q0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBs
ZW1lbnRhbE1ldGhvZDQiKTsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRo
b2Q0KCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0yNDEsNyArMjMwLDYgQEAg
Q09NUElMRV9BU1NFUlQoMiA9PSBUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTVBMLCBUZXN0SW50
ZXJmYWNlRW51bUNPTlNUX0lNUExJc1cKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdElu
dGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKICAgICAK
ICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVu
Y3Rpb24uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAK
aW5kZXggYjg0MTg2NDBmNGRmZGNjNTA1YzJkNzMwYTVlZTMzODQ2ZjUwYzM5Zi4uMGUzNTY0YzA1
NWE2NjhkMTFkMzhlZTgzYTEwZTkwNDA4ZjBkMTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNDEsNyArNDEsNiBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5tZXRob2QiKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciogaW1wID0gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmIyNGMzNGMw
ZDk1YmE3NmYzMTJlYmEwN2FjMDRmYTAyY2Y0YTA4YS4uMWI5ZTZhZTY0OGFjNjdmYzc1NTc0MjBi
NDFhYjA2NzhhZDNmMTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApA
QCAtNDQsNyArNDQsNiBAQCBXcmFwcGVyVHlwZUluZm8gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjppbmZvID0geyBWOFRlc3ROYW1lZENvbnN0cnVjdAogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE5h
bWVkQ29uc3RydWN0b3IuQ29uc3RydWN0b3IiKTsKICAgICAKICAgICBpZiAoIWFyZ3MuSXNDb25z
dHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBj
b25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAK
aW5kZXggYjdmOTMwNmQ4YjJmNWI2MDM0YThjNDQ3NDkwODQ2ZTk5MTJjNWZlYi4uOGM2Yzc5MTM5
ZmU2YTdmZjYwNDViMjYwY2ZjNGYwMmQwY2VhZGQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtNDIsNyAr
NDIsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE5vZGUuQ29uc3Ry
dWN0b3IiKTsKICAgICAKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUg
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGY2MjQwMjdhNDA5NWVlYzhh
OTU0YzU3NjAzZTQ0YThkNGUwZDNkNWUuLjNmYzI4YmRmZTJhNzI3MzZmZTA3NzU2ZTJmOTcyZjdk
NTc2ZmFlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC04MywyMSArODMsMTggQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
YmoucmVhZE9ubHlMb25nQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+cmVh
ZE9ubHlMb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLnJlYWRPbmx5U3RyaW5nQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4g
djhTdHJpbmcoaW1wLT5yZWFkT25seVN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwog
fQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVhZE9ubHlUZXN0T2JqQXR0
ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT5yZWFkT25seVRlc3RP
YmpBdHRyKCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0
KCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKHJlc3Vs
dC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpKSA6IHY4VW5kZWZpbmVkKCk7CkBAIC0xMTEsMTkg
KzEwOCwxNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0
dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouc3RhdGljUmVhZE9ubHlMb25nQXR0ci5fZ2V0Iik7CiAgICAgcmV0
dXJuIHY4SW50ZWdlcihUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJp
bmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0YXRpY1N0
cmluZ0F0dHIuX2dldCIpOwogICAgIHJldHVybiB2OFN0cmluZyhUZXN0T2JqOjpzdGF0aWNTdHJp
bmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgc3RhdGljU3Ry
aW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmouc3RhdGljU3RyaW5nQXR0ci5fc2V0Iik7CiAgICAgVjhUUllD
QVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFs
dWUpOwogICAgIFRlc3RPYmo6OnNldFN0YXRpY1N0cmluZ0F0dHIodik7CiAgICAgcmV0dXJuOwpA
QCAtMTMxLDE0ICsxMjUsMTIgQEAgc3RhdGljIHZvaWQgc3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzaG9ydEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouc2hvcnRBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1w
LT5zaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBzaG9y
dEF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLnNob3J0QXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIo
dmFsdWUpOwogICAgIGltcC0+c2V0U2hvcnRBdHRyKHYpOwpAQCAtMTQ3LDE0ICsxMzksMTIgQEAg
c3RhdGljIHZvaWQgc2hvcnRBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1
bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai51bnNpZ25lZFNob3J0QXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+dW5z
aWduZWRTaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCB1
bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoudW5zaWduZWRTaG9ydEF0dHIuX3NldCIpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgaW50IHYgPSB0b1VJbnQzMih2YWx1ZSk7CiAgICAgaW1wLT5zZXRVbnNpZ25lZFNob3J0QXR0
cih2KTsKQEAgLTE2MywxNCArMTUzLDEyIEBAIHN0YXRpYyB2b2lkIHVuc2lnbmVkU2hvcnRBdHRy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4CiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoubG9uZ0F0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdl
cihpbXAtPmxvbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQg
bG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLmxvbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQz
Mih2YWx1ZSk7CiAgICAgaW1wLT5zZXRMb25nQXR0cih2KTsKQEAgLTE3OSwxNCArMTY3LDEyIEBA
IHN0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBs
b25nTG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubG9u
Z0xvbmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8
ZG91YmxlPihpbXAtPmxvbmdMb25nQXR0cigpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxvbmdMb25n
QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoubG9uZ0xvbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGxvbmcgbG9uZyB2ID0g
dG9JbnQ2NCh2YWx1ZSk7CiAgICAgaW1wLT5zZXRMb25nTG9uZ0F0dHIodik7CkBAIC0xOTUsMTQg
KzE4MSwxMiBAQCBzdGF0aWMgdm9pZCBsb25nTG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLnVuc2lnbmVkTG9uZ0xvbmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2
ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbXAtPnVuc2lnbmVkTG9uZ0xvbmdB
dHRyKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLnVuc2lnbmVkTG9uZ0xvbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2
ID0gdG9JbnQ2NCh2YWx1ZSk7CiAgICAgaW1wLT5zZXRVbnNpZ25lZExvbmdMb25nQXR0cih2KTsK
QEAgLTIxMSwxNCArMTk1LDEyIEBAIHN0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5zdHJpbmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhp
bXAtPnN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBz
dHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5zdHJpbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0hf
Rk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsK
ICAgICBpbXAtPnNldFN0cmluZ0F0dHIodik7CkBAIC0yMjcsNyArMjA5LDYgQEAgc3RhdGljIHZv
aWQgc3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWUKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0
ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai50ZXN0T2JqQXR0ci5f
Z2V0Iik7CiAgICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKGFjdGl2ZURPTVdpbmRvdyhCaW5k
aW5nU3RhdGU6Omluc3RhbmNlKCkpLCBGZWF0dXJlT2JzZXJ2ZXI6OlRlc3RGZWF0dXJlKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAg
IHJldHVybiB0b1Y4RmFzdChpbXAtPnRlc3RPYmpBdHRyKCksIGluZm8sIGltcCk7CkBAIC0yMzUs
NyArMjE2LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKIAogc3RhdGljIHZvaWQgdGVzdE9i
akF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLnRlc3RPYmpBdHRyLl9zZXQiKTsKICAgICBGZWF0dXJlT2JzZXJ2
ZXI6Om9ic2VydmUoYWN0aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSksIEZl
YXR1cmVPYnNlcnZlcjo6VGVzdEZlYXR1cmUpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UodmFsdWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwpAQCAtMjQ1LDE0ICsyMjUsMTIgQEAgc3RhdGljIHZv
aWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHUKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRy
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLlhNTE9iakF0dHIuX2dl
dCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcC0+eG1sT2JqQXR0cigpLCBpbmZvLCBpbXApOwog
fQogCiBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5YTUxPYmpBdHRyLl9zZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVz
dE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsK
ICAgICBpbXAtPnNldFhNTE9iakF0dHIoV1RGOjpnZXRQdHIodikpOwpAQCAtMjYxLDE0ICsyMzks
MTIgQEAgc3RhdGljIHZvaWQgWE1MT2JqQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWUKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjcmVhdGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY3Jl
YXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIHJldHVybiB2OEJvb2xlYW4oaW1wLT5pc0NyZWF0ZSgpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0ZUF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY3JlYXRl
Ll9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwogICAgIGJvb2wgdiA9IHZhbHVlLT5Cb29sZWFuVmFsdWUoKTsKICAgICBpbXAtPnNl
dENyZWF0ZSh2KTsKQEAgLTI3NywxNCArMjUzLDEyIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRy
Ll9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVm
bGVjdGVkU3RyaW5nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09V
UkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwogICAg
IGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0
ckF0dHIsIHYpOwpAQCAtMjkzLDE0ICsyNjcsMTIgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDwK
IAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVkSW50ZWdyYWxB
dHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoucmVmbGVjdGVkSW50ZWdyYWxBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQz
Mih2YWx1ZSk7CiAgICAgaW1wLT5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIsIHYpOwpAQCAtMzA5LDE0ICsyODEsMTIgQEAg
c3RhdGljIHZvaWQgcmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2EKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5yZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ci5fZ2V0Iik7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBy
ZXR1cm4gdjhVbnNpZ25lZEludGVnZXIoc3RkOjptYXgoMCwgaW1wLT5nZXRJbnRlZ3JhbEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0
cikpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICB1bnNpZ25lZCB2ID0gdG9VSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0
VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVu
c2lnbmVkaW50ZWdyYWxhdHRyQXR0ciwgdik7CkBAIC0zMjUsMTQgKzI5NSwxMiBAQCBzdGF0aWMg
dm9pZCByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVk
Qm9vbGVhbkF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVm
bGVjdGVkQm9vbGVhbkF0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4Qm9vbGVhbihpbXAtPmZhc3RI
YXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEJvb2xlYW5B
dHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRCb29sZWFuQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBib29sIHYg
PSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgaW1wLT5zZXRCb29sZWFuQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyLCB2KTsKQEAgLTM0MSwx
NCArMzA5LDEyIEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5yZWZsZWN0ZWRVUkxBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmlu
ZyhpbXAtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0
dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRV
UkxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRVUkxBdHRyLl9zZXQiKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FU
Q0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hl
Y2s+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdik7CkBAIC0zNTcsMTQgKzMyMywxMiBAQCBzdGF0aWMg
dm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVm
bGVjdGVkU3RyaW5nQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5mYXN0R2V0
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRy
KSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdB
dHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FU
Q0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hl
Y2s+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIsIHYpOwpAQCAtMzczLDE0ICszMzcsMTIgQEAg
c3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDwKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygi
RE9NLlRlc3RPYmoucmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyLl9nZXQiKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVy
biB2OEludGVnZXIoaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQog
CiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJl
ZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFs
dWUpOwogICAgIGltcC0+c2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpj
dXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0ciwgdik7CkBAIC0zODksMTQgKzM1MSwxMiBAQCBz
dGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2OAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyLl9nZXQiKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2
OEJvb2xlYW4oaW1wLT5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9t
Q29udGVudEJvb2xlYW5BdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGJvb2wgdiA9IHZhbHVlLT5Cb29sZWFuVmFsdWUo
KTsKICAgICBpbXAtPnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyLCB2KTsKQEAgLTQwNSwxNCArMzY1LDEyIEBAIHN0YXRp
YyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVj
dGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5yZWZsZWN0ZWRDdXN0b21VUkxBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAt
PmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRy
QXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3Vz
dG9tVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVkQ3VzdG9tVVJMQXR0ci5fc2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxX
aXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwogICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCB2KTsKQEAgLTQyMSwxNCArMzc5
LDEyIEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoudHlwZWRBcnJheUF0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcC0+dHlw
ZWRBcnJheUF0dHIoKSwgaW5mbywgaW1wKTsKIH0KIAogc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0
dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLnR5cGVkQXJyYXlBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEZsb2F0MzJBcnJheSog
diA9IFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOEZsb2F0MzJBcnJheTo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBp
bXAtPnNldFR5cGVkQXJyYXlBdHRyKFdURjo6Z2V0UHRyKHYpKTsKQEAgLTQzNyw3ICszOTMsNiBA
QCBzdGF0aWMgdm9pZCB0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uLl9nZXQiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIGludCB2ID0gaW1wLT5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYyk7
CkBAIC00NDgsNyArNDAzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKIAogc3RhdGljIHZv
aWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CiAgICAgaW1wLT5zZXRB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbih2KTsKQEAgLTQ1NywxNCArNDExLDEyIEBAIHN0YXRpYyB2
b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24uX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAt
PmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3Rh
dGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NzYsNyArNDI4LDYgQEAgc3RhdGljIHZvaWQgYXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG8KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbi5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBTdHJpbmcgdiA9IGltcC0+c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMp
OwpAQCAtNDg3LDcgKzQzOCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2CiAKIHN0YXRpYyB2
b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbi5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRT
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2KTsKQEAgLTQ5NiwxNCArNDQ2LDEyIEBAIHN0
YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbi5fZ2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1
cm4gdjhTdHJpbmcoaW1wLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbi5fc2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+
LCB2LCB2YWx1ZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC01MTUsNyArNDYzLDYg
QEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUuX2dldCIpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0U3Rh
dGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFjdXJy
ZW50U3RhdGUpCkBAIC01MjYsNyArNDczLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3QKIAog
c3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKICAg
ICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAg
LTU0MSw3ICs0ODcsNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgcmV0dXJuIHRvVjhG
YXN0KGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4
dCksIGluZm8sIGltcCk7CkBAIC01NDksNyArNDk0LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6
OkwKIAogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlLl9zZXQiKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAg
IFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwpAQCAtNTU5LDcgKzUwMyw2IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KIAog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwpAQCAt
NTc2LDcgKzUxOSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8CiAKIHN0YXRpYyB2b2lkIHdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2Ny
aXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAgLTU5MSw3ICs1MzMsNiBAQCBzdGF0aWMgdm9pZCB3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzLl9nZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC02MDMsNyAr
NTQ0LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIKIAogc3RhdGljIHZvaWQgd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFRlc3RPYmoqIHYgPSBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAt
NjEzLDcgKzU1Myw2IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0CiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlLl9nZXQiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNj
cmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwogICAgIGlm
ICghY3VycmVudFN0YXRlKQpAQCAtNjI1LDcgKzU2NCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZUF0CiAKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBT
Y3JpcHRTdGF0ZTo6Y3VycmVudCgpOwpAQCAtNjQxLDcgKzU3OSw2IEBAIHN0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVy
KHY4OjpMb2NhCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgp
OwpAQCAtNjU5LDcgKzU5Niw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhCiAKIHN0YXRpYyB2
b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5z
dGFuY2UodmFsdWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3Jp
cHRTdGF0ZTo6Y3VycmVudCgpOwpAQCAtNjc1LDcgKzYxMSw2IEBAIHN0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0
dGVyKHY4CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0U3RhdGUqIGN1
cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFjdXJyZW50U3Rh
dGUpCkBAIC02ODcsNyArNjIyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0EKIAogc3RhdGlj
IHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0
YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAgLTcwMywxNCArNjM3LDEyIEBAIHN0YXRp
YyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlQXR0clNldHRlCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIHJldHVybiB0b1Y4RmFzdChpbXAtPndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUoKSwgaW5mbywgaW1wKTsKIH0KIAogc3RhdGljIHZvaWQgd2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBUZXN0T2JqKiB2
ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKFdURjo6Z2V0UHRyKHYpKTsKQEAg
LTcyMSw3ICs2NTMsNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cgogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouY29uZGl0aW9uYWxBdHRyMS5fZ2V0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhJ
bnRlZ2VyKGltcC0+Y29uZGl0aW9uYWxBdHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CkBA
IC03MzIsNyArNjYzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25h
bEF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIAogc3RhdGljIHZvaWQg
Y29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29uZGl0aW9uYWxBdHRyMS5fc2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0Q29uZGl0aW9uYWxBdHRyMSh2
KTsKQEAgLTc0NSw3ICs2NzUsNiBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIxQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29uZGl0aW9uYWxBdHRyMi5fZ2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1
cm4gdjhJbnRlZ2VyKGltcC0+Y29uZGl0aW9uYWxBdHRyMigpLCBpbmZvLkdldElzb2xhdGUoKSk7
CiB9CkBAIC03NTYsNyArNjg1LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25k
aXRpb25hbEF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIAogc3RhdGlj
IHZvaWQgY29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29uZGl0aW9uYWxBdHRyMi5fc2V0
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0Q29uZGl0aW9uYWxB
dHRyMih2KTsKQEAgLTc2OSw3ICs2OTcsNiBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29uZGl0aW9uYWxBdHRyMy5fZ2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+Y29uZGl0aW9uYWxBdHRyMygpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CkBAIC03ODAsNyArNzA3LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIAog
c3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29uZGl0aW9uYWxBdHRy
My5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0Q29uZGl0
aW9uYWxBdHRyMyh2KTsKQEAgLTc5MSwyOCArNzE3LDI0IEBAIHN0YXRpYyB2b2lkIGNvbmRpdGlv
bmFsQXR0cjNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jYWNoZWRBdHRyaWJ1dGUxLl9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIHJldHVybiBpbXAtPmNhY2hlZEF0dHJpYnV0ZTEoKS52OFZhbHVlKCk7CiB9CiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jYWNoZWRBdHRyaWJ1dGUyLl9nZXQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwog
ICAgIHJldHVybiBpbXAtPmNhY2hlZEF0dHJpYnV0ZTIoKS52OFZhbHVlKCk7CiB9CiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLmFueUF0dHJpYnV0ZS5fZ2V0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1w
LT5hbnlBdHRyaWJ1dGUoKS52OFZhbHVlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFueUF0dHJpYnV0
ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouYW55QXR0cmlidXRlLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNjcmlwdFZhbHVlIHYgPSBT
Y3JpcHRWYWx1ZSh2YWx1ZSk7CiAgICAgaW1wLT5zZXRBbnlBdHRyaWJ1dGUoV1RGOjpnZXRQdHIo
dikpOwpAQCAtODIxLDE0ICs3NDMsMTIgQEAgc3RhdGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWwKIAogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5hYmxlZEF0UnVudGltZUF0dHIxLl9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVkQXRSdW50aW1lQXR0cjEoKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0
cjFBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVBdHRyMS5fc2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9
IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0RW5hYmxlZEF0UnVudGltZUF0dHIxKHYpOwpA
QCAtODM3LDE0ICs3NTcsMTIgQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2EKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5hYmxlZEF0UnVudGltZUF0dHIyLl9nZXQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwog
ICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVkQXRSdW50aW1lQXR0cjIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVBdHRyMi5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50
MzIodmFsdWUpOwogICAgIGltcC0+c2V0RW5hYmxlZEF0UnVudGltZUF0dHIyKHYpOwpAQCAtODUz
LDE0ICs3NzEsMTIgQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2EKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRQZXJDb250ZXh0QXR0cjEuX2dldCIpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAg
cmV0dXJuIHY4SW50ZWdlcihpbXAtPmVuYWJsZWRQZXJDb250ZXh0QXR0cjEoKSwgaW5mby5HZXRJ
c29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBlbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5lbmFibGVkUGVyQ29udGV4dEF0dHIxLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQz
Mih2YWx1ZSk7CiAgICAgaW1wLT5zZXRFbmFibGVkUGVyQ29udGV4dEF0dHIxKHYpOwpAQCAtODY5
LDE0ICs3ODUsMTIgQEAgc3RhdGljIHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2MKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRQZXJDb250ZXh0QXR0cjIuX2dldCIpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAg
cmV0dXJuIHY4SW50ZWdlcihpbXAtPmVuYWJsZWRQZXJDb250ZXh0QXR0cjIoKSwgaW5mby5HZXRJ
c29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBlbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5lbmFibGVkUGVyQ29udGV4dEF0dHIyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQz
Mih2YWx1ZSk7CiAgICAgaW1wLT5zZXRFbmFibGVkUGVyQ29udGV4dEF0dHIyKHYpOwpAQCAtODg1
LDE0ICs3OTksMTIgQEAgc3RhdGljIHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2MKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBmbG9hdEFycmF5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmZsb2F0QXJyYXkuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5mbG9h
dEFycmF5KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgZmxvYXRBcnJh
eUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouZmxvYXRBcnJheS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB0
b05hdGl2ZUFycmF5PGZsb2F0Pih2YWx1ZSk7CiAgICAgaW1wLT5zZXRGbG9hdEFycmF5KHYpOwpA
QCAtOTAxLDE0ICs4MTMsMTIgQEAgc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWUKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBkb3VibGVBcnJheUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5kb3VibGVBcnJheS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhBcnJheShp
bXAtPmRvdWJsZUFycmF5KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQg
ZG91YmxlQXJyYXlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRvdWJsZUFycmF5Ll9zZXQiKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFZlY3Rvcjxk
b3VibGU+IHYgPSB0b05hdGl2ZUFycmF5PGRvdWJsZT4odmFsdWUpOwogICAgIGltcC0+c2V0RG91
YmxlQXJyYXkodik7CkBAIC05MTcsNyArODI3LDYgQEAgc3RhdGljIHZvaWQgZG91YmxlQXJyYXlB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHUK
IAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29udGVudERvY3VtZW50Ll9nZXQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwog
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShCaW5kaW5n
U3RhdGU6Omluc3RhbmNlKCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKQogICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOwpAQCAt
OTI3LDE0ICs4MzYsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9j
dW1lbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoubXV0YWJsZVBvaW50Ll9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB0b1Y4RmFzdChX
VEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9iaiwgRmxvYXRQb2ludD46
OmNyZWF0ZShpbXAsIGltcC0+bXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxl
UG9pbnQpKSwgaW5mbywgaW1wKTsKIH0KIAogc3RhdGljIHZvaWQgbXV0YWJsZVBvaW50QXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5tdXRhYmxlUG9pbnQuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9m
ZjxGbG9hdFBvaW50PiA+IHYgPSBWOFNWR1BvaW50OjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFNW
R1BvaW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAw
OwogICAgIGltcC0+c2V0TXV0YWJsZVBvaW50KFdURjo6Z2V0UHRyKHYpKTsKQEAgLTk0MywxNCAr
ODUwLDEyIEBAIHN0YXRpYyB2b2lkIG11dGFibGVQb2ludEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmouaW1tdXRhYmxlUG9pbnQuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjhGYXN0KFdURjo6
Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50Pjo6Y3JlYXRlKGltcC0+aW1tdXRh
YmxlUG9pbnQoKSkpLCBpbmZvLCBpbXApOwogfQogCiBzdGF0aWMgdm9pZCBpbW11dGFibGVQb2lu
dEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouaW1tdXRhYmxlUG9pbnQuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNWR1Byb3Bl
cnR5VGVhck9mZjxGbG9hdFBvaW50PiA+IHYgPSBWOFNWR1BvaW50OjpIYXNJbnN0YW5jZSh2YWx1
ZSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKSkgOiAwOwogICAgIGltcC0+c2V0SW1tdXRhYmxlUG9pbnQoV1RGOjpnZXRQdHIodikpOwpA
QCAtOTU5LDE0ICs4NjQsMTIgQEAgc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlYKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJhd2JlcnJ5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLnN0cmF3YmVycnkuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihp
bXAtPmJsdWViZXJyeSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN0
cmF3YmVycnlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmF3YmVycnkuX3NldCIpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0lu
dDMyKHZhbHVlKTsKICAgICBpbXAtPnNldEJsdWViZXJyeSh2KTsKQEAgLTk3NSwxNCArODc4LDEy
IEBAIHN0YXRpYyB2b2lkIHN0cmF3YmVycnlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3RyaWN0RmxvYXRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
c3RyaWN0RmxvYXQuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbXAtPnN0cmlj
dEZsb2F0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBzdHJpY3RGbG9hdEF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3Ry
aWN0RmxvYXQuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgZmxvYXQgdiA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS0+
TnVtYmVyVmFsdWUoKSk7CiAgICAgaW1wLT5zZXRTdHJpY3RGbG9hdCh2KTsKQEAgLTk5MSwyMSAr
ODkyLDE4IEBAIHN0YXRpYyB2b2lkIHN0cmljdEZsb2F0QXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmouZGVzY3JpcHRpb24uX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmRlc2Ny
aXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBpZEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5pZC5f
Z2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+aWQoKSwgaW5mby5HZXRJc29sYXRlKCkp
OwogfQogCiBzdGF0aWMgdm9pZCBpZEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouaWQuX3NldCIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYg
PSB0b0ludDMyKHZhbHVlKTsKICAgICBpbXAtPnNldElkKHYpOwpAQCAtMTAxNCwyMSArOTEyLDE4
IEBAIHN0YXRpYyB2b2lkIGlkQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gaGFzaEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5oYXNoLl9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmhhc2goKSwgaW5mby5HZXRJc29sYXRlKCkp
OwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VhYmxlQXR0cmlidXRl
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlcGxhY2VhYmxlQXR0
cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5yZXBsYWNlYWJsZUF0dHJp
YnV0ZSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmouY29uc3RydWN0b3JzLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0
YSA9IGluZm8uRGF0YSgpOwogICAgIEFTU0VSVChkYXRhLT5Jc0V4dGVybmFsKCkpOwogICAgIFY4
UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShp
bmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSk7CkBAIC0xMDM4LDEzICs5MzMsMTEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKIH0KIHN0YXRpYyB2b2lkIFRlc3RPYmpSZXBsYWNlYWJs
ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoucmVwbGFjZWFibGUuX3NldCIpOwogICAgIGluZm8uVGhpcygpLT5Gb3Jj
ZVNldChuYW1lLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdm9p
ZE1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai52b2lkTWV0aG9kIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpbXAtPnZvaWRNZXRob2QoKTsKICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKQEAgLTEwNTIsNyArOTQ1LDYgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kV2l0aEFyZ3ND
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoudm9pZE1ldGhvZFdpdGhBcmdzIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAz
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKQEAgLTEwNjUsMTQgKzk1NywxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZvaWRNZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdNZXRob2RDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubG9uZ01l
dGhvZCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmxvbmdNZXRob2QoKSwgYXJncy5HZXRJ
c29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdNZXRob2RX
aXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5sb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDMpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTA4NCw3ICs5NzQsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGxvbmdNZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iak1ldGhvZENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5v
YmpNZXRob2QiKTsKICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUoYWN0aXZlRE9NV2luZG93
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSksIEZlYXR1cmVPYnNlcnZlcjo6VGVzdEZlYXR1cmUp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgcmV0dXJuIHRvVjgoaW1wLT5vYmpNZXRob2QoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOwpAQCAtMTA5Miw3ICs5ODEsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG9iak1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub2Jq
TWV0aG9kV2l0aEFyZ3MiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDMpCiAgICAgICAgIHJl
dHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAt
MTEwNCw3ICs5OTIsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iak1ldGhvZFdp
dGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRo
U2VxdWVuY2VBcmciKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTEx
NSw3ICsxMDAyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFJldHVy
bmluZ1NlcXVlbmNlIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTEx
MjUsNyArMTAxMSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kUmV0dXJu
aW5nU2VxdWVuY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIik7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKQEAgLTExNDQsNyArMTAyOSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrKGNv
bnN0IHY4CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2VyaWFsaXplZFZhbHVlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLnNlcmlhbGl6ZWRWYWx1ZSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CkBAIC0xMTU4LDcgKzEwNDIsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNl
cmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRiS2V5Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmlkYktleSIpOwogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xMTY5LDcgKzEwNTIsNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGlkYktleUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3B0aW9uc09iamVjdENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5vcHRpb25zT2JqZWN0Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
QEAgLTExODUsNyArMTA2Nyw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3B0aW9u
c09iamVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRo
RXhjZXB0aW9uIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7CkBAIC0xMjAwLDcg
KzEwODEsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhFeGNlcHRp
b25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouYWRkRXZlbnRMaXN0ZW5lcigpIik7
CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRF
dmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPckNyZWF0ZSk7CiAgICAg
aWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0Uo
VjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgc3RyaW5nUmVzb3VyY2UsIGFyZ3NbMF0p
OwpAQCAtMTIxMiw3ICsxMDkyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRF
dmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlbW92
ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJG
aW5kT25seSk7CiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4
U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgc3RyaW5nUmVz
b3VyY2UsIGFyZ3NbMF0pOwpAQCAtMTIyNCw3ICsxMTAzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXIKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVWb2lk
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50
U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwogICAgIGlmICghY3VycmVudFN0YXRlKQpA
QCAtMTI0MSw3ICsxMTE5LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2Ny
aXB0U3RhdGVWb2lkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVPYmpDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlw
dFN0YXRlT2JqIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6
OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKQEAgLTEyNTgsNyArMTEzNSw2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlT2JqQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0U3RhdGVWb2lk
RXhjZXB0aW9uIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7CkBAIC0xMjgyLDcg
KzExNTgsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZVZv
aWRFeGNlcHRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0
U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKQEAg
LTEzMDYsNyArMTE4MSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtCiAKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaW1wLT53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRDb250ZXh0KTsKQEAgLTEzMTUsNyArMTE4OSw2
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTY3JpcHRTdGF0ZSog
Y3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRT
dGF0ZSkKQEAgLTEzMzMsNyArMTIwNiw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxiYWNrKGNvCiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICB7CkBAIC0xMzU4LDcgKzEyMzAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpbwogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRl
ID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKQEAgLTEz
NzYsNyArMTI0Nyw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNDCiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0NhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBSZWZQdHI8U2NyaXB0QXJndW1l
bnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDApKTsKICAg
ICBpbXAtPndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJndW1lbnRzLnJl
bGVhc2UoKSk7CkBAIC0xMzg1LDcgKzEyNTUsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tDYWxsYmFjayhjb25zdCB2ODo6QQog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5tZXRob2RXaXRoT3B0aW9uYWxBcmciKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDAp
IHsKICAgICAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxBcmcoKTsKQEAgLTEzOTgsNyArMTI2
Nyw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE9wdGlvbmFsQXJn
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CkBAIC0xNDE0LDcgKzEyODIsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2so
Y29ucwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRUd29PcHRpb25hbEFyZ3MiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpA
QCAtMTQzNSw3ICsxMzAyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsYmFjaygKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7CiAg
ICAgICAgIGltcC0+bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKCk7CkBAIC0xNDQ4LDcgKzEzMTQs
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklO
R1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzVW5kZWZpbmVkKHN0cik7CkBAIC0xNDU3LDcgKzEzMjIsNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVk
Q2FsbGJhY2soY29uc3QgdgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc051bGxTdHJpbmciKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0Uo
VjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc051bGxTdHJpbmcpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzTnVsbFN0cmluZyhzdHIpOwpAQCAtMTQ2Niw3ICsxMzMwLDYgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmdDYWxsYmFj
ayhjb25zdAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhDYWxsYmFj
a0FyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5tZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTQ3OSw3ICsxMzQyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBtZXRob2RXaXRoQ2FsbGJhY2tBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE0OTMs
NyArMTM1NSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdDYWxsYmFjayhjb25zCiAKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+
IGNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhYXJnc1swXS0+SXNOdWxs
KCkgJiYgIWFyZ3NbMF0tPklzVW5kZWZpbmVkKCkpIHsKQEAgLTE1MDksNyArMTM3MCw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmdDYWxsYmFjayhjb25zdCB2ODo6CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
ZGl0aW9uYWxNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJu
IHY4U3RyaW5nKGltcC0+Y29uZGl0aW9uYWxNZXRob2QxKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
IH0KQEAgLTE1MjAsNyArMTM4MCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
ZGl0aW9uYWxNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2QyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNvbmRp
dGlvbmFsTWV0aG9kMiIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgaW1wLT5jb25kaXRpb25hbE1ldGhvZDIoKTsKICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKQEAgLTE1MzIsNyArMTM5MSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJnCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2Qz
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmNvbmRpdGlvbmFsTWV0aG9kMyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaW1wLT5jb25kaXRpb25hbE1ldGhv
ZDMoKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKQEAgLTE1NDIsNyArMTQwMCw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2QzQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zl
cmxvYWRlZE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEiKTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTU1NCw3ICsxNDExLDYgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0
aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kMiIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CkBAIC0xNTcwLDcgKzE0MjYsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLm92ZXJsb2FkZWRNZXRob2QzIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKQEAgLTE1ODEsNyArMTQzNiw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zl
cmxvYWRlZE1ldGhvZDNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3Zlcmxv
YWRlZE1ldGhvZDQiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTU5
Miw3ICsxNDQ2LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0
aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9k
NSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNjA1LDcgKzE0NTgs
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q1Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2Q2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2Q2Iik7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE2MTYsNyArMTQ2OCw2IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDZDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zlcmxv
YWRlZE1ldGhvZDdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDciKTsKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTYyNyw3ICsxNDc4LDYgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kN0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9k
OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kOCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CkBAIC0xNjM4LDcgKzE0ODgsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2Q4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q5Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
Lm92ZXJsb2FkZWRNZXRob2Q5Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
QEAgLTE2NDksNyArMTQ5OCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zlcmxv
YWRlZE1ldGhvZDlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDEwQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2Fk
ZWRNZXRob2QxMCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNjYw
LDcgKzE1MDgsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRo
b2QxMENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9k
MTEiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTY3MSw3ICsxNTE4
LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBp
ZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZShhcmdzWzBdKSkgJiYgKGFyZ3NbMV0tPklzTnVsbCgpIHx8IGFyZ3NbMV0t
PklzVW5kZWZpbmVkKCkgfHwgYXJnc1sxXS0+SXNTdHJpbmcoKSB8fCBhcmdzWzFdLT5Jc09iamVj
dCgpKSkpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKGFyZ3MpOwog
ICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiAo
YXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQpA
QCAtMTcwMSwxNCArMTU0NywxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJs
b2FkZWRNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNsYXNzTWV0aG9kIik7
CiAgICAgVGVzdE9iajo6Y2xhc3NNZXRob2QoKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhPcHRpb25h
bENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai5jbGFzc01ldGhvZFdpdGhPcHRpb25hbCIpOwogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDw9IDApIHsKICAgICAgICAgcmV0dXJuIHY4SW50ZWdlcihUZXN0T2JqOjpjbGFzc01ldGhv
ZFdpdGhPcHRpb25hbCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQpAQCAtMTcyMCw3ICsx
NTY0LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhPcHRp
b25hbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDExIik7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVjhUUllDQVRDSChpbnQs
IGFyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CkBAIC0xNzM0LDcgKzE1NzcsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
ZwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5vdmVybG9hZGVkTWV0aG9kMTIiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3Vy
Y2U8PiwgdHlwZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSk7CkBAIC0xNzQ4LDcgKzE1OTAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2QxMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
Lm92ZXJsb2FkZWRNZXRob2QxIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMSkKICAgICAg
ICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QxMUNhbGxiYWNrKGFyZ3MpOwogICAgIGlmICgoYXJn
cy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBhcmdzWzBdLT5Jc1VuZGVm
aW5lZCgpIHx8IGFyZ3NbMF0tPklzU3RyaW5nKCkgfHwgYXJnc1swXS0+SXNPYmplY3QoKSkpKQpA
QCAtMTc2Miw3ICsxNjAzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhDbGFtcENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jbGFzc01l
dGhvZFdpdGhDbGFtcCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0x
NzgwLDcgKzE2MjAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9k
V2l0aENsYW1wQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRB
dFJ1bnRpbWVNZXRob2QxIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAg
LTE3OTEsNyArMTYzMCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0
UnVudGltZU1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDJDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5hYmxl
ZEF0UnVudGltZU1ldGhvZDIiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpA
QCAtMTgwMiw3ICsxNjQwLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVk
QXRSdW50aW1lTWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dE1ldGhvZDFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5h
YmxlZFBlckNvbnRleHRNZXRob2QxIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKQEAgLTE4MTMsNyArMTY1MCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5h
YmxlZFBlckNvbnRleHRNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRNZXRob2QyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
LmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMiIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CkBAIC0xODI0LDcgKzE2NjAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0FycmF5RnVuY3Rpb25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
c3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CkBAIC0xODQyLDcgKzE2NzcsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmlu
Z0FycmF5RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldFNWR0RvY3VtZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmdldFNWR0RvY3Vt
ZW50Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7CkBAIC0xODU5LDcgKzE2OTMs
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldFNWR0RvY3VtZW50Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb252ZXJ0MUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5jb252ZXJ0MSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CkBAIC0xODcwLDcgKzE3MDMsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnZlcnQxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0MkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jb252ZXJ0MiIpOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xODgxLDcgKzE3MTMsNiBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0NENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5jb252ZXJ0NCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0x
ODkyLDcgKzE3MjMsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb252ZXJ0NUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jb252ZXJ0NSIpOwogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CkBAIC0xOTAzLDIxICsxNzMzLDE4IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29udmVydDVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLm11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cihT
VkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAtPm11dGFibGVQb2ludEZ1
bmN0aW9uKCkpKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50RnVuY3Rpb25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
aW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoU1ZH
UHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLT5pbW11dGFibGVQb2ludEZ1
bmN0aW9uKCkpKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9yYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vcmFuZ2UiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlt
cC0+YmFuYW5hKCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CkBAIC0xOTI1LDcgKzE3NTIs
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9yYW5nZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0
RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouc3RyaWN0RnVuY3Rpb24iKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDMpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwpAQCAtMTk0NSw3ICsxNzcxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzdHJpY3RGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNTdHJpbmdNZXRob2RDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoudmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwpAQCAtMTk1Nyw3ICsxNzgyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKIAog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai52YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CkBAIC0xOTY5LDcgKzE3OTMsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
cmlhZGljRG91YmxlTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai52YXJp
YWRpY05vZGVNZXRob2QiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJl
dHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAt
MjIwNiw3ICsyMDI5LDYgQEAgQ09NUElMRV9BU1NFUlQoMTUgPT0gVGVzdE9iajo6Q09OU1RfSU1Q
TCwgVGVzdE9iakVudW1DT05TVF9JTVBMSXNXcm9uZ1VzZURvTm90Q2gKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouQ29uc3RydWN0b3IiKTsK
ICAgICAKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFz
IGEgZnVuY3Rpb24uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKaW5kZXggM2U1MzVhZGMwNTQ2Mzk5MWVlZDczNWE0N2IyMWNkYjNiMzMwNjQ1YS4uOTU3
N2QyZTc1NWQ0NzVkY2QzY2NiMGJiYzQ5MDk4Yjc2NmM0YjhkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtNDcsNyArNDcsNiBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMSIpOwogICAgIAogICAgIFY4VFJZQ0FUQ0goQXJy
YXlCdWZmZXIqLCBhcnJheUJ1ZmZlciwgVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOEFycmF5
QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwogCkBAIC02
MCw3ICs1OSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOwogICAgIAogICAgIFY4VFJZQ0FUQ0go
QXJyYXlCdWZmZXJWaWV3KiwgYXJyYXlCdWZmZXJWaWV3LCBWOEFycmF5QnVmZmVyVmlldzo6SGFz
SW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkgPyBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSkgOiAwKTsKIApAQCAtNzMsNyArNzEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3Qgdgog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29u
c3RydWN0b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjMiKTsKICAg
ICAKICAgICBWOFRSWUNBVENIKEJsb2IqLCBibG9iLCBWOEJsb2I6Okhhc0luc3RhbmNlKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhCbG9i
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwogCkBAIC04Niw3ICs4
Myw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLkNvbnN0cnVjdG9yNCIpOwogICAgIAogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4
U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJpbmcsIE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogCkBAIC05OSw3ICs5NSw2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpj
b25zdHJ1Y3RvcjRDYWxsYmFjayhjb25zdCB2CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuQ29uc3RydWN0b3IiKTsKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBj
YW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggMWMzMWVjMmY4
MzQ3ZDg1Yzk0OTQ3YzAzNTU5YzQxMDZjYjdjY2ZmMC4uMTE2MmNlZTllNGVlZjE3ZTljMTg0ZWFl
Y2VlNDljODIxMmVjOTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTQ2LDE0ICs0NiwxMiBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UudmFsdWUuX2dldCIpOwogICAgIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGltcC0+dmFsdWUo
KSA/IGltcC0+dmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2
OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgdmFsdWVBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLnZhbHVlLl9zZXQiKTsKICAgICBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHYgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2
YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIGltcC0+c2V0VmFsdWUoV1RGOjpnZXRQdHIo
dikpOwpAQCAtNjIsMTQgKzYwLDEyIEBAIHN0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5yZWFkb25s
eVZhbHVlLl9nZXQiKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIHJldHVybiBpbXAtPnJlYWRvbmx5VmFsdWUoKSA/IGltcC0+cmVhZG9u
bHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChp
bmZvLkdldElzb2xhdGUoKSkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNh
Y2hlZFZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNhY2hlZFZhbHVlLl9nZXQiKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2FjaGVk
VmFsdWUiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBpbmZvLkhvbGRlcigp
LT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghdmFsdWUuSXNFbXB0eSgp
KQpAQCAtODMsNyArNzksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZh
bHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogCiBzdGF0aWMgdm9p
ZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY2Fj
aGVkVmFsdWUuX3NldCIpOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
IGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdiA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAg
aW1wLT5zZXRDYWNoZWRWYWx1ZShXVEY6OmdldFB0cih2KSk7CkBAIC05Myw3ICs4OCw2IEBAIHN0
YXRpYyB2b2lkIGNhY2hlZFZhbHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9y
dHNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UucG9ydHMuX2dldCIpOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMgPSBp
bXAtPnBvcnRzKCk7CiAgICAgaWYgKCFwb3J0cykKQEAgLTEwNyw3ICsxMDEsNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3QgdgogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJl
YWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY2FjaGVkUmVhZG9ubHlWYWx1ZS5fZ2V0Iik7CiAgICAg
djg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghdmFsdWUuSXNFbXB0eSgpKQpAQCAtMTIxLDcgKzExNCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYWNjZXB0VHJhbnNmZXJMaXN0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmFjY2VwdFRyYW5zZmVyTGlzdCIp
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNDUsNyArMTM3LDYgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhY2NlcHRUcmFuc2Zlckxpc3RDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtdWx0
aVRyYW5zZmVyTGlzdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5tdWx0aVRy
YW5zZmVyTGlzdCIpOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGlt
cCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMCkgewogICAgICAgICBpbXAtPm11
bHRpVHJhbnNmZXJMaXN0KCk7CkBAIC0yMDksNyArMjAwLDYgQEAgc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGUKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuQ29uc3RydWN0b3IiKTsKICAgICAKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBj
YW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5oCmluZGV4IDZjYTU4YzNmNzY4NDJjMzU5MzEwZmRkNmM3
MTJiOWEwNDNlMmJiNmEuLjM1MmViZWZjNjEzODEzZWU0N2FmZWI2ZGY2ZjAwOGY2MTAyMWQ2NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5oCkBAIC0z
MywxMiArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBkZWZpbmVkKEVOQUJM
RV9ET01fU1RBVFNfQ09VTlRFUlMpICYmIFBMQVRGT1JNKENIUk9NSVVNKQotI2RlZmluZSBJTkNf
U1RBVFMobmFtZSkgU3RhdHNDb3VudGVyOjppbmNyZW1lbnRTdGF0c0NvdW50ZXIobmFtZSkKLSNl
bHNlCi0jZGVmaW5lIElOQ19TVEFUUyhuYW1lKQotI2VuZGlmCi0KIGVudW0gUGFyYW1ldGVyRGVm
YXVsdFBvbGljeSB7CiAgICAgRGVmYXVsdElzVW5kZWZpbmVkLAogICAgIERlZmF1bHRJc051bGxT
dHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1
ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCmluZGV4IDBiMDI0NjEy
ZThkNGVhMmI1NjYzMmM0M2I5YTcwZTAwNTFhN2QxYTIuLjE0NzlkOWU0YzBhNDBiY2UyYWE5YjQ2
NGE0YzFhNjRjYWRjMWVhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgVjhBdWRpb0J1
ZmZlclNvdXJjZU5vZGU6OmJ1ZmZlckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5BdWRpb0J1ZmZlclNvdXJjZU5vZGUuYnVm
ZmVyLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7CiAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBpbXAgPSBWOEF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcAppbmRleCBkZDA4MDBmYmJjODRiNjVkMzk2NTU1Yjg1ZWNkODNiYTg4N2NhYTEzLi43MDJk
ZDRiOGU5YTI2NTNlMDk1MmI0N2Y4Nzc5OTE5NTdhYTliOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcApAQCAtMTgxLDggKzE4MSw2IEBAIHY4OjpIYW5kbGU8djg6OkFycmF5
PiBWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKGNvbnN0IHY4
OjpBCiAKIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFt
ZWRQcm9wZXJ0eVF1ZXJ5KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uQ1NTU3R5bGVEZWNsYXJh
dGlvbi5OYW1lZFByb3BlcnR5UXVlcnkiKTsKLQogICAgIGlmIChjc3NQcm9wZXJ0eUluZm8odjhO
YW1lKSkKICAgICAgICAgcmV0dXJuIHY4SW50ZWdlcigwLCBpbmZvLkdldElzb2xhdGUoKSk7CiAK
QEAgLTE5MSw3ICsxODksNiBAQCB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPiBWOENTU1N0eWxlRGVj
bGFyYXRpb246Om5hbWVkUHJvcGVydHlRdWVyeSh2ODo6TG9jYWw8djg6OgogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLkNTU1N0eWxlRGVjbGFyYXRpb24uTmFtZWRQcm9wZXJ0eUdl
dHRlciIpOwogICAgIC8vIEZpcnN0IGxvb2sgZm9yIEFQSSBkZWZpbmVkIGF0dHJpYnV0ZXMgb24g
dGhlIHN0eWxlIGRlY2xhcmF0aW9uIG9iamVjdC4KICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFz
UmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CkBAIC0yMjMsNyArMjIwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlMKIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eVNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
Q1NTU3R5bGVEZWNsYXJhdGlvbi5OYW1lZFByb3BlcnR5U2V0dGVyIik7CiAgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogaW1wID0gVjhDU1NTdHlsZURlY2xhcmF0aW9uOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJbmZvID0gY3NzUHJvcGVydHlJbmZv
KG5hbWUpOwogICAgIGlmICghcHJvcEluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCBkZGRkNjIyMTI0
NzkzMTZiNDM1YmU4NDc1YjdhOGQ5ZDYwMjNmMzgwLi44YmNjNTMyYWFjNjUwZjc1ZGQ2YjZlZTRm
NjkwMzhiMmRkYmEzNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnR5cGVz
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLnR5cGVzKCki
KTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKIAogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBjbGlwYm9hcmQt
PnR5cGVzKCk7CkBAIC02Myw3ICs2Miw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBi
b2FyZDo6dHlwZXNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuY2xl
YXJEYXRhKCkiKTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKIAogICAgIGlmICghYXJncy5MZW5ndGgoKSkgewpAQCAtODEs
NyArNzksNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsK
ICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKIAogICAgIGlmICghY2xpcGJvYXJkLT5pc0ZvckRyYWdBbmREcm9wKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20u
Y3BwCmluZGV4IGMzNWYwM2YyMjk5Njg4ZWRkNmM2MzRkMDdkNDFmYzk2NzE2ZGI5YmYuLjAyMjMz
NDAyMjM1OWUxYTU3NDQzNTJjNzI3MWJiZDEzOGZkZDQ1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC00Miw3
ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
Q29uc29sZTo6dHJhY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLkNvbnNvbGUudHJhY2VDYWxsYmFjayIpOwogICAgIENvbnNvbGUqIGlt
cCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAw
KSk7CiAgICAgaW1wLT50cmFjZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpLCBzY3JpcHRBcmd1bWVu
dHMucmVsZWFzZSgpKTsKQEAgLTUxLDcgKzUwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
Q29uc29sZTo6dHJhY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjphc3NlcnRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUuYXNzZXJ0Q2FsbGJh
Y2siKTsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwogICAgIGJvb2wgY29uZGl0aW9uID0gYXJnc1swXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAg
UmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhhcmdzLCAxKSk7CkBAIC02Miw3ICs2MCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENvbnNvbGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25z
b2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5Db25zb2xlLnByb2ZpbGUiKTsKICAgICBDb25zb2xlKiBpbXAgPSBWOENv
bnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RS
SU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0
aXRsZSwgYXJnc1swXSk7CiAgICAgaW1wLT5wcm9maWxlKHRpdGxlLCBTY3JpcHRTdGF0ZTo6Y3Vy
cmVudCgpKTsKQEAgLTcxLDcgKzY4LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29s
ZTo6cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUucHJvZmlsZUVuZCIp
OwogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPFdp
dGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAtPnByb2Zp
bGVFbmQodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20uY3BwCmlu
ZGV4IDFmZmRiOGYzZWM5MzhjOWU4ZjAwNGQ5MDY5ODliZWQ1MTI1ZjU4MDcuLmNlOGIxMzg5MzVl
ODNmY2I4YmU0NmVhN2ZmMjcyZGQ0ZjA0ZDBiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvb3JkaW5hdGVzQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb29yZGluYXRlc0N1c3RvbS5jcHAKQEAgLTMz
LDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDb29yZGluYXRlczo6YWx0aXR1ZGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5Db29yZGluYXRlcy5hbHRpdHVkZS5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIENvb3JkaW5hdGVzKiBpbXAgPSBWOENv
b3JkaW5hdGVzOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghaW1wLT5jYW5Qcm92aWRlQWx0
aXR1ZGUoKSkKQEAgLTQzLDcgKzQyLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmcKIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNjdXJhY3lBY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5hbHRpdHVkZUFjY3Vy
YWN5Ll9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7CiAgICAgQ29vcmRpbmF0ZXMqIGltcCA9IFY4Q29vcmRpbmF0ZXM6OnRvTmF0aXZlKGhv
bGRlcik7CiAgICAgaWYgKCFpbXAtPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkpCkBAIC01
Myw3ICs1MSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvb3JkaW5hdGVzOjphbHRpdHVk
ZUFjY3VyYWN5QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENvb3JkaW5hdGVzOjpoZWFkaW5nQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uQ29vcmRpbmF0ZXMuaGVhZGluZy5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIENvb3JkaW5hdGVzKiBpbXAgPSBW
OENvb3JkaW5hdGVzOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghaW1wLT5jYW5Qcm92aWRl
SGVhZGluZygpKQpAQCAtNjMsNyArNjAsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29y
ZGluYXRlczo6aGVhZGluZ0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29yZGluYXRlczo6c3BlZWRBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5zcGVlZC5fZ2V0Iik7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIENvb3JkaW5h
dGVzKiBpbXAgPSBWOENvb3JkaW5hdGVzOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghaW1w
LT5jYW5Qcm92aWRlU3BlZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50Q3VzdG9tLmNwcAppbmRleCA5NTA4M2E4MzE5MjFk
NmIxOTk0MWFiYzkzYmYwYjIxOWFkODgxNWE2Li5hYTU4NjkxZDFiMmQxNGUxYjhjYTIyNzc5YzQ2
Yzc2ODhjYWNlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tRXZlbnQ6OmRl
dGFpbEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkN1c3RvbUV2ZW50LmRl
dGFpbC5fZ2V0Iik7CiAgICAgQ3VzdG9tRXZlbnQqIGltcCA9IFY4Q3VzdG9tRXZlbnQ6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZCA9IGltcC0+c2VyaWFsaXplZFNjcmlwdFZhbHVlKCkuZ2V0KCk7CiAgICAgaWYgKHNlcmlhbGl6
ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TUZvcm1EYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTUZvcm1EYXRhQ3VzdG9tLmNwcAppbmRleCAyYzkwN2QwZTY3MDMxODE3YTRkOWM1YzliNjAx
YTUyM2ZlNDRjMDExLi5lY2Y1NGZjM2Y1ZmQwYWUxOTllOTg3Njk3ZDdkNDU4ZjcyMjkyZWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0
YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
Rm9ybURhdGFDdXN0b20uY3BwCkBAIC01Myw4ICs1Myw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVuCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjphcHBlbmRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkZvcm1E
YXRhLmFwcGVuZCgpIik7Ci0gICAgCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMi
LCBhcmdzLkdldElzb2xhdGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4IGRlNjhhODM5
ZWJkNzU3ZmEzZDQ5ZTlhZWY5NDlkODk5N2RhYzNmOGUuLjY5YjFiMTJiOWUwMTY5OTI5MWQ4Nzgy
ZTc2MDRhMjA3NjJhMzk0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IFY4RE9NU3Ry
aW5nTWFwOjpuYW1lZFByb3BlcnR5UXVlcnkodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9NU3Ry
aW5nTWFwLk5hbWVkUHJvcGVydHlRdWVyeSIpOwogICAgIGlmIChWOERPTVN0cmluZ01hcDo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSktPmNvbnRhaW5zKHRvV2ViQ29yZVN0cmluZyhuYW1lKSkpCiAg
ICAgICAgIHJldHVybiB2OEludGVnZXIoMCwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPigpOwpAQCAtNDgsNyArNDcsNiBAQCB2ODo6SGFuZGxl
PHY4OjpJbnRlZ2VyPiBWOERPTVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01TdHJpbmdNYXA6Om5h
bWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9NU3RyaW5nTWFwLk5h
bWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBTdHJpbmcgdmFsdWUgPSBWOERPTVN0cmluZ01hcDo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPml0ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUpKTsKICAg
ICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpAQCAt
NTcsNyArNTUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01TdHJpbmdNYXA6Om5hbWVk
UHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAKIHY4OjpIYW5kbGU8djg6OkFy
cmF5PiBWOERPTVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01TdHJpbmdNYXAuTmFt
ZWRQcm9wZXJ0eUVudW1lcmF0b3IiKTsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICBW
OERPTVN0cmluZ01hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPmdldE5hbWVzKG5hbWVzKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpBcnJheT4gcHJvcGVydGllcyA9IHY4OjpBcnJheTo6TmV3KG5h
bWVzLnNpemUoKSk7CkBAIC02OCw3ICs2NSw2IEBAIHY4OjpIYW5kbGU8djg6OkFycmF5PiBWOERP
TVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29yCiAK
IHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IFY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5RGVs
ZXRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01TdHJpbmdNYXAuTmFtZWRQcm9wZXJ0eURl
bGV0ZXIiKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBWOERPTVN0cmluZ01hcDo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPmRlbGV0ZUl0ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUp
LCBlYyk7CiAgICAgcmV0dXJuIHY4Qm9vbGVhbighZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKQEAg
LTc2LDcgKzcyLDYgQEAgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhET01TdHJpbmdNYXA6Om5h
bWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3RyaW4KIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01TdHJpbmdNYXAuTmFtZWRQ
cm9wZXJ0eVNldHRlciIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFY4RE9NU3Ry
aW5nTWFwOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKS0+c2V0SXRlbSh0b1dlYkNvcmVTdHJpbmco
bmFtZSksIHRvV2ViQ29yZVN0cmluZyh2YWx1ZSksIGVjKTsKICAgICBpZiAoZWMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAppbmRleCA4MjlmYTYyMTNmN2Y5NjhkY2QwMDA2ZGNkODZmYzQ1ZDUyYTIyMjlkLi4zMzUx
Njk5NTc0NTczYTQ1NDRiMGZkNTJhMDk1YmUyZDQ2ZTcxZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTIyNyw4ICsyMjcsNiBAQCB2b2lkIFY4RE9NV2luZG93OjpvcGVuZXJBY2Nlc3NvclNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCkiKTsKLQogICAgIFN0cmluZyBldmVudFR5cGUgPSB0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSk7CiAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7
CiAKQEAgLTI1OSw4ICsyNTcsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6
OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRv
dy5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKLQogICAgIFN0cmluZyBldmVudFR5cGUgPSB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9v
bGVhblZhbHVlKCk7CiAKQEAgLTM0MywxNCArMzM5LDEyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRP
TVdpbmRvdy5wb3N0TWVzc2FnZSgpIik7CiAgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlQ2Fs
bGJhY2soYXJncyk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdp
bmRvdy53ZWJraXRQb3N0TWVzc2FnZSgpIik7CiAgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdl
Q2FsbGJhY2soYXJncyk7CiB9CiAjZW5kaWYKQEAgLTM2MSw3ICszNTUsNiBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cwogLy8gc3dpdGNoaW5nIGNvbnRleHQgb2YgcmVjZWl2ZXIuIEkgY29uc2lk
ZXIgaXQgaXMgZGFuZ2Vyb3VzLgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0
b1N0cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uRE9NV2luZG93LnRvU3RyaW5nKCkiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGRvbVdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gYXJncy5UaGlzKCktPk9iamVjdFByb3RvVG9TdHJpbmcoKTsK
QEAgLTM3MCwxMyArMzYzLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnJlbGVhc2VFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5ub3AoKSIp
OwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm5vcCgpIik7CiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIApAQCAtNDI0LDcgKzQxNSw2IEBAIHN0YXRpYyB2b2lk
IHNldFVwRGlhbG9nKERPTVdpbmRvdyogZGlhbG9nLCB2b2lkKiBoYW5kbGVyKQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnNo
b3dNb2RhbERpYWxvZygpIik7CiAgICAgRE9NV2luZG93KiBpbXBsID0gVjhET01XaW5kb3c6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5n
U3RhdGU6Omluc3RhbmNlKCk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShzdGF0ZSwgaW1wbC0+ZnJhbWUoKSkpCkBAIC00NDIsNyArNDMyLDYgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5k
b3c6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLkRPTVdpbmRvdy5vcGVuKCkiKTsKICAgICBET01XaW5kb3cqIGltcGwgPSBWOERP
TVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0
ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBpbXBsLT5mcmFtZSgpKSkKQEAgLTQ2Miw4
ICs0NTEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om9wZW5DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuSW5k
ZXhlZFByb3BlcnR5R2V0dGVyIik7Ci0KICAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV2lu
ZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CkBAIC00ODEsOCArNDY4LDYgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgs
IGNvbnN0IHYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3Bl
cnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5OYW1lZFByb3BlcnR5
R2V0dGVyIik7Ci0KICAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV2luZG93Ojp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CkBAIC01MjIsMTQgKzUwNywxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldFRpbWVvdXRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRv
dy5zZXRUaW1lb3V0KCkiKTsKICAgICByZXR1cm4gV2luZG93U2V0VGltZW91dEltcGwoYXJncywg
dHJ1ZSk7CiB9CiAKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJbnRl
cnZhbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uRE9NV2luZG93LnNldEludGVydmFsKCkiKTsKICAgICByZXR1cm4gV2luZG93U2V0VGlt
ZW91dEltcGwoYXJncywgZmFsc2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggZGRhNjQxOGEwZTE5
NjcwNjk3YjBkYmVhM2VhZDkzOWQ3NDJkOGE2My4uYzdjZTU3YWEzYjJkNTFhNTEwYzEwZTBiYWY1
MzA0ODVlMTFhNDU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtNTYsNyArNTYsNiBAQCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXAoRGF0YVZpZXcqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Z2V0SW50
OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uRGF0YVZpZXcuZ2V0SW50OCIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogCkBAIC03MSw3ICs3MCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpn
ZXRJbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5EYXRhVmlldy5nZXRVaW50OCIpOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogCkBAIC04Niw3ICs4NCw2IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRVaW50OENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRJ
bnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5EYXRhVmlldy5zZXRJbnQ4Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAKQEAgLTEwMiw3ICs5OSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3
OjpzZXRJbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldFVpbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5EYXRhVmlldy5zZXRVaW50OCIpOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDdkMThhNDRhYTZkMjk5ZjU1OGJjMGFjZjg5OTcxZDhl
ZDcxMDc0YmEuLmM4OWJhMDNkMWIyNDhhYWE1ZjQxOTkzMzkyNzZkMmI5Nzg3OGVjZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC02NiwxNCArNjYsMTIgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9z
dE1lc3NhZ2UiKTsKICAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhhcmdzKTsK
IH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfVkVORE9SX1BSRUZJWEVTKQogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRlZGlj
YXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKICAgICByZXR1cm4gaGFuZGxlUG9zdE1l
c3NhZ2VDYWxsYmFjayhhcmdzKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCmluZGV4IGU3NTU2YTIzMDE2NzYyYjE3OWEyZDRlYzgzNWEyNmUxZDljMzNmNDMuLjllZjlh
ODgyYmY4Mjk5NGFjYWE1NzBhYzcyY2IyY2ZjM2RjM2RhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVu
dEN1c3RvbS5jcHAKQEAgLTEyMyw3ICsxMjMsNiBAQCBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6
Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQodjg6OkxvY2FsPHY4OjpWYQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9u
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRGV2aWNlTW90aW9uRXZlbnQu
YWNjZWxlcmF0aW9uLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGluZm8uSG9sZGVyKCk7CiAgICAgRGV2aWNlTW90aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlTW90
aW9uRXZlbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPmRldmljZU1vdGlvbkRh
dGEoKS0+YWNjZWxlcmF0aW9uKCkpCkBAIC0xMzMsNyArMTMyLDYgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDwKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHlBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5EZXZpY2VNb3Rpb25FdmVudC5hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5Ll9n
ZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7
CiAgICAgRGV2aWNlTW90aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlTW90aW9uRXZlbnQ6OnRvTmF0
aXZlKGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPmRldmljZU1vdGlvbkRhdGEoKS0+YWNjZWxlcmF0
aW9uSW5jbHVkaW5nR3Jhdml0eSgpKQpAQCAtMTQzLDcgKzE0MSw2IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5
QWNjZXNzb3JHCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50Ojpy
b3RhdGlvblJhdGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5EZXZpY2VN
b3Rpb25FdmVudC5yb3RhdGlvblJhdGUuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBEZXZpY2VNb3Rpb25FdmVudCogaW1wID0g
VjhEZXZpY2VNb3Rpb25FdmVudDo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIWltcC0+ZGV2
aWNlTW90aW9uRGF0YSgpLT5yb3RhdGlvblJhdGUoKSkKQEAgLTE1Myw3ICsxNTAsNiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25SYXRlQWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rp
b25FdmVudDo6aW50ZXJ2YWxBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5E
ZXZpY2VNb3Rpb25FdmVudC5pbnRlcnZhbC5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIERldmljZU1vdGlvbkV2ZW50KiBpbXAg
PSBWOERldmljZU1vdGlvbkV2ZW50Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghaW1wLT5k
ZXZpY2VNb3Rpb25EYXRhKCktPmNhblByb3ZpZGVJbnRlcnZhbCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCAzODY5MGJhZDgxYmM0OTU2NWQ3ZmJiMDJmYTc4
OGFhZWM5YTk1MTYwLi5hZDQ3M2I2N2Y4YTdlYTA4MzRmODFiYThiZjAwNDk5ODM5MWE2YzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU9y
aWVudGF0aW9uRXZlbnQ6OmFscGhhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uRGV2aWNlT3JpZW50YXRpb25FdmVudC5hbHBoYS5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIERldmljZU9yaWVudGF0aW9u
RXZlbnQqIGltcCA9IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6dG9OYXRpdmUoaG9sZGVyKTsK
ICAgICBpZiAoIWltcC0+b3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUFscGhhKCkpCkBAIC00Nyw3
ICs0Niw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmFscGhhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJldGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmJldGEuX2dldCIpOwogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OnRvTmF0aXZl
KGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVCZXRhKCkp
CkBAIC01Nyw3ICs1NSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU9yaWVudGF0
aW9uRXZlbnQ6OmJldGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6CiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1hQWNjZXNzb3JHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRGV2aWNlT3JpZW50YXRpb25FdmVudC5nYW1tYS5fZ2V0
Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwog
ICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIWltcC0+b3JpZW50YXRpb24oKS0+Y2FuUHJv
dmlkZUdhbW1hKCkpCkBAIC02Nyw3ICs2NCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERl
dmljZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1hQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29sdXRl
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRGV2aWNlT3JpZW50YXRpb25F
dmVudC5hYnNvbHV0ZS5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLkhvbGRlcigpOwogICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2
aWNlT3JpZW50YXRpb25FdmVudDo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIWltcC0+b3Jp
ZW50YXRpb24oKS0+Y2FuUHJvdmlkZUFic29sdXRlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMTVmMDQ1
YTRjMWI1YTMyODc0ZTkwMGYzZDIwN2U1ODVmYzgyMGRiMy4uMDUxNGEyOWZkMWFhNGUzMGI0ODJm
NWI1ODdmYTgwODg5YzBiMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNjYsOCArNjYsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpldmFs
dWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uRG9jdW1lbnQuZXZhbHVhdGUoKSIpOwotCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IFY4RG9jdW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBleHByZXNzaW9uID0gdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RmlsZVJlYWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhGaWxlUmVhZGVyQ3VzdG9tLmNwcAppbmRleCBiNDlhMTUzZTdlMWM1M2RhZjE4ZDI2NDA5YjM0
ZDY1MzkwYmI3ZDlhLi44ODQ5ZGJjYjMyYjViMjRiZmUxZDc4ZmQwMGE3Y2M3MTE2ZjVlNjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxl
UmVhZGVyQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZpbGVSZWFkZXI6OnJlc3VsdEFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLkZpbGVSZWFkZXIucmVzdWx0Ll9nZXQiKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgRmlsZVJl
YWRlciogaW1wID0gVjhGaWxlUmVhZGVyOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmIChpbXAt
PnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlv
bkN1c3RvbS5jcHAKaW5kZXggNDJmMTNkZmNiNDIzNjIyNzg5YjA2ZGI0MDhjYWQ1N2YwZTlmODJj
OS4uOGM1MWJlMTU5ZDM4Y2Y1OTI2YzcwYTQxOTYwNjYwNzEzOTRlMDYwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3Vz
dG9tLmNwcApAQCAtMTMwLDggKzEzMCw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0
aW9ucz4gY3JlYXRlUG9zaXRpb25PcHRpb25zKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhCiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigpIik7Ci0KICAgICBib29sIHN1Y2NlZWRlZCA9
IGZhbHNlOwogCiAgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sg
PSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOFBvc2l0aW9uQ2FsbGJhY2s+KGFyZ3NbMF0s
IHN1Y2NlZWRlZCwgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTU2LDggKzE1NCw2IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5HZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKCkiKTsKLQogICAgIGJv
b2wgc3VjY2VlZGVkID0gZmFsc2U7CiAKICAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9z
aXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4UG9zaXRpb25DYWxs
YmFjaz4oYXJnc1swXSwgc3VjY2VlZGVkLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29s
bGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggZWU2MDc3MjZmNWMwYWNjNTQ3MzcxOGZkMWQ4ZDYxNjUz
ODYyNDU1YS4uMWM5NWVhN2ZiMzM0NzYzNzJhODE3YjE0NGM4M2MzMGFmMDIwMjQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNzQsOCArNzQsNiBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGdldEl0ZW0oSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIHY4
OjpIYW5kbGU8dgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6
bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQWxsQ29sbGVj
dGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7Ci0KICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdl
dFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFs
TmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQpAQCAtODcsMTQgKzg1LDEyIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0
aW9uOjppdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5IVE1MQWxsQ29sbGVjdGlvbi5pdGVtKCkiKTsKICAgICBIVE1MQWxsQ29sbGVj
dGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdzWzBdLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLkhUTUxBbGxDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7CiAgICAgSFRN
TEFsbENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTEFsbENvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAKQEAgLTEwNiw3ICsxMDIsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6Y2FsbEFzRnVu
Y3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLkhUTUxBbGxDb2xsZWN0aW9uLmNhbGxBc0Z1bmN0aW9uKCkiKTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAxMTI3MWVmYzQ3NmE2YTA1NmEyNmY4NWJiYzQ2
Zjg4MzM1ZmJkNjk2Li5jOTAwZWYyNmYwOWZmMzZiZWI4NzFmYTk5OWNiZmE2MGIwYTUyNzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6
OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElO
Q19TVEFUUygiRE9NLkhUTUxDYW52YXNFbGVtZW50LmNvbnRleHQiKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgSFRNTENhbnZhc0VsZW1l
bnQqIGltcCA9IFY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgU3Ry
aW5nIGNvbnRleHRJZCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAppbmRleCBmMjczYTdkM2I2MGM3YzZkNTkwYzY4OGFkOWJiMTk3Mzc5ZjE4YTA5Li43
ZDY5NzFiYjgyNjM4N2FiZDVjMGYwNjQ5MGU1ZDU5ZTMwMzZkNzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIp
OwotCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90
eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1l
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxE
b2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGVjYTNlNDNjNGE4ZDQxYjZmZDYwMjgzOWY3MThh
OTI3YjQxY2VkYzMuLjc0ODUyMTZmMDk3N2ZiNjUxMDgyMzYwOTBmNTcxNTkyZmE5YWE5OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTE3LDcgKzExNyw2IEBAIHN0YXRpYyBTdHJpbmcgd3Jp
dGVIZWxwZXJHZXRTdHJpbmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50LndyaXRlKCki
KTsKICAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBodG1sRG9jdW1lbnQtPndyaXRlKHdyaXRlSGVscGVy
R2V0U3RyaW5nKGFyZ3MpLCBhY3RpdmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgp
KS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTEyNSw3ICsx
MjQsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTERvY3VtZW50Ojp3cml0ZWxuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQud3JpdGVsbigpIik7CiAgICAgSFRN
TERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgaHRtbERvY3VtZW50LT53cml0ZWxuKHdyaXRlSGVscGVyR2V0U3RyaW5n
KGFyZ3MpLCBhY3RpdmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKS0+ZG9jdW1l
bnQoKSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTEzMyw3ICsxMzEsNiBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlbG5DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9j
dW1lbnQ6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElO
Q19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC5vcGVuKCkiKTsKICAgICBIVE1MRG9jdW1lbnQqIGh0
bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAog
ICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDUyMmNhN2JkZWUyMmI3YWQ5ZDdjMzhmOGY4ZmE3NDRk
MDNjYjE2OTkuLmYwZGZiZTBjZmQ0NDY5ZTZhNWJjNjRkOTgzMWIzOWEyYWIyNGM5ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTU1LDggKzU1
LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW8KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwotCiAg
ICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hh
aW4obmFtZSkuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBp
ZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKQEAg
LTY4LDcgKzY2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2EKIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxl
Y3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1w
ID0gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0
b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYWM5YjlhZmUyOGQwYTBmZmQxZTgy
MGNkZDg5NWZiNGU3MzYxZjYyNy4uZGFmZGUyZjM4YWU4YWVhZDFkNDNlZGIzZWJkYmI3MGRlNzFh
MTQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50
OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEZvcm1FbGVtZW50LkluZGV4
ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IFY4SFRNTEZv
cm1FbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBm
b3JtRWxlbWVudCA9IGZvcm0tPmVsZW1lbnRzKCktPml0ZW0oaW5kZXgpOwpAQCAtNTMsNyArNTIs
NiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUVsZW1lbnQ6OmluZGV4ZWRQcm9w
ZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgYwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MRm9ybUVsZW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uSFRNTEZvcm1FbGVtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBIVE1MRm9ybUVs
ZW1lbnQqIGltcCA9IFY4SFRNTEZvcm1FbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
ICAgICBBdG9taWNTdHJpbmcgdiA9IHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0
RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBmOGJmMzU1OGYzMzE5MTdiMmU1MmVj
M2VjYmY3OWQ3NzY3YzMzN2EzLi4yYTAwNDhkZTg1YjlkZWVhZjI1MWRiZmFlYmNlYjUwZWU3YmFl
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGcmFt
ZVNldEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
SFRNTEZyYW1lU2V0RWxlbWVudC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgSFRNTEZyYW1l
U2V0RWxlbWVudCogaW1wID0gVjhIVE1MRnJhbWVTZXRFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICBOb2RlKiBmcmFtZU5vZGUgPSBpbXAtPmNoaWxkcmVuKCktPm5hbWVkSXRl
bSh0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSkpOwogICAgIGlmICghZnJhbWVOb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZTQ0MWEzM2FiNzAwOGJmZjM0
OWQ4YjRmZmU4MWQ4Zjc1MTI0MmUwNC4uMmE2NWI1OWNjODZjZjA0Y2M2YjUzMTY3ZmVmZmRiNjgx
ZTc5OGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC00Nyw3
ICs0Nyw2IEBAIFdyYXBwZXJUeXBlSW5mbyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6
aW5mbyA9IHsgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RyCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbWFnZUVsZW1lbnQu
Q29udHJ1Y3RvciIpOwogCiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJl
IGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAKaW5kZXggNzIxNDhmMDI2M2ZlMmZiZjk5NTljYjFlYmEwNjZhOGNiOTRj
ODEyZC4uMzA4NTNkYzhiNDVhYWU0YzgxZmMyYjZkM2UzZDY0MWE1MmU1MTEyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25T
dGFydEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1l
bnQuc2VsZWN0aW9uU3RhcnQuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJ
bnB1dEVsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAKQEAgLTUyLDcgKzUxLDYgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnRBY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWwKIAogdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0
YXJ0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQuX3NldCIpOwogICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBIVE1M
SW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7
CiAKQEAgLTY1LDcgKzYzLDYgQEAgdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0
YXJ0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQu
X2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIo
KTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6OnRvTmF0
aXZlKGhvbGRlcik7CiAKQEAgLTc4LDcgKzc1LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHYK
IAogdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFjY2Vzc29yU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5w
dXRFbGVtZW50LnNlbGVjdGlvbkVuZC5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4
SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKIApAQCAtOTIsNyArODgsNiBAQCB2
b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1
dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19T
VEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9uRGlyZWN0aW9uLl9nZXQiKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgSFRN
TElucHV0RWxlbWVudCogaW1wID0gVjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIp
OwogCkBAIC0xMDQsNyArOTksNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb25BY2Nlc3NvckdldHRlcih2ODo6TAogCiB2b2lkIFY4
SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uQWNjZXNzb3JTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVs
ZW1lbnQuc2VsZWN0aW9uRGlyZWN0aW9uLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW1wID0g
VjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIpOwogCkBAIC0xMTgsNyArMTEyLDYg
QEAgdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbkFjY2Vzc29yU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
SW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZXRTZWxl
Y3Rpb25SYW5nZSIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5I
b2xkZXIoKTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6
OnRvTmF0aXZlKGhvbGRlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDY5OWY4
NzUyYzcyYjQ0ODE3ZmU4NzcyOTE5NDkzYWQ3NmQwNjJhYWMuLmE5ODE1YTlhMTc5YmFmZWMzYTMx
YzgyZWRjMDlkNzkwOTM0NWEyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzks
MTQgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTExpbmtFbGVtZW50OjpzaXplc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLkhUTUxMaW5rRWxlbWVudC5zaXplcy5fZ2V0Iik7CiAgICAgSFRNTExpbmtFbGVtZW50
KiBpbXAgPSBWOEhUTUxMaW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAg
cmV0dXJuIHRvVjgoaW1wLT5zaXplcygpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CiB9CiAKIHZvaWQgVjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxMaW5r
RWxlbWVudC5zaXplcy5fc2V0Iik7CiAgICAgSFRNTExpbmtFbGVtZW50KiBpbXAgPSBWOEhUTUxM
aW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW1wLT5zZXRTaXplcyh0
b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggYmYxOTViM2ExYjg1YjkwYzg1MDllYmM2NmMyM2Y5OWI5N2EzYjhiZS4uZmQ5ODgxYmI1ZGNj
MGRiMzNkZmRhZWM3OTRiZTgyN2JkZTlhNGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFY4SFRNTE1l
ZGlhRWxlbWVudDo6Y29udHJvbGxlckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MTWVkaWFFbGVtZW50Lm1lZGlhQ29u
dHJvbGxlci5fc2V0Iik7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogaW1wID0gVjhIVE1MTWVkaWFF
bGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBNZWRpYUNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSAwOwogICAgIGlmIChWOE1lZGlhQ29udHJvbGxlcjo6SGFzSW5zdGFuY2UodmFs
dWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNGY4NTEyMmI1
OGU3ZTc5YWIzODZjMzFhODNkM2JlOGNkN2EwNzhjYi4uMDFhZTdkMDdkMDNiYjhlMDdhZjEzNTJk
MzdlMDNhZTVlYmQ2MmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC02MSw3ICs2MSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJ
dGVtcyhIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvCiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVy
Iik7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90
b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwpAQCAtNzQsNyArNzMsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OgogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxl
Y3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0
cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogCkBAIC04
Niw3ICs4NCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlv
bjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtCiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rp
b24ucmVtb3ZlKCkiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBIVE1MU2VsZWN0
RWxlbWVudCogYmFzZSA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oaW1wLT5vd25l
ck5vZGUoKSk7CiAgICAgcmV0dXJuIHJlbW92ZUVsZW1lbnQoYmFzZSwgYXJncyk7CkBAIC05NCw3
ICs5MSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24uYWRk
KCkiKTsKICAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0p
KQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdz
LkdldElzb2xhdGUoKSk7CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xMjAsNyArMTE2
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiB2b2lkIFY4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpsZW5ndGhBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmxlbmd0aC5fc2V0Iik7
CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlv
bjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgZG91YmxlIHYgPSB2YWx1ZS0+TnVtYmVy
VmFsdWUoKTsKICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSAwOwpAQCAtMTQxLDcgKzEzNiw2IEBA
IHZvaWQgVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omxlbmd0aEFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxP
cHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gY29sbGVjdGlv
bi0+aXRlbShpbmRleCk7CkBAIC0xNTMsNyArMTQ3LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3Qg
aW4KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRl
eGVkUHJvcGVydHlTZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9N
LkhUTUxPcHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJvcGVydHlTZXR0ZXIiKTsKICAgICBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBz
dGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGNvbGxlY3Rpb24tPm93bmVyTm9kZSgpKTsK
ICAgICByZXR1cm4gdG9PcHRpb25zQ29sbGVjdGlvblNldHRlcihpbmRleCwgdmFsdWUsIGJhc2Us
IGluZm8uR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBi
YTUxYTFkMTcyMWMzNGNmYjU0ODhiZmU1OGIyMjU5OTYwNjI4ZjEwLi42MTlhMzhjNzMxNmIzMjEy
YWRiZjgyNjk0OTEzN2UyY2ZmZWQwYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3Bw
CkBAIC0zOSwxNCArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvckFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLkhUTUxPdXRwdXRFbGVtZW50Lmh0bWxGb3IuX2dldCIpOwogICAg
IEhUTUxPdXRwdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxPdXRwdXRFbGVtZW50Ojp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9WOChpbXAtPmh0bWxGb3IoKSwgaW5mby5Ib2xk
ZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2b2lkIFY4SFRNTE91dHB1dEVsZW1lbnQ6
Omh0bWxGb3JBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uSFRNTE91dHB1dEVsZW1lbnQuaHRtbEZvci5fc2V0Iik7CiAgICAg
SFRNTE91dHB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTE91dHB1dEVsZW1lbnQ6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIGltcC0+c2V0Rm9yKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBs
dWdJbkVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGE0MGNhMjJjYWQ3NGRhMDU4OGRk
ZGZlYTk4ZTdmMWJmZTQ0MmY4MDkuLjgxNjY5YjhhMDE5ODExZDAyMzM3NjQwNjIzYTgzZDliZjc2
YWZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKQEAgLTc1LDYyICs3NSw1MiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0TmFtZWRTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
QXBwbGV0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MQXBwbGV0RWxlbWVudC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgcmV0dXJuIG5w
T2JqZWN0TmFtZWRHZXR0ZXI8VjhIVE1MQXBwbGV0RWxlbWVudD4obmFtZSwgaW5mbyk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxFbWJlZEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEVtYmVkRWxlbWVudC5OYW1lZFByb3Bl
cnR5R2V0dGVyIik7CiAgICAgcmV0dXJuIG5wT2JqZWN0TmFtZWRHZXR0ZXI8VjhIVE1MRW1iZWRF
bGVtZW50PihuYW1lLCBpbmZvKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9i
amVjdEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
SFRNTE9iamVjdEVsZW1lbnQuTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIHJldHVybiBucE9i
amVjdE5hbWVkR2V0dGVyPFY4SFRNTE9iamVjdEVsZW1lbnQ+KG5hbWUsIGluZm8pOwogfQogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQXBwbGV0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eVNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
SFRNTEFwcGxldEVsZW1lbnQuTmFtZWRQcm9wZXJ0eVNldHRlciIpOwogICAgIHJldHVybiBucE9i
amVjdE5hbWVkU2V0dGVyPFY4SFRNTEFwcGxldEVsZW1lbnQ+KG5hbWUsIHZhbHVlLCBpbmZvKTsK
IH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEVtYmVkRWxlbWVudDo6bmFtZWRQcm9w
ZXJ0eVNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uSFRNTEVtYmVkRWxlbWVudC5OYW1lZFByb3BlcnR5U2V0dGVyIik7CiAgICAgcmV0dXJu
IG5wT2JqZWN0TmFtZWRTZXR0ZXI8VjhIVE1MRW1iZWRFbGVtZW50PihuYW1lLCB2YWx1ZSwgaW5m
byk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPYmplY3RFbGVtZW50OjpuYW1l
ZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5IVE1MT2JqZWN0RWxlbWVudC5OYW1lZFByb3BlcnR5U2V0dGVyIik7CiAgICAg
cmV0dXJuIG5wT2JqZWN0TmFtZWRTZXR0ZXI8VjhIVE1MT2JqZWN0RWxlbWVudD4obmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQXBwbGV0RWxlbWVu
dDo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLkhUTUxBcHBsZXRFbGVtZW50KCkiKTsKICAgICByZXR1cm4gbnBP
YmplY3RJbnZva2VEZWZhdWx0SGFuZGxlcihhcmdzKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTEVtYmVkRWxlbWVudDo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxFbWJlZEVsZW1lbnQo
KSIpOwogICAgIHJldHVybiBucE9iamVjdEludm9rZURlZmF1bHRIYW5kbGVyKGFyZ3MpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT2JqZWN0RWxlbWVudDo6Y2FsbEFzRnVuY3Rp
b25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygi
RE9NLkhUTUxPYmplY3RFbGVtZW50KCkiKTsKICAgICByZXR1cm4gbnBPYmplY3RJbnZva2VEZWZh
dWx0SGFuZGxlcihhcmdzKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEM+CiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gbnBPYmplY3RJbmRleGVkR2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxQbHVnSW5FbGVt
ZW50LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBpbXAg
PSBDOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBzY3JpcHRJ
bnN0YW5jZSA9IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3RhbmNlKQpA
QCAtMTQ2LDcgKzEzNiw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEluZGV4ZWRH
ZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluCiB0ZW1wbGF0ZSA8Y2xh
c3MgQz4KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEluZGV4ZWRTZXR0ZXIodWludDMy
X3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxQbHVnSW5FbGVtZW50LkluZGV4
ZWRQcm9wZXJ0eVNldHRlciIpOwogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBpbXAgPSBDOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBzY3JpcHRJbnN0YW5jZSA9
IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3RhbmNlKQpAQCAtMTYxLDM3
ICsxNTAsMzEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW5kZXhlZFNldHRlcih1
aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTEFwcGxldEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBp
bmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MQXBwbGV0RWxlbWVudC5JbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICByZXR1cm4g
bnBPYmplY3RJbmRleGVkR2V0dGVyPFY4SFRNTEFwcGxldEVsZW1lbnQ+KGluZGV4LCBpbmZvKTsK
IH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEVtYmVkRWxlbWVudDo6aW5kZXhlZFBy
b3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxFbWJlZEVsZW1lbnQuSW5kZXhlZFByb3BlcnR5
R2V0dGVyIik7CiAgICAgcmV0dXJuIG5wT2JqZWN0SW5kZXhlZEdldHRlcjxWOEhUTUxFbWJlZEVs
ZW1lbnQ+KGluZGV4LCBpbmZvKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9i
amVjdEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT2JqZWN0
RWxlbWVudC5JbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICByZXR1cm4gbnBPYmplY3RJbmRl
eGVkR2V0dGVyPFY4SFRNTE9iamVjdEVsZW1lbnQ+KGluZGV4LCBpbmZvKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFwcGxldEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eVNldHRl
cih1aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEFwcGxldEVsZW1l
bnQuSW5kZXhlZFByb3BlcnR5U2V0dGVyIik7CiAgICAgcmV0dXJuIG5wT2JqZWN0SW5kZXhlZFNl
dHRlcjxWOEhUTUxBcHBsZXRFbGVtZW50PihpbmRleCwgdmFsdWUsIGluZm8pOwogfQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRW1iZWRFbGVtZW50OjppbmRleGVkUHJvcGVydHlTZXR0
ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxFbWJlZEVsZW1l
bnQuSW5kZXhlZFByb3BlcnR5U2V0dGVyIik7CiAgICAgcmV0dXJuIG5wT2JqZWN0SW5kZXhlZFNl
dHRlcjxWOEhUTUxFbWJlZEVsZW1lbnQ+KGluZGV4LCB2YWx1ZSwgaW5mbyk7CiB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPYmplY3RFbGVtZW50OjppbmRleGVkUHJvcGVydHlTZXR0
ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxPYmplY3RFbGVt
ZW50LkluZGV4ZWRQcm9wZXJ0eVNldHRlciIpOwogICAgIHJldHVybiBucE9iamVjdEluZGV4ZWRT
ZXR0ZXI8VjhIVE1MT2JqZWN0RWxlbWVudD4oaW5kZXgsIHZhbHVlLCBpbmZvKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDkxOWM5MTM1MDYwNTA4ODZiMzFhY2QxOTE0
N2IwNmQwYjliMjQ0YTkuLjlhZTk5Y2FmZjUzM2EyMGU1OTQxZTAzMzg2Y2U1NGU0ZTE2Yzk0NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxl
Y3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTU3LDE0ICs1NywxMiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0
dGVyKHVpbnQzMl90IGluZGV4LAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0
RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5IVE1MU2VsZWN0RWxlbWVudC5JbmRleGVkUHJvcGVydHlTZXR0ZXIiKTsK
ICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gVjhIVE1MU2VsZWN0RWxlbWVudDo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvT3B0aW9uc0NvbGxlY3Rpb25TZXR0
ZXIoaW5kZXgsIHZhbHVlLCBzZWxlY3QsIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTFNlbGVjdEVs
ZW1lbnQucmVtb3ZlIik7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGltcCA9IFY4SFRNTFNlbGVj
dEVsZW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHJldHVybiByZW1vdmVFbGVt
ZW50KGltcCwgYXJncyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCmluZGV4IDFlNWUxZWEzZDljMGRhYTQyNjBiNjg1
Y2U3N2Q3N2I0ZTk4YmU2MjYuLmY0NjNjMjNhMTE2ZjJiOWQzYzk1ODhkYjVlZDExMTZlYTg4NDlj
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3Rv
cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhp
c3RvcnlDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6c3RhdGVBY2Nlc3NvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5IaXN0b3J5LnN0YXRlIik7CiAgICAgSGlzdG9yeSogaGlzdG9y
eSA9IFY4SGlzdG9yeTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKICAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShWOEhpZGRl
blByb3BlcnR5TmFtZTo6c3RhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApp
bmRleCBmOTczMzYzOGIzYWU3N2Q5ZmE5NzViY2FkNzUzN2NjNDFiODQ4NDllLi43MGU4ZmZiNmQ1
Mzc0ZGQ3ZjljZDMwNGNiODRmNjMxMjFkYTAyZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAKQEAgLTgxLDcgKzgxLDYgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0
Ojpub2RlQXNTY3JpcHRWYWx1ZShTY3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUqIG5vZGUKIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3RD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiSW5q
ZWN0ZWRTY3JpcHRIb3N0Lmluc3BlY3RlZE9iamVjdCgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC05NSw3ICs5NCw2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVk
T2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
amVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWVDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0
LmludGVybmFsQ29uc3RydWN0b3JOYW1lKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTEwNyw3ICsxMDUsNiBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3Ry
dWN0b3JOYW1lQ2FsbGJhY2soY29ucwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmlzSFRNTEFsbENvbGxlY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFs
bENvbGxlY3Rpb25DYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xMjAsNyArMTE3LDYgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9u
Q2FsbGJhY2soY29uc3QgdjgKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0Ojp0eXBlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJ
TkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC50eXBlQ2FsbGJhY2soKSIpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAt
MTU2LDcgKzE1Miw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6dHlwZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0
SG9zdC5mdW5jdGlvbkRldGFpbHNDYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xOTYsNyArMTkxLDYg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRl
dGFpbHNDYWxsYmFjayhjb25zdCB2ODo6QXIKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXNDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0Lmdl
dEludGVybmFsUHJvcGVydGllcygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0yNDMsNyArMjM3LDYgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OkFycmF5PiBnZXRKU0xpc3RlbmVyRnVuY3Rpb25zKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgRXYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlFdmVudExpc3Rl
bmVyQ2FsbGJhY2soKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMjc4LDcgKzI3MSw2IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnNDYWxsYmFjayhj
b25zdCB2ODo6CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6
aW5zcGVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdCgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAyKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0yOTIsNyArMjg0
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUlkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5kYXRhYmFzZUlk
KCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKQEAgLTMwOCw3ICsyOTksNiBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudAogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2Ny
aXB0SG9zdC5zdG9yYWdlSWQoKSIpOwogICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdG9yYWdl
KiBzdG9yYWdlID0gVjhTdG9yYWdlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKTsKICAgICBpZiAoc3RvcmFnZSkKQEAgLTMxOCw3ICszMDgsNiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNj
cmlwdEhvc3Q6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgpIik7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlRocm93RXhjZXB0aW9uKHY4
OjpFeGNlcHRpb246OkVycm9yKHY4OjpTdHJpbmc6Ok5ldygiT25lIGFyZ3VtZW50IGV4cGVjdGVk
LiIpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKaW5kZXggNWIzYTE1NTc0
OWQwZjk4YjdkOTVkNGIwYzA0MzRjNGNjOTU4NmNiMi4uZTA4NzRiMmQ5Yzk1N2IzOTFjZDIyZWY2
YTJjNzI4YzU2NTVmNDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAg
LTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJhbWUuZXZh
bHVhdGVDYWxsYmFjaygpIik7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9IFY4SmF2
YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIGV4
cHJlc3Npb24gPSB0b1dlYkNvcmVTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soYXJnc1sw
XSk7CiAgICAgcmV0dXJuIGltcGwtPmV2YWx1YXRlKGV4cHJlc3Npb24pOwpAQCAtNDcsMjEgKzQ2
LDE4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1
YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLnJlc3RhcnRD
YWxsYmFjaygpIik7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9IFY4SmF2YVNjcmlw
dENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGltcGwtPnJl
c3RhcnQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFt
ZTo6c2NvcGVDaGFpbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiVjhKYXZhU2Ny
aXB0Q2FsbEZyYW1lLnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcigpIik7CiAgICAgSmF2YVNjcmlw
dENhbGxGcmFtZSogaW1wbCA9IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgcmV0dXJuIGltcGwtPnNjb3BlQ2hhaW4oKTsKIH0KIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIlY4SmF2YVNjcmlwdENh
bGxGcmFtZS5zY29wZVR5cGVDYWxsYmFjaygpIik7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSog
aW1wbCA9IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgaW50IHNjb3BlSW5kZXggPSBhcmdzWzBdLT5JbnQzMlZhbHVlKCk7CiAgICAgcmV0dXJuIHY4
OjpJbnQzMjo6TmV3KGltcGwtPnNjb3BlVHlwZShzY29wZUluZGV4KSk7CkBAIC02OSwxNCArNjUs
MTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVU
eXBlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SmF2YVNjcmlwdENhbGxGcmFtZTo6dGhpc09iamVjdEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLnRoaXNPYmplY3RBY2Nlc3NvckdldHRlcigp
Iik7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9IFY4SmF2YVNjcmlwdENhbGxGcmFt
ZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGltcGwtPnRoaXNPYmplY3Qo
KTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dHlw
ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiVjhKYXZhU2NyaXB0Q2FsbEZyYW1l
LnR5cGVBY2Nlc3NvckdldHRlcigpIik7CiAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiZnVuY3Rpb24iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDk3YWY4NGQ1ZTQ3ODZiYTBjYzdi
NGQ2NjRjMjVhYmI3NTUwMDk2OGUuLmZjYTNiN2Y0ZmI4ZTM2MzBlNDg3YWE4NTA2ZDk5YWNhYTZk
ZTdhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIFY4TG9jYXRpb246Omhhc2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uaGFzaC5fc2V0Iik7
CiAgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwog
CkBAIC01OSw3ICs1OCw2IEBAIHZvaWQgVjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhCiAKIHZvaWQgVjhMb2Nh
dGlvbjo6aG9zdEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5ob3N0Ll9zZXQiKTsKICAgICBMb2NhdGlvbiog
aW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEJpbmRpbmdT
dGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CiAKQEAgLTcxLDcgKzY5LDYg
QEAgdm9pZCBWOExvY2F0aW9uOjpob3N0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmEKIAogdm9pZCBWOExvY2F0aW9uOjpob3N0bmFtZUFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5Mb2NhdGlvbi5ob3N0bmFtZS5fc2V0Iik7CiAgICAgTG9jYXRpb24qIGltcGwgPSBW
OExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0
YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogCkBAIC04Myw3ICs4MCw2IEBAIHZvaWQg
VjhMb2NhdGlvbjo6aG9zdG5hbWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4CiAKIHZvaWQgVjhMb2NhdGlvbjo6aHJlZkFjY2Vzc29yU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2Nh
dGlvbi5ocmVmLl9zZXQiKTsKICAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCk7CiAKQEAgLTk1LDcgKzkxLDYgQEAgdm9pZCBWOExvY2F0aW9uOjpocmVm
QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmEKIAogdm9pZCBWOExvY2F0aW9uOjpwYXRobmFtZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5wYXRobmFt
ZS5fc2V0Iik7CiAgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpOwogCkBAIC0xMDcsNyArMTAyLDYgQEAgdm9pZCBWOExvY2F0aW9uOjpwYXRobmFtZUFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djgKIAog
dm9pZCBWOExvY2F0aW9uOjpwb3J0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnBvcnQuX3NldCIpOwogICAg
IExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKIApAQCAt
MTE5LDcgKzExMyw2IEBAIHZvaWQgVjhMb2NhdGlvbjo6cG9ydEFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhCiAKIHZvaWQgVjhMb2NhdGlv
bjo6cHJvdG9jb2xBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucHJvdG9jb2wuX3NldCIpOwogICAgIExvY2F0
aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgQmlu
ZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKIApAQCAtMTM0LDcg
KzEyNyw2IEBAIHZvaWQgVjhMb2NhdGlvbjo6cHJvdG9jb2xBY2Nlc3NvclNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4CiAKIHZvaWQgVjhMb2NhdGlvbjo6c2Vh
cmNoQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLkxvY2F0aW9uLnNlYXJjaC5fc2V0Iik7CiAgICAgTG9jYXRpb24qIGltcGwg
PSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUq
IHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogCkBAIC0xNDYsNyArMTM4LDYgQEAg
dm9pZCBWOExvY2F0aW9uOjpzZWFyY2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjoKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9u
LnJlbG9hZC5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0
UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGlu
Zm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRl
bXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0xNjQsNyArMTU1LDYg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9j
YXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2Nh
dGlvbi5yZXBsYWNlLl9nZXQiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVw
bGFjZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlv
bjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246
OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0xODIsNyAr
MTcyLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9N
LkxvY2F0aW9uLmFzc2lnbi5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQogICAgICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4TG9jYXRpb246OkdldFRlbXBsYXRlKCkpOwpAQCAtMjAxLDcgKzE5MCw2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxv
YWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygi
RE9NLkxvY2F0aW9uLnJlbG9hZCIpOwogICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRp
bmdTdGF0ZTo6aW5zdGFuY2UoKTsKIApAQCAtMjExLDcgKzE5OSw2IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRp
b24ucmVwbGFjZSIpOwogICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6
aW5zdGFuY2UoKTsKIApAQCAtMjI0LDcgKzIxMSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uYXNzaWdu
Iik7CiAgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgp
OwogCkBAIC0yNDcsNyArMjMzLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246
OnZhbHVlT2ZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnRvU3RyaW5nIik7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIExv
Y2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpLCBpbXAtPmZyYW1lKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggYzVhZTg1OTk1
ZmM2ZGY3YzAwNThhOTdlYzU2YTgwYzJhMjY2MDQ5Ny4uM2QyYzk2MjQ5ZmY3M2VlNTAyYTA4NGI3
ZjRiMTQ1M2UyMzYxZTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC00NCw3ICs0NCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2
ZW50OjpkYXRhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2
ZW50LmRhdGEiKTsKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gVjhNZXNzYWdlRXZlbnQ6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3Vs
dDsKQEAgLTg5LDcgKzg4LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50
OjpkYXRhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5wb3J0cyIpOwogICAgIE1lc3NhZ2VFdmVudCog
ZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKICAgICBN
ZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IGV2ZW50LT5wb3J0cygpOwpAQCAtMTA3LDcgKzEwNSw2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVz
c2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVu
dCIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIHR5cGVBcmcgPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBhcmdzWzFdLT5Cb29sZWFuVmFsdWUoKTsK
QEAgLTEzNiw3ICsxMzMsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6
OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OndlYmtpdEluaXRNZXNzYWdlRXZlbnRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk1lc3Nh
Z2VFdmVudC53ZWJraXRJbml0TWVzc2FnZUV2ZW50Iik7CiAgICAgcmV0dXJuIGluaXRNZXNzYWdl
RXZlbnRDYWxsYmFjayhhcmdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IGMzNWM5OTg3
NTk4ZjNmMzc0NGU4YjFkMWEzYzEyZTQ4ZWRiMTU4OTIuLjczNDgyZDg1Njc2OWY5NjJlODVlZWJh
YjRkM2NjYmFjNWI3MzlmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTY1LDE0ICs2NSwxMiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAgcmV0
dXJuIGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soYXJncyk7CiB9CiAKICNpZiBFTkFCTEUoTEVH
QUNZX1ZFTkRPUl9QUkVGSVhFUykKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0
Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQud2Via2l0UG9zdE1lc3NhZ2UiKTsKICAg
ICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhhcmdzKTsKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFw
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9k
ZU1hcEN1c3RvbS5jcHAKaW5kZXggYTViOWYyNGJiODk5NjdiMzk2YjRhYzU2YmUzYzI2NmY3ZjNk
YWYzNi4uYzE1ZDA5Y2NjMzliMTllNjNhOGM0YzE2MWJjMDg0NmE0NDA2ZWFjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVN
YXBDdXN0b20uY3BwCkBAIC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TmFtZWROb2RlTWFwOjppbmRleGVkUHJvcGVydHlHZXR0ZXIo
dWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uTmFtZWROb2RlTWFwLkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIE5h
bWVkTm9kZU1hcCogaW1wID0gVjhOYW1lZE5vZGVNYXA6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBpbXAtPml0ZW0oaW5kZXgpOwogICAgIGlmICgh
cmVzdWx0KQpAQCAtNTUsNyArNTQsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYW1lZE5v
ZGVNYXA6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29ucwogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYW1lZE5vZGVNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uTmFtZWROb2RlTWFwLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsK
IAogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlw
ZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3Bw
CmluZGV4IDdhZDA4ZDYwN2Y1ODMxYjRmZjJjZmY4Zjk5MmUwZGUxZTA1ZjZkYTguLjI0ZTY4NmU3
NTllMTYxZWIxMTUxZmQ5NzdhZmU3NjBmMmU3MGIzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC02Myw3ICs2Myw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY3VzdG9taXplZCB0byB0
YWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50OiBzaG91bGRMYXp5QXR0
YWNoCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRCZWZvcmVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vZGUuaW5z
ZXJ0QmVmb3JlIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhv
bGRlcigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTgwLDcgKzc5LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY3VzdG9taXplZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0
aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50OiBzaG91bGRMYXp5QXR0YWNoCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhOb2RlOjpyZXBsYWNlQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vZGUucmVwbGFjZUNoaWxkIik7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUq
IGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKQEAgLTk2LDcgKzk0LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVwbGFj
ZUNoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Tm9kZTo6cmVtb3ZlQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vZGUucmVtb3ZlQ2hpbGQiKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9kZSog
aW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwpAQCAtMTEyLDcgKzEwOSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlbW92
ZUNoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIC8vIFRoaXMgZnVuY3Rp
b24gaXMgY3VzdG9taXplZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW9uYWwgNHRoIGFy
Z3VtZW50OiBzaG91bGRMYXp5QXR0YWNoCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjph
cHBlbmRDaGlsZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uTm9kZS5hcHBlbmRDaGlsZCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0
aXZlKGhvbGRlcik7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ZWUyYjE1YWExYzc5YjMxM2M5MGVhZGRlZmIxMmQxMTI2Zjk4YTkwZi4uNzFkOGExMjExMDdkNTUy
OTYyNDgxMDdiYzMyOWJiNjc3N2M4YTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGVMaXN0
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vZGVMaXN0Lk5h
bWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBOb2RlTGlzdCogbGlzdCA9IFY4Tm9kZUxpc3Q6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEF0b21pY1N0cmluZyBrZXkgPSB0b1dlYkNvcmVB
dG9taWNTdHJpbmcobmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCmluZGV4
IDczZWQzNDNkMWI2N2YwMTFjYTBlNzJhYzEyYjg4M2MxZTQ2YTZlNDkuLmRkMGExN2QyZGFjZWE1
YjdhNTc0NWY2YjMwNDQwZTI2ODU0NmRiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9t
LmNwcApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vdGlm
aWNhdGlvbkNlbnRlci5SZXF1ZXN0UGVybWlzc2lvbigpIik7CiAgICAgTm90aWZpY2F0aW9uQ2Vu
dGVyKiBub3RpZmljYXRpb25DZW50ZXIgPSBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG5v
dGlmaWNhdGlvbkNlbnRlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ3Vz
dG9tLmNwcAppbmRleCAxNTFjNjI5ODc1YTZjODI1ZjQwZTlmMDFhNGZjYzIyYTRlZWE2YzYzLi40
NThiNGUwM2Q5OWE5NWQwNTA0NjVmYjZjMDYyZWY3ZDExZWZjMTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3Rv
bS5jcHAKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0
aW9uLnJlcXVlc3RQZXJtaXNzaW9uIik7CiAKICAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxWOE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBj
cmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
az4oYXJnc1swXSwgc3VjY2VlZGVkLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhPc2NpbGxhdG9yTm9kZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhPc2NpbGxhdG9yTm9kZUN1
c3RvbS5jcHAKaW5kZXggYTc3YWU5MjNjMmVhYmFiZDFlMmM2MDE2ZmM0Mjg5ZmRiOGI0Y2Q0Yi4u
NjIzNjg2MzMxMmM2MTlhY2Y1ODM3ZjA5NmQwOTY4NWE3N2I2NTE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4T3NjaWxsYXRvck5vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE9zY2lsbGF0b3JOb2Rl
Q3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
VjhPc2NpbGxhdG9yTm9kZTo6dHlwZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Pc2NpbGxhdG9yTm9kZS50eXBlLl9zZXQi
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAg
ICAgT3NjaWxsYXRvck5vZGUqIGltcCA9IFY4T3NjaWxsYXRvck5vZGU6OnRvTmF0aXZlKGhvbGRl
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBv
cFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggMDVmNTlmZWM0MTJlOTY4YjY0MDYwNDMz
OGJkOGIxYmQ3YWJiNDFjYS4uNzIxNGViNDIxZjlmYjQzMTA1NGJkMWMwNmM4NDdiZmQxZjU1YWJj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3Rh
dGVFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjYWNoZVN0YXRlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcG9wU3Rh
dGVFdmVudCwgdjgKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UG9wU3RhdGVFdmVudDo6c3Rh
dGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Qb3BTdGF0ZUV2ZW50LnN0
YXRlIik7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gaW5mby5Ib2xkZXIo
KS0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnN0YXRlKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDY0NjU4MGEzZjEzMzg1NDhhNTRiODU5
MDllNWE5YzVmZDdkOTY1M2UuLjA1NjJjMDMwYTNkZGU5MzY4NWJhYjdiZTE0MmQ5OWYzNDhjMDE2
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0
U2V0Um93TGlzdDo6aXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uU1FMUmVzdWx0U2V0Um93TGlzdC5pdGVtKCkiKTsKIAogICAgIGlm
ICghYXJncy5MZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJv
ciwgIkl0ZW0gaW5kZXggaXMgcmVxdWlyZWQuIiwgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwCmluZGV4IGE0MDEzNzI1MmMwNWZmZjhmYzkzY2UxNGI5OGJhYjFjOTRh
MmRjOGYuLjFkMTFlYzJiZmVjZmJlMjljODlhZTBkZTNmOTU2YWMzM2FhNWQ2NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFu
c2FjdGlvbkN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU1FM
VHJhbnNhY3Rpb24uZXhlY3V0ZVNxbCgpIik7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAw
KQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCmluZGV4IDhiMTRlZThhYzlk
MzIxZmJjOTFmZmE1YzBjMjBlNzcxZmE3YmFkYjMuLjIwZDZjMTQ5MjY3ZmJkMDQzYmQ1YzA0MzVk
ODQ0MjFkZWVjNTJmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcApAQCAtNDgs
NyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU1FMVHJhbnNhY3Rpb25TeW5jLmV4ZWN1
dGVTcWwoKSIpOwogCiAgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQogICAgICAgICByZXR1cm4gc2V0
RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3Bw
CmluZGV4IDgzMTg1YmY0OWRlMTIyMTU1N2FmM2YyYWRhNGI0YjIzNjA0ZDg2YmEuLjJmNzJhZTNh
YzA0MTczMTEwMDkyMGQ0MjY4M2VhNWQzMmNiOWE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcApAQCAtNDIs
NyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFNWR0xlbmd0aDo6dmFsdWVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5T
VkdMZW5ndGgudmFsdWUuX2dldCIpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGg+
KiB3cmFwcGVyID0gVjhTVkdMZW5ndGg6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNW
R0xlbmd0aCYgaW1wID0gd3JhcHBlci0+cHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKQEAgLTU1LDcgKzU0LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
U1ZHTGVuZ3RoOjp2YWx1ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0K
IAogdm9pZCBWOFNWR0xlbmd0aDo6dmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU1ZHTGVuZ3RoLnZhbHVlLl9zZXQi
KTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoPiogd3JhcHBlciA9IFY4U1ZHTGVu
Z3RoOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpZiAod3JhcHBlci0+aXNSZWFkT25s
eSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlIsIGluZm8uR2V0SXNvbGF0ZSgpKTsKQEAgLTc5LDcgKzc3LDYgQEAgdm9pZCBWOFNWR0xlbmd0
aDo6dmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjoKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZXJ0VG9T
cGVjaWZpZWRVbml0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uU1ZHTGVuZ3RoLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIik7CiAgICAg
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aD4qIHdyYXBwZXIgPSBWOFNWR0xlbmd0aDo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKHdyYXBwZXItPmlzUmVhZE9ubHkoKSkKICAg
ICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggYjBmYThmM2RkMzA1ZjU0MjZiYjll
NjE1N2YzYzEyMGVjNDAwOGU3YS4uZjkxZWQ3ZWMwYWJlYzljOWZmNzdhZjdiZWRmYzk4ZWM0OTk4
YzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3Rv
cmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U3RvcmFnZUN1c3RvbS5jcHAKQEAgLTg2LDE0ICs4NiwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHN0b3JhZ2VHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgY29u
c3QgdgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlH
ZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uU3RvcmFnZS5JbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPiBpbmRleFY4ID0gdjhJbnRlZ2VyKGluZGV4LCBpbmZvLkdl
dElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHN0b3JhZ2VHZXR0ZXIoaW5kZXhWOC0+VG9TdHJpbmco
KSwgaW5mbyk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJv
cGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU3RvcmFnZS5OYW1lZFByb3BlcnR5
R2V0dGVyIik7CiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUlu
UHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKICAgICByZXR1cm4gc3RvcmFnZUdldHRlcihuYW1lLCBpbmZvKTsKQEAgLTEwMSw3ICs5
OSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAKIHY4OjpIYW5kbGU8djg6OkludGVnZXI+
IFY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
U3RvcmFnZS5OYW1lZFByb3BlcnR5UXVlcnkiKTsKIAogICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBW
OFN0b3JhZ2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyBuYW1lID0gdG9X
ZWJDb3JlU3RyaW5nKHY4TmFtZSk7CkBAIC0xNDAsMTQgKzEzNywxMiBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN0b3JhZ2VTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFt
ZSwgdjg6OkxvYwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJv
cGVydHlTZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlN0b3Jh
Z2UuTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGlu
ZGV4VjggPSB2OEludGVnZXIoaW5kZXgsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4g
c3RvcmFnZVNldHRlcihpbmRleFY4LT5Ub1N0cmluZygpLCB2YWx1ZSwgaW5mbyk7CiB9CiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlN0b3JhZ2UuTmFt
ZWRQcm9wZXJ0eVNldHRlciIpOwogICAgIHJldHVybiBzdG9yYWdlU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIApAQCAtMTcwLDE0ICsxNjUsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OkJvb2xlYW4+IHN0b3JhZ2VEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIGNv
bnMKIAogdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlE
ZWxldGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlN0b3JhZ2UuSW5kZXhlZFByb3BlcnR5RGVsZXRlciIpOwogICAg
IHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGluZGV4VjggPSB2OEludGVnZXIoaW5kZXgsIGluZm8u
R2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gc3RvcmFnZURlbGV0ZXIoaW5kZXhWOC0+VG9TdHJp
bmcoKSwgaW5mbyk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IFY4U3RvcmFnZTo6bmFt
ZWRQcm9wZXJ0eURlbGV0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU3RvcmFnZS5OYW1lZFBy
b3BlcnR5RGVsZXRlciIpOwogICAgIHJldHVybiBzdG9yYWdlRGVsZXRlcihuYW1lLCBpbmZvKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5
bGVTaGVldExpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwCmluZGV4IDFkZDIzMDc0NzY0Nzg0YzYxYjE4MWIy
NmIyYzc4NTliYmY1ZGI0ODguLjg3MWNlYzhjZDQ3MjM5Yzc2ZDNkNmM4Mjk5M2U5ZTQxOGM5ZTI3
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdHlsZVNoZWV0TGlzdDo6bmFt
ZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5TdHlsZVNoZWV0TGlzdC5O
YW1lZFByb3BlcnR5R2V0dGVyIik7CiAKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5h
bWVkUHJvcGVydHkobmFtZSkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3Vz
dG9tLmNwcAppbmRleCA2OGNmNTZiYmE0MTNhODE4NmVlY2Y2ZjU1MmQ0NTRjNjA4ZmFhMzMwLi5i
ZmJiOTU5NTI4MWUxODk0ZjFjYzRkNzdhM2M4OWVjYWM1Y2Y5NGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNw
cApAQCAtNDIsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRyYWNrRXZlbnQ6OnRyYWNrQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVHJhY2tFdmVudC50cmFjayIpOwogICAgIFRyYWNrRXZlbnQqIHRyYWNrRXZlbnQg
PSBWOFRyYWNrRXZlbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFRyYWNrQmFzZSog
dHJhY2sgPSB0cmFja0V2ZW50LT50cmFjaygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggMDZlNjRjZDgyNjg0YTliN2FiNDQzNGEzYjc1OTc1NmYwYTE1
NjNjOS4uMDZkZDcxNjk1ODJkYzEzMDdmMGY2Njc4MjMwMmZlOGZkZWRkZmUxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0yNzIsNyArMjcyLDYgQEAgZW51bSBX
aGljaFByb2dyYW1DYWxsIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRB
dHRhY2hlZFNoYWRlcnMoKSIpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CkBAIC0yOTgsMTMgKzI5NywxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc0NhbGxiYWNrKGNvbnN0CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0QnVmZmVyUGFyYW1ldGVyKCkiKTsKICAgICByZXR1
cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIpOwogfQogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmdldEV4dGVuc2lvbkNhbGxiYWNrKCkiKTsKICAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGltcCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTMxNSw3ICsz
MTIsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cigpIik7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKQogICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0zMzMsNyAr
MzI5LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5nZXRQYXJhbWV0ZXIoKSIpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwpAQCAtMzQ5LDcgKzM0NCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyCiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFt
ZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIoKSIpOwogCiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzY4LDEzICszNjIsMTEgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFt
UGFyYW1ldGVyQ2FsbGJhY2soY29uc3QKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5n
Q29udGV4dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKSIpOwogICAgIHJldHVybiBnZXRPYmpl
Y3RQYXJhbWV0ZXIoYXJncywga1JlbmRlcmJ1ZmZlcik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKCkiKTsKIAogICAgIGlmIChhcmdzLkxl
bmd0aCgpICE9IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTM5Myw3ICszODUsNiBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlckNhbGxiYWNr
KGNvbnN0CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFN1cHBvcnRl
ZEV4dGVuc2lvbnNDYWxsYmFjaygpIik7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBpbXAg
PSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAg
aWYgKGltcC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gdjhOdWxsKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKQEAgLTQwNywxMyArMzk4LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKGNv
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4
UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKCkiKTsKICAg
ICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJH
TFJlbmRlcmluZ0NvbnRleHQuZ2V0VW5pZm9ybSgpIik7CiAKICAgICBpZiAoYXJncy5MZW5ndGgo
KSAhPSAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdz
LkdldElzb2xhdGUoKSk7CkBAIC00MzcsNyArNDI2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3UKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElO
Q19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRWZXJ0ZXhBdHRyaWIoKSIpOwog
ICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga1ZlcnRleEF0dHJpYik7CiB9CiAK
QEAgLTYwOCw0OSArNTk2LDQxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5pZm9y
bUhlbHBlcmkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0Nv
bnRleHQudW5pZm9ybTFmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1I
ZWxwZXJmKGFyZ3MsIGtVbmlmb3JtMXYpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51
bmlmb3JtMWl2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm0x
dik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTJmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0yZnYoKSIpOwogICAgIHJl
dHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTJ2KTsKIH0K
IAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
Mml2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybTJpdigpIik7CiAgICAgcmV0dXJuIHVu
aWZvcm1IZWxwZXJpKGFyZ3MsIGtVbmlmb3JtMnYpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnZDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC51bmlmb3JtM2Z2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhl
bHBlcmYoYXJncywga1VuaWZvcm0zdik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVu
aWZvcm0zaXYoKSIpOwogICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdzLCBrVW5pZm9ybTN2
KTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtNGZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybTRmdigpIik7CiAgICAgcmV0
dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtVbmlmb3JtNHYpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00
aXZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygi
RE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtNGl2KCkiKTsKICAgICByZXR1cm4gdW5p
Zm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm00dik7CiB9CiAKQEAgLTcxNyw0MyArNjk3LDM2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5pZm9ybU1hdHJpeEhlbHBlcihjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzLAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlm
b3JtTWF0cml4MmZ2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybU1hdHJpeEhlbHBlcihhcmdzLCAy
KTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4M2Z2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybU1hdHJpeDNmdigp
Iik7CiAgICAgcmV0dXJuIHVuaWZvcm1NYXRyaXhIZWxwZXIoYXJncywgMyk7CiB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRm
dkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYoKSIpOwogICAgIHJldHVy
biB1bmlmb3JtTWF0cml4SGVscGVyKGFyZ3MsIDQpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LnZlcnRleEF0dHJpYjFmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFu
ZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIxdik7CiB9CiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJH
TFJlbmRlcmluZ0NvbnRleHQudmVydGV4QXR0cmliMmZ2KCkiKTsKICAgICByZXR1cm4gdmVydGV4
QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjJ2KTsKIH0KIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIz
ZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygi
RE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC52ZXJ0ZXhBdHRyaWIzZnYoKSIpOwogICAgIHJldHVy
biB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0cmliM3YpOwog
fQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYjRmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnZlcnRleEF0dHJpYjRmdigpIik7CiAg
ICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRy
aWI0dik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwCmluZGV4IDNlYzdkOTkxNzU2OWRj
ZDU2MWE1Yzg5M2MxZDQ4ZWFiM2RiYjk4YjIuLmM2ZTU2M2Q1ZTkzMzdkZDAxZDExODk0NGQ2NjM2
ZmVkMzQzNTgwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYktpdEFu
aW1hdGlvbjo6aXRlcmF0aW9uQ291bnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5XZWJLaXRBbmltYXRpb24uaXRlcmF0aW9uQ291bnQuX2dldCIpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBXZWJLaXRBbmltYXRp
b24qIGltcCA9IFY4V2ViS2l0QW5pbWF0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGludCBj
b3VudCA9IGltcC0+aXRlcmF0aW9uQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXgg
MTQ5OTEyYWUxODg5YWMxNzQwYjdlNDBhNDE4MTg1YTEzZGMxZDVjNC4uZWQzZjc5ODEwYjFjMDQ2
MjZlMjI3NTY0ODQyOWQ0MmM1MDFmYjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTky
LDcgKzkyLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV29ya2VyQ29udGV4dC5pbXBvcnRT
Y3JpcHRzKCkiKTsKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiAKQEAgLTExNywxMyArMTE2LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LldvcmtlckNvbnRleHQuc2V0VGltZW91dCgpIik7CiAgICAgcmV0dXJuIFNldFRpbWVvdXRPcklu
dGVydmFsKGFyZ3MsIHRydWUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJD
b250ZXh0OjpzZXRJbnRlcnZhbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uV29ya2VyQ29udGV4dC5zZXRJbnRlcnZhbCgpIik7CiAgICAg
cmV0dXJuIFNldFRpbWVvdXRPckludGVydmFsKGFyZ3MsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5k
ZXggZTQ1NTgxOTE0Zjg4MjliYjM4YTAxMjIxM2ExMGIyZjliMGNlNDFlMC4uNzYwYThlMjcwNTgx
M2U4NWYzZmRlOTQyMGFkOGZlMDQ4OWYyMTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5k
bGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7CiAgICAgV29ya2VyKiB3b3JrZXIg
PSBWOFdvcmtlcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgTWVzc2FnZVBvcnRBcnJh
eSBwb3J0czsKICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKQEAgLTcxLDE0ICs3
MCwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKICAgICByZXR1cm4g
aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhhcmdzKTsKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lf
VkVORE9SX1BSRUZJWEVTKQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjp3ZWJraXRQ
b3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uV29ya2VyLndlYmtpdFBvc3RNZXNzYWdlIik7CiAgICAgcmV0dXJuIGhhbmRs
ZVBvc3RNZXNzYWdlQ2FsbGJhY2soYXJncyk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAppbmRleCAwYTgwOGJkNGY4OGRkYWMyMTkxN2Y4OGYyMDIwZTNiYmMxY2EyYmI1Li43NTM5
NzBhYzY0NzliZDYyMjMwZDY2MWQ0MjFiMTY1NmQzYTRkY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwCkBAIC02Nyw3ICs2Nyw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBS
ZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHRBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5yZXNwb25zZXRleHQu
X2dldCIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IFY4WE1MSHR0cFJl
cXVlc3Q6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIGNvbnN0IFN0cmluZyYgdGV4dCA9IHhtbEh0dHBSZXF1ZXN0LT5yZXNwb25zZVRleHQo
ZWMpOwpAQCAtNzgsNyArNzcsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVx
dWVzdDo6cmVzcG9uc2VUZXh0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OgogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5yZXNwb25zZS5fZ2V0Iik7CiAg
ICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKICAgICBzd2l0Y2ggKHhtbEh0dHBSZXF1ZXN0LT5yZXNw
b25zZVR5cGVDb2RlKCkpIHsKQEAgLTExOSw3ICsxMTcsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6b3BlbkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uWE1M
SHR0cFJlcXVlc3Qub3BlbigpIik7CiAgICAgLy8gRm91ciBjYXNlczoKICAgICAvLyBvcGVuKG1l
dGhvZCwgdXJsKQogICAgIC8vIG9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKQpAQCAtMTY5LDcgKzE2
Niw2IEBAIHN0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSkKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlhN
TEh0dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVz
dCA9IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KHhtbEh0dHBSZXF1
ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHhtbEh0dHBSZXF1ZXN0LT51cmwoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vz
c29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQ
cm9jZXNzb3JDdXN0b20uY3BwCmluZGV4IDI5MDEzZjE3YWQyZGNlMzFmZTc5YmRmYWNlN2NiYzQ0
NTM0YzdkNWEuLmI1YjIwODk3ZWE0NTU1MTJjYzJmMWNiZjc0NWIzMmI2YWEwZmM5MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQ
cm9jZXNzb3JDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Y
U0xUUHJvY2Vzc29yLnNldFBhcmFtZXRlciIpOwogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChh
cmdzWzFdKSB8fCBpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIApAQCAtNjYsNyArNjUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LlhTTFRQcm9jZXNzb3IuZ2V0UGFyYW1ldGVyIik7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxs
KGFyZ3NbMV0pKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC04Myw3ICs4
MSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRl
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFhTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5yZW1vdmVQYXJh
bWV0ZXIiKTsKICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181087</attachid>
            <date>2013-01-02 15:38:00 -0800</date>
            <delta_ts>2013-01-02 15:42:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105957-20130102153508.patch</filename>
            <type>text/plain</type>
            <size>197084</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNjAzMjRmNDQzNGMw
MTFkZjlkMTYwZGE4ZGM2OTM1Yzc2NTc0NC4uM2EyMjZmZGYwNmE0NjBiYmNlYmZjYjFmOTY0ZjRm
NDU1NjkyNDBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTAyICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBSZW1vdmUgSU5DX1NU
QVRTIGJlY2F1c2UgaXQgaXMgdW51c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDU5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFp
LgorCisgICAgICAgIFdlIGhhdmVuJ3QgYmVlbiBhYmxlIHRvIGNvbXBpbGUgd2l0aCBJTkNfU1RB
VFMgdHVybmVkIG9uIGluIGEgbG9uZworICAgICAgICB0aW1lLiBUaGlzIHBhdGNoIGp1c3QgcmVt
b3ZlcyB0aGlzIGFuY2llbnQgY3J1ZnQuIEkgZ2VuZXJhdGVkIHRoaXMKKyAgICAgICAgcGF0Y2gg
dXNpbmcKKworICAgICAgICBmaW5kIC4gLXR5cGUgZiB8IHhhcmdzIHNlZCAtaSAnL0lOQ19TVEFU
Uy9kJworCisgICAgICAgIGFuZCB0aGVuIGZpeGluZyB1cCBWOEJpbmRpbmdNYWNyb3MuaC4KKwog
MjAxMy0wMS0wMiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdl
bmVyYXRlIGludGVybmFsLnNldHRpbmdzIGZyb20gU2V0dGluZ3MuaW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZmFiOWUz
MmQ3ZDMxNmRmZWRhNmZmYzM5NTg2OWI5MTA4YThiMDYzNS4uNzY1MmNkMjU1NDljM2ZmODc4OWYz
Zjc4NDBlODdhMTZhMjQ2OTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTc4OSw3ICs3ODksNiBAQCBzdWIgR2VuZXJh
dGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVuY05hbWV9QXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKLSAgICBJTkNfU1RBVFMoXCJET00uJGludGVyZmFjZU5hbWUuJGZ1bmNOYW1lLl9nZXRc
Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2
YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldygk
bmV3VGVtcGxhdGVTdHJpbmcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oJHt2OEludGVyZmFjZU5h
bWV9OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewpAQCAtODIx
LDcgKzgyMCw2IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRlcgogICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2b2lkICR7aW50ZXJmYWNlTmFt
ZX1Eb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLiRpbnRlcmZhY2VOYW1lLl9zZXQiKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhv
bGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg0Myw3ICs4NDEsNiBAQCBzdWIg
R2VuZXJhdGVDb25zdHJ1Y3RvckdldHRlcgogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8
RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtpbnRlcmZhY2VOYW1lfUNvbnN0
cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUyhcIkRPTS4kaW50ZXJmYWNlTmFtZS5jb25z
dHJ1Y3RvcnMuX2dldFwiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSA9IGluZm8u
RGF0YSgpOwogICAgIEFTU0VSVChkYXRhLT5Jc0V4dGVybmFsKCkpOwogICAgIFY4UGVyQ29udGV4
dERhdGEqIHBlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShpbmZvLkhvbGRl
cigpLT5DcmVhdGlvbkNvbnRleHQoKSk7CkBAIC04ODksNyArODg2LDYgQEAgc3ViIEdlbmVyYXRl
Tm9ybWFsQXR0ckdldHRlcgogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLiRpbnRlcmZhY2VOYW1lLiRhdHRyTmFtZS5fZ2V0Iik7CiBFTkQKICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkYXR0
ckV4dC0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAKQEAgLTExMzMsNyArMTEyOSw2IEBAIHN1YiBHZW5l
cmF0ZVJlcGxhY2VhYmxlQXR0clNldHRlcgogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8
RU5EKTsKIHN0YXRpYyB2b2lkICR7aW50ZXJmYWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLiRpbnRl
cmZhY2VOYW1lLnJlcGxhY2VhYmxlLl9zZXQiKTsKIEVORAogICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAKQEAgLTExNjcsNyArMTE2Miw2IEBAIHN1YiBH
ZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxue1xuIik7Ci0gICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICBJTkNfU1RBVFMoXCJET00uJGludGVyZmFjZU5hbWUuJGF0dHJOYW1l
Ll9zZXRcIik7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZlYXR1
cmVPYnNlcnZhdGlvbigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOE1lYXN1cmVBcyJ9KSk7CiAKICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBl
eHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhdHRyaWJ1dGUncyB0eXBlIGlz
IGFuCkBAIC0xMzY0LDcgKzEzNTgsNiBAQCBzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJh
Y2sKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJmYWNlTmFt
ZX0uJHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcigpIik7CiAgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0s
IGZhbHNlLCBMaXN0ZW5lckZpbmQke2xvb2t1cFR5cGV9KTsKICAgICBpZiAobGlzdGVuZXIpIHsK
ICAgICAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNl
PFdpdGhOdWxsQ2hlY2s+LCBzdHJpbmdSZXNvdXJjZSwgYXJnc1swXSk7CkBAIC0xNDczLDcgKzE0
NjYsNiBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjawogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
JHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKFwiRE9NLiRpbnRlcmZhY2VOYW1lLiRuYW1lXCIpOwogRU5ECiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAKQEAgLTE1MjQsNyAr
MTUxNiw2IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2sKICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCA8PEVORCk7CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUyhcIkRP
TS4kaW50ZXJmYWNlTmFtZS4kbmFtZVwiKTsKIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhNZWFzdXJlQXMifSkpOwogCkBAIC0xODQ4LDcgKzE4MzksNiBA
QCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JDYWxsYmFjawogICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5h
bWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciIpOwogRU5ECiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQ29uc3RydWN0b3JIZWFkZXIoKSk7CiAKQEAg
LTE5MDAsNyArMTg5MCw2IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2sK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ31DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7
aW50ZXJmYWNlTmFtZX0uQ29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ30iKTsKICAg
ICAke21heWJlT2JzZXJ2ZUZlYXR1cmV9CiBFTkQKIApAQCAtMTk3OCw3ICsxOTY3LDYgQEAgc3Vi
IEdlbmVyYXRlQ3VzdG9tQ29uc3RydWN0b3JDYWxsYmFjawogICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciIpOwogICAgICR7bWF5YmVPYnNl
cnZlRmVhdHVyZX0KIEVORAogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUNvbnN0cnVj
dG9ySGVhZGVyKCkpOwpAQCAtMjAxNCw3ICsyMDAyLDYgQEAgc3ViIEdlbmVyYXRlRXZlbnRDb25z
dHJ1Y3RvckNhbGxiYWNrCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFj
ZU5hbWV9LkNvbnN0cnVjdG9yIik7CiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJh
dGVDb25zdHJ1Y3RvckhlYWRlcigpKTsKIApAQCAtMjA3NSw3ICsyMDYyLDYgQEAgc3ViIEdlbmVy
YXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2sKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLiR7aW50ZXJmYWNlTmFtZX0uQ29udHJ1Y3RvciIpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RXZWJHTEFycmF5PCRpbnRlcmZhY2VOYW1lLCBWOCR7aW50ZXJmYWNlTmFtZX0sICR0eXBlPihh
cmdzLCAmaW5mbywgJHZpZXdUeXBlKTsKIH0KIApAQCAtMjExNyw3ICsyMTAzLDYgQEAgV3JhcHBl
clR5cGVJbmZvICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvID0geyAke3Y4SW50
ZXJmYWNlTmFtZX1Db25zdHIKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke3Y4SW50
ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciIpOwog
ICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0KIEVORAogICAgIHB1c2goQGltcGxDb250ZW50LCBH
ZW5lcmF0ZUNvbnN0cnVjdG9ySGVhZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggZmI0
MTJhNWQ4YWMyZWZmMWZkMjJiMDA5YjM3YzFlYTQyMWNhMzgyZS4uNGRhYWYzNTExZmQ3OGFmNGQ3
MGUyMTRjNmQ2MGIwYTFjYmM3MWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC01MCw3ICs1
MCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmb29DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkZsb2F0NjRBcnJheS5mb28iKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBGbG9hdDY0QXJyYXkqIGltcCA9IFY4Rmxv
YXQ2NEFycmF5Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTYwLDcgKzU5LDYgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmb29DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRmxvYXQ2NEFycmF5
LnNldCIpOwogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJheSwgVjhG
bG9hdDY0QXJyYXk+KGFyZ3MpOwogfQogCkBAIC04MSw3ICs3OSw2IEBAIHN0YXRpYyBjb25zdCBW
OERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBWOEZsb2F0NjRBcnJheUNhbGxiYWNr
c1tdID0gewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5GbG9hdDY0QXJyYXkuQ29udHJ1Y3RvciIpOwogICAgIHJldHVybiBjb25zdHJ1Y3RXZWJH
TEFycmF5PEZsb2F0NjRBcnJheSwgVjhGbG9hdDY0QXJyYXksIGRvdWJsZT4oYXJncywgJmluZm8s
IHY4OjprRXh0ZXJuYWxEb3VibGVBcnJheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKaW5kZXggNzE0ZjkyNmRlZGYzZTZkNTcyY2RiZjdkNDM4MDBmMDhmMDE5Y2Y1MC4u
MWE2MDIwNWI4OTA4ZTQ5NmY0MGQxY2M0NDIyNmRhMjllMDA2MWJlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTQxLDE0ICs0MSwxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
ZXhjaXRpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0QWN0aXZl
RE9NT2JqZWN0LmV4Y2l0aW5nQXR0ci5fZ2V0Iik7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCog
aW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZXhjaXRpbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNpdGluZ0Z1bmN0aW9uQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0QWN0aXZlRE9NT2JqZWN0LmV4Y2l0aW5nRnVuY3Rpb24iKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXAgPSBWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjEsNyArNTksNiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nRnVuY3Rpb25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0QWN0aXZlRE9NT2JqZWN0LnBvc3RNZXNzYWdlIik7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1w
ID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTcy
LDcgKzY5LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RB
Y3RpdmVET01PYmplY3QucG9zdE1lc3NhZ2UuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhU
ZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3
VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
VGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTk1LDcg
KzkxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKIAogc3RhdGljIHZvaWQgVGVzdEFjdGl2
ZURPTU9iamVjdERvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEFjdGl2ZURPTU9iamVjdC5fc2V0Iik7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRl
KCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCBmNTk0ODU0Y2ZiODE3Mzc1MzhkYzk1
MTgzNDYzOWJlY2IxMDNjYWFlLi45MGEwMGQ5NzQ5OTdlYWQ0NGFkZDBiMDdjMjk3Yzk5YTk3ZDdi
NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTQwLDcgKzQw
LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFub3RoZXJGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmFub3RoZXJGdW5jdGlvbiIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wID0gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IDI5NWE4M2I1ZjVlOTJkZmRlYWMwYjExY2FhZThiNDlmNjdkZjQ5NTQuLjEz
ZDAxMTA1ZmUwZWQyZTJkYzU3ZjI0OWU3MDlkOThiNjU5NzcwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQwLDE0ICs0MCwxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXR0cjFBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVj
dG9yLmF0dHIxLl9nZXQiKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4
U3RyaW5nKGltcC0+YXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0RXZlbnRDb25zdHJ1Y3Rvci5hdHRyMi5fZ2V0Iik7CiAgICAgVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIGltcCA9IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmF0dHIyKCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKIH0KQEAgLTYzLDcgKzYxLDYgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnNbXQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RF
dmVudENvbnN0cnVjdG9yLkNvbnN0cnVjdG9yIik7CiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0
Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3Ry
dWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
VGFyZ2V0LmNwcAppbmRleCBkY2I3M2JmMThkNjA4N2M0ZjIxYzA3MGQyNzE1MzlkZDEyZjJhNGQ1
Li4zMWUyZWZhYTQ0NmY2MjAzODQ5MGM4ODk1ZGE1YjJhYzEyNDRiYjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudFRhcmdldC5jcHAKQEAgLTQzLDcgKzQzLDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZv
aWQgVjhfVVNFKFQpIHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGl0ZW1DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RFdmVudFRhcmdldC5pdGVtIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgVGVzdEV2ZW50VGFyZ2V0KiBpbXAgPSBWOFRlc3RFdmVudFRhcmdldDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CkBAIC02Miw3ICs2MSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gaXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJG
aW5kT3JDcmVhdGUpOwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBWOFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHN0cmlu
Z1Jlc291cmNlLCBhcmdzWzBdKTsKQEAgLTc0LDcgKzcyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0RXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFy
Z3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPbmx5KTsKICAgICBpZiAobGlzdGVuZXIpIHsKICAg
ICAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPFdp
dGhOdWxsQ2hlY2s+LCBzdHJpbmdSZXNvdXJjZSwgYXJnc1swXSk7CkBAIC04Niw3ICs4Myw2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
ZGlzcGF0Y2hFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdEV2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQiKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0RXZlbnRUYXJnZXQqIGltcCA9IFY4
VGVzdEV2ZW50VGFyZ2V0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlv
bi5jcHAKaW5kZXggNTJiZjg0ZDk5ZTFiMTYyMWY1YmMzZTMwZmNkZGUxNTNmNDFkZTQ2ZS4uZmJl
OTc1ZTdlZWU0MDVkYzAwNmJiZjIwM2MxNDYyMDdmYWRlNTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNF
KFQpIHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RFeGNlcHRpb24ubmFtZS5fZ2V0Iik7CiAgICAgVGVz
dEV4Y2VwdGlvbiogaW1wID0gVjhUZXN0RXhjZXB0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5uYW1lKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggNDYwOTRjZDZjZWJiYjgwNDgzYzg1YzIzZGI3
YmVjMDRiZTEyYmNjNy4uODk3ZjBjNTc5YjBjZjQ0YjhjMmJiZDQ1OWU2M2E3ZDA3MTMwMjdiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIuX2dl
dCIpOwogICAgIHJldHVybiB2OEludGVnZXIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
U3RhdGljUmVhZE9ubHlBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtNjAsNyAr
NTksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY1Jl
YWRPbmx5QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsU3RhdGljQXR0ci5fZ2V0Iik7CiAgICAg
cmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIo
KSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCkBAIC03MCw3ICs2OCw2IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpCiAKIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIuX3NldCIpOwogICAgIFY4VFJZQ0FU
Q0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVl
KTsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKHYpOwog
ICAgIHJldHVybjsKQEAgLTgyLDcgKzc5LDYgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3Rh
dGljQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2MKIAog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbFN0cjEuX2dl
dCIpOwogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN1
cHBsZW1lbnRhbFN0cjEoaW1wKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtOTMsNyArODks
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsU3RyMi5fZ2V0Iik7CiAgICAgVGVzdEludGVyZmFjZSog
aW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1
cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMihpbXApLCBpbmZv
LkdldElzb2xhdGUoKSk7CiB9CkBAIC0xMDQsNyArOTksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYQogCiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5z
dXBwbGVtZW50YWxTdHIyLl9zZXQiKTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJ
bnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4
U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKICAgICBU
ZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcCwgdik7CkBAIC0xMTcsNyAr
MTExLDYgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbE5vZGUuX2dldCIpOwogICAgIFRlc3RJbnRlcmZh
Y2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAg
cmV0dXJuIHRvVjhGYXN0KFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoaW1wKSwg
aW5mbywgaW1wKTsKIH0KQEAgLTEyOCw3ICsxMjEsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YQogCiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBw
bGVtZW50YWxOb2RlLl9zZXQiKTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRl
cmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIE5vZGUqIHYgPSBWOE5vZGU6Okhh
c0luc3RhbmNlKHZhbHVlKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50
YWxOb2RlKGltcCwgV1RGOjpnZXRQdHIodikpOwpAQCAtMTQxLDcgKzEzMyw2IEBAIHN0YXRpYyB2
b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVu
dGFsTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxNZXRob2QxIik7CiAgICAgVGVz
dEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcCk7CiAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CkBAIC0xNTMsNyArMTQ0LDYgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXIKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRo
b2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRl
cmZhY2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTc3LDcgKzE2Nyw2IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxl
bWVudGFsTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxNZXRob2Q0Iik7CiAgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgpOwogICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogfQpAQCAtMjQxLDcgKzIzMCw2IEBAIENPTVBJTEVfQVNTRVJUKDIgPT0gVGVz
dFN1cHBsZW1lbnRhbDo6Q09OU1RfSU1QTCwgVGVzdEludGVyZmFjZUVudW1DT05TVF9JTVBMSXNX
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0SW50ZXJmYWNlLkNvbnN0cnVjdG9yIik7CiAgICAgCiAgICAgaWYgKCFhcmdzLklzQ29uc3Ry
dWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29u
c3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGI4NDE4NjQwZjRkZmRjYzUw
NWMyZDczMGE1ZWUzMzg0NmY1MGMzOWYuLjBlMzU2NGMwNTVhNjY4ZDExZDM4ZWU4M2ExMGU5MDQw
OGYwZDEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKQEAgLTQxLDcgKzQxLDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQp
IHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIubWV0aG9kIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcCA9IFY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGZiMjRjMzRjMGQ5NWJhNzZmMzEyZWJhMDdhYzA0ZmEw
MmNmNGEwOGEuLjFiOWU2YWU2NDhhYzY3ZmM3NTU3NDIwYjQxYWIwNjc4YWQzZjEwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAgV3JhcHBl
clR5cGVJbmZvIFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhU
ZXN0TmFtZWRDb25zdHJ1Y3QKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3ROYW1lZENvbnN0cnVjdG9yLkNvbnN0cnVj
dG9yIik7CiAgICAgCiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNh
bGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IGI3ZjkzMDZkOGIyZjViNjAz
NGE4YzQ0NzQ5MDg0NmU5OTEyYzVmZWIuLjhjNmM3OTEzOWZlNmE3ZmY2MDQ1YjI2MGNmYzRmMDJk
MGNlYWRkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0
Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3ROb2RlLkNvbnN0cnVjdG9yIik7CiAgICAgCiAgICAgaWYg
KCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
IkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcAppbmRleCBmNjI0MDI3YTQwOTVlZWM4YTk1NGM1NzYwM2U0NGE4ZDRlMGQzZDVl
Li4zZmMyOGJkZmUyYTcyNzM2ZmUwNzc1NmUyZjk3MmY3ZDU3NmZhZWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApA
QCAtODMsMjEgKzgzLDE4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7
IH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seUxvbmdBdHRyQXR0ckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlYWRPbmx5TG9uZ0F0dHIuX2dl
dCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5
U3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWFk
T25seVN0cmluZ0F0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+cmVhZE9ubHlT
dHJpbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLnJlYWRPbmx5VGVzdE9iakF0dHIuX2dldCIpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFRl
c3RPYmo+IHJlc3VsdCA9IGltcC0+cmVhZE9ubHlUZXN0T2JqQXR0cigpOwogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihyZXN1bHQuZ2V0KCksIGluZm8uR2V0SXNvbGF0
ZSgpKSkgOiB2OFVuZGVmaW5lZCgpOwpAQCAtMTExLDE5ICsxMDgsMTYgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNSZWFkT25s
eUxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0YXRp
Y1JlYWRPbmx5TG9uZ0F0dHIuX2dldCIpOwogICAgIHJldHVybiB2OEludGVnZXIoVGVzdE9iajo6
c3RhdGljUmVhZE9ubHlMb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdGF0aWNTdHJpbmdBdHRyLl9nZXQiKTsKICAgICBy
ZXR1cm4gdjhTdHJpbmcoVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0
YXRpY1N0cmluZ0F0dHIuX3NldCIpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VS
Q0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKICAgICBUZXN0T2JqOjpzZXRT
dGF0aWNTdHJpbmdBdHRyKHYpOwogICAgIHJldHVybjsKQEAgLTEzMSwxNCArMTI1LDEyIEBAIHN0
YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2hv
cnRBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnNob3J0QXR0
ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+c2hvcnRBdHRyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgc2hvcnRBdHRyQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zaG9y
dEF0dHIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKICAgICBpbXAtPnNldFNo
b3J0QXR0cih2KTsKQEAgLTE0NywxNCArMTM5LDEyIEBAIHN0YXRpYyB2b2lkIHNob3J0QXR0ckF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoudW5zaWduZWRTaG9ydEF0dHIuX2dl
dCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnVuc2lnbmVkU2hvcnRBdHRyKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgdW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLnVuc2lnbmVkU2hvcnRBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9VSW50MzIodmFs
dWUpOwogICAgIGltcC0+c2V0VW5zaWduZWRTaG9ydEF0dHIodik7CkBAIC0xNjMsMTQgKzE1Mywx
MiBAQCBzdGF0aWMgdm9pZCB1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2OAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmxv
bmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5sb25nQXR0cigpLCBpbmZv
LkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5s
b25nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0
TG9uZ0F0dHIodik7CkBAIC0xNzksMTQgKzE2NywxMiBAQCBzdGF0aWMgdm9pZCBsb25nQXR0ckF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0xvbmdBdHRyQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmxvbmdMb25nQXR0ci5fZ2V0Iik7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBy
ZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJsZT4oaW1wLT5sb25nTG9uZ0F0
dHIoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBsb25nTG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmxvbmdM
b25nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBsb25nIGxvbmcgdiA9IHRvSW50NjQodmFsdWUpOwogICAgIGlt
cC0+c2V0TG9uZ0xvbmdBdHRyKHYpOwpAQCAtMTk1LDE0ICsxODEsMTIgQEAgc3RhdGljIHZvaWQg
bG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWwKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai51bnNpZ25l
ZExvbmdMb25nQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19j
YXN0PGRvdWJsZT4oaW1wLT51bnNpZ25lZExvbmdMb25nQXR0cigpKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai51bnNpZ25lZExvbmdMb25nQXR0
ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdiA9IHRvSW50NjQodmFsdWUpOwogICAg
IGltcC0+c2V0VW5zaWduZWRMb25nTG9uZ0F0dHIodik7CkBAIC0yMTEsMTQgKzE5NSwxMiBAQCBz
dGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0
cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5n
QXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5zdHJpbmdBdHRyKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgc3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
c3RyaW5nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZP
SUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRTdHJpbmdBdHRy
KHYpOwpAQCAtMjI3LDcgKzIwOSw2IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudGVzdE9iakF0dHIuX2dldCIpOwogICAgIEZlYXR1cmVPYnNl
cnZlcjo6b2JzZXJ2ZShhY3RpdmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKSwg
RmVhdHVyZU9ic2VydmVyOjpUZXN0RmVhdHVyZSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wLT50
ZXN0T2JqQXR0cigpLCBpbmZvLCBpbXApOwpAQCAtMjM1LDcgKzIxNiw2IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjCiAKIHN0YXRpYyB2b2lkIHRlc3RPYmpBdHRyQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai50ZXN0
T2JqQXR0ci5fc2V0Iik7CiAgICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKGFjdGl2ZURPTVdp
bmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLCBGZWF0dXJlT2JzZXJ2ZXI6OlRlc3RGZWF0
dXJlKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4
VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDog
MDsKQEAgLTI0NSwxNCArMjI1LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RPYmpBdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1CiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gWE1MT2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5YTUxPYmpBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB0b1Y4RmFz
dChpbXAtPnhtbE9iakF0dHIoKSwgaW5mbywgaW1wKTsKIH0KIAogc3RhdGljIHZvaWQgWE1MT2Jq
QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouWE1MT2JqQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBUZXN0T2JqKiB2ID0gVjhU
ZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRYTUxPYmpBdHRy
KFdURjo6Z2V0UHRyKHYpKTsKQEAgLTI2MSwxNCArMjM5LDEyIEBAIHN0YXRpYyB2b2lkIFhNTE9i
akF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNyZWF0ZS5fZ2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4g
djhCb29sZWFuKGltcC0+aXNDcmVhdGUoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0
aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNyZWF0ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBib29sIHYgPSB2
YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgaW1wLT5zZXRDcmVhdGUodik7CkBAIC0yNzcsMTQg
KzI1MywxMiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoucmVmbGVjdGVkU3RyaW5nQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhT
dHJpbmcoaW1wLT5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVk
c3RyaW5nYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJl
ZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZFN0cmluZ0F0dHIuX3NldCIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3Vy
Y2U8V2l0aE51bGxDaGVjaz4sIHYsIHZhbHVlKTsKICAgICBpbXAtPnNldEF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyLCB2KTsKQEAgLTI5MywxNCAr
MjY3LDEyIEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZEludGVncmFsQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4g
djhJbnRlZ2VyKGltcC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpy
ZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0
aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZEludGVn
cmFsQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0
SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0
dHJBdHRyLCB2KTsKQEAgLTMwOSwxNCArMjgxLDEyIEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZElu
dGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4VW5zaWduZWRJbnRlZ2Vy
KHN0ZDo6bWF4KDAsIGltcC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSwgaW5mby5HZXRJc29sYXRlKCkp
OwogfQogCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoucmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIuX3NldCIpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgdW5zaWduZWQg
diA9IHRvVUludDMyKHZhbHVlKTsKICAgICBpbXAtPnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIs
IHYpOwpAQCAtMzI1LDE0ICsyOTUsMTIgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZEJvb2xlYW5BdHRyLl9nZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIHJldHVybiB2OEJvb2xlYW4oaW1wLT5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkpOwog
fQogCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVj
dGVkQm9vbGVhbkF0dHIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgYm9vbCB2ID0gdmFsdWUtPkJvb2xlYW5WYWx1ZSgp
OwogICAgIGltcC0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZGJvb2xlYW5hdHRyQXR0ciwgdik7CkBAIC0zNDEsMTQgKzMwOSwxMiBAQCBzdGF0aWMgdm9p
ZCByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVS
TEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVk
VVJMQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRVUkxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVm
bGVjdGVkVVJMQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
X1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwogICAgIGlt
cC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIs
IHYpOwpAQCAtMzU3LDE0ICszMjMsMTIgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkVVJMQXR0ckF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZFN0cmluZ0F0dHIuX2dldCIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+ZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVj
dGVkU3RyaW5nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
X1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwogICAgIGlt
cC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0
dHJBdHRyLCB2KTsKQEAgLTM3MywxNCArMzM3LDEyIEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0
cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3RlZEN1
c3RvbUludGVncmFsQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+Z2V0SW50
ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxB
dHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKICAgICBpbXAtPnNldEludGVn
cmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0
ckF0dHIsIHYpOwpAQCAtMzg5LDE0ICszNTEsMTIgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjgK
IAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0
ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhCb29sZWFuKGltcC0+ZmFzdEhhc0F0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ci5fc2V0Iik7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
ICAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgaW1wLT5zZXRCb29sZWFu
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0
ciwgdik7CkBAIC00MDUsMTQgKzM2NSwxMiBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OgogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVkQ3VzdG9tVVJMQXR0
ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUo
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
LnJlZmxlY3RlZEN1c3RvbVVSTEF0dHIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJ
TkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHYsIHZhbHVl
KTsKICAgICBpbXAtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRl
bnRVUkxBdHRyQXR0ciwgdik7CkBAIC00MjEsMTQgKzM3OSwxMiBAQCBzdGF0aWMgdm9pZCByZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvYwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHR5cGVkQXJyYXlBdHRyQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnR5cGVkQXJyYXlBdHRyLl9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIHJldHVybiB0b1Y4RmFzdChpbXAtPnR5cGVkQXJyYXlBdHRyKCksIGluZm8sIGlt
cCk7CiB9CiAKIHN0YXRpYyB2b2lkIHR5cGVkQXJyYXlBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai50eXBlZEFy
cmF5QXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBGbG9hdDMyQXJyYXkqIHYgPSBWOEZsb2F0MzJBcnJheTo6SGFz
SW5zdGFuY2UodmFsdWUpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRUeXBlZEFycmF5QXR0cihX
VEY6OmdldFB0cih2KSk7CkBAIC00MzcsNyArMzkzLDYgQEAgc3RhdGljIHZvaWQgdHlwZWRBcnJh
eUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlYKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5hdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbi5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgdiA9
IGltcC0+YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpOwpAQCAtNDQ4LDcgKzQwMyw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyCiAKIHN0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbi5fc2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQg
diA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
dik7CkBAIC00NTcsMTQgKzQxMSwxMiBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMbwogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Ll9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlv
bigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbi5fc2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
NDc2LDcgKzQyOCw2IEBAIHN0YXRpYyB2b2lkIGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvCiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24uX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIHYgPSBpbXAt
PnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKQEAgLTQ4Nyw3ICs0MzgsNiBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlcih2ODo6TG9jYWw8dgogCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24uX3Nl
dCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVz
b3VyY2U8PiwgdiwgdmFsdWUpOwogICAgIGltcC0+c2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24odik7CkBAIC00OTYsMTQgKzQ0NiwxMiBAQCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24uX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+c3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0
aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24uX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJ
TkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwpAQCAtNTE1LDcgKzQ2Myw2IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3Jp
cHRTdGF0ZTo6Y3VycmVudCgpOwogICAgIGlmICghY3VycmVudFN0YXRlKQpAQCAtNTI2LDcgKzQ3
Myw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0CiAKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlLl9zZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRT
dGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CkBAIC01NDEsNyArNDg3LDYgQEAgc3RhdGlj
IHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkwKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZS5fZ2V0Iik7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIHJldHVybiB0b1Y4RmFzdChpbXAtPndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlwdENvbnRleHQpLCBpbmZvLCBpbXApOwpAQCAtNTQ5
LDcgKzQ5NCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMCiAKIHN0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTU1OSw3ICs1
MDMsNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcy5fZ2V0
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0
YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAgLTU3Niw3ICs1MTksNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJH
ZXR0ZXIodjg6OkxvY2FsPAogCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcy5fc2V0Iik7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
ICAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RP
Ymo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAg
ICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CkBA
IC01OTEsNyArNTMzLDYgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIAogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
c0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcy5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtNjAzLDcgKzU0NCw2IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNB
dHRyR2V0dGVyCiAKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcy5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2
YWx1ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpKSA6IDA7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTYxMyw3ICs1NTMsNiBAQCBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRl
ID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKQEAgLTYy
NSw3ICs1NjQsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdAogCiBzdGF0aWMgdm9pZCB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlLl9zZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVz
dE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsK
ICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsK
QEAgLTY0MSw3ICs1NzksNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYQogCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
Ymoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cy5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTY3JpcHRTdGF0ZSogY3Vy
cmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAgLTY1OSw3ICs1OTYsNiBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYQogCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLl9zZXQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwog
ICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAg
ICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAg
LTY3NSw3ICs2MTEsNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2OAogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0
ZTo6Y3VycmVudCgpOwogICAgIGlmICghY3VycmVudFN0YXRlKQpAQCAtNjg3LDcgKzYyMiw2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBCiAKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKICAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
KSA6IDA7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJy
ZW50KCk7CkBAIC03MDMsMTQgKzYzNywxMiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZQogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZS5fZ2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4g
dG9WOEZhc3QoaW1wLT53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCks
IGluZm8sIGltcCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UodmFsdWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHZhbHVlKSkgOiAwOwogICAgIGltcC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZShXVEY6OmdldFB0cih2KSk7CkBAIC03MjEsNyArNjUzLDYgQEAgc3RhdGlj
IHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHIKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRp
b25hbEF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNvbmRp
dGlvbmFsQXR0cjEuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmNvbmRpdGlvbmFs
QXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtNzMyLDcgKzY2Myw2IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLmNvbmRpdGlvbmFsQXR0cjEuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMyKHZhbHVl
KTsKICAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjEodik7CkBAIC03NDUsNyArNjc1LDYgQEAg
c3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
b25kaXRpb25hbEF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
LmNvbmRpdGlvbmFsQXR0cjIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmNvbmRp
dGlvbmFsQXR0cjIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtNzU2LDcgKzY4NSw2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjJB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLmNvbmRpdGlvbmFsQXR0cjIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMy
KHZhbHVlKTsKICAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjIodik7CkBAIC03NjksNyArNjk3
LDYgQEAgc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLmNvbmRpdGlvbmFsQXR0cjMuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAt
PmNvbmRpdGlvbmFsQXR0cjMoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtNzgwLDcgKzcw
Nyw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyM0F0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFs
QXR0cjNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLmNvbmRpdGlvbmFsQXR0cjMuX3NldCIpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0
b0ludDMyKHZhbHVlKTsKICAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjModik7CkBAIC03OTEs
MjggKzcxNywyNCBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIzQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouY2FjaGVkQXR0cmlidXRlMS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1wLT5j
YWNoZWRBdHRyaWJ1dGUxKCkudjhWYWx1ZSgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmouY2FjaGVkQXR0cmlidXRlMi5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1wLT5jYWNoZWRB
dHRyaWJ1dGUyKCkudjhWYWx1ZSgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFueUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5h
bnlBdHRyaWJ1dGUuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGltcC0+YW55QXR0cmlidXRlKCkudjhWYWx1
ZSgpOwogfQogCiBzdGF0aWMgdm9pZCBhbnlBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmFueUF0dHJp
YnV0ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICBTY3JpcHRWYWx1ZSB2ID0gU2NyaXB0VmFsdWUodmFsdWUpOwogICAg
IGltcC0+c2V0QW55QXR0cmlidXRlKFdURjo6Z2V0UHRyKHYpKTsKQEAgLTgyMSwxNCArNzQzLDEy
IEBAIHN0YXRpYyB2b2lkIGFueUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVBdHRyMS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhJbnRl
Z2VyKGltcC0+ZW5hYmxlZEF0UnVudGltZUF0dHIxKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0K
IAogc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVk
QXRSdW50aW1lQXR0cjEuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKICAgICBp
bXAtPnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyMSh2KTsKQEAgLTgzNywxNCArNzU3LDEyIEBAIHN0
YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5h
YmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLmVuYWJsZWRBdFJ1bnRpbWVBdHRyMi5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGlt
cC0+ZW5hYmxlZEF0UnVudGltZUF0dHIyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3Rh
dGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50
aW1lQXR0cjIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKICAgICBpbXAtPnNl
dEVuYWJsZWRBdFJ1bnRpbWVBdHRyMih2KTsKQEAgLTg1MywxNCArNzcxLDEyIEBAIHN0YXRpYyB2
b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBl
ckNvbnRleHRBdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5l
bmFibGVkUGVyQ29udGV4dEF0dHIxLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5l
bmFibGVkUGVyQ29udGV4dEF0dHIxKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5hYmxlZFBlckNvbnRl
eHRBdHRyMS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0
RW5hYmxlZFBlckNvbnRleHRBdHRyMSh2KTsKQEAgLTg2OSwxNCArNzg1LDEyIEBAIHN0YXRpYyB2
b2lkIGVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBl
ckNvbnRleHRBdHRyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5l
bmFibGVkUGVyQ29udGV4dEF0dHIyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5l
bmFibGVkUGVyQ29udGV4dEF0dHIyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZW5hYmxlZFBlckNvbnRl
eHRBdHRyMi5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwogICAgIGltcC0+c2V0
RW5hYmxlZFBlckNvbnRleHRBdHRyMih2KTsKQEAgLTg4NSwxNCArNzk5LDEyIEBAIHN0YXRpYyB2
b2lkIGVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJh
eUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5mbG9hdEFycmF5Ll9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIHJldHVybiB2OEFycmF5KGltcC0+ZmxvYXRBcnJheSgpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmZsb2F0QXJy
YXkuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgVmVjdG9yPGZsb2F0PiB2ID0gdG9OYXRpdmVBcnJheTxmbG9hdD4odmFs
dWUpOwogICAgIGltcC0+c2V0RmxvYXRBcnJheSh2KTsKQEAgLTkwMSwxNCArODEzLDEyIEBAIHN0
YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG91
YmxlQXJyYXlBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZG91Ymxl
QXJyYXkuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5kb3VibGVBcnJheSgpLCBpbmZv
LkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5kb3VibGVBcnJheS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBWZWN0b3I8ZG91YmxlPiB2ID0gdG9OYXRpdmVBcnJh
eTxkb3VibGU+KHZhbHVlKTsKICAgICBpbXAtPnNldERvdWJsZUFycmF5KHYpOwpAQCAtOTE3LDcg
KzgyNyw2IEBAIHN0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmNvbnRlbnREb2N1bWVudC5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAt
PmNvbnRlbnREb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
Pih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKQEAgLTkyNywxNCArODM2LDEyIEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJs
ZVBvaW50QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm11dGFibGVQ
b2ludC5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9WOEZhc3QoV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJv
cGVydHlUZWFyT2ZmPFRlc3RPYmosIEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLCBpbXAtPm11dGFi
bGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSksIGluZm8sIGltcCk7CiB9
CiAKIHN0YXRpYyB2b2lkIG11dGFibGVQb2ludEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubXV0YWJsZVBvaW50Ll9z
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhT
VkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhTVkdQb2ludDo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBpbXAtPnNldE11dGFibGVQ
b2ludChXVEY6OmdldFB0cih2KSk7CkBAIC05NDMsMTQgKzg1MCwxMiBAQCBzdGF0aWMgdm9pZCBt
dXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmltbXV0YWJsZVBvaW50
Ll9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwogICAgIHJldHVybiB0b1Y4RmFzdChXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJP
ZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAtPmltbXV0YWJsZVBvaW50KCkpKSwgaW5mbywgaW1w
KTsKIH0KIAogc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmltbXV0YWJs
ZVBvaW50Ll9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4g
PiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhTVkdQb2ludDo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBpbXAtPnNl
dEltbXV0YWJsZVBvaW50KFdURjo6Z2V0UHRyKHYpKTsKQEAgLTk1OSwxNCArODY0LDEyIEBAIHN0
YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Ry
YXdiZXJyeUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdHJhd2Jl
cnJ5Ll9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5ibHVlYmVycnkoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5z
dHJhd2JlcnJ5Ll9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CiAgICAgaW1wLT5z
ZXRCbHVlYmVycnkodik7CkBAIC05NzUsMTQgKzg3OCwxMiBAQCBzdGF0aWMgdm9pZCBzdHJhd2Jl
cnJ5QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZsb2F0QXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmljdEZsb2F0Ll9nZXQiKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAg
IHJldHVybiB2ODo6TnVtYmVyOjpOZXcoaW1wLT5zdHJpY3RGbG9hdCgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgc3RyaWN0RmxvYXRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmljdEZsb2F0Ll9zZXQiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGZs
b2F0IHYgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUtPk51bWJlclZhbHVlKCkpOwogICAgIGlt
cC0+c2V0U3RyaWN0RmxvYXQodik7CkBAIC05OTEsMjEgKzg5MiwxOCBAQCBzdGF0aWMgdm9pZCBz
dHJpY3RGbG9hdEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRlc2NyaXB0aW9uLl9nZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5kZXNjcmlwdGlvbigpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouaWQuX2dldCIpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50
ZWdlcihpbXAtPmlkKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgaWRB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLmlkLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CiAgICAg
aW1wLT5zZXRJZCh2KTsKQEAgLTEwMTQsMjEgKzkxMiwxOCBAQCBzdGF0aWMgdm9pZCBpZEF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouaGFzaC5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdjhTdHJp
bmcoaW1wLT5oYXNoKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5yZXBsYWNlYWJsZUF0dHJpYnV0ZS5fZ2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1
cm4gdjhJbnRlZ2VyKGltcC0+cmVwbGFjZWFibGVBdHRyaWJ1dGUoKSwgaW5mby5HZXRJc29sYXRl
KCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFRlc3RPYmpDb25zdHJ1Y3Rv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNvbnN0cnVjdG9ycy5fZ2V0
Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsKICAgICBB
U1NFUlQoZGF0YS0+SXNFeHRlcm5hbCgpKTsKICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250
ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20oaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25D
b250ZXh0KCkpOwpAQCAtMTAzOCwxMyArOTMzLDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
CiB9CiBzdGF0aWMgdm9pZCBUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlcGxhY2Vh
YmxlLl9zZXQiKTsKICAgICBpbmZvLlRoaXMoKS0+Rm9yY2VTZXQobmFtZSwgdmFsdWUpOwogfQog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZvaWRNZXRob2RDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoudm9pZE1l
dGhvZCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgaW1wLT52b2lkTWV0aG9kKCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CkBAIC0xMDUyLDcgKzk0NSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdm9pZE1l
dGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnZvaWRNZXRob2RXaXRo
QXJncyIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMykKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xMDY1LDE0ICs5
NTcsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kV2l0aEFyZ3ND
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBsb25nTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmxvbmdNZXRob2QiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHJldHVybiB2OElu
dGVnZXIoaW1wLT5sb25nTWV0aG9kKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubG9uZ01l
dGhvZFdpdGhBcmdzIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTEw
ODQsNyArOTc0LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTWV0aG9kV2l0
aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvYmpNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub2JqTWV0aG9kIik7CiAgICAgRmVhdHVy
ZU9ic2VydmVyOjpvYnNlcnZlKGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNl
KCkpLCBGZWF0dXJlT2JzZXJ2ZXI6OlRlc3RGZWF0dXJlKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHJldHVybiB0b1Y4KGltcC0+
b2JqTWV0aG9kKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEwOTIs
NyArOTgxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm9iak1ldGhvZFdpdGhBcmdzIik7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTExMDQsNyArOTkyLDYgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RX
aXRoU2VxdWVuY2VBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTExMTUsNyArMTAwMiw2IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RSZXR1
cm5pbmdTZXF1ZW5jZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xMTI1LDcgKzEwMTEsNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93cyIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0x
MTQ0LDcgKzEwMjksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayhjb25zdCB2OAogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zZXJpYWxpemVkVmFsdWUi
KTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTE1OCw3ICsxMDQyLDYg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXJpYWxpemVkVmFsdWVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGlkYktleUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5pZGJLZXkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwpAQCAtMTE2OSw3ICsxMDUyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBp
ZGJLZXlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3B0aW9uc09iamVjdCIpOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xMTg1LDcgKzEwNjcsNiBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhv
ZFdpdGhFeGNlcHRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgewpAQCAtMTIwMCw3ICsxMDgxLDYgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXIKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBm
YWxzZSwgTGlzdGVuZXJGaW5kT3JDcmVhdGUpOwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAg
ICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51
bGxDaGVjaz4sIHN0cmluZ1Jlc291cmNlLCBhcmdzWzBdKTsKQEAgLTEyMTIsNyArMTA5Miw2IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6OmdldEV2ZW50
TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZE9ubHkpOwogICAgIGlmIChsaXN0
ZW5lcikgewogICAgICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5n
UmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHN0cmluZ1Jlc291cmNlLCBhcmdzWzBdKTsKQEAgLTEy
MjQsNyArMTEwMyw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRXZlbnRM
aXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlVm9pZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0U3Rh
dGVWb2lkIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1
cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKQEAgLTEyNDEsNyArMTExOSw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlVm9pZENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0
aFNjcmlwdFN0YXRlT2JqQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0
U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFj
dXJyZW50U3RhdGUpCkBAIC0xMjU4LDcgKzExMzUsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZU9iakNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
ZwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZVZvaWRFeGNl
cHRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbiIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgewpAQCAtMTI4Miw3ICsxMTU4LDYgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3UKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7CkBAIC0xMzA2LDcgKzExODEsNiBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
c2NyaXB0Q29udGV4dCk7CkBAIC0xMzE1LDcgKzExODksNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZSIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0
YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFjdXJyZW50U3RhdGUpCkBAIC0xMzMzLDcgKzEyMDYs
NiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVDYWxsYmFjayhjbwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewpAQCAtMTM1OCw3ICsxMjMw
LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW8KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
cyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50
KCk7CiAgICAgaWYgKCFjdXJyZW50U3RhdGUpCkBAIC0xMzc2LDcgKzEyNDcsNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFjayIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7CiAgICAgaW1wLT53aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCkpOwpAQCAtMTM4NSw3ICsx
MjU1LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQ2FsbGJhY2soY29uc3Qgdjg6OkEKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE9wdGlvbmFs
QXJnIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIGltcC0+bWV0aG9k
V2l0aE9wdGlvbmFsQXJnKCk7CkBAIC0xMzk4LDcgKzEyNjcsNiBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
T3B0aW9uYWxBcmciKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTQx
NCw3ICsxMjgyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnMKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3ND
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE0MzUsNyArMTMwMiw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdv
T3B0aW9uYWxBcmdzQ2FsbGJhY2soCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMCkgewogICAgICAgICBpbXAtPm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZygpOwpAQCAtMTQ0OCw3ICsxMzE0LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnQKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVm
aW5lZCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291
cmNlPD4sIHN0ciwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSk7CiAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChz
dHIpOwpAQCAtMTQ1Nyw3ICsxMzIyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrKGNvbnN0IHYKIAogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxT
dHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAg
ICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3Ry
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7
CiAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmcoc3RyKTsKQEAg
LTE0NjYsNyArMTMzMCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nQ2FsbGJhY2soY29uc3QKIAogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoQ2FsbGJhY2tBcmdDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0
aENhbGxiYWNrQXJnIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE0
NzksNyArMTM0Miw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aENh
bGxiYWNrQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIAogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZ0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNDkzLDcgKzEzNTUsNiBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
Q2FsbGJhY2soY29ucwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhD
YWxsYmFja0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDAgJiYgIWFyZ3NbMF0tPklzTnVsbCgpICYmICFhcmdzWzBdLT5Jc1VuZGVm
aW5lZCgpKSB7CkBAIC0xNTA5LDcgKzEzNzAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2soY29uc3Qgdjg6Ogog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsTWV0aG9kMUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5jb25kaXRpb25hbE1ldGhvZDEiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmNvbmRpdGlv
bmFsTWV0aG9kMSgpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CkBAIC0xNTIwLDcgKzEzODAsNiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsTWV0aG9kMUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbmRpdGlvbmFsTWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jb25kaXRpb25hbE1ldGhvZDIiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlt
cC0+Y29uZGl0aW9uYWxNZXRob2QyKCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CkBAIC0x
NTMyLDcgKzEzOTEsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFs
TWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jb25kaXRpb25hbE1l
dGhvZDMiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogICAgIGltcC0+Y29uZGl0aW9uYWxNZXRob2QzKCk7CiAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CkBAIC0xNTQyLDcgKzE0MDAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbmRpdGlvbmFsTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
Lm92ZXJsb2FkZWRNZXRob2QxIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
QEAgLTE1NTQsNyArMTQxMSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zlcmxv
YWRlZE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRl
ZE1ldGhvZDIiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0
aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTU3MCw3
ICsxNDI2LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9k
MkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kMyIp
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNTgxLDcgKzE0MzYsNiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG92ZXJsb2FkZWRNZXRob2Q0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2Q0Iik7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE1OTIsNyArMTQ0Niw2IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRl
ZE1ldGhvZDVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDUiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTYwNSw3ICsxNDU4LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5vdmVybG9hZGVkTWV0aG9kNiIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CkBAIC0xNjE2LDcgKzE0NjgsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG92ZXJsb2FkZWRNZXRob2Q2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q3Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92
ZXJsb2FkZWRNZXRob2Q3Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAg
LTE2MjcsNyArMTQ3OCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRl
ZE1ldGhvZDdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDhDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1l
dGhvZDgiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTYzOCw3ICsx
NDg4LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kOENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kOUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kOSIpOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNjQ5LDcgKzE0OTgsNiBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q5Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92
ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kMTAiKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTY2MCw3ICsxNTA4LDYgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTBDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDExIik7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE2NzEsNyArMTUxOCw2IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDExQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJnCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5vdmVybG9hZGVkTWV0aG9kIik7CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDIg
JiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkp
ICYmIChhcmdzWzFdLT5Jc051bGwoKSB8fCBhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3Nb
MV0tPklzU3RyaW5nKCkgfHwgYXJnc1sxXS0+SXNPYmplY3QoKSkpKQogICAgICAgICByZXR1cm4g
b3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayhhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkg
PT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdz
WzBdKSkpIHx8IChhcmdzLkxlbmd0aCgpID09IDIgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4
VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSkKQEAgLTE3MDEsMTQgKzE1NDcsMTIgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
bGFzc01ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5jbGFzc01ldGhvZCIpOwogICAgIFRlc3RPYmo6OmNsYXNzTWV0
aG9kKCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY2xhc3NNZXRob2RX
aXRoT3B0aW9uYWwiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIHJl
dHVybiB2OEludGVnZXIoVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIH0KQEAgLTE3MjAsNyArMTU2NCw2IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhv
ZDExQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QxMSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIFY4VFJZQ0FUQ0goaW50LCBhcmcsIHRvSW50MzIoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwpAQCAtMTczNCw3
ICsxNTc3LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9k
MTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEy
Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVjhUUllDQVRDSF9G
T1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwpAQCAtMTc0OCw3ICsx
NTkwLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0aG9kMSIpOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDEpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0
aG9kMTFDYWxsYmFjayhhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJn
c1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNVbmRlZmluZWQoKSB8fCBhcmdzWzBdLT5Jc1N0
cmluZygpIHx8IGFyZ3NbMF0tPklzT2JqZWN0KCkpKSkKQEAgLTE3NjIsNyArMTYwMyw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xh
c3NNZXRob2RXaXRoQ2xhbXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTc4MCw3ICsxNjIwLDYgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhDbGFtcENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGEKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVk
QXRSdW50aW1lTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xNzkxLDcgKzE2MzAsNiBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJs
ZWRBdFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyIik7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE4MDIsNyArMTY0MCw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5h
YmxlZFBlckNvbnRleHRNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMSIp
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xODEzLDcgKzE2NTAsNiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkUGVyQ29udGV4dE1ldGhv
ZDIiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTgyNCw3ICsxNjYw
LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dE1ldGhv
ZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmluZ0FycmF5RnVuY3Rpb24iKTsK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTg0Miw3ICsxNjc3LDYgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBn
ZXRTVkdEb2N1bWVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5nZXRTVkdEb2N1bWVudCIpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgewpAQCAtMTg1OSw3ICsxNjkzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBnZXRTVkdEb2N1bWVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29u
dmVydDEiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTg3MCw3ICsx
NzAzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0MUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29udmVydDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouY29udmVydDIiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwpAQCAtMTg4MSw3ICsxNzEzLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb252ZXJ0MkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29udmVydDQiKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTg5Miw3ICsxNzIzLDYgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0NENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDVDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
YmouY29udmVydDUiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTkw
MywyMSArMTczMywxOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ1Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBtdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tdXRhYmxlUG9pbnRGdW5jdGlv
biIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CiAgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0
UG9pbnQ+OjpjcmVhdGUoaW1wLT5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSksIGFyZ3MuSG9sZGVy
KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBpbW11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmltbXV0YWJsZVBvaW50RnVuY3Rpb24i
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBv
aW50Pjo6Y3JlYXRlKGltcC0+aW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSksIGFyZ3MuSG9sZGVy
KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBvcmFuZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoub3JhbmdlIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpbXAtPmJhbmFuYSgpOwogICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwpAQCAtMTkyNSw3ICsxNzUyLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvcmFuZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmlj
dEZ1bmN0aW9uIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE5NDUs
NyArMTc3MSw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnZhcmlhZGljU3RyaW5nTWV0
aG9kIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTE5NTcsNyArMTc4
Miw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNTdHJpbmdNZXRob2RD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFyaWFkaWNEb3VibGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNEb3VibGVNZXRob2Qi
KTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTk2OSw3ICsxNzkzLDYg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNOb2RlTWV0aG9kIik7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTIyMDYsNyArMjAyOSw2IEBAIENPTVBJ
TEVfQVNTRVJUKDE1ID09IFRlc3RPYmo6OkNPTlNUX0lNUEwsIFRlc3RPYmpFbnVtQ09OU1RfSU1Q
TElzV3JvbmdVc2VEb05vdENoCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLkNvbnN0cnVjdG9yIik7CiAgICAgCiAgICAgaWYgKCFhcmdzLklz
Q29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDNlNTM1YWRjMDU0
NjM5OTFlZWQ3MzVhNDdiMjFjZGIzYjMzMDY0NWEuLjk1NzdkMmU3NTVkNDc1ZGNkM2NjYjBiYmM0
OTA5OGI3NjZjNGI4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhf
VVNFKFQpIHsgfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1
Y3RvcjEiKTsKICAgICAKICAgICBWOFRSWUNBVENIKEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIs
IFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKIApAQCAtNjAsNyArNTksNiBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2Fs
bGJhY2soY29uc3QgdgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25z
dHJ1Y3RvcjIiKTsKICAgICAKICAgICBWOFRSWUNBVENIKEFycmF5QnVmZmVyVmlldyosIGFycmF5
QnVmZmVyVmlldywgVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhBcnJheUJ1ZmZlclZp
ZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAKQEAgLTczLDcg
KzcxLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmNvbnN0cnVjdG9yMkNhbGxiYWNrKGNvbnN0IHYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yM0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IzIik7CiAgICAgCiAgICAgVjhUUllDQVRDSChCbG9i
KiwgYmxvYiwgVjhCbG9iOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSkgOiAwKTsKIApAQCAtODYsNyArODMsNiBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IzQ2FsbGJhY2so
Y29uc3QgdgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3Rv
cjQiKTsKICAgICAKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5n
UmVzb3VyY2U8Piwgc3RyaW5nLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKTsKIApAQCAtOTksNyArOTUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2soY29u
c3QgdgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yIik7
CiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDFjMzFlYzJmODM0N2Q4NWM5NDk0N2MwMzU1OWM0MTA2
Y2I3Y2NmZjAuLjExNjJjZWU5ZTRlZWYxN2U5YzE4NGVhZWNlZTQ5YzgyMTJlYzk0ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCkBAIC00NiwxNCArNDYsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNF
KFQpIHsgfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LnZhbHVlLl9nZXQiKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIHJldHVybiBpbXAtPnZhbHVlKCkgPyBpbXAtPnZhbHVlKCktPmRlc2Vy
aWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS52YWx1ZS5fc2V0Iik7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgp
KTsKICAgICBpbXAtPnNldFZhbHVlKFdURjo6Z2V0UHRyKHYpKTsKQEAgLTYyLDE0ICs2MCwxMiBA
QCBzdGF0aWMgdm9pZCB2YWx1ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbAogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UucmVhZG9ubHlWYWx1ZS5fZ2V0Iik7CiAgICAgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4g
aW1wLT5yZWFkb25seVZhbHVlKCkgPyBpbXAtPnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUo
KSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKIH0K
IAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
YWNoZWRWYWx1ZS5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5h
bWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFZhbHVlIik7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVy
dHlOYW1lKTsKICAgICBpZiAoIXZhbHVlLklzRW1wdHkoKSkKQEAgLTgzLDcgKzc5LDYgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGMKIAogc3RhdGljIHZvaWQgY2FjaGVkVmFsdWVBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNhY2hlZFZhbHVlLl9zZXQiKTsKICAgICBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHYgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIGltcC0+c2V0Q2FjaGVkVmFsdWUoV1RG
OjpnZXRQdHIodikpOwpAQCAtOTMsNyArODgsNiBAQCBzdGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdQog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRzQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLnBvcnRzLl9n
ZXQiKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gaW1wLT5wb3J0cygpOwogICAgIGlmICgh
cG9ydHMpCkBAIC0xMDcsNyArMTAxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBw
b3J0c0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHYKIAogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNhY2hlZFJlYWRvbmx5VmFsdWUuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4g
cHJvcGVydHlOYW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjYWNoZWRSZWFkb25seVZhbHVl
Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0
SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXZhbHVlLklzRW1wdHkoKSkKQEAg
LTEyMSw3ICsxMTQsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRv
bmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFjY2VwdFRyYW5zZmVyTGlzdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5hY2NlcHRUcmFuc2Zlckxpc3QiKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwpAQCAtMTQ1LDcgKzEzNyw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYWNjZXB0VHJhbnNmZXJMaXN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXVsdGlUcmFuc2Zlckxpc3RDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UubXVsdGlUcmFuc2Zlckxpc3QiKTsKICAgICBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDw9IDApIHsKICAgICAgICAgaW1wLT5tdWx0aVRyYW5zZmVyTGlzdCgpOwpAQCAt
MjA5LDcgKzIwMCw2IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRD
YWxsYmFjayBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlCiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLkNvbnN0cnVjdG9yIik7CiAgICAg
CiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nTWFjcm9zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3Mu
aAppbmRleCA2Y2E1OGMzZjc2ODQyYzM1OTMxMGZkZDZjNzEyYjlhMDQzZTJiYjZhLi4zNTJlYmVm
YzYxMzgxM2VlNDdhZmViNmRmNmYwMDhmNjEwMjFkNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3MuaApAQCAtMzMsMTIgKzMzLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0jaWYgZGVmaW5lZChFTkFCTEVfRE9NX1NUQVRTX0NPVU5URVJTKSAm
JiBQTEFURk9STShDSFJPTUlVTSkKLSNkZWZpbmUgSU5DX1NUQVRTKG5hbWUpIFN0YXRzQ291bnRl
cjo6aW5jcmVtZW50U3RhdHNDb3VudGVyKG5hbWUpCi0jZWxzZQotI2RlZmluZSBJTkNfU1RBVFMo
bmFtZSkKLSNlbmRpZgotCiBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIERlZmF1
bHRJc1VuZGVmaW5lZCwKICAgICBEZWZhdWx0SXNOdWxsU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJT
b3VyY2VOb2RlQ3VzdG9tLmNwcAppbmRleCAwYjAyNDYxMmU4ZDRlYTJiNTY2MzJjNDNiOWE3MGUw
MDUxYTdkMWEyLi4xNDc5ZDllNGMwYTQwYmNlMmFhOWI0NjRhNGMxYTY0Y2FkYzFlYTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0J1ZmZlclNv
dXJjZU5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFY4QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpidWZmZXJB
Y2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmJ1ZmZlci5fc2V0Iik7CiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIEF1ZGlvQnVmZmVy
U291cmNlTm9kZSogaW1wID0gVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvTmF0aXZlKGhvbGRl
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggZGQwODAwZmJiYzg0
YjY1ZDM5NjU1NWI4NWVjZDgzYmE4ODdjYWExMy4uMDlhMTI5NmRlMDg0NjU0MGM3ZjgzNDI5Mjkz
MmYyM2EzZTg3MzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTE4
MSw3ICsxODEsNiBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gVjhDU1NTdHlsZURlY2xhcmF0aW9u
OjpuYW1lZFByb3BlcnR5RW51bWVyYXRvcihjb25zdCB2ODo6QQogCiB2ODo6SGFuZGxlPHY4OjpJ
bnRlZ2VyPiBWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlRdWVyeSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gdjhOYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewot
ICAgIElOQ19TVEFUUygiRE9NLkNTU1N0eWxlRGVjbGFyYXRpb24uTmFtZWRQcm9wZXJ0eVF1ZXJ5
Iik7CiAKICAgICBpZiAoY3NzUHJvcGVydHlJbmZvKHY4TmFtZSkpCiAgICAgICAgIHJldHVybiB2
OEludGVnZXIoMCwgaW5mby5HZXRJc29sYXRlKCkpOwpAQCAtMTkxLDcgKzE5MCw2IEBAIHY4OjpI
YW5kbGU8djg6OkludGVnZXI+IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eVF1
ZXJ5KHY4OjpMb2NhbDx2ODo6CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENTU1N0eWxlRGVj
bGFyYXRpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uQ1NT
U3R5bGVEZWNsYXJhdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgLy8gRmlyc3QgbG9v
ayBmb3IgQVBJIGRlZmluZWQgYXR0cmlidXRlcyBvbiB0aGUgc3R5bGUgZGVjbGFyYXRpb24gb2Jq
ZWN0LgogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5
KG5hbWUpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKQEAgLTIyMyw3ICsyMjEsNiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3Bl
cnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDU1NT
dHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5DU1NTdHlsZURlY2xhcmF0aW9uLk5hbWVk
UHJvcGVydHlTZXR0ZXIiKTsKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbXAgPSBWOENTU1N0
eWxlRGVjbGFyYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIENTU1Byb3BlcnR5
SW5mbyogcHJvcEluZm8gPSBjc3NQcm9wZXJ0eUluZm8obmFtZSk7CiAgICAgaWYgKCFwcm9wSW5m
bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBi
b2FyZEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlw
Ym9hcmRDdXN0b20uY3BwCmluZGV4IGRkZGQ2MjIxMjQ3OTMxNmI0MzViZTg0NzViN2E4ZDlkNjAy
M2YzODAuLjhiY2M1MzJhYWM2NTBmNzVkZDZiNmVlNGY2OTAzOGIyZGRiYTM0MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3Vz
dG9tLmNwcApAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6dHlwZXNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQudHlwZXMoKSIpOwogICAgIENsaXBib2FyZCogY2xpcGJv
YXJkID0gVjhDbGlwYm9hcmQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogCiAgICAgTGlzdEhh
c2hTZXQ8U3RyaW5nPiB0eXBlcyA9IGNsaXBib2FyZC0+dHlwZXMoKTsKQEAgLTYzLDcgKzYyLDYg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjp0eXBlc0FjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xp
cGJvYXJkOjpjbGVhckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5jbGVhckRhdGEoKSIpOwogICAgIENsaXBib2Fy
ZCogY2xpcGJvYXJkID0gVjhDbGlwYm9hcmQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAg
ICAgaWYgKCFhcmdzLkxlbmd0aCgpKSB7CkBAIC04MSw3ICs3OSw2IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1h
Z2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygi
RE9NLkNsaXBib2FyZC5zZXREcmFnSW1hZ2UoKSIpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJk
ID0gVjhDbGlwYm9hcmQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgaWYgKCFjbGlw
Ym9hcmQtPmlzRm9yRHJhZ0FuZERyb3AoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKaW5kZXggYzM1ZjAzZjIyOTk2ODhl
ZGQ2YzYzNGQwN2Q0MWZjOTY3MTZkYjliZi4uMDIyMzM0MDIyMzU5ZTFhNTc0NDM1MmM3MjcxYmJk
MTM4ZmRkNDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS50
cmFjZUNhbGxiYWNrIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKICAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVu
dHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDApKTsKICAgICBpbXAtPnRyYWNlKFNjcmlw
dFN0YXRlOjpjdXJyZW50KCksIHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCkpOwpAQCAtNTEsNyAr
NTAsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNv
bGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uQ29uc29sZS5hc3NlcnRDYWxsYmFjayIpOwogICAgIENvbnNvbGUqIGltcCA9
IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgYm9vbCBjb25kaXRpb24g
PSBhcmdzWzBdLT5Cb29sZWFuVmFsdWUoKTsKICAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBz
Y3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsKQEAgLTYyLDcg
KzYwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUucHJv
ZmlsZSIpOwogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291
cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAt
PnByb2ZpbGUodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCkpOwpAQCAtNzEsNyArNjgsNiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6
cHJvZmlsZUVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uQ29uc29sZS5wcm9maWxlRW5kIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhD
b25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwg
dGl0bGUsIGFyZ3NbMF0pOwogICAgIGltcC0+cHJvZmlsZUVuZCh0aXRsZSwgU2NyaXB0U3RhdGU6
OmN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDb29yZGluYXRlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDb29yZGluYXRlc0N1c3RvbS5jcHAKaW5kZXggMWZmZGI4ZjNlYzkzOGM5ZThmMDA0
ZDkwNjk4OWJlZDUxMjVmNTgwNy4uY2U4YjEzODkzNWU4M2ZjYjhiZTQ2ZWE3ZmYyNzJkZDRmMDRk
MGIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29v
cmRpbmF0ZXNDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENvb3JkaW5hdGVzQ3VzdG9tLmNwcApAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvb3JkaW5hdGVzOjphbHRpdHVkZUFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkNvb3JkaW5hdGVzLmFsdGl0dWRl
Ll9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVy
KCk7CiAgICAgQ29vcmRpbmF0ZXMqIGltcCA9IFY4Q29vcmRpbmF0ZXM6OnRvTmF0aXZlKGhvbGRl
cik7CiAgICAgaWYgKCFpbXAtPmNhblByb3ZpZGVBbHRpdHVkZSgpKQpAQCAtNDMsNyArNDIsNiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29yZGluYXRlczo6YWx0aXR1ZGVBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29y
ZGluYXRlczo6YWx0aXR1ZGVBY2N1cmFjeUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFU
UygiRE9NLkNvb3JkaW5hdGVzLmFsdGl0dWRlQWNjdXJhY3kuX2dldCIpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBDb29yZGluYXRlcyog
aW1wID0gVjhDb29yZGluYXRlczo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIWltcC0+Y2Fu
UHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSkKQEAgLTUzLDcgKzUxLDYgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNjdXJhY3lBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djgKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29vcmRpbmF0ZXM6OmhlYWRp
bmdBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5oZWFk
aW5nLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7CiAgICAgQ29vcmRpbmF0ZXMqIGltcCA9IFY4Q29vcmRpbmF0ZXM6OnRvTmF0aXZlKGhv
bGRlcik7CiAgICAgaWYgKCFpbXAtPmNhblByb3ZpZGVIZWFkaW5nKCkpCkBAIC02Myw3ICs2MCw2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvb3JkaW5hdGVzOjpoZWFkaW5nQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENv
b3JkaW5hdGVzOjpzcGVlZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkNv
b3JkaW5hdGVzLnNwZWVkLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uSG9sZGVyKCk7CiAgICAgQ29vcmRpbmF0ZXMqIGltcCA9IFY4Q29vcmRpbmF0ZXM6
OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPmNhblByb3ZpZGVTcGVlZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZl
bnRDdXN0b20uY3BwCmluZGV4IDk1MDgzYTgzMTkyMWQ2YjE5OTQxYWJjOTNiZjBiMjE5YWQ4ODE1
YTYuLmFhNTg2OTFkMWIyZDE0ZTFiOGNhMjI3NzljNDZjNzY4OGNhY2UyZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudEN1
c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b21FdmVudDo6ZGV0YWlsQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uQ3VzdG9tRXZlbnQuZGV0YWlsLl9nZXQiKTsKICAgICBDdXN0b21F
dmVudCogaW1wID0gVjhDdXN0b21FdmVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkID0gaW1wLT5zZXJpYWxpemVkU2NyaXB0
VmFsdWUoKS5nZXQoKTsKICAgICBpZiAoc2VyaWFsaXplZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmlu
ZGV4IDJjOTA3ZDBlNjcwMzE4MTdhNGQ5YzVjOWI2MDFhNTIzZmU0NGMwMTEuLjg0MDkzOWJlODg1
MmM2OGFjMzEwYmUyODdhYTgwMTIyNzYwZTMzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTUz
LDcgKzUzLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RE9NRm9ybURhdGE6OmFwcGVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRm9ybURhdGEuYXBwZW5kKCkiKTsKICAgICAKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3lu
dGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmluZ01h
cEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJp
bmdNYXBDdXN0b20uY3BwCmluZGV4IGRlNjhhODM5ZWJkNzU3ZmEzZDQ5ZTlhZWY5NDlkODk5N2Rh
YzNmOGUuLjY5YjFiMTJiOWUwMTY5OTI5MWQ4NzgyZTc2MDRhMjA3NjJhMzk0MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4
OjpIYW5kbGU8djg6OkludGVnZXI+IFY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5UXVlcnko
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9NU3RyaW5nTWFwLk5hbWVkUHJvcGVydHlRdWVyeSIp
OwogICAgIGlmIChWOERPTVN0cmluZ01hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPmNvbnRh
aW5zKHRvV2ViQ29yZVN0cmluZyhuYW1lKSkpCiAgICAgICAgIHJldHVybiB2OEludGVnZXIoMCwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPigp
OwpAQCAtNDgsNyArNDcsNiBAQCB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPiBWOERPTVN0cmluZ01h
cDo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01TdHJpbmdNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uRE9NU3RyaW5nTWFwLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBT
dHJpbmcgdmFsdWUgPSBWOERPTVN0cmluZ01hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPml0
ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUpKTsKICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpAQCAtNTcsNyArNTUsNiBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhET01TdHJpbmdNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+CiAKIHY4OjpIYW5kbGU8djg6OkFycmF5PiBWOERPTVN0cmluZ01hcDo6bmFtZWRQ
cm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5ET01TdHJpbmdNYXAuTmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IiKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICBWOERPTVN0cmluZ01hcDo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSktPmdldE5hbWVzKG5hbWVzKTsKICAgICB2ODo6SGFuZGxlPHY4OjpBcnJheT4g
cHJvcGVydGllcyA9IHY4OjpBcnJheTo6TmV3KG5hbWVzLnNpemUoKSk7CkBAIC02OCw3ICs2NSw2
IEBAIHY4OjpIYW5kbGU8djg6OkFycmF5PiBWOERPTVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eUVu
dW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29yCiAKIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IFY4
RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5RGVsZXRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5ET01TdHJpbmdNYXAuTmFtZWRQcm9wZXJ0eURlbGV0ZXIiKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBWOERPTVN0cmluZ01hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPmRl
bGV0ZUl0ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUpLCBlYyk7CiAgICAgcmV0dXJuIHY4Qm9vbGVh
bighZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKQEAgLTc2LDcgKzcyLDYgQEAgdjg6OkhhbmRsZTx2
ODo6Qm9vbGVhbj4gVjhET01TdHJpbmdNYXA6Om5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW4KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NU3RyaW5nTWFwOjpuYW1l
ZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5ET01TdHJpbmdNYXAuTmFtZWRQcm9wZXJ0eVNldHRlciIpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIFY4RE9NU3RyaW5nTWFwOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKS0+c2V0SXRlbSh0b1dlYkNvcmVTdHJpbmcobmFtZSksIHRvV2ViQ29yZVN0cmluZyh2YWx1
ZSksIGVjKTsKICAgICBpZiAoZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBhMzM1NjRjMDU5Y2YyYjA1
MDBmNWQzYjI2NDI3MmFjNjk1NjI2Yzc2Li42ZjE5OWU4Mzg4MGVlZTE3ZjNmNjkxZWUwMTkwMjQ4
NjJhMDg3YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTIyNyw3ICsyMjcsNiBAQCB2b2lkIFY4RE9N
V2luZG93OjpvcGVuZXJBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2
ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElO
Q19TVEFUUygiRE9NLkRPTVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCkiKTsKIAogICAgIFN0cmlu
ZyBldmVudFR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgYm9vbCB1c2VDYXB0
dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CkBAIC0yNTksNyArMjU4LDYgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpy
ZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CiAK
ICAgICBTdHJpbmcgZXZlbnRUeXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIGJv
b2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOwpAQCAtMjk3LDcgKzI5NSw2
IEBAIHN0YXRpYyBib29sIGlzTGVnYWN5VGFyZ2V0T3JpZ2luRGVzaWduYXRpb24odjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6
OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucG9zdE1lc3NhZ2UoKSIpOwogCiAgICAgLy8gTm9uZSBv
ZiB0aGVzZSBuZWVkIHRvIGJlIFJlZlB0ciBiZWNhdXNlIGFyZ3MgYW5kIGNvbnRleHQgYXJlIGd1
YXJhbnRlZWQKICAgICAvLyB0byBob2xkIG9uIHRvIHRoZW0uCkBAIC0zNDksNyArMzQ2LDYgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVy
LiBJIGNvbnNpZGVyIGl0IGlzIGRhbmdlcm91cy4KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy50b1N0cmluZygpIik7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBkb21XcmFwcGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChkb21XcmFw
cGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFyZ3MuVGhpcygpLT5PYmplY3RQcm90b1Rv
U3RyaW5nKCk7CkBAIC0zNTgsMTMgKzM1NCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OnRvU3RyaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZWxlYXNlRXZlbnRzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5k
b3cubm9wKCkiKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNhcHR1cmVFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5ub3AoKSIp
OwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTQxMiw3ICs0MDYsNiBAQCBz
dGF0aWMgdm9pZCBzZXRVcERpYWxvZyhET01XaW5kb3cqIGRpYWxvZywgdm9pZCogaGFuZGxlcikK
IAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRP
TVdpbmRvdy5zaG93TW9kYWxEaWFsb2coKSIpOwogICAgIERPTVdpbmRvdyogaW1wbCA9IFY4RE9N
V2luZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRl
ID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGltcGwtPmZyYW1lKCkpKQpAQCAtNDMwLDcg
KzQyMyw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2hvd01vZGFsRGlh
bG9nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cub3BlbigpIik7CiAgICAgRE9NV2luZG93KiBp
bXBsID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEJpbmRpbmdT
dGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CiAgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgaW1wbC0+ZnJhbWUoKSkp
CkBAIC00NTAsNyArNDQyLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpv
cGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9N
V2luZG93LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgRE9NV2luZG93KiB3aW5kb3cg
PSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5kb3cp
CkBAIC00NjksNyArNDYwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpp
bmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHYKIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLkRPTVdpbmRvdy5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAKICAgICBET01X
aW5kb3cqIHdpbmRvdyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBpZiAoIXdpbmRvdykKQEAgLTUxMCwxNCArNTAwLDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0VGltZW91dENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRE9N
V2luZG93LnNldFRpbWVvdXQoKSIpOwogICAgIHJldHVybiBXaW5kb3dTZXRUaW1lb3V0SW1wbChh
cmdzLCB0cnVlKTsKIH0KIAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNl
dEludGVydmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5ET01XaW5kb3cuc2V0SW50ZXJ2YWwoKSIpOwogICAgIHJldHVybiBXaW5kb3dT
ZXRUaW1lb3V0SW1wbChhcmdzLCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCBkZGE2NDE4
YTBlMTk2NzA2OTdiMGRiZWEzZWFkOTM5ZDc0MmQ4YTYzLi5jN2NlNTdhYTNiMmQ1MWE1MTBjMTBl
MGJhZjUzMDQ4NWUxMWE0NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw2IEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcChEYXRhVmlldyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRlCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpn
ZXRJbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5EYXRhVmlldy5nZXRJbnQ4Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQog
ICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xh
dGUoKSk7CiAKQEAgLTcxLDcgKzcwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZp
ZXc6OmdldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Z2V0VWludDhDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRhdGFWaWV3LmdldFVpbnQ4Iik7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKQEAgLTg2LDcgKzg0LDYgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6
OnNldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLkRhdGFWaWV3LnNldEludDgiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIp
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIApAQCAtMTAyLDcgKzk5LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0
YVZpZXc6OnNldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0VWludDhDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRhdGFWaWV3LnNldFVpbnQ4
Iik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYTYwNWVmMmI3Y2FjYjNjZGNjY2EyZjUxZDU5
ODY2MjQwNzgwMjQ0Ny4uMzcyM2ZmYjg2NmFkYmE0NjJiZTQxMGYwOTQ4ODY5NjY2N2Y5MThkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRGVkaWNhdGVkV29ya2VyQ29udGV4dC5wb3N0
TWVzc2FnZSIpOwogCiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAg
TWVzc2FnZVBvcnRBcnJheSBwb3J0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRl
eCBlNzU1NmEyMzAxNjc2MmIxNzlhMmQ0ZWM4MzVhMjZlMWQ5YzMzZjQzLi45ZWY5YTg4MmJmODI5
OTRhY2FhNTcwYWM3MmNiMmNmYzNkYzNkYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC0xMjMsNyArMTIzLDYgQEAgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9u
UmF0ZT4gcmVhZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KHY4OjpMb2NhbDx2ODo6VmEKIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkRldmljZU1vdGlvbkV2ZW50LmFjY2VsZXJh
dGlvbi5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhv
bGRlcigpOwogICAgIERldmljZU1vdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU1vdGlvbkV2ZW50
Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghaW1wLT5kZXZpY2VNb3Rpb25EYXRhKCktPmFj
Y2VsZXJhdGlvbigpKQpAQCAtMTMzLDcgKzEzMiw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRp
b25JbmNsdWRpbmdHcmF2aXR5QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
RGV2aWNlTW90aW9uRXZlbnQuYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eS5fZ2V0Iik7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIERl
dmljZU1vdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU1vdGlvbkV2ZW50Ojp0b05hdGl2ZShob2xk
ZXIpOwogICAgIGlmICghaW1wLT5kZXZpY2VNb3Rpb25EYXRhKCktPmFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHkoKSkKQEAgLTE0Myw3ICsxNDEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eUFjY2Vzc29y
RwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25S
YXRlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRGV2aWNlTW90aW9uRXZl
bnQucm90YXRpb25SYXRlLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uSG9sZGVyKCk7CiAgICAgRGV2aWNlTW90aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNl
TW90aW9uRXZlbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPmRldmljZU1vdGlv
bkRhdGEoKS0+cm90YXRpb25SYXRlKCkpCkBAIC0xNTMsNyArMTUwLDYgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OnJvdGF0aW9uUmF0ZUFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDwKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6
OmludGVydmFsQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uRGV2aWNlTW90
aW9uRXZlbnQuaW50ZXJ2YWwuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBEZXZpY2VNb3Rpb25FdmVudCogaW1wID0gVjhEZXZp
Y2VNb3Rpb25FdmVudDo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIWltcC0+ZGV2aWNlTW90
aW9uRGF0YSgpLT5jYW5Qcm92aWRlSW50ZXJ2YWwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25F
dmVudEN1c3RvbS5jcHAKaW5kZXggMzg2OTBiYWQ4MWJjNDk1NjVkN2ZiYjAyZmE3ODhhYWVjOWE5
NTE2MC4uYWQ0NzNiNjdmOGE3ZWEwODM0ZjgxYmE4YmYwMDQ5OTgzOTFhNmM2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25F
dmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlv
bkV2ZW50OjphbHBoYUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkRldmlj
ZU9yaWVudGF0aW9uRXZlbnQuYWxwaGEuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50KiBp
bXAgPSBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYg
KCFpbXAtPm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVBbHBoYSgpKQpAQCAtNDcsNyArNDYsNiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphbHBoYUFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2OAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uRGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRhLl9nZXQiKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgRGV2aWNlT3JpZW50YXRp
b25FdmVudCogaW1wID0gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp0b05hdGl2ZShob2xkZXIp
OwogICAgIGlmICghaW1wLT5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQmV0YSgpKQpAQCAtNTcs
NyArNTUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjpiZXRhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYUFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLkRldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEuX2dldCIpOwogICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OnRvTmF0
aXZlKGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVHYW1t
YSgpKQpAQCAtNjcsNyArNjQsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmll
bnRhdGlvbkV2ZW50OjpnYW1tYUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2OAogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZUFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkRldmljZU9yaWVudGF0aW9uRXZlbnQuYWJz
b2x1dGUuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5I
b2xkZXIoKTsKICAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFpbXAtPm9yaWVudGF0aW9u
KCktPmNhblByb3ZpZGVBYnNvbHV0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDE1ZjA0NWE0YzFiNWEz
Mjg3NGU5MDBmM2QyMDdlNTg1ZmM4MjBkYjMuLjQ0ZjY4ZDk4ZjhkMTM2ZTg5NGMzMWVhNzA5ZDM1
ZTA0MzM3Y2Y4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTY2LDcgKzY2LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkRv
Y3VtZW50LmV2YWx1YXRlKCkiKTsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBW
OERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZp
bGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggYjQ5YTE1M2U3ZTFjNTNkYWYxOGQyNjQwOWIzNGQ2
NTM5MGJiN2Q5YS4uODg0OWRiY2IzMmI1YjI0YmZlMWQ3OGZkMDBhN2NjNzExNmY1ZTY1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJl
YWRlckN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGaWxlUmVhZGVyOjpyZXN1bHRBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5GaWxlUmVhZGVyLnJlc3VsdC5fZ2V0Iik7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIEZpbGVSZWFk
ZXIqIGltcCA9IFY4RmlsZVJlYWRlcjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoaW1wLT5y
ZWFkVHlwZSgpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25D
dXN0b20uY3BwCmluZGV4IDQyZjEzZGZjYjQyMzYyMjc4OWIwNmRiNDA4Y2FkNTdmMGU5ZjgyYzku
LmIwZTE1MTZlYWIxNmRiOTkyMjllZTYyNGZlMmM3Nzc0MGM2NDZiNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3Rv
bS5jcHAKQEAgLTEzMCw3ICsxMzAsNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5HZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oKSIpOwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBm
YWxzZTsKIApAQCAtMTU2LDcgKzE1NSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xv
Y2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lCiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5HZW9sb2Nh
dGlvbi53YXRjaFBvc2l0aW9uKCkiKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCBlZTYwNzcyNmY1YzBhY2M1NDczNzE4
ZmQxZDhkNjE2NTM4NjI0NTVhLi5kNTkwN2RmNGNkOTIzZGViOGU1OWVhYTJiOGU0MDE2ZmI3NDhm
MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC03NCw3ICs3NCw2IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0SXRlbShIVE1MQWxsQ29sbGVjdGlvbiogY29s
bGVjdGlvbiwgdjg6OkhhbmRsZTx2CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxD
b2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhU
TUxBbGxDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKIAogICAgIGlmICghaW5mby5I
b2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CkBAIC04NywxNCArODYsMTIgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFs
bENvbGxlY3Rpb246Oml0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLkhUTUxBbGxDb2xsZWN0aW9uLml0ZW0oKSIpOwogICAgIEhUTUxB
bGxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICByZXR1cm4gZ2V0SXRlbShpbXAsIGFyZ3NbMF0sIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFs
bENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsK
ICAgICBIVE1MQWxsQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdl
dE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIApAQCAtMTA2LDcgKzEwMyw2IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpj
YWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24uY2FsbEFzRnVuY3Rpb24oKSIpOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDExMjcxZWZjNDc2YTZhMDU2YTI2
Zjg1YmJjNDZmODgzMzVmYmQ2OTYuLmM5MDBlZjI2ZjA5ZmYzNmJlYjg3MWZhOTk5Y2JmYTYwYjBh
NTI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ2FudmFz
RWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTENhbnZhc0VsZW1lbnQuY29udGV4dCIpOwogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBIVE1MQ2Fu
dmFzRWxlbWVudCogaW1wID0gVjhIVE1MQ2FudmFzRWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsK
ICAgICBTdHJpbmcgY29udGV4dElkID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCmluZGV4IGYyNzNhN2QzYjYwYzdjNmQ1OTBjNjg4YWQ5YmIxOTczNzlm
MThhMDkuLjI2N2UxZmM1OWJkZmRjM2U1OTM3Y2Y3YjJjZjk4NWMxYjc4NGRjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5
R2V0dGVyIik7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5
SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZWNhM2U0M2M0YThkNDFiNmZkNjAyODM5
ZjcxOGE5MjdiNDFjZWRjMy4uNzQ4NTIxNmYwOTc3ZmI2NTEwODIzNjA5MGY1NzE1OTJmYTlhYTk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTcsNyArMTE3LDYgQEAgc3RhdGljIFN0cmlu
ZyB3cml0ZUhlbHBlckdldFN0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQud3Jp
dGUoKSIpOwogICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0gVjhIVE1MRG9jdW1lbnQ6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGh0bWxEb2N1bWVudC0+d3JpdGUod3JpdGVI
ZWxwZXJHZXRTdHJpbmcoYXJncyksIGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3Rh
bmNlKCkpLT5kb2N1bWVudCgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMTI1
LDcgKzEyNCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlbG5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC53cml0ZWxuKCkiKTsKICAg
ICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKICAgICBodG1sRG9jdW1lbnQtPndyaXRlbG4od3JpdGVIZWxwZXJHZXRT
dHJpbmcoYXJncyksIGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLT5k
b2N1bWVudCgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMTMzLDcgKzEzMSw2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVsbkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50Lm9wZW4oKSIpOwogICAgIEhUTUxEb2N1bWVu
dCogaHRtbERvY3VtZW50ID0gVjhIVE1MRG9jdW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNTIyY2E3YmRlZTIyYjdhZDlkN2MzOGY4Zjhm
YTc0NGQwM2NiMTY5OS4uZmJjNzdjZWI0MDhmNWZmNjExZTBjNzc5MzdkOTQ4YjIyYTEzMzQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNTUs
NyArNTUsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3RpbwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7
CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5
cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpA
QCAtNjgsNyArNjcsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYQogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29s
bGVjdGlvbi5uYW1lZEl0ZW0oKSIpOwogICAgIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBp
bXAgPSBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAs
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCBhYzliOWFmZTI4ZDBhMGZmZDFl
ODIwY2RkODk1ZmI0ZTczNjFmNjI3Li5kYWZkZTJmMzhhZThhZWFkMWQ0M2VkYjNlYmRiYjcwZGU3
MWExNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUVsZW1l
bnQ6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRm9ybUVsZW1lbnQuSW5k
ZXhlZFByb3BlcnR5R2V0dGVyIik7CiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gVjhIVE1M
Rm9ybUVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogCiAgICAgUmVmUHRyPE5vZGU+
IGZvcm1FbGVtZW50ID0gZm9ybS0+ZWxlbWVudHMoKS0+aXRlbShpbmRleCk7CkBAIC01Myw3ICs1
Miw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtRWxlbWVudDo6aW5kZXhlZFBy
b3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxGb3JtRWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5IVE1MRm9ybUVsZW1lbnQuTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxGb3Jt
RWxlbWVudCogaW1wID0gVjhIVE1MRm9ybUVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIEF0b21pY1N0cmluZyB2ID0gdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVT
ZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGY4YmYzNTU4ZjMzMTkxN2IyZTUy
ZWMzZWNiZjc5ZDc3NjdjMzM3YTMuLjJhMDA0OGRlODViOWRlZWFmMjUxZGJmYWViY2ViNTBlZTdi
YWU5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZy
YW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MRnJhbWVTZXRFbGVtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBIVE1MRnJh
bWVTZXRFbGVtZW50KiBpbXAgPSBWOEhUTUxGcmFtZVNldEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwogICAgIE5vZGUqIGZyYW1lTm9kZSA9IGltcC0+Y2hpbGRyZW4oKS0+bmFtZWRJ
dGVtKHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSk7CiAgICAgaWYgKCFmcmFtZU5vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCBlNDQxYTMzYWI3MDA4YmZm
MzQ5ZDhiNGZmZTgxZDhmNzUxMjQyZTA0Li4yYTY1YjU5Y2M4NmNmMDRjYzZiNTMxNjdmZWZmZGI2
ODFlNzk4ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ3
LDcgKzQ3LDYgQEAgV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
OjppbmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHIKIAogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEltYWdlRWxlbWVu
dC5Db250cnVjdG9yIik7CiAKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3Qg
YmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MjE0OGYwMjYzZmUyZmJmOTk1OWNiMWViYTA2NmE4Y2I5
NGM4MTJkLi4zMDg1M2RjOGI0NWFhZTRjODFmYzJiNmQzZTNkNjQxYTUyZTUxMTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlv
blN0YXJ0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxl
bWVudC5zZWxlY3Rpb25TdGFydC5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRN
TElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKIApAQCAtNTIsNyArNTEsNiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydEFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbAogCiB2b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydC5fc2V0Iik7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVy
KTsKIApAQCAtNjUsNyArNjMsNiBAQCB2b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmRBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNlbGVjdGlvbkVu
ZC5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRl
cigpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVudDo6dG9O
YXRpdmUoaG9sZGVyKTsKIApAQCAtNzgsNyArNzUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
dgogCiB2b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJ
bnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW1wID0g
VjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIpOwogCkBAIC05Miw3ICs4OCw2IEBA
IHZvaWQgVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmRBY2Nlc3NvclNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZWxlY3Rpb25EaXJlY3Rpb24uX2dldCIpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6OnRvTmF0aXZlKGhvbGRl
cik7CiAKQEAgLTEwNCw3ICs5OSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1
dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbkFjY2Vzc29yR2V0dGVyKHY4OjpMCiAKIHZvaWQg
VjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb25BY2Nlc3NvclNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0
RWxlbWVudC5zZWxlY3Rpb25EaXJlY3Rpb24uX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbXAg
PSBWOEhUTUxJbnB1dEVsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7CiAKQEAgLTExOCw3ICsxMTIs
NiBAQCB2b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uQWNjZXNzb3JT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNldFNl
bGVjdGlvblJhbmdlIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdz
LkhvbGRlcigpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVu
dDo6dG9OYXRpdmUoaG9sZGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNjk5
Zjg3NTJjNzJiNDQ4MTdmZTg3NzI5MTk0OTNhZDc2ZDA2MmFhYy4uYTk4MTVhOWExNzliYWZlYzNh
MzFjODJlZGMwOWQ3OTA5MzQ1YTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCkBAIC0z
OSwxNCArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uSFRNTExpbmtFbGVtZW50LnNpemVzLl9nZXQiKTsKICAgICBIVE1MTGlua0VsZW1l
bnQqIGltcCA9IFY4SFRNTExpbmtFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gdG9WOChpbXAtPnNpemVzKCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogdm9pZCBWOEhUTUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvclNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTExp
bmtFbGVtZW50LnNpemVzLl9zZXQiKTsKICAgICBIVE1MTGlua0VsZW1lbnQqIGltcCA9IFY4SFRN
TExpbmtFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbXAtPnNldFNpemVz
KHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApp
bmRleCBiZjE5NWIzYTFiODViOTBjODUwOWViYzY2YzIzZjk5Yjk3YTNiOGJlLi5mZDk4ODFiYjVk
Y2MwZGIzM2RmZGFlYzc5NGJlODI3YmRlOWE0ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgVjhIVE1M
TWVkaWFFbGVtZW50Ojpjb250cm9sbGVyQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxNZWRpYUVsZW1lbnQubWVkaWFD
b250cm9sbGVyLl9zZXQiKTsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBWOEhUTUxNZWRp
YUVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIE1lZGlhQ29udHJvbGxlciog
Y29udHJvbGxlciA9IDA7CiAgICAgaWYgKFY4TWVkaWFDb250cm9sbGVyOjpIYXNJbnN0YW5jZSh2
YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA0Zjg1MTIy
YjU4ZTdlNzlhYjM4NmMzMWE4M2QzYmU4Y2Q3YTA3OGNiLi4wMWFlN2QwN2QwM2JiOGUwN2FmMTM1
MmQzN2UwM2FlNWViZDYyZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAKQEAgLTYxLDcgKzYxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1l
ZEl0ZW1zKEhUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY28KIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlHZXR0
ZXIiKTsKIAogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblBy
b3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CkBAIC03NCw3ICs3Myw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29s
bGVjdGlvbi5uYW1lZEl0ZW0oKSIpOwogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0g
VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKQEAg
LTg2LDcgKzg0LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW0KIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVj
dGlvbi5yZW1vdmUoKSIpOwogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gVjhIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEhUTUxTZWxl
Y3RFbGVtZW50KiBiYXNlID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihpbXAtPm93
bmVyTm9kZSgpKTsKICAgICByZXR1cm4gcmVtb3ZlRWxlbWVudChiYXNlLCBhcmdzKTsKQEAgLTk0
LDcgKzkxLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
OjpyZW1vdmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5h
ZGQoKSIpOwogICAgIGlmICghVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnc1sw
XSkpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTEyMCw3ICsx
MTYsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFk
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAKIHZvaWQgVjhIVE1MT3B0aW9uc0NvbGxl
Y3Rpb246Omxlbmd0aEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubGVuZ3RoLl9zZXQi
KTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBkb3VibGUgdiA9IHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpOwogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IDA7CkBAIC0xNDEsNyArMTM2LDYg
QEAgdm9pZCBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoQWNjZXNzb3JTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHYKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxPcHRp
b25zQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKIAogICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBjb2xsZWN0
aW9uLT5pdGVtKGluZGV4KTsKQEAgLTE1Myw3ICsxNDcsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJf
dCBpbgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omlu
ZGV4ZWRQcm9wZXJ0eVNldHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLkluZGV4ZWRQcm9wZXJ0eVNldHRlciIpOwogICAgIEhU
TUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9
IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oY29sbGVjdGlvbi0+b3duZXJOb2RlKCkp
OwogICAgIHJldHVybiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKGluZGV4LCB2YWx1ZSwgYmFz
ZSwgaW5mby5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4
IGJhNTFhMWQxNzIxYzM0Y2ZiNTQ4OGJmZTU4YjIyNTk5NjA2MjhmMTAuLjYxOWEzOGM3MzE2YjMy
MTJhZGJmODI2OTQ5MTM3ZTJjZmZlZDBiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5j
cHAKQEAgLTM5LDE0ICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yQWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTE91dHB1dEVsZW1lbnQuaHRtbEZvci5fZ2V0Iik7CiAg
ICAgSFRNTE91dHB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTE91dHB1dEVsZW1lbnQ6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB0b1Y4KGltcC0+aHRtbEZvcigpLCBpbmZvLkhv
bGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHZvaWQgVjhIVE1MT3V0cHV0RWxlbWVu
dDo6aHRtbEZvckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3V0cHV0RWxlbWVudC5odG1sRm9yLl9zZXQiKTsKICAg
ICBIVE1MT3V0cHV0RWxlbWVudCogaW1wID0gVjhIVE1MT3V0cHV0RWxlbWVudDo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgaW1wLT5zZXRGb3IodG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
UGx1Z0luRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYTQwY2EyMmNhZDc0ZGEwNTg4
ZGRkZmVhOThlN2YxYmZlNDQyZjgwOS4uODE2NjliOGEwMTk4MTFkMDIzMzc2NDA2MjNhODNkOWJm
NzZhZmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcApAQCAtNzUsNjIgKzc1LDUy
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3ROYW1lZFNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxBcHBsZXRFbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygi
RE9NLkhUTUxBcHBsZXRFbGVtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICByZXR1cm4g
bnBPYmplY3ROYW1lZEdldHRlcjxWOEhUTUxBcHBsZXRFbGVtZW50PihuYW1lLCBpbmZvKTsKIH0K
IAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEVtYmVkRWxlbWVudDo6bmFtZWRQcm9wZXJ0
eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRW1iZWRFbGVtZW50Lk5hbWVkUHJv
cGVydHlHZXR0ZXIiKTsKICAgICByZXR1cm4gbnBPYmplY3ROYW1lZEdldHRlcjxWOEhUTUxFbWJl
ZEVsZW1lbnQ+KG5hbWUsIGluZm8pOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
T2JqZWN0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MT2JqZWN0RWxlbWVudC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgcmV0dXJuIG5w
T2JqZWN0TmFtZWRHZXR0ZXI8VjhIVE1MT2JqZWN0RWxlbWVudD4obmFtZSwgaW5mbyk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBcHBsZXRFbGVtZW50OjpuYW1lZFByb3BlcnR5
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MQXBwbGV0RWxlbWVudC5OYW1lZFByb3BlcnR5U2V0dGVyIik7CiAgICAgcmV0dXJuIG5w
T2JqZWN0TmFtZWRTZXR0ZXI8VjhIVE1MQXBwbGV0RWxlbWVudD4obmFtZSwgdmFsdWUsIGluZm8p
OwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRW1iZWRFbGVtZW50OjpuYW1lZFBy
b3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MRW1iZWRFbGVtZW50Lk5hbWVkUHJvcGVydHlTZXR0ZXIiKTsKICAgICByZXR1
cm4gbnBPYmplY3ROYW1lZFNldHRlcjxWOEhUTUxFbWJlZEVsZW1lbnQ+KG5hbWUsIHZhbHVlLCBp
bmZvKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9iamVjdEVsZW1lbnQ6Om5h
bWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLkhUTUxPYmplY3RFbGVtZW50Lk5hbWVkUHJvcGVydHlTZXR0ZXIiKTsKICAg
ICByZXR1cm4gbnBPYmplY3ROYW1lZFNldHRlcjxWOEhUTUxPYmplY3RFbGVtZW50PihuYW1lLCB2
YWx1ZSwgaW5mbyk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBcHBsZXRFbGVt
ZW50OjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEFwcGxldEVsZW1lbnQoKSIpOwogICAgIHJldHVybiBu
cE9iamVjdEludm9rZURlZmF1bHRIYW5kbGVyKGFyZ3MpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MRW1iZWRFbGVtZW50OjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEVtYmVkRWxlbWVu
dCgpIik7CiAgICAgcmV0dXJuIG5wT2JqZWN0SW52b2tlRGVmYXVsdEhhbmRsZXIoYXJncyk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPYmplY3RFbGVtZW50OjpjYWxsQXNGdW5j
dGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uSFRNTE9iamVjdEVsZW1lbnQoKSIpOwogICAgIHJldHVybiBucE9iamVjdEludm9rZURl
ZmF1bHRIYW5kbGVyKGFyZ3MpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQz4KIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBucE9iamVjdEluZGV4ZWRHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTFBsdWdJbkVs
ZW1lbnQuSW5kZXhlZFByb3BlcnR5R2V0dGVyIik7CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGlt
cCA9IEM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNjcmlwdEluc3RhbmNlIHNjcmlw
dEluc3RhbmNlID0gaW1wLT5nZXRJbnN0YW5jZSgpOwogICAgIGlmICghc2NyaXB0SW5zdGFuY2Up
CkBAIC0xNDYsNyArMTM2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW5kZXhl
ZEdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW4KIHRlbXBsYXRlIDxj
bGFzcyBDPgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW5kZXhlZFNldHRlcih1aW50
MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTFBsdWdJbkVsZW1lbnQuSW5k
ZXhlZFByb3BlcnR5U2V0dGVyIik7CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGltcCA9IEM6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNjcmlwdEluc3RhbmNlIHNjcmlwdEluc3RhbmNl
ID0gaW1wLT5nZXRJbnN0YW5jZSgpOwogICAgIGlmICghc2NyaXB0SW5zdGFuY2UpCkBAIC0xNjEs
MzcgKzE1MCwzMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJbmRleGVkU2V0dGVy
KHVpbnQzMl90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPgogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MQXBwbGV0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90
IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygi
RE9NLkhUTUxBcHBsZXRFbGVtZW50LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIHJldHVy
biBucE9iamVjdEluZGV4ZWRHZXR0ZXI8VjhIVE1MQXBwbGV0RWxlbWVudD4oaW5kZXgsIGluZm8p
OwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRW1iZWRFbGVtZW50OjppbmRleGVk
UHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEVtYmVkRWxlbWVudC5JbmRleGVkUHJvcGVy
dHlHZXR0ZXIiKTsKICAgICByZXR1cm4gbnBPYmplY3RJbmRleGVkR2V0dGVyPFY4SFRNTEVtYmVk
RWxlbWVudD4oaW5kZXgsIGluZm8pOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
T2JqZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxPYmpl
Y3RFbGVtZW50LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIHJldHVybiBucE9iamVjdElu
ZGV4ZWRHZXR0ZXI8VjhIVE1MT2JqZWN0RWxlbWVudD4oaW5kZXgsIGluZm8pOwogfQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQXBwbGV0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5U2V0
dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQXBwbGV0RWxl
bWVudC5JbmRleGVkUHJvcGVydHlTZXR0ZXIiKTsKICAgICByZXR1cm4gbnBPYmplY3RJbmRleGVk
U2V0dGVyPFY4SFRNTEFwcGxldEVsZW1lbnQ+KGluZGV4LCB2YWx1ZSwgaW5mbyk7CiB9CiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxFbWJlZEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eVNl
dHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTEVtYmVkRWxl
bWVudC5JbmRleGVkUHJvcGVydHlTZXR0ZXIiKTsKICAgICByZXR1cm4gbnBPYmplY3RJbmRleGVk
U2V0dGVyPFY4SFRNTEVtYmVkRWxlbWVudD4oaW5kZXgsIHZhbHVlLCBpbmZvKTsKIH0KIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9iamVjdEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eVNl
dHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTE9iamVjdEVs
ZW1lbnQuSW5kZXhlZFByb3BlcnR5U2V0dGVyIik7CiAgICAgcmV0dXJuIG5wT2JqZWN0SW5kZXhl
ZFNldHRlcjxWOEhUTUxPYmplY3RFbGVtZW50PihpbmRleCwgdmFsdWUsIGluZm8pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggOTE5YzkxMzUwNjA1MDg4NmIzMWFjZDE5
MTQ3YjA2ZDBiOWIyNDRhOS4uOWFlOTljYWZmNTMzYTIwZTU5NDFlMDMzODZjZTU0ZTRlMTZjOTQ0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNl
bGVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTcsMTQgKzU3LDEyIEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjppbmRleGVkUHJvcGVydHlH
ZXR0ZXIodWludDMyX3QgaW5kZXgsCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxl
Y3RFbGVtZW50OjppbmRleGVkUHJvcGVydHlTZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IElOQ19TVEFUUygiRE9NLkhUTUxTZWxlY3RFbGVtZW50LkluZGV4ZWRQcm9wZXJ0eVNldHRlciIp
OwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBWOEhUTUxTZWxlY3RFbGVtZW50Ojp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9PcHRpb25zQ29sbGVjdGlvblNl
dHRlcihpbmRleCwgdmFsdWUsIHNlbGVjdCwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MU2VsZWN0
RWxlbWVudC5yZW1vdmUiKTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogaW1wID0gVjhIVE1MU2Vs
ZWN0RWxlbWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHJlbW92ZUVs
ZW1lbnQoaW1wLCBhcmdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggMWU1ZTFlYTNkOWMwZGFhNDI2MGI2
ODVjZTc3ZDc3YjRlOThiZTYyNi4uZjQ2M2MyM2ExMTZmMmI5ZDNjOTU4OGRiNWVkMTExNmVhODg0
OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlz
dG9yeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SGlzdG9yeUN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpzdGF0ZUFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLkhpc3Rvcnkuc3RhdGUiKTsKICAgICBIaXN0b3J5KiBoaXN0
b3J5ID0gVjhIaXN0b3J5Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIAogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldEhpZGRlblZhbHVlKFY4SGlk
ZGVuUHJvcGVydHlOYW1lOjpzdGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
CmluZGV4IGY5NzMzNjM4YjNhZTc3ZDlmYTk3NWJjYWQ3NTM3Y2M0MWI4NDg0OWUuLjcwZThmZmI2
ZDUzNzRkZDdmOWNkMzA0Y2I4NGY2MzEyMWRhMDJlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcApAQCAtODEsNyArODEsNiBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhv
c3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVj
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJJ
bmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0KCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTk1LDcgKzk0
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWRPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXIKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhv
c3QuaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMTA3LDcgKzEwNSw2IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25z
dHJ1Y3Rvck5hbWVDYWxsYmFjayhjb25zCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVj
dGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaXNIVE1M
QWxsQ29sbGVjdGlvbkNhbGxiYWNrKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTEyMCw3ICsxMTcsNiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmlzSFRNTEFsbENvbGxlY3Rp
b25DYWxsYmFjayhjb25zdCB2OAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNj
cmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGVDYWxsYmFjaygpIik7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBA
IC0xNTYsNyArMTUyLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRI
b3N0Ojp0eXBlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3Jp
cHRIb3N0LmZ1bmN0aW9uRGV0YWlsc0NhbGxiYWNrKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTE5Niw3ICsxOTEs
NiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9u
RGV0YWlsc0NhbGxiYWNrKGNvbnN0IHY4OjpBcgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJ
bmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGllc0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Qu
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTI0Myw3ICsyMzcsNiBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBFdgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNj
cmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUV2ZW50TGlz
dGVuZXJDYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0yNzgsNyArMjcxLDYgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNr
KGNvbnN0IHY4OjoKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0
OjppbnNwZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0KCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTI5Miw3ICsy
ODQsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3Bl
Y3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmRhdGFiYXNl
SWQoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtMzA4LDcgKzI5OSw2IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQog
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRT
Y3JpcHRIb3N0LnN0b3JhZ2VJZCgpIik7CiAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0g
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFN0b3Jh
Z2UqIHN0b3JhZ2UgPSBWOFN0b3JhZ2U6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnc1swXSkpOwogICAgIGlmIChzdG9yYWdlKQpAQCAtMzE4LDcgKzMwOCw2IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVk
U2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCkiKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24o
djg6OkV4Y2VwdGlvbjo6RXJyb3Iodjg6OlN0cmluZzo6TmV3KCJPbmUgYXJndW1lbnQgZXhwZWN0
ZWQuIikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCA1YjNhMTU1
NzQ5ZDBmOThiN2Q5NWQ0YjBjMDQzNGM0Y2M5NTg2Y2IyLi5lMDg3NGIyZDljOTU3YjM5MWNkMjJl
ZjZhMmM3MjhjNTY1NWY0ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApA
QCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIlY4SmF2YVNjcmlwdENhbGxGcmFtZS5l
dmFsdWF0ZUNhbGxiYWNrKCkiKTsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhK
YXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdHJpbmcg
ZXhwcmVzc2lvbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhhcmdz
WzBdKTsKICAgICByZXR1cm4gaW1wbC0+ZXZhbHVhdGUoZXhwcmVzc2lvbik7CkBAIC00NywyMSAr
NDYsMTggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZh
bHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJhbWUucmVzdGFy
dENhbGxiYWNrKCkiKTsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1wbC0+
cmVzdGFydCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpzY29wZUNoYWluQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJWOEphdmFT
Y3JpcHRDYWxsRnJhbWUuc2NvcGVDaGFpbkFjY2Vzc29yR2V0dGVyKCkiKTsKICAgICBKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1wbC0+c2NvcGVDaGFpbigpOwogfQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZVR5cGVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lLnNjb3BlVHlwZUNhbGxiYWNrKCkiKTsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1l
KiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
ICAgICBpbnQgc2NvcGVJbmRleCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsKICAgICByZXR1cm4g
djg6OkludDMyOjpOZXcoaW1wbC0+c2NvcGVUeXBlKHNjb3BlSW5kZXgpKTsKQEAgLTY5LDE0ICs2
NSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29w
ZVR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0aGlzT2JqZWN0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJhbWUudGhpc09iamVjdEFjY2Vzc29yR2V0dGVy
KCkiKTsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1wbC0+dGhpc09iamVj
dCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0
eXBlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJh
bWUudHlwZUFjY2Vzc29yR2V0dGVyKCkiKTsKICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJmdW5jdGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggOTdhZjg0ZDVlNDc4NmJhMGNj
N2I0ZDY2NGMyNWFiYjc1NTAwOTY4ZS4uZmNhM2I3ZjRmYjhlMzYzMGU0ODdhYTg1MDZkOTlhY2Fh
NmRlN2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgVjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5oYXNoLl9zZXQi
KTsKICAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7
CiAKQEAgLTU5LDcgKzU4LDYgQEAgdm9pZCBWOExvY2F0aW9uOjpoYXNoQWNjZXNzb3JTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmEKIAogdm9pZCBWOExv
Y2F0aW9uOjpob3N0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewotICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLmhvc3QuX3NldCIpOwogICAgIExvY2F0aW9u
KiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgQmluZGlu
Z1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKIApAQCAtNzEsNyArNjks
NiBAQCB2b2lkIFY4TG9jYXRpb246Omhvc3RBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQogCiB2b2lkIFY4TG9jYXRpb246Omhvc3RuYW1l
QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19T
VEFUUygiRE9NLkxvY2F0aW9uLmhvc3RuYW1lLl9zZXQiKTsKICAgICBMb2NhdGlvbiogaW1wbCA9
IFY4TG9jYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0ZSog
c3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CiAKQEAgLTgzLDcgKzgwLDYgQEAgdm9p
ZCBWOExvY2F0aW9uOjpob3N0bmFtZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djgKIAogdm9pZCBWOExvY2F0aW9uOjpocmVmQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkxv
Y2F0aW9uLmhyZWYuX3NldCIpOwogICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdT
dGF0ZTo6aW5zdGFuY2UoKTsKIApAQCAtOTUsNyArOTEsNiBAQCB2b2lkIFY4TG9jYXRpb246Omhy
ZWZBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYQogCiB2b2lkIFY4TG9jYXRpb246OnBhdGhuYW1lQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnBhdGhu
YW1lLl9zZXQiKTsKICAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCk7CiAKQEAgLTEwNyw3ICsxMDIsNiBAQCB2b2lkIFY4TG9jYXRpb246OnBhdGhuYW1l
QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2OAog
CiB2b2lkIFY4TG9jYXRpb246OnBvcnRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucG9ydC5fc2V0Iik7CiAg
ICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
ICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogCkBA
IC0xMTksNyArMTEzLDYgQEAgdm9pZCBWOExvY2F0aW9uOjpwb3J0QWNjZXNzb3JTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmEKIAogdm9pZCBWOExvY2F0
aW9uOjpwcm90b2NvbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5wcm90b2NvbC5fc2V0Iik7CiAgICAgTG9j
YXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBC
aW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogCkBAIC0xMzQs
NyArMTI3LDYgQEAgdm9pZCBWOExvY2F0aW9uOjpwcm90b2NvbEFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djgKIAogdm9pZCBWOExvY2F0aW9uOjpz
ZWFyY2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uTG9jYXRpb24uc2VhcmNoLl9zZXQiKTsKICAgICBMb2NhdGlvbiogaW1w
bCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0
ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CiAKQEAgLTE0Niw3ICsxMzgsNiBA
QCB2b2lkIFY4TG9jYXRpb246OnNlYXJjaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2Nh
dGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRp
b24ucmVsb2FkLl9nZXQiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2Fk
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpH
ZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0
VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE2NCw3ICsxNTUs
NiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhM
b2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLkxv
Y2F0aW9uLnJlcGxhY2UuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpy
ZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0
aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlv
bjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE4Miw3
ICsxNzIsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uTG9jYXRpb24uYXNzaWduLl9nZXQiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9CiAgICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSk7CkBAIC0yMDEsNyArMTkwLDYgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJl
bG9hZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uTG9jYXRpb24ucmVsb2FkIik7CiAgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9u
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmlu
ZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogCkBAIC0yMTEsNyArMTk5LDYgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2Nh
dGlvbi5yZXBsYWNlIik7CiAgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRl
OjppbnN0YW5jZSgpOwogCkBAIC0yMjQsNyArMjExLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3Np
Z24iKTsKICAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNl
KCk7CiAKQEAgLTI0Nyw3ICsyMzMsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6dmFsdWVPZkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp0b1N0cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24udG9TdHJpbmciKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAg
TG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCksIGltcC0+ZnJhbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCBjNWFlODU5
OTVmYzZkZjdjMDA1OGE5N2VjNTZhODBjMmEyNjYwNDk3Li4zZDJjOTYyNDlmZjczZWU1MDJhMDg0
YjdmNGIxNDUzZTIzNjFlMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdl
RXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdl
RXZlbnQuZGF0YSIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVz
dWx0OwpAQCAtODksNyArODgsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZl
bnQ6OmRhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OnBvcnRzQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LnBvcnRzIik7CiAgICAgTWVzc2FnZUV2ZW50
KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIAogICAg
IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gZXZlbnQtPnBvcnRzKCk7CkBAIC0xMDcsNyArMTA1
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2
ZW50Iik7CiAgICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdHJpbmcgdHlwZUFyZyA9IHRvV2ViQ29yZVN0cmluZyhh
cmdzWzBdKTsKICAgICBib29sIGNhbkJ1YmJsZUFyZyA9IGFyZ3NbMV0tPkJvb2xlYW5WYWx1ZSgp
OwpAQCAtMTM2LDcgKzEzMyw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTWVz
c2FnZUV2ZW50LndlYmtpdEluaXRNZXNzYWdlRXZlbnQiKTsKICAgICByZXR1cm4gaW5pdE1lc3Nh
Z2VFdmVudENhbGxiYWNrKGFyZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggYzU5NDg1
NmRhYjEwNjFiZWE3YzAyMmRjYWUxZTE5MzhmODRkOWE3MC4uYmFkYjBlMWI1YzlmMWI5Y2U2ZTMy
Y2Y1ODNhNDY3ZmQ2MDcwOTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQ
b3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UiKTsKIAogICAgIE1lc3Nh
Z2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHAK
aW5kZXggYTViOWYyNGJiODk5NjdiMzk2YjRhYzU2YmUzYzI2NmY3ZjNkYWYzNi4uYzE1ZDA5Y2Nj
MzliMTllNjNhOGM0YzE2MWJjMDg0NmE0NDA2ZWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBA
IC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4TmFtZWROb2RlTWFwOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTmFt
ZWROb2RlTWFwLkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIE5hbWVkTm9kZU1hcCogaW1w
ID0gVjhOYW1lZE5vZGVNYXA6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFJlZlB0cjxO
b2RlPiByZXN1bHQgPSBpbXAtPml0ZW0oaW5kZXgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtNTUs
NyArNTQsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYW1lZE5vZGVNYXA6OmluZGV4ZWRQ
cm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29ucwogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhOYW1lZE5vZGVNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uTmFtZWROb2RlTWFwLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKIAogICAgIGlmICghaW5m
by5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IDdhZDA4ZDYw
N2Y1ODMxYjRmZjJjZmY4Zjk5MmUwZGUxZTA1ZjZkYTguLjI0ZTY4NmU3NTllMTYxZWIxMTUxZmQ5
NzdhZmU3NjBmMmU3MGIzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC02Myw3ICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY3VzdG9taXplZCB0byB0YWtlIGFkdmFudGFnZSBv
ZiB0aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50OiBzaG91bGRMYXp5QXR0YWNoCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRCZWZvcmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vZGUuaW5zZXJ0QmVmb3JlIik7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5v
ZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKQEAgLTgwLDcgKzc5LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6aW5z
ZXJ0QmVmb3JlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgY3VzdG9taXplZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW9uYWwgNHRo
IGFyZ3VtZW50OiBzaG91bGRMYXp5QXR0YWNoCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2Rl
OjpyZXBsYWNlQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLk5vZGUucmVwbGFjZUNoaWxkIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6
dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTk2LDcgKzk0
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVwbGFjZUNoaWxkQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9k
ZTo6cmVtb3ZlQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLk5vZGUucmVtb3ZlQ2hpbGQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2RlOjp0
b05hdGl2ZShob2xkZXIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTEyLDcgKzEw
OSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlbW92ZUNoaWxkQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY3VzdG9taXpl
ZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50OiBzaG91bGRM
YXp5QXR0YWNoCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBlbmRDaGlsZENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTm9k
ZS5hcHBlbmRDaGlsZCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJn
cy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggZWUyYjE1YWExYzc5YjMx
M2M5MGVhZGRlZmIxMmQxMTI2Zjk4YTkwZi4uNzFkOGExMjExMDdkNTUyOTYyNDgxMDdiYzMyOWJi
Njc3N2M4YTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vZGVMaXN0Lk5hbWVkUHJvcGVydHlHZXR0
ZXIiKTsKICAgICBOb2RlTGlzdCogbGlzdCA9IFY4Tm9kZUxpc3Q6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwogICAgIEF0b21pY1N0cmluZyBrZXkgPSB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFt
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
dGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCmluZGV4IDczZWQzNDNkMWI2N2Yw
MTFjYTBlNzJhYzEyYjg4M2MxZTQ2YTZlNDkuLmRkMGExN2QyZGFjZWE1YjdhNTc0NWY2YjMwNDQw
ZTI2ODU0NmRiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcApAQCAtNDgsNyAr
NDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5v
dGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk5vdGlmaWNhdGlvbkNlbnRlci5S
ZXF1ZXN0UGVybWlzc2lvbigpIik7CiAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZmljYXRp
b25DZW50ZXIgPSBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG5vdGlmaWNhdGlvbkNlbnRl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAx
NTFjNjI5ODc1YTZjODI1ZjQwZTlmMDFhNGZjYzIyYTRlZWE2YzYzLi40NThiNGUwM2Q5OWE5NWQw
NTA0NjVmYjZjMDYyZWY3ZDExZWZjMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAKQEAgLTM2LDcg
KzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhO
b3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJt
aXNzaW9uIik7CiAKICAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxWOE5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjazxWOE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4oYXJnc1swXSwgc3Vj
Y2VlZGVkLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKaW5kZXgg
YTc3YWU5MjNjMmVhYmFiZDFlMmM2MDE2ZmM0Mjg5ZmRiOGI0Y2Q0Yi4uNjIzNjg2MzMxMmM2MTlh
Y2Y1ODM3ZjA5NmQwOTY4NWE3N2I2NTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE9zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApAQCAt
MzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgVjhPc2NpbGxhdG9yTm9k
ZTo6dHlwZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5Pc2NpbGxhdG9yTm9kZS50eXBlLl9zZXQiKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgT3NjaWxsYXRvck5v
ZGUqIGltcCA9IFY4T3NjaWxsYXRvck5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVu
dEN1c3RvbS5jcHAKaW5kZXggMDVmNTlmZWM0MTJlOTY4YjY0MDYwNDMzOGJkOGIxYmQ3YWJiNDFj
YS4uNzIxNGViNDIxZjlmYjQzMTA1NGJkMWMwNmM4NDdiZmQxZjU1YWJjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVu
dEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjYWNoZVN0YXRlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcG9wU3RhdGVFdmVudCwgdjgKIAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UG9wU3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Qb3BTdGF0ZUV2ZW50LnN0YXRlIik7CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFs
dWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnN0YXRlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwCmluZGV4IDY0NjU4MGEzZjEzMzg1NDhhNTRiODU5MDllNWE5YzVmZDdkOTY1
M2UuLjA1NjJjMDMwYTNkZGU5MzY4NWJhYjdiZTE0MmQ5OWYzNDhjMDE2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRl
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uU1FMUmVzdWx0U2V0Um93TGlzdC5pdGVtKCkiKTsKIAogICAgIGlmICghYXJncy5MZW5ndGgo
KSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgIkl0ZW0gaW5kZXgg
aXMgcmVxdWlyZWQuIiwgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
CmluZGV4IGE0MDEzNzI1MmMwNWZmZjhmYzkzY2UxNGI5OGJhYjFjOTRhMmRjOGYuLjFkMTFlYzJi
ZmVjZmJlMjljODlhZTBkZTNmOTU2YWMzM2FhNWQ2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU1FMVHJhbnNhY3Rpb24uZXhl
Y3V0ZVNxbCgpIik7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQogICAgICAgICByZXR1
cm4gc2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxU
cmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCmluZGV4IDhiMTRlZThhYzlkMzIxZmJjOTFmZmE1YzBj
MjBlNzcxZmE3YmFkYjMuLjIwZDZjMTQ5MjY3ZmJkMDQzYmQ1YzA0MzVkODQ0MjFkZWVjNTJmM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5z
YWN0aW9uU3luY0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9u
U3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uU1FMVHJhbnNhY3Rpb25TeW5jLmV4ZWN1dGVTcWwoKSIpOwogCiAg
ICAgaWYgKCFhcmdzLkxlbmd0aCgpKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFNZ
TlRBWF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCmluZGV4IDgzMTg1YmY0
OWRlMTIyMTU1N2FmM2YyYWRhNGI0YjIzNjA0ZDg2YmEuLjJmNzJhZTNhYzA0MTczMTEwMDkyMGQ0
MjY4M2VhNWQzMmNiOWE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6dmFs
dWVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5TVkdMZW5ndGgudmFsdWUu
X2dldCIpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGg+KiB3cmFwcGVyID0gVjhT
VkdMZW5ndGg6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNWR0xlbmd0aCYgaW1wID0g
d3JhcHBlci0+cHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
QEAgLTU1LDcgKzU0LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjp2YWx1
ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogdm9pZCBWOFNWR0xl
bmd0aDo6dmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uU1ZHTGVuZ3RoLnZhbHVlLl9zZXQiKTsKICAgICBTVkdQcm9w
ZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoPiogd3JhcHBlciA9IFY4U1ZHTGVuZ3RoOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBpZiAod3JhcHBlci0+aXNSZWFkT25seSgpKSB7CiAgICAgICAg
IHNldERPTUV4Y2VwdGlvbihOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIsIGluZm8uR2V0SXNv
bGF0ZSgpKTsKQEAgLTc5LDcgKzc3LDYgQEAgdm9pZCBWOFNWR0xlbmd0aDo6dmFsdWVBY2Nlc3Nv
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjoKIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0c0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00u
U1ZHTGVuZ3RoLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIik7CiAgICAgU1ZHUHJvcGVydHlUZWFy
T2ZmPFNWR0xlbmd0aD4qIHdyYXBwZXIgPSBWOFNWR0xlbmd0aDo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgaWYgKHdyYXBwZXItPmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuIHNl
dERPTUV4Y2VwdGlvbihOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0
b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3Rv
cmFnZUN1c3RvbS5jcHAKaW5kZXggYjBmYThmM2RkMzA1ZjU0MjZiYjllNjE1N2YzYzEyMGVjNDAw
OGU3YS4uZjkxZWQ3ZWMwYWJlYzljOWZmNzdhZjdiZWRmYzk4ZWM0OTk4YzVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5j
cHAKQEAgLTg2LDE0ICs4NiwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0b3Jh
Z2VHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgY29uc3QgdgogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3Qg
aW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uU3RvcmFnZS5JbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpJ
bnRlZ2VyPiBpbmRleFY4ID0gdjhJbnRlZ2VyKGluZGV4LCBpbmZvLkdldElzb2xhdGUoKSk7CiAg
ICAgcmV0dXJuIHN0b3JhZ2VHZXR0ZXIoaW5kZXhWOC0+VG9TdHJpbmcoKSwgaW5mbyk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uU3RvcmFnZS5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAg
aWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4o
bmFtZSkuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICByZXR1
cm4gc3RvcmFnZUdldHRlcihuYW1lLCBpbmZvKTsKQEAgLTEwMSw3ICs5OSw2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsCiAKIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IFY4U3RvcmFnZTo6bmFt
ZWRQcm9wZXJ0eVF1ZXJ5KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU3RvcmFnZS5OYW1lZFBy
b3BlcnR5UXVlcnkiKTsKIAogICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBWOFN0b3JhZ2U6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nKHY4
TmFtZSk7CkBAIC0xNDAsMTQgKzEzNywxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN0b3JhZ2VTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgdjg6OkxvYwogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlTZXR0ZXIodWlu
dDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlN0b3JhZ2UuTmFtZWRQcm9wZXJ0
eUdldHRlciIpOwogICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGluZGV4VjggPSB2OEludGVn
ZXIoaW5kZXgsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gc3RvcmFnZVNldHRlcihp
bmRleFY4LT5Ub1N0cmluZygpLCB2YWx1ZSwgaW5mbyk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlN0b3JhZ2UuTmFtZWRQcm9wZXJ0eVNldHRl
ciIpOwogICAgIHJldHVybiBzdG9yYWdlU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIApA
QCAtMTcwLDE0ICsxNjUsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IHN0b3Jh
Z2VEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIGNvbnMKIAogdjg6OkhhbmRs
ZTx2ODo6Qm9vbGVhbj4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlEZWxldGVyKHVpbnQzMl90
IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygi
RE9NLlN0b3JhZ2UuSW5kZXhlZFByb3BlcnR5RGVsZXRlciIpOwogICAgIHY4OjpIYW5kbGU8djg6
OkludGVnZXI+IGluZGV4VjggPSB2OEludGVnZXIoaW5kZXgsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
ICAgICByZXR1cm4gc3RvcmFnZURlbGV0ZXIoaW5kZXhWOC0+VG9TdHJpbmcoKSwgaW5mbyk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IFY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0eURlbGV0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uU3RvcmFnZS5OYW1lZFByb3BlcnR5RGVsZXRlciIp
OwogICAgIHJldHVybiBzdG9yYWdlRGVsZXRlcihuYW1lLCBpbmZvKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExp
c3RDdXN0b20uY3BwCmluZGV4IDFkZDIzMDc0NzY0Nzg0YzYxYjE4MWIyNmIyYzc4NTliYmY1ZGI0
ODguLjg3MWNlYzhjZDQ3MjM5Yzc2ZDNkNmM4Mjk5M2U5ZTQxOGM5ZTI3MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0
TGlzdEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdHlsZVNoZWV0TGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5TdHlsZVNoZWV0TGlzdC5OYW1lZFByb3BlcnR5R2V0
dGVyIik7CiAKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkUHJvcGVydHkobmFt
ZSkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcAppbmRleCA2
OGNmNTZiYmE0MTNhODE4NmVlY2Y2ZjU1MmQ0NTRjNjA4ZmFhMzMwLi5iZmJiOTU5NTI4MWUxODk0
ZjFjYzRkNzdhM2M4OWVjYWM1Y2Y5NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAtNDIsNyArNDIs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRyYWNr
RXZlbnQ6OnRyYWNrQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uVHJhY2tF
dmVudC50cmFjayIpOwogICAgIFRyYWNrRXZlbnQqIHRyYWNrRXZlbnQgPSBWOFRyYWNrRXZlbnQ6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFRyYWNrQmFzZSogdHJhY2sgPSB0cmFja0V2
ZW50LT50cmFjaygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggMDZlNjRjZDgyNjg0YTliN2FiNDQzNGEzYjc1OTc1NmYwYTE1NjNjOS4uMDZkZDcxNjk1
ODJkYzEzMDdmMGY2Njc4MjMwMmZlOGZkZWRkZmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCkBAIC0yNzIsNyArMjcyLDYgQEAgZW51bSBXaGljaFByb2dyYW1DYWxs
IHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRB
dHRhY2hlZFNoYWRlcnNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRBdHRhY2hlZFNoYWRlcnMo
KSIpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0yOTgsMTMgKzI5
NywxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEF0dGFjaGVkU2hhZGVyc0NhbGxiYWNrKGNvbnN0CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuZ2V0QnVmZmVyUGFyYW1ldGVyKCkiKTsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFy
YW1ldGVyKGFyZ3MsIGtCdWZmZXIpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmdl
dEV4dGVuc2lvbkNhbGxiYWNrKCkiKTsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGltcCA9
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTMxNSw3ICszMTIsNiBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxi
YWNrKGNvbnN0IHY4OjpBcgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpIik7CiAKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSAhPSAzKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0zMzMsNyArMzI5LDYgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRQYXJhbWV0
ZXIoKSIpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMSkKICAgICAgICAgcmV0dXJuIHRo
cm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzQ5LDcg
KzM0NCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIoKSIpOwogCiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgIT0gMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
YXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzY4LDEzICszNjIsMTEgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyQ2FsbGJh
Y2soY29uc3QKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIoKSIpOwogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJn
cywga1JlbmRlcmJ1ZmZlcik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Z2V0U2hhZGVyUGFyYW1ldGVyKCkiKTsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDIpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKQEAgLTM5Myw3ICszODUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlckNhbGxiYWNrKGNvbnN0CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0
ZW5zaW9uc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxs
YmFjaygpIik7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBpbXAgPSBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKGltcC0+aXNDb250
ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gdjhOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAg
LTQwNywxMyArMzk4LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKGNvCiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJH
TFJlbmRlcmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKCkiKTsKICAgICByZXR1cm4gZ2V0T2Jq
ZWN0UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuZ2V0VW5pZm9ybSgpIik7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CkBAIC00MzcsNyArNDI2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldl
YkdMUmVuZGVyaW5nQ29udGV4dC5nZXRWZXJ0ZXhBdHRyaWIoKSIpOwogICAgIHJldHVybiBnZXRP
YmplY3RQYXJhbWV0ZXIoYXJncywga1ZlcnRleEF0dHJpYik7CiB9CiAKQEAgLTYwOCw0OSArNTk2
LDQxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5pZm9ybUhlbHBlcmkoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybTFm
digpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtV
bmlmb3JtMXYpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xaXZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtMWl2KCkiKTsK
ICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm0xdik7CiB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0yZnYoKSIpOwogICAgIHJldHVybiB2ZXJ0ZXhBdHRy
aWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTJ2KTsKIH0KIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRl
cmluZ0NvbnRleHQudW5pZm9ybTJpdigpIik7CiAgICAgcmV0dXJuIHVuaWZvcm1IZWxwZXJpKGFy
Z3MsIGtVbmlmb3JtMnYpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtM2Z2
KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1Vu
aWZvcm0zdik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNpdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0zaXYoKSIpOwog
ICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdzLCBrVW5pZm9ybTN2KTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJH
TFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybTRmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJp
YkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtVbmlmb3JtNHYpOwogfQogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXZDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC51bmlmb3JtNGl2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJn
cywga1VuaWZvcm00dik7CiB9CiAKQEAgLTcxNyw0MyArNjk3LDM2IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdW5pZm9ybU1hdHJpeEhlbHBlcihjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzLAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXgyZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAg
IElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtTWF0cml4MmZ2KCki
KTsKICAgICByZXR1cm4gdW5pZm9ybU1hdHJpeEhlbHBlcihhcmdzLCAyKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybU1hdHJpeDNmdigpIik7CiAgICAgcmV0dXJu
IHVuaWZvcm1NYXRyaXhIZWxwZXIoYXJncywgMyk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYoKSIpOwogICAgIHJldHVybiB1bmlmb3JtTWF0cml4
SGVscGVyKGFyZ3MsIDQpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnZlcnRl
eEF0dHJpYjFmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJm
KGFyZ3MsIGtWZXJ0ZXhBdHRyaWIxdik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRl
eHQudmVydGV4QXR0cmliMmZ2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9y
bUhlbHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjJ2KTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnZDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC52ZXJ0ZXhBdHRyaWIzZnYoKSIpOwogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJB
bmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0cmliM3YpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LnZlcnRleEF0dHJpYjRmdigpIik7CiAgICAgcmV0dXJuIHZlcnRl
eEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRyaWI0dik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJL
aXRBbmltYXRpb25DdXN0b20uY3BwCmluZGV4IDNlYzdkOTkxNzU2OWRjZDU2MWE1Yzg5M2MxZDQ4
ZWFiM2RiYjk4YjIuLmM2ZTU2M2Q1ZTkzMzdkZDAxZDExODk0NGQ2NjM2ZmVkMzQzNTgwMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYktpdEFuaW1hdGlvbjo6aXRlcmF0
aW9uQ291bnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJLaXRBbmlt
YXRpb24uaXRlcmF0aW9uQ291bnQuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBXZWJLaXRBbmltYXRpb24qIGltcCA9IFY4V2Vi
S2l0QW5pbWF0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGludCBjb3VudCA9IGltcC0+aXRl
cmF0aW9uQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMTQ5OTEyYWUxODg5YWMx
NzQwYjdlNDBhNDE4MTg1YTEzZGMxZDVjNC4uZWQzZjc5ODEwYjFjMDQ2MjZlMjI3NTY0ODQyOWQ0
MmM1MDFmYjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTkyLDcgKzkyLDYgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29u
dGV4dDo6aW1wb3J0U2NyaXB0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uV29ya2VyQ29udGV4dC5pbXBvcnRTY3JpcHRzKCkiKTsKICAg
ICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
QEAgLTExNywxMyArMTE2LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRl
eHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldvcmtlckNvbnRleHQu
c2V0VGltZW91dCgpIik7CiAgICAgcmV0dXJuIFNldFRpbWVvdXRPckludGVydmFsKGFyZ3MsIHRy
dWUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZXRJbnRl
cnZhbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uV29ya2VyQ29udGV4dC5zZXRJbnRlcnZhbCgpIik7CiAgICAgcmV0dXJuIFNldFRpbWVv
dXRPckludGVydmFsKGFyZ3MsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5kZXggNGEyOGE0MmQwZmNm
MDE0NzMyMTI3MzhjMzQ2MGIzMTJjOWRhZTlkYS4uYzg1MWFhZTBkMWM5ZmNkMDQ0ODQ3M2FhYWVi
ZWViNGJhZmUwMzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV29y
a2VyLnBvc3RNZXNzYWdlIik7CiAKICAgICBXb3JrZXIqIHdvcmtlciA9IFY4V29ya2VyOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCmluZGV4IDBhODA4YmQ0Zjg4ZGRhYzIxOTE3Zjg4ZjIwMjBlM2JiYzFj
YTJiYjUuLjc1Mzk3MGFjNjQ3OWJkNjIyMzBkNjYxZDQyMWIxNjU2ZDNhNGRjY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3UKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4
dEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LnJl
c3BvbnNldGV4dC5fZ2V0Iik7CiAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0g
VjhYTUxIdHRwUmVxdWVzdDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0ID0geG1sSHR0cFJlcXVlc3QtPnJl
c3BvbnNlVGV4dChlYyk7CkBAIC03OCw3ICs3Nyw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNl
Ll9nZXQiKTsKICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVlc3QgPSBWOFhNTEh0dHBS
ZXF1ZXN0Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIAogICAgIHN3aXRjaCAoeG1sSHR0cFJl
cXVlc3QtPnJlc3BvbnNlVHlwZUNvZGUoKSkgewpAQCAtMTE5LDcgKzExNyw2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0
OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RB
VFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5vcGVuKCkiKTsKICAgICAvLyBGb3VyIGNhc2VzOgogICAg
IC8vIG9wZW4obWV0aG9kLCB1cmwpCiAgICAgLy8gb3BlbihtZXRob2QsIHVybCwgYXN5bmMpCkBA
IC0xNjksNyArMTY2LDYgQEAgc3RhdGljIGJvb2wgaXNEb2N1bWVudFR5cGUodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVz
dDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2VuZCgpIik7CiAgICAgWE1MSHR0cFJlcXVlc3QqIHht
bEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qo
eG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3Qt
PnVybCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggMjkwMTNmMTdhZDJkY2UzMWZlNzli
ZGZhY2U3Y2JjNDQ1MzRjN2Q1YS4uYjViMjA4OTdlYTQ1NTUxMmNjMmYxY2JmNzQ1YjMyYjZhYTBm
YzkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpzZXRQ
YXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19T
VEFUUygiRE9NLlhTTFRQcm9jZXNzb3Iuc2V0UGFyYW1ldGVyIik7CiAgICAgaWYgKGlzVW5kZWZp
bmVkT3JOdWxsKGFyZ3NbMV0pIHx8IGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMl0pKQogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC02Niw3ICs2NSw2IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6Omdl
dFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5nZXRQYXJhbWV0ZXIiKTsKICAgICBpZiAoaXNVbmRl
ZmluZWRPck51bGwoYXJnc1sxXSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
QEAgLTgzLDcgKzgxLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6
Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29y
LnJlbW92ZVBhcmFtZXRlciIpOwogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>