<?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>112182</bug_id>
          
          <creation_ts>2013-03-12 13:09:41 -0700</creation_ts>
          <short_desc>REGRESSION(r145554): Breaks several extension browser tests (see bug for details) (Requested by jamesr on #webkit).</short_desc>
          <delta_ts>2013-03-12 13:14:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>jochen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853727</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 13:09:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/145554 broke the build:
Breaks several extension browser tests (see bug for details) (Requested by jamesr on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853729</commentid>
    <comment_count>1</comment_count>
      <attachid>192793</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 13:10:12 -0700</bug_when>
    <thetext>Created attachment 192793
ROLLOUT of r145554

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853730</commentid>
    <comment_count>2</comment_count>
      <attachid>192793</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 13:14:14 -0700</bug_when>
    <thetext>Comment on attachment 192793
ROLLOUT of r145554

Clearing flags on attachment: 192793

Committed r145575: &lt;http://trac.webkit.org/changeset/145575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853731</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 13:14:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192793</attachid>
            <date>2013-03-12 13:10:12 -0700</date>
            <delta_ts>2013-03-12 13:14:14 -0700</delta_ts>
            <desc>ROLLOUT of r145554</desc>
            <filename>bug-112182-20130312200610.patch</filename>
            <type>text/plain</type>
            <size>80816</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc2ZTgzZTk4N2VhNTYx
ZDhlMzQ4MGNlNTI0YTk4ODg1MDc5NThlNC4uY2Q4ZWEyODIyMzU3NjdjMTFkM2Y3NzBlNDkxNDJm
ZDViNzlhNGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMy0wMy0xMiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE0NTU1NC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTQ1NTU0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTIxODIKKworICAgICAgICBCcmVha3Mgc2V2ZXJhbCBleHRlbnNpb24gYnJv
d3NlciB0ZXN0cyAoc2VlIGJ1ZyBmb3IgZGV0YWlscykKKyAgICAgICAgKFJlcXVlc3RlZCBieSBq
YW1lc3Igb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
RG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAoQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZs
b2F0NjRBcnJheTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJy
YXk6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhG
bG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKFY4RmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0lu
c3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZl
RE9NT2JqZWN0Lmg6CisgICAgICAgIChWOFRlc3RBY3RpdmVET01PYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuaDoKKyAgICAgICAgKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFY4VGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25m
aWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVu
dFRhcmdldDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoVjhUZXN0RXZlbnRUYXJnZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChWOFRlc3RFeGNl
cHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgIChW
OFRlc3RJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAg
ICAgICAoVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOFRlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAg
KFY4VGVzdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RPYmo6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmg6CisgICAgICAgIChWOFRlc3RPYmopOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhh
c0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAoVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVk
ZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChWOFRl
c3RUeXBlZGVmcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xh
dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xh
dGVEYXRhOjpwcml2YXRlVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRl
RGF0YTo6cmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6
aGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnRlbXBsYXRlTWFwKToKKyAgICAgICAg
KFY4UGVySXNvbGF0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5m
by5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQXR0ckdldHRlckN1c3RvbSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhOb2RlTGlzdDo6b3BhcXVlUm9vdEZvckdDKToKKwogMjAxMy0wMy0xMiAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IFVzZSBsaXBvKDEpIHJhdGhlciB0aGFuIGZpbGUoMSkgdG8gbGlzdCBsaWJyYXJ5IGFyY2hpdGVj
dHVyZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCmluZGV4IGNkZWY2NDRiN2U3YjdiZWIyNjc0YmYyMjI0NGMyM2RkMWE5ODE3YTku
LmVmMjBmOWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5ZjkzNmU5MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNjAs
NyArMzYwLDcgQEAgRU5ECiAgICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQp
OwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOworICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7bmF0aXZl
VHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKQEAg
LTc4MCw3ICs3ODAsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKICAg
ICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4IiAuICRpbnRlcmZhY2VOYW1lOwogICAgIG15ICRm
dW5jTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCi0gICAgbXkgJHNpZ25hdHVy
ZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElz
b2xhdGUoKSktPnJhd1RlbXBsYXRlKCYiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OmluZm8sIGN1
cnJlbnRXb3JsZFR5cGUpKSI7CisgICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpO
ZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRl
KCYiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OmluZm8pKSI7CiAgICAgaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0p
IHsKICAgICAgICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CiAg
ICAgfQpAQCAtMzE1NSwyMCArMzE1NSwyMCBAQCBFTkQKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7
CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAg
ICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgm
aW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmUke3Y4
SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIEVORApA
QCAtNDA4OSw3ICs0MDg5LDcgQEAgc3ViIENyZWF0ZUN1c3RvbVNpZ25hdHVyZQogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdl
dFY4SGVhZGVyTmFtZSgkdHlwZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAkcmVzdWx0IC49ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjgke3R5cGV9OjppbmZvLCB3b3JsZFR5cGUpIjsKKyAgICAgICAgICAgICAgICAkcmVzdWx0
IC49ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5
cGV9OjppbmZvKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRB
cnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9h
dDY0QXJyYXkuY3BwCmluZGV4IDRiOGIzNjU3OGE3ODg3YjVkMWNhNTJlMTAzNmUzNzhiNjFhZjdj
ZDEuLmRkNzZlYWY0MzEyMjdiZjcwZjFjMzUxNDFhNzYzOWU5ZjZkYWEzN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAx
OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0
MzJBcnJheTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbykgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBmb29BcmdjLCBmb29Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiZm9vIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJbnRlcm5h
bDo6Zm9vTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkpOwogCkBA
IC0xNjUsMjAgKzE2NSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6Ogogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0g
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQo
JmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
LSAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVW
OEZsb2F0NjRBcnJheVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwg
d29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwog
ICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAg
IHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5m
bywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
aAppbmRleCA5YjNjNjFmODVhNjY5MDJhODMwZThjOWFkMjFkYjI5NWViOWIyMDdmLi5hZmUyODkz
Mzg4MjBlZjEwNDc5OTMwYWQ1MGNlM2YwZTIzZDUxMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOEZsb2F0NjRBcnJheSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBW
OEFycmF5QnVmZmVyVmlldzo6aGFzRGVwZW5kZW50TGlmZXRpbWU7Ci0gICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwCmluZGV4IGU2MTRiMGIxMWVlNjlmMjA4ZTBiZWZmYTJmNDNlODViNjUyMzI4OTcu
LmFlM2E4NTFlNDQ5Y2QwMDJmOWQwMGNiNjg4NjlhNmNlYTJjZDE2ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGMKICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5
ID0gInBvc3RNZXNzYWdlUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwogICAgIFY4UGVy
SXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0
ZSgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRl
bXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRl
VGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVz
c2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCZWOFRl
c3RBY3RpdmVET01PYmplY3Q6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnBy
aXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5
LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaW5mby5HZXRJc29sYXRlKCkpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0
OjppbmZvKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRo
aXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6
OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAg
aWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgYwogICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURP
TU9iamVjdDo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFt
ZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJwb3N0TWVzc2FnZVNoYXJlZFRlbXBsYXRl
IjsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRl
bXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRU
ZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNz
YWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKKyAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+
cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtl
eSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6aW5mbykpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigp
OwogICAgIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhCiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdleGNpdGluZ0Z1bmN0aW9uJwogICAgIGNvbnN0IGlu
dCBleGNpdGluZ0Z1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZXhjaXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZv
LCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhj
aXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvKSB9OwogICAgIHY4
OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpT
aWduYXR1cmU6Ok5ldyhkZXNjLCBleGNpdGluZ0Z1bmN0aW9uQXJnYywgZXhjaXRpbmdGdW5jdGlv
bkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNpdGluZ0Z1
bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4
SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
ZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSkpOwogCkBAIC0yMTAsMjAgKzIxMCwyMCBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFj
dGl2ZURPTU9iamVjdFRlbXBsYQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3
b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggNzIzNjQ4Y2JkMmY3MWI5OTFiMDhmNzdi
NWM5OWQ4NzMzNDQ4M2YyZC4uZDIzNWJjNTQ1NDFhZDY5MzRiOGE2N2Y5MDA5ZGY4MDBhMzljOGU3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEFjdGl2ZURPTU9i
amVjdCogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggZWU1ZTM3MmVmNGM3OGNlNDg2
ZjgzZDBkOTNmODA5MGNmMGQ4ZmY4OC4uNDYwMTQ4YzJiNGIwNmZiM2VmYmE1NTViOTMyZWI4ZmQ4
ZGU0MWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xMTUs
MjAgKzExNSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7
Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBs
ID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAg
ICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAg
ICBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgp
LmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RD
dXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29s
IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlw
ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aAppbmRleCAxMTMwM2FiMWQ4NmIzYzczZDU4M2Q4Zjc1MjQyNDIwMWZiNjBhNzkxLi5lMmYxZDVh
NGVkOTRiYTkwY2U4ZTViMThiODlhZWUwZDc3OWRkMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBWOFRlc3RDdXN0b21OYW1lZEdldHRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlw
ZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAppbmRleCAyYzY4ZWU5NGJmM2FmMTQ4ZjU1NjBhYjVmYzljMDgwYjc0N2M5
ZmJmLi5lNmM4OThlMTAwODQ2NDNiNTE5MjEwOTdjZDI0ZDI3NmVmNzIwNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNTcsMjAgKzE1NywyMCBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50
Q29uc3RydWN0b3JUZW1wbAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVW
OFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdv
cmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRD
b25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDQyYjY2NjkzZDc4NzE4MTZiNmU5
ZDgxNzc3NWJiMWExODQ5MWI0YTcuLjZmMTdmNjZkNDM4OWZlY2YyYjliNzhjYzliOWIwYjQ4YzNi
Yzc0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtMzUsNyArMzUsNyBA
QCBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsK
LSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0
ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXZlbnRD
b25zdHJ1Y3RvciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNDQ4NmVlMmQ2MTc4OTQyN2Y4MTI0ZmYw
YzkxNjFmNzAwMDYyYTAyNC4uODQ4NWYwOTcyODE1NzYwZTIxMzVjN2NlZDJjYjRhMTNiZDY3OTk4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVu
dFRhcmdldFRlbXBsYXRlKHYKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rpc3BhdGNoRXZl
bnQnCiAgICAgY29uc3QgaW50IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2
ZW50OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2NdID0geyBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhFdmVudDo6aW5mbykgfTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRpc3BhdGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0Y2hFdmVudEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmRp
c3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNp
Z25hdHVyZSkpOwogCkBAIC0xOTEsMjAgKzE5MSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUo
dgogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0g
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRl
c3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4
VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSk7CiB9CiAKIEV2ZW50VGFyZ2V0KiBWOFRlc3RFdmVudFRhcmdldDo6dG9FdmVudFRh
cmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgK
aW5kZXggZDg4ODMzODQxNTk5ZTMwZjUwZmQ0MTRkNDRhMmUxNjc3NzNjNzY5NS4uYWJhMmIzYTk0
YjA5MzU2OTgyNzc1ZmU5NTgwZDE4MGE4NzdmYmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgK
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0RXZlbnRU
YXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7
CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0
aWMgVGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDQ3Y2YxZmU4MmI2Y2VmNTcyZDc5
MTVkZWUzMzY5YTNkNWM0YzViZmEuLjdjMDMzMTY3MzljNDBjMmQ2YzdlMTRiMmM4MDE4ODNhZmY1
ZDg2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC0xMDYsMjAgKzEwNiwyMCBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV4
Y2VwdGlvblRlbXBsYXRlKHY4Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBp
c29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRl
KGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRh
LT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0K
IAotYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQorYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBl
KTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFu
Y2UoJmluZm8sIHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5kZXggYmJiNzZkZDg2
NmQ1YmI5MTQyNmVkODQ3ZWI2OTE0NjU3MThlNTdiYS4uNjY2M2EyNThjMjZkZjFhMjMzMjUzNGU3
ODRiZGNlYWM5OGI3Mzk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wgSGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmNwcAppbmRleCBlOWU5NTI1NGEzMGM2NDllMzFjNjZjNDJiYmRkNDQ1OWU0MmFjZjRiLi4z
ZTIzM2Y3OTE4ZWM0YmQ1OWUxNzIxYTAyZmZiYmQ0MjYwMWE1ZmFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAKICAg
ICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNvbnN0IGlu
dCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFy
Z2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5
cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFs
TWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3YpOwogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1l
dGhvZDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNp
Z25hdHVyZSkpOwpAQCAtNDU2LDIwICs0NTYsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RJbnRlcmZhY2U6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
LSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAg
ICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgm
aW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0SW50ZXJm
YWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0SW50ZXJm
YWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9
CiAKIEFjdGl2ZURPTU9iamVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCA2NzIz
Mjk3YmYwZDQ0YmI3NmU2NTM2YmI2ZDg2MWUwOGRhZjQ3ZGNlLi41Yjc4YjhhYzM5NmNiZThjNGU3
NzgzYTJlMjI2YWNkNjJmY2IyOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEludGVyZmFjZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0cnVlOwotICAg
IHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29s
IEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2Uq
IHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBkMTQ3YzdiZmU0YTM2
NDcxYjk4NDZkNjViZTUyYTBjNGFhNTZlZDljLi4yOTFkZmNlNTk3YTFhMGQ2ZmMzOWM5ZWM1MmYx
NDIxNzA2MDg1NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCkBAIC0xMTUsMjAgKzExNSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZQogdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZv
KTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkp
CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSks
IGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5h
ZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUp
OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4
IDUyYjZiMDY0MzZmOGQwYWEzZTVkNDkxYjNmYmY0ZGY1ZThjNDBiZGUuLjRlMzY2Y2RmNTUxZjE2
MTYwZjZkMWM3NjhlYjQxNDU5OWE3YzRjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29s
IEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVy
V29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMWVjYzQ0YjdlMTRmNTZkZmRiNjFmOTdj
MTcwNzgzZDRjZmNhZGE0Yy4uMTFhYzljZjViNWM3YTdmZTY5NmI5NjNiNzcxOWQyNWEzY2FhN2I3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTQ2LDIwICsxNDYs
MjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8p
OworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAg
ICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyks
IGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5hbWVk
Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlKTsKIH0KIAogQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0Fj
dGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IGYwNWRjZmM1ZDhjZTI3NzJlM2VhMGZlMWI1ZGZkMzRh
NmZiZTA5N2YuLmExOWRiYzY2Y2VjZTRjNGU4YzUzZGZhMjRkYWY3NjQ1ODcwOGI1NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1l
ZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBj
bGFzcyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVy
V29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCBmMzdm
NjY3YTIyMGJjYTBmZGM1NmQxZjBhYTYzYWU4NTg5ZTU4ZTFlLi4yMjZiMzQ0MzlmZTY2ZmU1ODMw
YWUyNzM1ZmYyM2Y5NDFlNWVjNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMTMsMjAgKzExMywyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVycwogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52
YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRl
c3ROb2RlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xh
dGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0
Tm9kZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwog
fQogCiBFdmVudFRhcmdldCogVjhUZXN0Tm9kZTo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCmluZGV4IGY4YzlmOTYzNjNhMGYwMTg4YmVmNTgwYjk2
YWUyZjM0MTYwZWE3NDguLjk3ODYwMzc2MzA1OThmMDZiN2Y3ZjY3NGVkMzAwMzI4YzVhY2FjMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBW
OFRlc3ROb2RlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRM
aWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4
dCk7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2
ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBz
dGF0aWMgVGVzdE5vZGUqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKaW5kZXggODBhZTU5OTQ4ZjczZGQzMzEyNGNiYmQzMDVjNjA0MjVlOTQ4
MjNlYy4uMGE0Y2MzMzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIwYmYyY2QxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKQEAgLTMwNjIsMzEgKzMwNjIsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAogICAg
IC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQg
dm9pZE1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9
IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhB
cmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6
U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJn
cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0
aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhB
cmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdsb25nTWV0aG9kV2l0
aEFyZ3MnCiAgICAgY29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9u
Z01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkg
fTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFy
Z3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01ldGhvZFdpdGhBcmdzU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MsIGxv
bmdNZXRob2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJsb25nTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqVjhJbnRlcm5hbDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnb2JqTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhB
cmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0
aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6
OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBvYmpNZXRob2RXaXRoQXJnc0FyZ3Zbb2JqTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
VGVzdE9iajo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9iak1ldGhv
ZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdp
dGhBcmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQg
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VB
cmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21l
dGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPjo6aW5mbykgfTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVy
ZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBt
ZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNr
LCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAg
IC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Mn
CiAgICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0g
MjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
QXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxk
VHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8p
IH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+KCkpKTsKQEAgLTMxMDQsNDMgKzMxMDQsNDMgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2
ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24n
CiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdB
cnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5n
QXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpT
aWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5j
dGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5
RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2RvbVN0cmlu
Z0xpc3RGdW5jdGlvbicKICAgICBjb25zdCBpbnQgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYyA9
IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1
bmN0aW9uQXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5mbywgd29y
bGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmlu
Z0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6Omlu
Zm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0RnVuY3Rp
b25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlzdEZ1bmN0
aW9uQXJnYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rpb25NZXRo
b2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJl
KSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25zdCBpbnQg
Y29udmVydDFBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBj
b252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhhOjppbmZvKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0MUFyZ3YpOwogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnY29udmVydDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6Omlu
Zm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBj
b252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWdu
YXR1cmU+IGNvbnZlcnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZl
cnQyQXJnYywgY29udmVydDJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgiY29udmVydDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRl
cm5hbDo6Y29udmVydDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDJTaWdu
YXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ0JwogICAgIGNvbnN0
IGludCBjb252ZXJ0NEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDRBcmd2W2NvbnZlcnQ0QXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGQ6Omlu
Zm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJndik7CiAg
ICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdjb252ZXJ0NScKICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0gMTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
ZTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhlOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
Y29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjpjb252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0
NVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFyaWFkaWNOb2RlTWV0
aG9kJwogICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0gMjsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3Zhcmlh
ZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJn
dlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbyksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2
ODo6U2lnbmF0dXJlPiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJl
OjpOZXcoZGVzYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1l
dGhvZCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJp
YWRpY05vZGVNZXRob2RNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2Rl
TWV0aG9kU2lnbmF0dXJlKSk7CiAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3Vy
ZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RI
KFY4VGVzdE9iakNvbnN0cyksIGlzb2xhdGUpOwpAQCAtMzE1MywyMCArMzE1MywyMCBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9i
alRlbXBsYXRlKHY4OjpQZXJzaQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQo
JmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5l
bmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRl
KCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFk
ZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0KIAogdm9pZCBW
OFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGluc3RhbmNlLCBUZXN0T2JqKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApp
bmRleCBlZDUyOTZhZGVjMzEzY2ZmNWNmNDgxMTA4MTM4MzcwNDUxNTY3MjhjLi5hZmRmNzY3ZmJl
YmNmZTM1N2ZlM2U2ZDFmOTNjNDgwNzFiMmQ5MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T2JqKiB0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTUxMzU5MTFlNjc0M2U3MDA3ZDU2NWRkNDJi
Y2ZmNWVlNzExM2RmYi4uMGQ4MDU5OWJkOWQzOTRmZGEwMDgzZjgxZjkxZWMzZGNmYjRkMzI1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTY3
LDIwICsxNjcsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Rl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0
YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9
CiAKLWJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCA1NTc2YTFlNmMxYThi
NTlkODkxMzcyZmVkYjEwZDYxMDgwOTQ5NjhlLi5hZTUyMTAxMmQ4OWNiN2Y5ZWMwZDViMDI0Yzlk
NWFlZjEwZGU3NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
RGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdl
dEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUpOwogICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA4ZTVjN2M0NWZk
OTVkY2Q1NTA3Yzk1NWFlYmM3YmI2N2NhMDY3N2IyLi43MGRmY2E3YjI5YmJkNjNiYzU1M2IyMzg2
MzViZGYxMTE3MmE0NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzMyLDIwICszMzIsMjAgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWUKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7
CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAg
ICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
LSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAg
ICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0
YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9
CiAKLWJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5oCmluZGV4IDBkNGU1OWVmYmZkM2M1NGFlZjgzODM1ODg3OTA0ODc2Zjc5ODI2
ZmYuLjBhNWZhM2YyMjQzNWI2OWE0MDdiNzNjOTk3MWU3YjUzNmUxODEwMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0
RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlw
ZSk7CiAgICAgc3RhdGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
Y3BwCmluZGV4IDFhMmEyODY5NmU4ODdkN2QxMDZiZjc2MjY1NGQ3YTUyOTlmYjIzMWYuLmU2Nzdl
YmM5NTgxYzBiM2Q1YzMyZTk0ODBhY2Y1ODczZmY5NTYwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNw
cApAQCAtNTUxLDI1ICs1NTEsMjUgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQg
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VB
cmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4c2VxdWVuY2U8U2VyaWFsaXplZFNjcmlwdFZhbHVlPjo6aW5mbywgd29ybGRUeXBlKSB9Owor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT46OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNl
cXVlbmNlQXJnQXJnYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1
ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VB
cmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ251bGxhYmxlQXJyYXlB
cmcnCiAgICAgY29uc3QgaW50IG51bGxhYmxlQXJyYXlBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBudWxsYWJsZUFycmF5QXJnQXJndltudWxsYWJsZUFy
cmF5QXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFy
Z0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhET01TdHJpbmdbXTo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG51
bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbnVsbGFi
bGVBcnJheUFyZ0FyZ2MsIG51bGxhYmxlQXJyYXlBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgibnVsbGFibGVBcnJheUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om51bGxhYmxlQXJyYXlBcmdNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSkpOwogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicKICAgICBjb25zdCBp
bnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25B
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9u
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OERPTVN0cmluZ1tdOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3Ry
aW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJp
bmdBcnJheUZ1bmN0aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlG
dW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9u
U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0
aW9uMicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3Zb
c3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFy
Z3Zbc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSA9IHY4OjpT
aWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MsIHN0cmluZ0FycmF5
RnVuY3Rpb24yQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0
cmluZ0FycmF5RnVuY3Rpb24yIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbjJNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUpKTsKIApAQCAtNTgxLDIwICs1
ODEsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENv
bmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdv
cmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4g
dGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQorYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3
b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKaW5kZXggYzUy
ZTIwMzNjZjBkNTcxZDRlMWJmOTRhZjA1NjhhZDdkOGMyY2RmZC4uMTRkYjFlNTVkOTgyODdhMGU3
ZGNlMDc0MmMzYTE4YzU1YWI3Mzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0VHlwZWRlZnMgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdFR5cGVkZWZzKiB0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKaW5kZXggYzk3YjU5
M2I4NDYzM2RkM2YzNDExMGJmMTJiNjY3MDRmYTg1YTJhNC4uNmJjODAzYTQxN2RlYTA4ZmNkZjg4
MzVkNWJiZTI1OWZiMzMzZTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqCiB7CiAgICAgQVNTRVJUKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogICAgIC8vIFRoZSBsaWZldGltZSBpcyBvZiBuZXdU
ZW1wbGF0ZSBpcyBkZWxlZ2F0ZWQgdG8gdGhlIFRlbXBsYXRlTWFwIHRodXMgdGhpcyB3b24ndCBi
ZSBsZWFrZWQuCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG5ld1Rl
bXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0
ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpKTsKLSAgICBkYXRhLT5yYXdUZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgY29uZmlndXJlVGVtcGxhdGUobmV3VGVtcGxhdGUpKTsK
KyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgY29uZmlndXJlVGVtcGxhdGUo
bmV3VGVtcGxhdGUpKTsKICAgICByZXR1cm4gbmV3VGVtcGxhdGU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCBkNWJhMjEwMGE0MjNi
MTEyMmI5ZDdiNTljNTY1NzU2YWVhODE1YmI5Li5hNGRkYzgzMDg2ODFmN2ZhNjM2MTJiMmZmODA1
Y2NjNTRiMTE5Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdD
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRy
b2xsZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQodmFs
dWUtPklzT2JqZWN0KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwogICAgICAgICBB
U1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKLSAgICAgICAgQVNT
RVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBNYWluV29ybGQpIHx8
IFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBJc29sYXRlZFdvcmxkKSk7
CisgICAgICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSkp
OwogICAgICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFwcGVyKTsKICAgICAg
ICAgLy8gQSBtaW5vciBET00gR0MgY2FuIGhhbmRsZSBvbmx5IG5vZGUgd3JhcHBlcnMgaW4gdGhl
IG1haW4gd29ybGQuCiAgICAgICAgIC8vIE5vdGUgdGhhdCBub2RlLT53cmFwcGVyKCkuSXNFbXB0
eSgpIHJldHVybnMgdHJ1ZSBmb3Igbm9kZXMgdGhhdApAQCAtMzc2LDcgKzM3Niw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBpZiAoY2xhc3NJZCA9PSB2OERPTU5vZGVDbGFzc0lkKSB7CiAgICAgICAg
ICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKLSAgICAgICAgICAgIEFTU0VSVChWOE5vZGU6
Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgTWFpbldvcmxkKSB8fCBWOE5vZGU6Okhh
c0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgSXNvbGF0ZWRXb3JsZCkpOworICAgICAgICAg
ICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNJbmRlcGVuZGVudChtX2lzb2xhdGUpKTsKIAogICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PE5vZGUqPihvYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRleCA1OWEy
M2FmZDk3ZmRhNDlkODY5ZjRjYWM2OTBkMzYyM2U0YTY2YWZkLi4yZmZjMTk0MmJkNDZhZjM0OWI2
ZjIyNjY4OTU5Y2IzOWZiNDcxMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTA0LDEwICsxMDQsOCBAQCB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmluZ1RlbXBsYXRlKCkK
IHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAg
IGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzRm9yTWFpbldvcmxkLCAicmF3VGVtcGxhdGVz
Rm9yTWFpbldvcmxkIik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXNGb3JOb25N
YWluV29ybGQsICJyYXdUZW1wbGF0ZXNGb3JOb25NYWluV29ybGQiKTsKLSAgICBpbmZvLmFkZE1l
bWJlcihtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZCwgInRlbXBsYXRlc0Zvck1haW5Xb3JsZCIpOwot
ICAgIGluZm8uYWRkTWVtYmVyKG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkLCAidGVtcGxhdGVz
Rm9yTm9uTWFpbldvcmxkIik7CisgICAgaW5mby5hZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXMsICJy
YXdUZW1wbGF0ZXMiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3RlbXBsYXRlcywgInRlbXBsYXRl
cyIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUsICJzdHJpbmdDYWNoZSIpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1faW50ZWdlckNhY2hlLCAiaW50ZWdlckNhY2hlIik7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9kb21EYXRhTGlzdCwgImRvbURhdGFMaXN0Iik7CkBAIC0xMjQsNDIg
KzEyMiwzMiBAQCB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAgIGluZm8uaWdub3JlTWVtYmVy
KG1fYXV4aWxpYXJ5Q29udGV4dCk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25D
YWxsYmFjayBjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQordjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFw
cGVyV29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25DYWxsYmFj
ayBjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQogewotICAgIEFTU0VSVChjdXJyZW50V29y
bGRUeXBlICE9IEdldEZyb21Db250ZXh0KTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlOwotICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZXMg
PSB0ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKTsKLSAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQocHJpdmF0ZVBvaW50ZXIpOwotICAgIGlmIChyZXN1
bHQgIT0gdGVtcGxhdGVzLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBtX3RlbXBsYXRlcy5maW5kKHByaXZhdGVQb2ludGVyKTsKKyAg
ICBpZiAocmVzdWx0ICE9IG1fdGVtcGxhdGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbmV3UHJp
dmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
bV9pc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KGNhbGxiYWNrLCBkYXRhLCBzaWdu
YXR1cmUsIGxlbmd0aCkpOwotICAgIHRlbXBsYXRlcy5hZGQocHJpdmF0ZVBvaW50ZXIsIG5ld1By
aXZhdGVUZW1wbGF0ZSk7CisgICAgbV90ZW1wbGF0ZXMuYWRkKHByaXZhdGVQb2ludGVyLCBuZXdQ
cml2YXRlVGVtcGxhdGUpOwogICAgIHJldHVybiBuZXdQcml2YXRlVGVtcGxhdGU7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpyYXdU
ZW1wbGF0ZShXcmFwcGVyVHlwZUluZm8qIGluZm8sIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xh
dGVEYXRhOjpyYXdUZW1wbGF0ZShXcmFwcGVyVHlwZUluZm8qIGluZm8pCiB7Ci0gICAgQVNTRVJU
KGN1cnJlbnRXb3JsZFR5cGUgIT0gR2V0RnJvbUNvbnRleHQpOwotICAgIFRlbXBsYXRlTWFwJiB0
ZW1wbGF0ZXMgPSByYXdUZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKTsKLSAgICBUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQoaW5mbyk7Ci0gICAgaWYgKHJl
c3VsdCAhPSB0ZW1wbGF0ZXMuZW5kKCkpCisgICAgVGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IG1fcmF3VGVtcGxhdGVzLmZpbmQoaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBtX3Jhd1Rl
bXBsYXRlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUobV9pc29sYXRlKTsKLSAgICB0ZW1w
bGF0ZXMuYWRkKGluZm8sIHRlbXBsKTsKKyAgICBtX3Jhd1RlbXBsYXRlcy5hZGQoaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFBlcklzb2xhdGVEYXRhOjpoYXNJ
bnN0YW5jZShXcmFwcGVyVHlwZUluZm8qIGluZm8sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQorYm9vbCBWOFBlcklzb2xhdGVE
YXRhOjpoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qIGluZm8sIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKIHsKLSAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBHZXRGcm9tQ29udGV4
dCkKLSAgICAgICAgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShtX2lzb2xhdGUpOwotICAg
IFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZXMgPSByYXdUZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBl
KTsKLSAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQoaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCA9PSB0ZW1wbGF0ZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gcmVzdWx0LT52YWx1ZS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAg
IHJldHVybiByYXdUZW1wbGF0ZShpbmZvKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNv
bGF0ZURhdGEuaAppbmRleCA4ZGRiMDhjODBlZjMwMmMwNGVjOTcwNDlhYzY3YTY1MWQ4MDU3OGE2
Li5jM2MwMmIwMTNlOWE0Zjg1OTM5YzY2NzViOTVhNTE4NzY0Y2YxNGFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC02NywxOSArNjcsOCBA
QCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiA+IFRlbXBsYXRlTWFwOwogCi0gICAgVGVtcGxhdGVNYXAmIHJh
d1RlbXBsYXRlTWFwKFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQotICAgIHsKLSAgICAgICAg
aWYgKHdvcmxkVHlwZSA9PSBNYWluV29ybGQpCi0gICAgICAgICAgICByZXR1cm4gbV9yYXdUZW1w
bGF0ZXNGb3JNYWluV29ybGQ7Ci0gICAgICAgIHJldHVybiBtX3Jhd1RlbXBsYXRlc0Zvck5vbk1h
aW5Xb3JsZDsKLSAgICB9Ci0KLSAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCi0gICAgewotICAgICAgICBpZiAod29ybGRUeXBlID09IE1haW5X
b3JsZCkKLSAgICAgICAgICAgIHJldHVybiBtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKLSAgICAg
ICAgcmV0dXJuIG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOwotICAgIH0KKyAgICBUZW1wbGF0
ZU1hcCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsgfQorICAgIFRl
bXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVzOyB9CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0b1N0cmluZ1RlbXBsYXRlKCk7CiAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZlbnRMaXN0ZW5lclRv
U3RyaW5nVGVtcGxhdGUoKQpAQCAtMTQxLDkgKzEzMCw5IEBAIHB1YmxpYzoKIAogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldv
cmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2ssIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+LCBpbnQg
bGVuZ3RoID0gMCk7CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cmF3VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJhd1RlbXBsYXRlKFdyYXBwZXJUeXBl
SW5mbyopOwogCi0gICAgYm9vbCBoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIGJvb2wgaGFzSW5zdGFuY2Uo
V3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBWOFBlcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CkBAIC0xNTEsMTAgKzE0
MCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1
Y3Rvck9mVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogCiAgICAgdjg6Oklzb2xhdGUq
IG1faXNvbGF0ZTsKLSAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZDsK
LSAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsKLSAgICBUZW1w
bGF0ZU1hcCBtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKLSAgICBUZW1wbGF0ZU1hcCBtX3RlbXBs
YXRlc0Zvck5vbk1haW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKKyAg
ICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRlczsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBtX3RvU3RyaW5nVGVtcGxhdGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOwog
ICAgIE93blB0cjxTdHJpbmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggNjVmYTZmYzZlYTU5MzgzYmY1MThj
Y2IxNTFjYjFhYjMwZWExNGQyMy4uNDU2ZTAwMjAxOWZmYWI1NDJmZGViNWZjYWU3Njg4Zjc5NTBh
YTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgK
QEAgLTUyLDkgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGVudW0gV3JhcHBlcldv
cmxkVHlwZSB7CiAgICAgICAgIE1haW5Xb3JsZCwKICAgICAgICAgSXNvbGF0ZWRXb3JsZCwKLSAg
ICAgICAgV29ya2VyV29ybGQsCi0gICAgICAgIC8vIFdoYXRldmVyIHdvcmxkIHR5cGUgdGhlIGN1
cnJlbnQgY29udGV4dCBoYXMuIEZJWE1FOiByZW1vdmUgdGhpcy4KLSAgICAgICAgR2V0RnJvbUNv
bnRleHQKKyAgICAgICAgV29ya2VyV29ybGQKICAgICB9OwogCiAgICAgdHlwZWRlZiB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9uKSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGNmZWQ3MmM2ZDIw
MzkxODUyNjMzNjI3YTlkYjA1ZDQ5NzdhOTkxNDkuLjFlZmQ4NWFjOGY1YWZkNWVhYzA0OWYyZjBi
ODFjNjRiNThlZGViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVV
bmlxdWVLZXkgPSAicmVsb2FkUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpOwot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUg
PSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0
ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgp
LCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29y
bGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRo
b2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1w
bGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2Nh
dGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmICho
b2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsK
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRp
bmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJy
b3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtl
eSA9ICJyZWxvYWRTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShj
dXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJl
bG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEt
PnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOworICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUg
PSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRl
VW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykp
KTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0K
ICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRl
ckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJp
dmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gInJlcGxhY2VQcml2YXRlVGVtcGxhdGUiOwogICAgIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xh
dGUoKSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1
ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2
YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwg
VjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25h
dHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOwogCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNl
SW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50
V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE3OCw3ICsxNzgs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJD
dXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRp
b246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwg
RG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciog
c2hhcmVkVGVtcGxhdGVVbmlxdWVLZXkgPSAicmVwbGFjZVNoYXJlZFRlbXBsYXRlIjsKLSAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0
ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246
OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhk
YXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsK
KyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBs
YXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVU
ZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9j
YXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKICAgICAgICAgcmV0
dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJp
dmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVu
aXF1ZUtleSA9ICJhc3NpZ25Qcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29s
YXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRl
VGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZh
dGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVu
ZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRp
b246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShj
dXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjph
c3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRh
LT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwog
ICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0yMDIsNyArMjAyLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUo
aG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNl
Y3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0
ZVVuaXF1ZUtleSA9ICJhc3NpZ25TaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVU
ZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9j
YXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6
TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBl
KSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVk
VGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJl
ZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5k
ZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlv
bjo6aW5mbykpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigp
OwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0
b20uY3BwCmluZGV4IGY1NTJmNzA4MDZhNjAzOTVlNGVjYmQ2YzVlODY4NGUyNzg5M2YxYjIuLjkw
NGFiMzExNzY2YjVkMTQxN2I5NWE4MTUzMzljNGNiZDU4ODViMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZUxpc3Q6Om5hbWVkUHJv
cGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKIAogdm9pZCogVjhOb2RlTGlz
dDo6b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgQVNTRVJUKFY4Tm9kZUxp
c3Q6Okhhc0luc3RhbmNlKHdyYXBwZXIsIGlzb2xhdGUsIE1haW5Xb3JsZCkgfHwgVjhOb2RlTGlz
dDo6SGFzSW5zdGFuY2Uod3JhcHBlciwgaXNvbGF0ZSwgSXNvbGF0ZWRXb3JsZCkpOworICAgIEFT
U0VSVChWOE5vZGVMaXN0OjpIYXNJbnN0YW5jZSh3cmFwcGVyLCBpc29sYXRlKSk7CiAgICAgTm9k
ZUxpc3QqIGltcGwgPSBzdGF0aWNfY2FzdDxOb2RlTGlzdCo+KG9iamVjdCk7CiAgICAgaWYgKCFp
bXBsLT5pc0xpdmVOb2RlTGlzdCgpKQogICAgICAgICByZXR1cm4gb2JqZWN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>