<?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>162021</bug_id>
          
          <creation_ts>2016-09-15 09:50:30 -0700</creation_ts>
          <short_desc>REGRESSION(r205931): Tests for this change fail on 32-bit JSC bots (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2016-09-15 09:53:24 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161895</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1230036</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 09:50:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/205931 broke the build:
Tests for this change fail on 32-bit JSC bots (Requested by ryanhaddad on #webkit).

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

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>1230040</commentid>
    <comment_count>2</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-09-15 09:52:31 -0700</bug_when>
    <thetext>*** Bug 162016 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230042</commentid>
    <comment_count>3</comment_count>
      <attachid>288960</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 09:53:20 -0700</bug_when>
    <thetext>Comment on attachment 288960
ROLLOUT of r205931

Clearing flags on attachment: 288960

Committed r205974: &lt;http://trac.webkit.org/changeset/205974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230043</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 09:53:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288960</attachid>
            <date>2016-09-15 09:51:07 -0700</date>
            <delta_ts>2016-09-15 09:53:20 -0700</delta_ts>
            <desc>ROLLOUT of r205931</desc>
            <filename>bug-162021-20160915094829.patch</filename>
            <type>text/plain</type>
            <size>74166</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZmFiMjgyZDIxZmMwMzEzOWI1OTIxZjVmZDI5YTUxNjI4NDRkNTUzLi5iYzUyNzYzMmIzNmFmM2Ew
ODNlODA4OTk2OWVkZWNmNGUyNzljN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNi0wOS0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTkzMS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjAyMQorCisgICAg
ICAgIFRlc3RzIGZvciB0aGlzIGNoYW5nZSBmYWlsIG9uIDMyLWJpdCBKU0MgYm90cyAoUmVxdWVz
dGVkIGJ5CisgICAgICAgIHJ5YW5oYWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0
ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbSlNDXSBNYWtlIHRoZSByb3VuZGluZy1yZWxhdGVk
IG5vZGVzIHN1cHBvcnQgYW55IHR5cGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE4OTUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjA1OTMxCisKIDIwMTYtMDktMTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0MjYyOiBTaG91bGQgYmUgYSBTeW50YXhFcnJvciBm
b3IgZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgcGFy
YW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDIxOGQ1ZDk0MjExZWExYjA0ZjU3NzkxNTMw
MDQ5ZDhiOTQwOWQ5NjYuLmU3YWYwNzE3YWRmMmFkNzhjZmQ3MjZkNDk4ZjdkMTAxMDM2NTExMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTkwNSwyMyArOTA1LDE5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgY2FzZSBBcml0aENlaWw6CiAgICAgY2FzZSBBcml0aFRydW5jOiB7CiAg
ICAgICAgIEpTVmFsdWUgb3BlcmFuZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
Ci0gICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJhbmQudG9OdW1iZXJG
cm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgaWYgKG9wZXJhbmQgJiYgb3BlcmFuZC5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBkb3VibGUgcm91bmRlZFZhbHVlID0gMDsKICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IEFyaXRoUm91bmQpCi0gICAgICAgICAgICAgICAgcm91bmRlZFZh
bHVlID0ganNSb3VuZCgqbnVtYmVyKTsKKyAgICAgICAgICAgICAgICByb3VuZGVkVmFsdWUgPSBq
c1JvdW5kKG9wZXJhbmQuYXNOdW1iZXIoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5v
cCgpID09IEFyaXRoRmxvb3IpCi0gICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gZmxvb3Io
Km51bWJlcik7CisgICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gZmxvb3Iob3BlcmFuZC5h
c051bWJlcigpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhDZWls
KQotICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGNlaWwoKm51bWJlcik7CisgICAgICAg
ICAgICAgICAgcm91bmRlZFZhbHVlID0gY2VpbChvcGVyYW5kLmFzTnVtYmVyKCkpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQXJpdGhU
cnVuYyk7Ci0gICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gdHJ1bmMoKm51bWJlcik7Cisg
ICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gdHJ1bmMob3BlcmFuZC5hc051bWJlcigpKTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNO
dW1iZXIocm91bmRlZFZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAocHJvZHVjZXNJbnRlZ2VyKG5vZGUtPmFyaXRoUm91bmRpbmdN
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaW50MzJfdCByb3VuZGVkVmFsdWVBc0ludDMyID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4ocm91bmRlZFZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAo
cm91bmRlZFZhbHVlQXNJbnQzMiA9PSByb3VuZGVkVmFsdWUpIHsKQEAgLTk0MCwxNSArOTM2LDEw
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBVc2UpIHsKLSAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9k
ZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUodHlwZU9mRG91YmxlUm91bmRpbmcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRnVsbE51bWJlcik7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVJv
dW5kaW5nKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMGIwZDJkZGI3NjNiYTIxYjEzMTZmM2U5YmI2ODBhNGU3
MTM3NzlmMS4uODBhMWMyZTk5NzVmN2ZiNjc2OWIxMTBhMmEyYzMyNTgzMTNkZDAwOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0
NTAsMjIgKzI0NTAsMjUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwg
T3BJbmZvKG1fY29uc3RhbnROYU4pKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAgICAgTm9kZSogb3BlcmFuZCA9IGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpOwotICAgICAg
ICBOb2RlVHlwZSBvcDsKLSAgICAgICAgaWYgKGludHJpbnNpYyA9PSBSb3VuZEludHJpbnNpYykK
LSAgICAgICAgICAgIG9wID0gQXJpdGhSb3VuZDsKLSAgICAgICAgZWxzZSBpZiAoaW50cmluc2lj
ID09IEZsb29ySW50cmluc2ljKQotICAgICAgICAgICAgb3AgPSBBcml0aEZsb29yOwotICAgICAg
ICBlbHNlIGlmIChpbnRyaW5zaWMgPT0gQ2VpbEludHJpbnNpYykKLSAgICAgICAgICAgIG9wID0g
QXJpdGhDZWlsOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChpbnRyaW5zaWMg
PT0gVHJ1bmNJbnRyaW5zaWMpOwotICAgICAgICAgICAgb3AgPSBBcml0aFRydW5jOworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMikgeworICAgICAgICAgICAgaW5z
ZXJ0Q2hlY2tzKCk7CisgICAgICAgICAgICBOb2RlKiBvcGVyYW5kID0gZ2V0KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBOb2RlVHlw
ZSBvcDsKKyAgICAgICAgICAgIGlmIChpbnRyaW5zaWMgPT0gUm91bmRJbnRyaW5zaWMpCisgICAg
ICAgICAgICAgICAgb3AgPSBBcml0aFJvdW5kOworICAgICAgICAgICAgZWxzZSBpZiAoaW50cmlu
c2ljID09IEZsb29ySW50cmluc2ljKQorICAgICAgICAgICAgICAgIG9wID0gQXJpdGhGbG9vcjsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGludHJpbnNpYyA9PSBDZWlsSW50cmluc2ljKQorICAgICAg
ICAgICAgICAgIG9wID0gQXJpdGhDZWlsOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGludHJpbnNpYyA9PSBUcnVuY0ludHJpbnNpYyk7CisgICAgICAgICAgICAg
ICAgb3AgPSBBcml0aFRydW5jOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTm9kZSogcm91
bmROb2RlID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIG9w
ZXJhbmQpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
cm91bmROb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAg
IE5vZGUqIHJvdW5kTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRp
Y3Rpb24pLCBvcGVyYW5kKTsKLSAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwgcm91bmROb2RlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgY2FzZSBJTXVsSW50cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAppbmRleCAwNGYzZDEyNzM1MjJlYzUwYTg0ZDljZDYxNWQ0MDFhNDVmYzY1
MzAzLi41NWRiMDk0YzAzMTNhZjVmZmE2ZGIyMTE5N2U3NmI1MTMzMDRiN2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMzU4LDEyICszNTgsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICBjYXNlIEFy
aXRoQ2VpbDoKICAgICBjYXNlIEFyaXRoVHJ1bmM6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKQotICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShu
b2RlLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG5vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKSk7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVhZChXb3JsZCk7Ci0gICAgICAgICAgICB3
cml0ZShIZWFwKTsKLSAgICAgICAgfQorICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4obm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpKTsKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY2FzZSBDaGVja0NlbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA1MGYzNmM3ZjQ5ZDBiM2E0NWY3MjQxYWZkY2QxZTY1
NDA1ZTczMzQ0Li4yN2EwZjMwZTY5ZTYxZTJkZTYwNjNhMTFiNzI1ODcyMmM3ZWM5YmE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTM3NiwyOCAr
Mzc2LDI0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICAgICAgY2Fz
ZSBBcml0aENlaWw6CiAgICAgICAgIGNhc2UgQXJpdGhUcnVuYzogewotICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMk9yQm9vbGVhbigpICYmIG1fZ3Jh
cGgucm91bmRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBhc3MpKSB7CisgICAgICAg
ICAgICBpZiAobV9ncmFwaC51bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSwgRml4
dXBQYXNzKSkgewogICAgICAgICAgICAgICAgIGZpeEludE9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIGluc2VydENoZWNrPEludDMyVXNlPihtX2luZGV4SW5C
bG9jaywgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkp
IHsKLSAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwog
Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbihub2RlLT5n
ZXRIZWFwUHJlZGljdGlvbigpKSAmJiBtX2dyYXBoLnJvdW5kU2hvdWxkU3BlY3VsYXRlSW50MzIo
bm9kZSwgRml4dXBQYXNzKSkgewotICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQo
Tm9kZVJlc3VsdEludDMyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdu
b3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0QXJpdGhSb3VuZGluZ01vZGUoQXJpdGg6OlJvdW5kaW5nTW9kZTo6
SW50MzIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRBcml0aFJvdW5kaW5nTW9kZShBcml0aDo6Um91bmRpbmdNb2RlOjpJbnQzMldp
dGhOZWdhdGl2ZVplcm9DaGVjayk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRBcml0aFJvdW5kaW5nTW9kZShBcml0aDo6Um91bmRpbmdNb2Rl
OjpEb3VibGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBp
ZiAoaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkp
ICYmIG1fZ3JhcGgucm91bmRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBhc3MpKSB7
CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQzMik7CisgICAg
ICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
Tm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aFJvdW5kaW5n
TW9kZShBcml0aDo6Um91bmRpbmdNb2RlOjpJbnQzMik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aFJvdW5kaW5nTW9kZShBcml0aDo6Um91
bmRpbmdNb2RlOjpJbnQzMldpdGhOZWdhdGl2ZVplcm9DaGVjayk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aFJvdW5kaW5nTW9kZShBcml0aDo6Um91bmRp
bmdNb2RlOjpEb3VibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGZmZTQx
ZTc0YmI3ZjIyZDc3MzM2YTdiNjlkNWRhMWVhZTExZTE0MDguLmRjYTFjYTVmMWI1ZTUzN2JkYTA0
NTAwNjM5ZjI0OGM1YTBiODM5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTE1NSwxMCArMTU1LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhBcml0aEZSb3VuZCwgTm9kZVJlc3VsdERvdWJsZSB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhBcml0aFBvdywgTm9kZVJlc3VsdERvdWJsZSkgXAogICAgIG1h
Y3JvKEFyaXRoUmFuZG9tLCBOb2RlUmVzdWx0RG91YmxlIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAot
ICAgIG1hY3JvKEFyaXRoUm91bmQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCi0gICAgbWFjcm8oQXJpdGhGbG9vciwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKLSAgICBtYWNybyhBcml0aENlaWwsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQXJpdGhUcnVuYywgTm9kZVJlc3VsdE51bWJlciB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhBcml0aFJvdW5kLCBOb2RlUmVzdWx0TnVtYmVy
KSBcCisgICAgbWFjcm8oQXJpdGhGbG9vciwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIG1hY3Jv
KEFyaXRoQ2VpbCwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIG1hY3JvKEFyaXRoVHJ1bmMsIE5v
ZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aFNxcnQsIE5vZGVSZXN1bHREb3VibGUg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJpdGhTaW4sIE5vZGVSZXN1bHREb3Vi
bGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJpdGhDb3MsIE5vZGVSZXN1bHRE
b3VibGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCBjZTU0NmViY2I4ODM1ZjQ3ODQ0NjNiNTA4NGQ4MDZiMDgw
MjMzNzRhLi41NjJjOGE0ZDAwMWE2NDI1YTdlYmE5NmQ0MWM3NDUyMjg0MmYyMzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ0Miw1OCArNDQy
LDYgQEAgZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhUYW4oRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AKICAgICByZXR1cm4gdGFuKGEpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoUm91bmQoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCi17Ci0gICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLQotICAgIEpTVmFs
dWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKLSAgICBkb3Vi
bGUgdmFsdWVPZkFyZ3VtZW50ID0gYXJndW1lbnQudG9OdW1iZXIoZXhlYyk7Ci0gICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoanNSb3Vu
ZCh2YWx1ZU9mQXJndW1lbnQpKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhGbG9vcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRBcmd1bWVudCkKLXsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOwotCi0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQXJndW1lbnQpOwotICAgIGRvdWJsZSB2YWx1ZU9mQXJndW1lbnQgPSBhcmd1bWVu
dC50b051bWJlcihleGVjKTsKLSAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihmbG9vcih2YWx1ZU9mQXJndW1lbnQpKSk7Ci19Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDZWlsKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQotewotICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0KLSAgICBKU1ZhbHVl
IGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7Ci0gICAgZG91Ymxl
IHZhbHVlT2ZBcmd1bWVudCA9IGFyZ3VtZW50LnRvTnVtYmVyKGV4ZWMpOwotICAgIGlmIChVTkxJ
S0VMWShzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNlaWwodmFs
dWVPZkFyZ3VtZW50KSkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoVHJ1bmMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJn
dW1lbnQpCi17Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKLQotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEFyZ3VtZW50KTsKLSAgICBkb3VibGUgdHJ1bmNhdGVkVmFsdWVPZkFyZ3VtZW50ID0gYXJn
dW1lbnQudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodHJ1bmNhdGVkVmFsdWVPZkFy
Z3VtZW50KSk7Ci19Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5
VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCA2YWI3Njc1N2U4ODEyZTI3OWRmNTcwOTAxNmZhM2YyYzhiMjNjMjJhLi44
NmUxOTFlNjNlMmQzZjQ2ZGY3MTA1YjQwYTg4MGFhZWJiOGQ3MDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDEwICs2MSw2
IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoRlJvdW5kKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aExvZyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5U
RVJOQUw7CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFNpbihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBkb3VibGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aFNxcnQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSkgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Bcml0aFJvdW5kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoRmxvb3IoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDZWlsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
VHJ1bmMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZh
bENlbGwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggM2NkNTJiOTBjYWE3NzY1ZWI0ZDIyYzI2MTU1
MjBlNmJlMmVlMjZhYy4uOTM0NGY2MjVhMGZkODdiOTQwMzUxZGVkNzY3NmIxNDNkNzRmMTIwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTMxOCw2ICszMTgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBBcml0aFJvdW5kOgor
ICAgICAgICBjYXNlIEFyaXRoRmxvb3I6CisgICAgICAgIGNhc2UgQXJpdGhDZWlsOgorICAgICAg
ICBjYXNlIEFyaXRoVHJ1bmM6IHsKKyAgICAgICAgICAgIGlmIChpc0ludDMyT3JCb29sZWFuU3Bl
Y3VsYXRpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkgJiYgbV9ncmFwaC5yb3VuZFNob3Vs
ZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVEb3VibGUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEFyaXRoQWJzOiB7
CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBjaGlsZFByZWRpY3Rpb24gPSBub2RlLT5jaGls
ZDEoKS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xlYW5TcGVj
dWxhdGlvbihjaGlsZFByZWRpY3Rpb24pCkBAIC03NjUsMTggKzc3Niw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQXJpdGhSb3VuZDoK
LSAgICAgICAgY2FzZSBBcml0aEZsb29yOgotICAgICAgICBjYXNlIEFyaXRoQ2VpbDoKLSAgICAg
ICAgY2FzZSBBcml0aFRydW5jOiB7Ci0gICAgICAgICAgICBpZiAoaXNJbnQzMk9yQm9vbGVhblNw
ZWN1bGF0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgJiYgbV9ncmFwaC5yb3VuZFNob3VsZFNwZWN1bGF0ZUludDMyKG1fY3VycmVudE5vZGUs
IG1fcGFzcykpCi0gICAgICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCeXRl
Y29kZURvdWJsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGNh
c2UgQXJpdGhSYW5kb206IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0RvdWJsZVJl
YWwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NTEsNiArOTUwLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgIGNhc2UgQXJpdGhEaXY6CiAgICAgICAgIGNh
c2UgQXJpdGhNb2Q6CisgICAgICAgIGNhc2UgQXJpdGhSb3VuZDoKKyAgICAgICAgY2FzZSBBcml0
aEZsb29yOgorICAgICAgICBjYXNlIEFyaXRoQ2VpbDoKKyAgICAgICAgY2FzZSBBcml0aFRydW5j
OgogICAgICAgICBjYXNlIEFyaXRoQWJzOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAg
ICBjYXNlIFRvVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggMTZiMzY3NzNjNmE1NjA1ZjM3ZjNjN2I4OTczYTkwY2VmMjczMDc5
NS4uNmYxNzJjNzJmNDFjNjk1YTNiNTdlMGMxMWMzZWM0YzY1NzZhMmZiYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQ5MTAsMTI5
ICs0OTEwLDEwMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kZSog
bm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSog
bm9kZSkKIHsKLSAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVz
ZSkgewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CisgICAgQVNT
RVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpOwogCi0gICAgICAg
IGF1dG8gc2V0UmVzdWx0ID0gWyZdIChGUFJSZWcgcmVzdWx0RlBSKSB7Ci0gICAgICAgICAgICBp
ZiAocHJvZHVjZXNJbnRlZ2VyKG5vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJvdW5kZWRSZXN1bHRBc0ludDMyKHRoaXMpOwotICAgICAg
ICAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAgICAgICAgIEZQ
UlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsKLSAgICAgICAgICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcm91bmRlZFJlc3VsdEFzSW50MzIuZ3ByKCk7Ci0gICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihyZXN1bHRGUFIsIHJlc3VsdEdQUiwgZmFpbHVy
ZUNhc2VzLCBzY3JhdGNoRlBSLCBzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aFJv
dW5kaW5nTW9kZSgpKSk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwgZmFpbHVyZUNhc2VzKTsKKyAgICBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBGUFJSZWcgdmFsdWVG
UFIgPSB2YWx1ZS5mcHIoKTsKIAotICAgICAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBkb3VibGVSZXN1
bHQocmVzdWx0RlBSLCBub2RlKTsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAobV9qaXQuc3Vw
cG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgewotICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEFyaXRoUm91bmQ6IHsKLSAgICAgICAgICAgICAg
ICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgICAgIEZQUlJlZyByZXN1
bHRGUFIgPSByZXN1bHQuZnByKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2R1Y2VzSW50ZWdl
cihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSAmJiAhc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8o
bm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7Ci0gICAgICAgICAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFu
dCksIHJlc3VsdEZQUik7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZERvdWJsZSh2YWx1
ZUZQUiwgcmVzdWx0RlBSKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZmxvb3JEb3VibGUo
cmVzdWx0RlBSLCByZXN1bHRGUFIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1faml0LmNlaWxEb3VibGUodmFsdWVGUFIsIHJlc3VsdEZQUik7Ci0gICAg
ICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZWFsUGFydCh0aGlzKTsKLSAgICAgICAgICAg
ICAgICAgICAgRlBSUmVnIHJlYWxQYXJ0RlBSID0gcmVhbFBhcnQuZnByKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1faml0LnN1YkRvdWJsZShyZXN1bHRGUFIsIHZhbHVlRlBSLCByZWFsUGFydEZQ
Uik7Ci0KLSAgICAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0g
ICAgICAgICAgICAgICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNjcmF0Y2hGUFIpOwotCi0gICAgICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3VsZFVzZUNlaWxlZCA9IG1faml0LmJyYW5jaERv
dWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsLCByZWFsUGFydEZQUiwgc2Ny
YXRjaEZQUik7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgb25lQ29u
c3RhbnQgPSAtMS4wOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmVDb25zdGFudCksIHNjcmF0Y2hGUFIpOwotICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5hZGREb3VibGUoc2NyYXRjaEZQUiwgcmVzdWx0RlBSKTsK
LSAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXNlQ2VpbGVkLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdEZQUik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIGF1dG8gc2V0UmVzdWx0ID0g
WyZdIChGUFJSZWcgcmVzdWx0RlBSKSB7CisgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9k
ZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByb3Vu
ZGVkUmVzdWx0QXNJbnQzMih0aGlzKTsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOworICAgICAgICAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZwcigpOwor
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJvdW5kZWRSZXN1bHRBc0ludDMyLmdwcigp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKHJlc3VsdEZQUiwgcmVzdWx0
R1BSLCBmYWlsdXJlQ2FzZXMsIHNjcmF0Y2hGUFIsIHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5v
ZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG5vZGUsIGZhaWx1cmVDYXNlcyk7CiAKLSAgICAgICAg
ICAgIGNhc2UgQXJpdGhGbG9vcjogewotICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByb3Vu
ZGVkKHRoaXMpOwotICAgICAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByb3VuZGVkLmZw
cigpOwotICAgICAgICAgICAgICAgIG1faml0LmZsb29yRG91YmxlKHZhbHVlRlBSLCByZXN1bHRG
UFIpOwotICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdEZQUiwgbm9kZSk7CisgICAgfTsKIAotICAgICAgICAgICAgY2FzZSBBcml0aENlaWw6IHsK
LSAgICAgICAgICAgICAgICBGUFJUZW1wb3Jhcnkgcm91bmRlZCh0aGlzKTsKLSAgICAgICAgICAg
ICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcm91bmRlZC5mcHIoKTsKKyAgICBpZiAobV9qaXQuc3Vw
cG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKKyAgICAgICAgY2FzZSBBcml0aFJvdW5kOiB7CisgICAgICAgICAgICBGUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5m
cHIoKTsKKyAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhSb3VuZGlu
Z01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoUm91bmRpbmdN
b2RlKCkpKSB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3Rh
bnQgPSAwLjU7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5hZGREb3VibGUodmFsdWVGUFIsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAg
ICAgbV9qaXQuZmxvb3JEb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOworICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2ppdC5jZWlsRG91YmxlKHZhbHVlRlBSLCByZXN1
bHRGUFIpOwotICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBGUFJUZW1wb3Jh
cnkgcmVhbFBhcnQodGhpcyk7CisgICAgICAgICAgICAgICAgRlBSUmVnIHJlYWxQYXJ0RlBSID0g
cmVhbFBhcnQuZnByKCk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3ViRG91YmxlKHJlc3VsdEZQ
UiwgdmFsdWVGUFIsIHJlYWxQYXJ0RlBSKTsKIAotICAgICAgICAgICAgY2FzZSBBcml0aFRydW5j
OiB7Ci0gICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJvdW5kZWQodGhpcyk7Ci0gICAgICAg
ICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWQuZnByKCk7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQucm91bmRUb3dhcmRaZXJvRG91YmxlKHZhbHVlRlBSLCByZXN1bHRGUFIpOwotICAg
ICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7CisgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7CisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZkNv
bnN0YW50KSwgc2NyYXRjaEZQUik7CisKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBzaG91bGRVc2VDZWlsZWQgPSBtX2ppdC5icmFuY2hEb3VibGUoSklUQ29tcGlsZXI6OkRvdWJs
ZUxlc3NUaGFuT3JFcXVhbCwgcmVhbFBhcnRGUFIsIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgb25lQ29uc3RhbnQgPSAtMS4wOworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJm9uZUNv
bnN0YW50KSwgc2NyYXRjaEZQUik7CisgICAgICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKHNj
cmF0Y2hGUFIsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgc2hvdWxkVXNlQ2VpbGVkLmxp
bmsoJm1faml0KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRG
UFIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgICAgICAgICBGUFJSZXN1bHQgcm91bmRlZFJlc3VsdEFzRG91YmxlKHRoaXMpOwotICAg
ICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWRSZXN1bHRBc0RvdWJsZS5mcHIoKTsK
LSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEFyaXRoUm91bmQpCi0gICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihqc1JvdW5kLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhGbG9vcikKLSAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKGZsb29yLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhDZWlsKQotICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oY2VpbCwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBBcml0aFRydW5jKTsKLSAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKHRydW5jLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBBcml0aEZsb29yOiB7CisgICAgICAgICAgICBGUFJUZW1w
b3Jhcnkgcm91bmRlZCh0aGlzKTsKKyAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByb3Vu
ZGVkLmZwcigpOworICAgICAgICAgICAgbV9qaXQuZmxvb3JEb3VibGUodmFsdWVGUFIsIHJlc3Vs
dEZQUik7CiAgICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0RlBSKTsKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CisgICAgICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgICAgICAgICBGUFJUZW1wb3Jh
cnkgcm91bmRlZCh0aGlzKTsKKyAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByb3VuZGVk
LmZwcigpOworICAgICAgICAgICAgbV9qaXQuY2VpbERvdWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBS
KTsKKyAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1
ZVJlZ3MoKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlc3VsdC5ncHIo
KSk7Ci0jZWxzZQotICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7Ci0gICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IEpTVmFsdWVSZWdzKHJlc3VsdFBheWxvYWQuZ3ByKCksIHJlc3VsdFRhZy5ncHIoKSk7Ci0jZW5k
aWYKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlv
biA9IG51bGxwdHI7Ci0gICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhSb3VuZCkKLSAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uQXJpdGhSb3VuZDsKLSAgICBlbHNlIGlmIChub2RlLT5vcCgp
ID09IEFyaXRoRmxvb3IpCi0gICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvbkFyaXRoRmxvb3I7
Ci0gICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aENlaWwpCi0gICAgICAgIG9wZXJhdGlv
biA9IG9wZXJhdGlvbkFyaXRoQ2VpbDsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5vZGUt
Pm9wKCkgPT0gQXJpdGhUcnVuYyk7Ci0gICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvbkFyaXRo
VHJ1bmM7CisgICAgICAgIGNhc2UgQXJpdGhUcnVuYzogeworICAgICAgICAgICAgRlBSVGVtcG9y
YXJ5IHJvdW5kZWQodGhpcyk7CisgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcm91bmRl
ZC5mcHIoKTsKKyAgICAgICAgICAgIG1faml0LnJvdW5kVG93YXJkWmVyb0RvdWJsZSh2YWx1ZUZQ
UiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBGUFJSZXN1bHQgcm91bmRlZFJlc3Vs
dEFzRG91YmxlKHRoaXMpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcm91bmRlZFJlc3Vs
dEFzRG91YmxlLmZwcigpOworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcml0aFJvdW5kKQor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihqc1JvdW5kLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsK
KyAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aEZsb29yKQorICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihmbG9vciwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7CisgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhDZWlsKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihj
ZWlsLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBBcml0aFRydW5jKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24odHJ1bmMsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOworICAgICAgICB9CisgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOwogICAgIH0K
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgYXJndW1lbnRSZWdzKTsK
LSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFNpbihOb2Rl
KiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDA4MDM3ZDgwODJmYjgzOTNmNDU0YmNhMjQ4ZTk0M2EyOGZkM2VmNTIuLjBiMWEwMmYx
MDI5YTFjNDIwMWE1ZWVkMDBkODQzMzVmMzI2Yzk2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIyNjYsOTEgKzIyNjYsNjcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY29tcGlsZUFyaXRoUm91bmQoKQogICAgIHsKLSAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgewotICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAocHJvZHVjZXNJbnRl
Z2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRpdmVa
ZXJvKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBMVmFs
dWUgdmFsdWUgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gbV9vdXQuZG91YmxlRmxvb3IobV9vdXQuZG91YmxlQWRkKHZhbHVlLCBtX291dC5j
b25zdERvdWJsZSgwLjUpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIHJlYWxQYXJ0SXNNb3JlVGhhbkhhbGYgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBudWxscHRyOwogCi0gICAgICAgICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
ICAgIExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3VibGVDZWlsKHZhbHVlKTsKLSAgICAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRlZ2VyVmFsdWVSZXN1bHQgPSBtX291dC5hbmNo
b3IoaW50ZWdlclZhbHVlKTsKKyAgICAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihtX25vZGUtPmFy
aXRoUm91bmRpbmdNb2RlKCkpICYmICFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhtX25vZGUtPmFy
aXRoUm91bmRpbmdNb2RlKCkpKSB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dEb3Vi
bGUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICByZXN1bHQgPSBtX291dC5kb3VibGVG
bG9vcihtX291dC5kb3VibGVBZGQodmFsdWUsIG1fb3V0LmNvbnN0RG91YmxlKDAuNSkpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJlYWxQYXJ0SXNNb3JlVGhh
bkhhbGYgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAotICAgICAgICAgICAgICAgIExWYWx1ZSByZWFs
UGFydCA9IG1fb3V0LmRvdWJsZVN1YihpbnRlZ2VyVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3VibGVDZWlsKHZhbHVlKTsKKyAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGludGVnZXJWYWx1ZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihpbnRl
Z2VyVmFsdWUpOwogCi0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmRvdWJsZUdy
ZWF0ZXJUaGFuT3JVbm9yZGVyZWQocmVhbFBhcnQsIG1fb3V0LmNvbnN0RG91YmxlKDAuNSkpLCB1
bnN1cmUocmVhbFBhcnRJc01vcmVUaGFuSGFsZiksIHVuc3VyZShjb250aW51YXRpb24pKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByZWFsUGFydCA9IG1fb3V0LmRvdWJsZVN1YihpbnRlZ2VyVmFsdWUs
IHZhbHVlKTsKIAotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8ocmVhbFBhcnRJc01vcmVUaGFuSGFsZiwgY29udGludWF0aW9uKTsKLSAgICAgICAg
ICAgICAgICBMVmFsdWUgaW50ZWdlclZhbHVlUm91bmRlZERvd24gPSBtX291dC5kb3VibGVTdWIo
aW50ZWdlclZhbHVlLCBtX291dC5jb25zdERvdWJsZSgxKSk7Ci0gICAgICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgaW50ZWdlclZhbHVlUm91bmRlZERvd25SZXN1bHQgPSBtX291dC5hbmNob3Io
aW50ZWdlclZhbHVlUm91bmRlZERvd24pOwotICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5kb3VibGVHcmVhdGVy
VGhhbk9yVW5vcmRlcmVkKHJlYWxQYXJ0LCBtX291dC5jb25zdERvdWJsZSgwLjUpKSwgdW5zdXJl
KHJlYWxQYXJ0SXNNb3JlVGhhbkhhbGYpLCB1bnN1cmUoY29udGludWF0aW9uKSk7CiAKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBtX291dC5waGkoRG91YmxlLCBpbnRlZ2VyVmFsdWVSZXN1bHQs
IGludGVnZXJWYWx1ZVJvdW5kZWREb3duUmVzdWx0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ocmVhbFBhcnRJc01vcmVU
aGFuSGFsZiwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBpbnRlZ2VyVmFsdWVS
b3VuZGVkRG93biA9IG1fb3V0LmRvdWJsZVN1YihpbnRlZ2VyVmFsdWUsIG1fb3V0LmNvbnN0RG91
YmxlKDEpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludGVnZXJWYWx1ZVJvdW5kZWRE
b3duUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGludGVnZXJWYWx1ZVJvdW5kZWREb3duKTsKKyAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgICAgICBpZiAocHJvZHVjZXNJ
bnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBM
VmFsdWUgaW50ZWdlclZhbHVlID0gY29udmVydERvdWJsZVRvSW50MzIocmVzdWx0LCBzaG91bGRD
aGVja05lZ2F0aXZlWmVybyhtX25vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKTsKLSAgICAgICAg
ICAgICAgICBzZXRJbnQzMihpbnRlZ2VyVmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXN1bHQgPSBtX291dC5waGkoRG91YmxlLCBpbnRlZ2VyVmFsdWVSZXN1bHQsIGlu
dGVnZXJWYWx1ZVJvdW5kZWREb3duUmVzdWx0KTsKICAgICAgICAgfQogCi0gICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKTsKLSAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25Bcml0aFJvdW5kKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CisgICAgICAg
IGlmIChwcm9kdWNlc0ludGVnZXIobV9ub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkgeworICAg
ICAgICAgICAgTFZhbHVlIGludGVnZXJWYWx1ZSA9IGNvbnZlcnREb3VibGVUb0ludDMyKHJlc3Vs
dCwgc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obV9ub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSk7
CisgICAgICAgICAgICBzZXRJbnQzMihpbnRlZ2VyVmFsdWUpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHNldERvdWJsZShyZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUFy
aXRoRmxvb3IoKQogICAgIHsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IERvdWJsZVJlcFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91Ymxl
KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIGludGVnZXJWYWx1ZSA9IG1f
b3V0LmRvdWJsZUZsb29yKHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIo
bV9ub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkKLSAgICAgICAgICAgICAgICBzZXRJbnQzMihj
b252ZXJ0RG91YmxlVG9JbnQzMihpbnRlZ2VyVmFsdWUsIHNob3VsZENoZWNrTmVnYXRpdmVaZXJv
KG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBzZXREb3VibGUoaW50ZWdlclZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgICAgIExWYWx1ZSBhcmd1bWVu
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhGbG9vciksIG1fY2FsbEZy
YW1lLCBhcmd1bWVudCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBpbnRlZ2VyVmFsdWUgPSBtX291dC5kb3VibGVG
bG9vcih2YWx1ZSk7CisgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobV9ub2RlLT5hcml0aFJv
dW5kaW5nTW9kZSgpKSkKKyAgICAgICAgICAgIHNldEludDMyKGNvbnZlcnREb3VibGVUb0ludDMy
KGludGVnZXJWYWx1ZSwgc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obV9ub2RlLT5hcml0aFJvdW5k
aW5nTW9kZSgpKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXREb3VibGUoaW50ZWdl
clZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVBcml0aENlaWwoKQogICAgIHsKLSAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgewot
ICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgTFZhbHVlIGludGVnZXJWYWx1ZSA9IG1fb3V0LmRvdWJsZUNlaWwodmFsdWUp
OwotICAgICAgICAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihtX25vZGUtPmFyaXRoUm91bmRpbmdN
b2RlKCkpKQotICAgICAgICAgICAgICAgIHNldEludDMyKGNvbnZlcnREb3VibGVUb0ludDMyKGlu
dGVnZXJWYWx1ZSwgc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obV9ub2RlLT5hcml0aFJvdW5kaW5n
TW9kZSgpKSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNldERvdWJsZShp
bnRlZ2VyVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKLSAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25Bcml0aENlaWwpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpKTsKKyAgICAg
ICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBM
VmFsdWUgaW50ZWdlclZhbHVlID0gbV9vdXQuZG91YmxlQ2VpbCh2YWx1ZSk7CisgICAgICAgIGlm
IChwcm9kdWNlc0ludGVnZXIobV9ub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkKKyAgICAgICAg
ICAgIHNldEludDMyKGNvbnZlcnREb3VibGVUb0ludDMyKGludGVnZXJWYWx1ZSwgc2hvdWxkQ2hl
Y2tOZWdhdGl2ZVplcm8obV9ub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzZXREb3VibGUoaW50ZWdlclZhbHVlKTsKICAgICB9CiAKICAgICB2
b2lkIGNvbXBpbGVBcml0aFRydW5jKCkKICAgICB7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSB2YWx1
ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSBtX291dC5kb3VibGVUcnVuYyh2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAocHJvZHVjZXNJ
bnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpCi0gICAgICAgICAgICAgICAgc2V0
SW50MzIoY29udmVydERvdWJsZVRvSW50MzIocmVzdWx0LCBzaG91bGRDaGVja05lZ2F0aXZlWmVy
byhtX25vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoVHJ1bmMpLCBtX2NhbGxGcmFtZSwg
YXJndW1lbnQpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZG91YmxlVHJ1bmModmFsdWUp
OworICAgICAgICBpZiAocHJvZHVjZXNJbnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUo
KSkpCisgICAgICAgICAgICBzZXRJbnQzMihjb252ZXJ0RG91YmxlVG9JbnQzMihyZXN1bHQsIHNo
b3VsZENoZWNrTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CiAgICAgfQogCiAgICAg
dm9pZCBjb21waWxlQXJpdGhTcXJ0KCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJkYTVjZWFjZWY1NDdhZTcyYWU1MTQ0MWMzMWY2MmVj
OThiNWJiNy4uNzc2YmZmNGJlYjJjZDMzMzRmMjRkNmQxMDk4YzUyZTQ4MWNlYTQ5MSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNi0wOS0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTkzMS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjAyMQorCisgICAgICAg
IFRlc3RzIGZvciB0aGlzIGNoYW5nZSBmYWlsIG9uIDMyLWJpdCBKU0MgYm90cyAoUmVxdWVzdGVk
IGJ5CisgICAgICAgIHJ5YW5oYWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgorCisgICAgICAgICJbSlNDXSBNYWtlIHRoZSByb3VuZGluZy1yZWxhdGVkIG5v
ZGVzIHN1cHBvcnQgYW55IHR5cGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE4OTUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjA1OTMxCisKIDIwMTYtMDktMTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICB0ZXN0MjYyOiBTaG91bGQgYmUgYSBTeW50YXhFcnJvciBmb3Ig
ZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgcGFyYW1l
dGVycwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJpdGgtY2VpbC1vbi12YXJpb3VzLXR5
cGVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdGgtY2VpbC1vbi12YXJpb3VzLXR5cGVzLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWRkMjdkZTY0YWIyMWU2YjgyNmY5MzY3ODQ0
MzAxNDE0YTdhYzczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0pTVGVzdHMvc3RyZXNzL2FyaXRoLWNlaWwtb24tdmFyaW91cy10eXBlcy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0idXNlIHN0cmljdCI7Ci0KLWxldCB2YWxpZElucHV0
VGVzdENhc2VzID0gWwotICAgIC8vIGlucHV0IGFzIHN0cmluZywgZXhwZWN0ZWQgcmVzdWx0IGFz
IHN0cmluZy4KLSAgICBbInVuZGVmaW5lZCIsICJOYU4iXSwKLSAgICBbIm51bGwiLCAiMCJdLAot
ICAgIFsiMCIsICIwIl0sCi0gICAgWyItMC4iLCAiLTAiXSwKLSAgICBbIjAuNSIsICIxIl0sCi0g
ICAgWyItMC41IiwgIi0wIl0sCi0gICAgWyI0IiwgIjQiXSwKLSAgICBbIjQyLjEiLCAiNDMiXSwK
LSAgICBbIjQyLjUiLCAiNDMiXSwKLSAgICBbIjQyLjkiLCAiNDMiXSwKLSAgICBbIi00Mi4xIiwg
Ii00MiJdLAotICAgIFsiLTQyLjUiLCAiLTQyIl0sCi0gICAgWyItNDIuOSIsICItNDIiXSwKLSAg
ICBbIk1hdGguUEkiLCAiNCJdLAotICAgIFsiSW5maW5pdHkiLCAiSW5maW5pdHkiXSwKLSAgICBb
Ii1JbmZpbml0eSIsICItSW5maW5pdHkiXSwKLSAgICBbIk5hTiIsICJOYU4iXSwKLSAgICBbIlwi
V2ViS2l0XCIiLCAiTmFOIl0sCi0gICAgWyJcIjRcIiIsICI0Il0sCi0gICAgWyJcIjQyLjVcIiIs
ICI0MyJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiA0OyB9IH0iLCAiNCJdLAot
ICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAwOyB9IH0iLCAiMCJdLAotICAgIFsieyB2
YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAtMDsgfSB9IiwgIi0wIl0sCi0gICAgWyJ7IHZhbHVlT2Y6
ICgpID0+IHsgcmV0dXJuIDAuNTsgfSB9IiwgIjEiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4g
eyByZXR1cm4gLTAuNTsgfSB9IiwgIi0wIl0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0
dXJuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSOyB9IH0iLCAiLTkwMDcxOTkyNTQ3NDA5OTEiXSwK
LSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7
IH0gfSIsICI5MDA3MTk5MjU0NzQwOTkxIl0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0
dXJuIDB4ODAwMDAwMDB8MDsgfSB9IiwgIi0yMTQ3NDgzNjQ4Il0sCi0gICAgWyJ7IHZhbHVlT2Y6
ICgpID0+IHsgcmV0dXJuIDB4N2ZmZmZmZmZ8MDsgfSB9IiwgIjIxNDc0ODM2NDciXSwKLSAgICBb
InsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gKDB4ODAwMDAwMDB8MCkgLSAwLjU7IH0gfSIsICIt
MjE0NzQ4MzY0OCJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAoMHg3ZmZmZmZm
ZnwwKSArIDAuNTsgfSB9IiwgIjIxNDc0ODM2NDgiXSwKLV07Ci0KLWxldCB2YWxpZElucHV0VHlw
ZWRUZXN0Q2FzZXMgPSB2YWxpZElucHV0VGVzdENhc2VzLm1hcCgoZWxlbWVudCkgPT4geyByZXR1
cm4gW2V2YWwoIigiICsgZWxlbWVudFswXSArICIpIiksIGV2YWwoZWxlbWVudFsxXSldIH0pOwot
Ci1mdW5jdGlvbiBpc0lkZW50aWNhbChyZXN1bHQsIGV4cGVjdGVkKQotewotICAgIGlmIChleHBl
Y3RlZCA9PT0gZXhwZWN0ZWQpIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghZXhwZWN0ZWQgJiYgKDEgLyBl
eHBlY3RlZCkgIT09ICgxIC8gcmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdCAhPT0gcmVzdWx0
OwotfQotCi0KLS8vIFRlc3QgTWF0aC5jZWlsKCkgd2l0aG91dCBhcmd1bWVudHMuCi1mdW5jdGlv
biBvcGFxdWVDZWlsTm9Bcmd1bWVudCgpIHsKLSAgICByZXR1cm4gTWF0aC5jZWlsKCk7Ci19Ci1u
b0lubGluZShvcGFxdWVDZWlsTm9Bcmd1bWVudCk7Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUNl
aWxOb0FyZ3VtZW50KTsKLQotZnVuY3Rpb24gdGVzdE5vQXJndW1lbnQoKSB7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewotICAgICAgICBsZXQgb3V0cHV0ID0gb3BhcXVlQ2Vp
bE5vQXJndW1lbnQoKTsKLSAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvdXRwdXQsIE5hTikpIHsK
LSAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlQ2VpbE5vQXJndW1lbnQiOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUNlaWxOb0FyZ3Vt
ZW50KSA+IDEpCi0gICAgICAgIHRocm93ICJUaGUgY2FsbCB3aXRob3V0IGFyZ3VtZW50cyBzaG91
bGQgbmV2ZXIgZXhpdC4iOwotfQotdGVzdE5vQXJndW1lbnQoKTsKLQotCi0vLyBUZXN0IE1hdGgu
Y2VpbCgpIHdpdGggYSB2ZXJ5IHBvbHltb3JwaGljIGlucHV0LiBBbGwgdGVzdCBjYXNlcyBhcmUg
c2VlbiBhdCBlYWNoIGl0ZXJhdGlvbi4KLWZ1bmN0aW9uIG9wYXF1ZUFsbFR5cGVzQ2VpbChhcmd1
bWVudCkgewotICAgIHJldHVybiBNYXRoLmNlaWwoYXJndW1lbnQpOwotfQotbm9JbmxpbmUob3Bh
cXVlQWxsVHlwZXNDZWlsKTsKLW5vT1NSRXhpdEZ1enppbmcob3BhcXVlQWxsVHlwZXNDZWlsKTsK
LQotZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDFlMzsgKytpKSB7Ci0gICAgICAgIGZvciAobGV0IHRlc3RDYXNlSW5wdXQgb2YgdmFsaWRJbnB1
dFR5cGVkVGVzdENhc2VzKSB7Ci0gICAgICAgICAgICBsZXQgb3V0cHV0ID0gb3BhcXVlQWxsVHlw
ZXNDZWlsKHRlc3RDYXNlSW5wdXRbMF0pOwotICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChv
dXRwdXQsIHRlc3RDYXNlSW5wdXRbMV0pKQotICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
dGVzdEFsbFR5cGVzQ2FsbCBmb3IgaW5wdXQgIiArIHRlc3RDYXNlSW5wdXRbMF0gKyAiIGV4cGVj
dGVkICIgKyB0ZXN0Q2FzZUlucHV0WzFdICsgIiBnb3QgIiArIG91dHB1dDsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVBbGxUeXBlc0NlaWwpID4g
MykKLSAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGRldGVjdGVkIGNlaWwoKSB3YXMgcG9s
eW1vcnBoaWMgYW5kIGdlbmVyYXRlZCBhIGdlbmVyaWMgdmVyc2lvbi4iOwotfQotdGVzdEFsbFR5
cGVzQ2FsbCgpOwotCi0KLS8vIFBvbHltb3JwaGljIGlucHV0IGJ1dCBuZWdhdGl2ZSB6ZXJvIGlz
IG5vdCBvYnNlcnZhYmxlLgotZnVuY3Rpb24gb3BhcXVlQWxsVHlwZXNDZWlsV2l0aG91dE5lZ2F0
aXZlWmVybyhhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRoLmNlaWwoYXJndW1lbnQpICsgMDsK
LX0KLW5vSW5saW5lKG9wYXF1ZUFsbFR5cGVzQ2VpbFdpdGhvdXROZWdhdGl2ZVplcm8pOwotbm9P
U1JFeGl0RnV6emluZyhvcGFxdWVBbGxUeXBlc0NlaWxXaXRob3V0TmVnYXRpdmVaZXJvKTsKLQot
ZnVuY3Rpb24gdGVzdEFsbFR5cGVzV2l0aG91dE5lZ2F0aXZlWmVyb0NhbGwoKSB7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgewotICAgICAgICBmb3IgKGxldCB0ZXN0Q2FzZUlu
cHV0IG9mIHZhbGlkSW5wdXRUeXBlZFRlc3RDYXNlcykgewotICAgICAgICAgICAgbGV0IG91dHB1
dCA9IG9wYXF1ZUFsbFR5cGVzQ2VpbFdpdGhvdXROZWdhdGl2ZVplcm8odGVzdENhc2VJbnB1dFsw
XSk7Ci0gICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKG91dHB1dCwgdGVzdENhc2VJbnB1dFsx
XSArIDApKQotICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdEFsbFR5cGVzV2l0aG91
dE5lZ2F0aXZlWmVyb0NhbGwgZm9yIGlucHV0ICIgKyB0ZXN0Q2FzZUlucHV0WzBdICsgIiBleHBl
Y3RlZCAiICsgdGVzdENhc2VJbnB1dFsxXSArICIgZ290ICIgKyBvdXRwdXQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlQWxsVHlwZXNDZWlsKSA+
IDMpCi0gICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBkZXRlY3RlZCBjZWlsKCkgd2FzIHBv
bHltb3JwaGljIGFuZCBnZW5lcmF0ZWQgYSBnZW5lcmljIHZlcnNpb24uIjsKLX0KLXRlc3RBbGxU
eXBlc1dpdGhvdXROZWdhdGl2ZVplcm9DYWxsKCk7Ci0KLQotLy8gVGVzdCBNYXRoLmNlaWwoKSBv
biBhIGNvbXBsZXRlbHkgdHlwZWQgaW5wdXQuIEV2ZXJ5IGNhbGwgc2VlIG9ubHkgb25lIHR5cGUu
Ci1mdW5jdGlvbiB0ZXN0U2luZ2xlVHlwZUNhbGwoKSB7Ci0gICAgZm9yIChsZXQgdGVzdENhc2VJ
bnB1dCBvZiB2YWxpZElucHV0VGVzdENhc2VzKSB7Ci0gICAgICAgIGV2YWwoYAotICAgICAgICAg
ICAgZnVuY3Rpb24gb3BhcXVlQ2VpbChhcmd1bWVudCkgewotICAgICAgICAgICAgICAgIHJldHVy
biBNYXRoLmNlaWwoYXJndW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbm9Jbmxp
bmUob3BhcXVlQ2VpbCk7Ci0gICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUNlaWwp
OwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVDZWlsKCR7dGVzdENhc2VJbnB1dFswXX0p
LCAke3Rlc3RDYXNlSW5wdXRbMV19KSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFp
bGVkIHRlc3RTaW5nbGVUeXBlQ2FsbCgpIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVDZWlsKSA+IDEp
Ci0gICAgICAgICAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGNvbXBpbGVkIGEgc2luZ2xl
IGNlaWwgZm9yIHRoZSBleHBlY3RlZCB0eXBlLiI7Ci0gICAgICAgIGApOwotICAgIH0KLX0KLXRl
c3RTaW5nbGVUeXBlQ2FsbCgpOwotCi0KLS8vIFRlc3QgTWF0aC5jZWlsKCkgb24gYSBjb21wbGV0
ZWx5IHR5cGVkIGlucHV0LCBidXQgd2l0aG91dCBuZWdhdGl2ZSB6ZXJvLgotZnVuY3Rpb24gdGVz
dFNpbmdsZVR5cGVXaXRob3V0TmVnYXRpdmVaZXJvQ2FsbCgpIHsKLSAgICBmb3IgKGxldCB0ZXN0
Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKLSAgICAgICAgZXZhbChgCi0gICAg
ICAgICAgICBmdW5jdGlvbiBvcGFxdWVDZWlsKGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIE1hdGguY2VpbChhcmd1bWVudCkgKyAwOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgbm9JbmxpbmUob3BhcXVlQ2VpbCk7Ci0gICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9w
YXF1ZUNlaWwpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVDZWlsKCR7dGVzdENhc2VJ
bnB1dFswXX0pLCAke3Rlc3RDYXNlSW5wdXRbMV19ICsgMCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgIkZhaWxlZCB0ZXN0U2luZ2xlVHlwZVdpdGhvdXROZWdhdGl2ZVplcm9DYWxsKCki
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChudW1i
ZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUNlaWwpID4gMSkKLSAgICAgICAgICAgICAgICB0aHJvdyAi
V2Ugc2hvdWxkIGhhdmUgY29tcGlsZWQgYSBzaW5nbGUgY2VpbCBmb3IgdGhlIGV4cGVjdGVkIHR5
cGUuIjsKLSAgICAgICAgYCk7Ci0gICAgfQotfQotdGVzdFNpbmdsZVR5cGVXaXRob3V0TmVnYXRp
dmVaZXJvQ2FsbCgpOwotCi0KLS8vIFRlc3QgTWF0aC5jZWlsKCkgb24gY29uc3RhbnRzCi1mdW5j
dGlvbiB0ZXN0Q29uc3RhbnQoKSB7Ci0gICAgZm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxp
ZElucHV0VGVzdENhc2VzKSB7Ci0gICAgICAgIGV2YWwoYAotICAgICAgICAgICAgZnVuY3Rpb24g
b3BhcXVlQ2VpbE9uQ29uc3RhbnQoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguY2Vp
bCgke3Rlc3RDYXNlSW5wdXRbMF19KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5vSW5s
aW5lKG9wYXF1ZUNlaWxPbkNvbnN0YW50KTsKLSAgICAgICAgICAgIG5vT1NSRXhpdEZ1enppbmco
b3BhcXVlQ2VpbE9uQ29uc3RhbnQpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDFlNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVDZWls
T25Db25zdGFudCgpLCAke3Rlc3RDYXNlSW5wdXRbMV19KSkgewotICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHRlc3RDb25zdGFudCgpIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVDZWls
T25Db25zdGFudCkgPiAxKQotICAgICAgICAgICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBj
b21waWxlZCBhIHNpbmdsZSBjZWlsIGZvciB0aGUgZXhwZWN0ZWQgdHlwZS4iOwotICAgICAgICBg
KTsKLSAgICB9Ci19Ci10ZXN0Q29uc3RhbnQoKTsKLQotCi0vLyBWZXJpZnkgd2UgY2FsbCB2YWx1
ZU9mKCkgZXhhY3RseSBvbmNlIHBlciBjYWxsLgotZnVuY3Rpb24gb3BhcXVlQ2VpbEZvclNpZGVF
ZmZlY3RzKGFyZ3VtZW50KSB7Ci0gICAgcmV0dXJuIE1hdGguY2VpbChhcmd1bWVudCk7Ci19Ci1u
b0lubGluZShvcGFxdWVDZWlsRm9yU2lkZUVmZmVjdHMpOwotbm9PU1JFeGl0RnV6emluZyhvcGFx
dWVDZWlsRm9yU2lkZUVmZmVjdHMpOwotCi1mdW5jdGlvbiB0ZXN0U2lkZUVmZmVjdCgpIHsKLSAg
ICBsZXQgdGVzdE9iamVjdCA9IHsKLSAgICAgICAgY291bnRlcjogMCwKLSAgICAgICAgdmFsdWVP
ZjogZnVuY3Rpb24oKSB7ICsrdGhpcy5jb3VudGVyOyByZXR1cm4gMTY7IH0KLSAgICB9OwotICAg
IGxldCBjZWlsMTYgPSBNYXRoLmNlaWwoMTYpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKLSAgICAgICAgaWYgKG9wYXF1ZUNlaWxGb3JTaWRlRWZmZWN0cyh0ZXN0T2JqZWN0
KSAhPT0gY2VpbDE2KQotICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gdGVz
dFNpZGVFZmZlY3QoKSI7Ci0gICAgfQotICAgIGlmICh0ZXN0T2JqZWN0LmNvdW50ZXIgIT09IDFl
NCkKLSAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0U2lkZUVmZmVjdCgpIjsKLSAgICBpZiAobnVt
YmVyT2ZERkdDb21waWxlcyhvcGFxdWVDZWlsRm9yU2lkZUVmZmVjdHMpID4gMSkKLSAgICAgICAg
dGhyb3cgIm9wYXF1ZUNlaWxGb3JTaWRlRWZmZWN0cygpIGlzIHByZWRpY3RhYmxlLCBpdCBzaG91
bGQgb25seSBiZSBjb21waWxlZCBvbmNlLiI7Ci19Ci10ZXN0U2lkZUVmZmVjdCgpOwotCi0KLS8v
IFZlcmlmeSBjZWlsKCkgaXMgbm90IHN1YmplY3QgdG8gQ1NFIGlmIHRoZSBhcmd1bWVudCBoYXMg
c2lkZSBlZmZlY3RzLgotZnVuY3Rpb24gb3BhcXVlQ2VpbEZvckNTRShhcmd1bWVudCkgewotICAg
IHJldHVybiBNYXRoLmNlaWwoYXJndW1lbnQpICsgTWF0aC5jZWlsKGFyZ3VtZW50KSArIE1hdGgu
Y2VpbChhcmd1bWVudCk7Ci19Ci1ub0lubGluZShvcGFxdWVDZWlsRm9yQ1NFKTsKLW5vT1NSRXhp
dEZ1enppbmcob3BhcXVlQ2VpbEZvckNTRSk7Ci0KLWZ1bmN0aW9uIHRlc3RDU0UoKSB7Ci0gICAg
bGV0IHRlc3RPYmplY3QgPSB7Ci0gICAgICAgIGNvdW50ZXI6IDAsCi0gICAgICAgIHZhbHVlT2Y6
IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9Ci0gICAgfTsKLSAgICBs
ZXQgY2VpbDE2ID0gTWF0aC5jZWlsKDE2KTsKLSAgICBsZXQgdGhyZWVDZWlsMTYgPSBjZWlsMTYg
KyBjZWlsMTYgKyBjZWlsMTY7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewot
ICAgICAgICBpZiAob3BhcXVlQ2VpbEZvckNTRSh0ZXN0T2JqZWN0KSAhPT0gdGhyZWVDZWlsMTYp
Ci0gICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiB0ZXN0Q1NFKCkiOwotICAg
IH0KLSAgICBpZiAodGVzdE9iamVjdC5jb3VudGVyICE9PSAzZTQpCi0gICAgICAgIHRocm93ICJG
YWlsZWQgdGVzdENTRSgpIjsKLSAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVDZWls
Rm9yQ1NFKSA+IDEpCi0gICAgICAgIHRocm93ICJvcGFxdWVDZWlsRm9yQ1NFKCkgaXMgcHJlZGlj
dGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9uY2UuIjsKLX0KLXRlc3RDU0UoKTsK
LQotCi0vLyBWZXJpZnkgY2VpbCgpIGlzIG5vdCBzdWJqZWN0IHRvIERDRSBpZiB0aGUgYXJndW1l
bnQgaGFzIHNpZGUgZWZmZWN0cy4KLWZ1bmN0aW9uIG9wYXF1ZUNlaWxGb3JEQ0UoYXJndW1lbnQp
IHsKLSAgICBNYXRoLmNlaWwoYXJndW1lbnQpOwotfQotbm9JbmxpbmUob3BhcXVlQ2VpbEZvckRD
RSk7Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUNlaWxGb3JEQ0UpOwotCi1mdW5jdGlvbiB0ZXN0
RENFKCkgewotICAgIGxldCB0ZXN0T2JqZWN0ID0gewotICAgICAgICBjb3VudGVyOiAwLAotICAg
ICAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50ZXI7IHJldHVybiAxNjsgfQot
ICAgIH07Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewotICAgICAgICBvcGFx
dWVDZWlsRm9yRENFKHRlc3RPYmplY3QpOwotICAgIH0KLSAgICBpZiAodGVzdE9iamVjdC5jb3Vu
dGVyICE9PSAxZTQpCi0gICAgICAgIHRocm93ICJGYWlsZWQgdGVzdERDRSgpIjsKLSAgICBpZiAo
bnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVDZWlsRm9yRENFKSA+IDEpCi0gICAgICAgIHRocm93
ICJvcGFxdWVDZWlsRm9yRENFKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNv
bXBpbGVkIG9uY2UuIjsKLX0KLXRlc3REQ0UoKTsKLQotCi0vLyBUZXN0IGV4Y2VwdGlvbnMgaW4g
dGhlIGFyZ3VtZW50LgotZnVuY3Rpb24gdGVzdEV4Y2VwdGlvbigpIHsKLSAgICBsZXQgY291bnRl
ciA9IDA7Ci0gICAgZnVuY3Rpb24gb3BhcXVlQ2VpbFdpdGhFeGNlcHRpb24oYXJndW1lbnQpIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IE1hdGguY2VpbChhcmd1bWVudCk7Ci0gICAgICAgICsrY291
bnRlcjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgbm9JbmxpbmUob3BhcXVl
Q2VpbFdpdGhFeGNlcHRpb24pOwotCi0gICAgbGV0IHRlc3RPYmplY3QgPSB7IHZhbHVlT2Y6ICgp
ID0+IHsgIHJldHVybiA2NDsgfSB9OwotICAgIGxldCBjZWlsNjQgPSBNYXRoLmNlaWwoNjQpOwot
Ci0gICAgLy8gV2FybSB1cCB3aXRob3V0IGV4Y2VwdGlvbi4KLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlMzsgKytpKSB7Ci0gICAgICAgIGlmIChvcGFxdWVDZWlsV2l0aEV4Y2VwdGlvbih0ZXN0
T2JqZWN0KSAhPT0gY2VpbDY0KQotICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQg
aW4gb3BhcXVlQ2VpbFdpdGhFeGNlcHRpb24oKSI7Ci0gICAgfQotCi0gICAgbGV0IHRlc3RUaHJv
d09iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyB0aHJvdyB0ZXN0T2JqZWN0OyByZXR1cm4gNjQ7
IH0gfTsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGlmIChvcGFxdWVDZWlsV2l0aEV4Y2VwdGlvbih0ZXN0VGhyb3dPYmpl
Y3QpICE9PSA4KQotICAgICAgICAgICAgICAgIHRocm93ICJUaGlzIGNvZGUgc2hvdWxkIG5vdCBi
ZSByZWFjaGVkISEiOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBpZiAoZSAh
PT0gdGVzdE9iamVjdCkgewotICAgICAgICAgICAgICAgIHRocm93ICJXcm9uZyBvYmplY3QgdGhy
b3duIGZyb20gb3BhcXVlQ2VpbFdpdGhFeGNlcHRpb24uIgotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKGNvdW50ZXIgIT09IDFlMykgewotICAgICAgICB0aHJvdyAi
SW52YWxpZCBjb3VudCBpbiB0ZXN0RXhjZXB0aW9uKCkiOwotICAgIH0KLX0KLXRlc3RFeGNlcHRp
b24oKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXRoLWZsb29yLW9uLXZhcmlvdXMt
dHlwZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC1mbG9vci1vbi12YXJpb3VzLXR5cGVzLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmYzNjBjZGZmYmVmM2JlMmVmMmNiMzZj
ZjJiZWZiOTA3MzEwZjYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2FyaXRoLWZsb29yLW9uLXZhcmlvdXMtdHlwZXMuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotInVzZSBzdHJpY3QiOwotCi1sZXQgdmFsaWRJ
bnB1dFRlc3RDYXNlcyA9IFsKLSAgICAvLyBpbnB1dCBhcyBzdHJpbmcsIGV4cGVjdGVkIHJlc3Vs
dCBhcyBzdHJpbmcuCi0gICAgWyJ1bmRlZmluZWQiLCAiTmFOIl0sCi0gICAgWyJudWxsIiwgIjAi
XSwKLSAgICBbIjAiLCAiMCJdLAotICAgIFsiLTAuIiwgIi0wIl0sCi0gICAgWyIwLjUiLCAiMCJd
LAotICAgIFsiLTAuNSIsICItMSJdLAotICAgIFsiNCIsICI0Il0sCi0gICAgWyI0Mi4xIiwgIjQy
Il0sCi0gICAgWyI0Mi41IiwgIjQyIl0sCi0gICAgWyI0Mi45IiwgIjQyIl0sCi0gICAgWyItNDIu
MSIsICItNDMiXSwKLSAgICBbIi00Mi41IiwgIi00MyJdLAotICAgIFsiLTQyLjkiLCAiLTQzIl0s
Ci0gICAgWyJNYXRoLlBJIiwgIjMiXSwKLSAgICBbIkluZmluaXR5IiwgIkluZmluaXR5Il0sCi0g
ICAgWyItSW5maW5pdHkiLCAiLUluZmluaXR5Il0sCi0gICAgWyJOYU4iLCAiTmFOIl0sCi0gICAg
WyJcIldlYktpdFwiIiwgIk5hTiJdLAotICAgIFsiXCI0XCIiLCAiNCJdLAotICAgIFsiXCI0Mi41
XCIiLCAiNDIiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gNDsgfSB9IiwgIjQi
XSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gMDsgfSB9IiwgIjAiXSwKLSAgICBb
InsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gLTA7IH0gfSIsICItMCJdLAotICAgIFsieyB2YWx1
ZU9mOiAoKSA9PiB7IHJldHVybiAwLjU7IH0gfSIsICIwIl0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgp
ID0+IHsgcmV0dXJuIC0wLjU7IH0gfSIsICItMSJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7
IHJldHVybiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjsgfSB9IiwgIi05MDA3MTk5MjU0NzQwOTkx
Il0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRF
R0VSOyB9IH0iLCAiOTAwNzE5OTI1NDc0MDk5MSJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7
IHJldHVybiAweDgwMDAwMDAwfDA7IH0gfSIsICItMjE0NzQ4MzY0OCJdLAotICAgIFsieyB2YWx1
ZU9mOiAoKSA9PiB7IHJldHVybiAweDdmZmZmZmZmfDA7IH0gfSIsICIyMTQ3NDgzNjQ3Il0sCi0g
ICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuICgweDgwMDAwMDAwfDApIC0gMC41OyB9IH0i
LCAiLTIxNDc0ODM2NDkiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gKDB4N2Zm
ZmZmZmZ8MCkgKyAwLjU7IH0gfSIsICIyMTQ3NDgzNjQ3Il0sCi1dOwotCi1sZXQgdmFsaWRJbnB1
dFR5cGVkVGVzdENhc2VzID0gdmFsaWRJbnB1dFRlc3RDYXNlcy5tYXAoKGVsZW1lbnQpID0+IHsg
cmV0dXJuIFtldmFsKCIoIiArIGVsZW1lbnRbMF0gKyAiKSIpLCBldmFsKGVsZW1lbnRbMV0pXSB9
KTsKLQotZnVuY3Rpb24gaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKLXsKLSAgICBpZiAo
ZXhwZWN0ZWQgPT09IGV4cGVjdGVkKSB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVk
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWV4cGVjdGVkICYmICgx
IC8gZXhwZWN0ZWQpICE9PSAoMSAvIHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQgIT09IHJl
c3VsdDsKLX0KLQotCi0vLyBUZXN0IE1hdGguZmxvb3IoKSB3aXRob3V0IGFyZ3VtZW50cy4KLWZ1
bmN0aW9uIG9wYXF1ZUZsb29yTm9Bcmd1bWVudCgpIHsKLSAgICByZXR1cm4gTWF0aC5mbG9vcigp
OwotfQotbm9JbmxpbmUob3BhcXVlRmxvb3JOb0FyZ3VtZW50KTsKLW5vT1NSRXhpdEZ1enppbmco
b3BhcXVlRmxvb3JOb0FyZ3VtZW50KTsKLQotZnVuY3Rpb24gdGVzdE5vQXJndW1lbnQoKSB7Ci0g
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewotICAgICAgICBsZXQgb3V0cHV0ID0g
b3BhcXVlRmxvb3JOb0FyZ3VtZW50KCk7Ci0gICAgICAgIGlmICghaXNJZGVudGljYWwob3V0cHV0
LCBOYU4pKSB7Ci0gICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUZsb29yTm9Bcmd1bWVu
dCI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVl
Rmxvb3JOb0FyZ3VtZW50KSA+IDEpCi0gICAgICAgIHRocm93ICJUaGUgY2FsbCB3aXRob3V0IGFy
Z3VtZW50cyBzaG91bGQgbmV2ZXIgZXhpdC4iOwotfQotdGVzdE5vQXJndW1lbnQoKTsKLQotCi0v
LyBUZXN0IE1hdGguZmxvb3IoKSB3aXRoIGEgdmVyeSBwb2x5bW9ycGhpYyBpbnB1dC4gQWxsIHRl
c3QgY2FzZXMgYXJlIHNlZW4gYXQgZWFjaCBpdGVyYXRpb24uCi1mdW5jdGlvbiBvcGFxdWVBbGxU
eXBlc0Zsb29yKGFyZ3VtZW50KSB7Ci0gICAgcmV0dXJuIE1hdGguZmxvb3IoYXJndW1lbnQpOwot
fQotbm9JbmxpbmUob3BhcXVlQWxsVHlwZXNGbG9vcik7Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1
ZUFsbFR5cGVzRmxvb3IpOwotCi1mdW5jdGlvbiB0ZXN0QWxsVHlwZXNDYWxsKCkgewotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKLSAgICAgICAgZm9yIChsZXQgdGVzdENhc2VJ
bnB1dCBvZiB2YWxpZElucHV0VHlwZWRUZXN0Q2FzZXMpIHsKLSAgICAgICAgICAgIGxldCBvdXRw
dXQgPSBvcGFxdWVBbGxUeXBlc0Zsb29yKHRlc3RDYXNlSW5wdXRbMF0pOwotICAgICAgICAgICAg
aWYgKCFpc0lkZW50aWNhbChvdXRwdXQsIHRlc3RDYXNlSW5wdXRbMV0pKQotICAgICAgICAgICAg
ICAgIHRocm93ICJGYWlsZWQgdGVzdEFsbFR5cGVzQ2FsbCBmb3IgaW5wdXQgIiArIHRlc3RDYXNl
SW5wdXRbMF0gKyAiIGV4cGVjdGVkICIgKyB0ZXN0Q2FzZUlucHV0WzFdICsgIiBnb3QgIiArIG91
dHB1dDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFx
dWVBbGxUeXBlc0Zsb29yKSA+IDMpCi0gICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBkZXRl
Y3RlZCBmbG9vcigpIHdhcyBwb2x5bW9ycGhpYyBhbmQgZ2VuZXJhdGVkIGEgZ2VuZXJpYyB2ZXJz
aW9uLiI7Ci19Ci10ZXN0QWxsVHlwZXNDYWxsKCk7Ci0KLQotLy8gUG9seW1vcnBoaWMgaW5wdXQg
YnV0IG5lZ2F0aXZlIHplcm8gaXMgbm90IG9ic2VydmFibGUuCi1mdW5jdGlvbiBvcGFxdWVBbGxU
eXBlc0Zsb29yV2l0aG91dE5lZ2F0aXZlWmVybyhhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRo
LmZsb29yKGFyZ3VtZW50KSArIDA7Ci19Ci1ub0lubGluZShvcGFxdWVBbGxUeXBlc0Zsb29yV2l0
aG91dE5lZ2F0aXZlWmVybyk7Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUFsbFR5cGVzRmxvb3JX
aXRob3V0TmVnYXRpdmVaZXJvKTsKLQotZnVuY3Rpb24gdGVzdEFsbFR5cGVzV2l0aG91dE5lZ2F0
aXZlWmVyb0NhbGwoKSB7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgewotICAg
ICAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUeXBlZFRlc3RDYXNlcykg
ewotICAgICAgICAgICAgbGV0IG91dHB1dCA9IG9wYXF1ZUFsbFR5cGVzRmxvb3JXaXRob3V0TmVn
YXRpdmVaZXJvKHRlc3RDYXNlSW5wdXRbMF0pOwotICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNh
bChvdXRwdXQsIHRlc3RDYXNlSW5wdXRbMV0gKyAwKSkKLSAgICAgICAgICAgICAgICB0aHJvdyAi
RmFpbGVkIHRlc3RBbGxUeXBlc1dpdGhvdXROZWdhdGl2ZVplcm9DYWxsIGZvciBpbnB1dCAiICsg
dGVzdENhc2VJbnB1dFswXSArICIgZXhwZWN0ZWQgIiArIHRlc3RDYXNlSW5wdXRbMV0gKyAiIGdv
dCAiICsgb3V0cHV0OwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChudW1iZXJPZkRGR0NvbXBp
bGVzKG9wYXF1ZUFsbFR5cGVzRmxvb3IpID4gMykKLSAgICAgICAgdGhyb3cgIldlIHNob3VsZCBo
YXZlIGRldGVjdGVkIGZsb29yKCkgd2FzIHBvbHltb3JwaGljIGFuZCBnZW5lcmF0ZWQgYSBnZW5l
cmljIHZlcnNpb24uIjsKLX0KLXRlc3RBbGxUeXBlc1dpdGhvdXROZWdhdGl2ZVplcm9DYWxsKCk7
Ci0KLQotLy8gVGVzdCBNYXRoLmZsb29yKCkgb24gYSBjb21wbGV0ZWx5IHR5cGVkIGlucHV0LiBF
dmVyeSBjYWxsIHNlZSBvbmx5IG9uZSB0eXBlLgotZnVuY3Rpb24gdGVzdFNpbmdsZVR5cGVDYWxs
KCkgewotICAgIGZvciAobGV0IHRlc3RDYXNlSW5wdXQgb2YgdmFsaWRJbnB1dFRlc3RDYXNlcykg
ewotICAgICAgICBldmFsKGAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG9wYXF1ZUZsb29yKGFyZ3Vt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoYXJndW1lbnQpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgbm9JbmxpbmUob3BhcXVlRmxvb3IpOwotICAgICAgICAg
ICAgbm9PU1JFeGl0RnV6emluZyhvcGFxdWVGbG9vcik7Ci0KLSAgICAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2Fs
KG9wYXF1ZUZsb29yKCR7dGVzdENhc2VJbnB1dFswXX0pLCAke3Rlc3RDYXNlSW5wdXRbMV19KSkg
ewotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVUeXBlQ2FsbCgp
IjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobnVt
YmVyT2ZERkdDb21waWxlcyhvcGFxdWVGbG9vcikgPiAxKQotICAgICAgICAgICAgICAgIHRocm93
ICJXZSBzaG91bGQgaGF2ZSBjb21waWxlZCBhIHNpbmdsZSBmbG9vciBmb3IgdGhlIGV4cGVjdGVk
IHR5cGUuIjsKLSAgICAgICAgYCk7Ci0gICAgfQotfQotdGVzdFNpbmdsZVR5cGVDYWxsKCk7Ci0K
LQotLy8gVGVzdCBNYXRoLmZsb29yKCkgb24gYSBjb21wbGV0ZWx5IHR5cGVkIGlucHV0LCBidXQg
d2l0aG91dCBuZWdhdGl2ZSB6ZXJvLgotZnVuY3Rpb24gdGVzdFNpbmdsZVR5cGVXaXRob3V0TmVn
YXRpdmVaZXJvQ2FsbCgpIHsKLSAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5w
dXRUZXN0Q2FzZXMpIHsKLSAgICAgICAgZXZhbChgCi0gICAgICAgICAgICBmdW5jdGlvbiBvcGFx
dWVGbG9vcihhcmd1bWVudCkgewotICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKGFy
Z3VtZW50KSArIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBub0lubGluZShvcGFxdWVG
bG9vcik7Ci0gICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUZsb29yKTsKLQotICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewotICAgICAgICAgICAgICAg
IGlmICghaXNJZGVudGljYWwob3BhcXVlRmxvb3IoJHt0ZXN0Q2FzZUlucHV0WzBdfSksICR7dGVz
dENhc2VJbnB1dFsxXX0gKyAwKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVk
IHRlc3RTaW5nbGVUeXBlV2l0aG91dE5lZ2F0aXZlWmVyb0NhbGwoKSI7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMo
b3BhcXVlRmxvb3IpID4gMSkKLSAgICAgICAgICAgICAgICB0aHJvdyAiV2Ugc2hvdWxkIGhhdmUg
Y29tcGlsZWQgYSBzaW5nbGUgZmxvb3IgZm9yIHRoZSBleHBlY3RlZCB0eXBlLiI7Ci0gICAgICAg
IGApOwotICAgIH0KLX0KLXRlc3RTaW5nbGVUeXBlV2l0aG91dE5lZ2F0aXZlWmVyb0NhbGwoKTsK
LQotCi0vLyBUZXN0IE1hdGguZmxvb3IoKSBvbiBjb25zdGFudHMKLWZ1bmN0aW9uIHRlc3RDb25z
dGFudCgpIHsKLSAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2Fz
ZXMpIHsKLSAgICAgICAgZXZhbChgCi0gICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVGbG9vck9u
Q29uc3RhbnQoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoJHt0ZXN0Q2Fz
ZUlucHV0WzBdfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBub0lubGluZShvcGFxdWVG
bG9vck9uQ29uc3RhbnQpOwotICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhvcGFxdWVGbG9v
ck9uQ29uc3RhbnQpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVGbG9vck9uQ29uc3Rh
bnQoKSwgJHt0ZXN0Q2FzZUlucHV0WzFdfSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cg
IkZhaWxlZCB0ZXN0Q29uc3RhbnQoKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlRmxvb3JPbkNvbnN0
YW50KSA+IDEpCi0gICAgICAgICAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGNvbXBpbGVk
IGEgc2luZ2xlIGZsb29yIGZvciB0aGUgZXhwZWN0ZWQgdHlwZS4iOwotICAgICAgICBgKTsKLSAg
ICB9Ci19Ci10ZXN0Q29uc3RhbnQoKTsKLQotCi0vLyBWZXJpZnkgd2UgY2FsbCB2YWx1ZU9mKCkg
ZXhhY3RseSBvbmNlIHBlciBjYWxsLgotZnVuY3Rpb24gb3BhcXVlRmxvb3JGb3JTaWRlRWZmZWN0
cyhhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRoLmZsb29yKGFyZ3VtZW50KTsKLX0KLW5vSW5s
aW5lKG9wYXF1ZUZsb29yRm9yU2lkZUVmZmVjdHMpOwotbm9PU1JFeGl0RnV6emluZyhvcGFxdWVG
bG9vckZvclNpZGVFZmZlY3RzKTsKLQotZnVuY3Rpb24gdGVzdFNpZGVFZmZlY3QoKSB7Ci0gICAg
bGV0IHRlc3RPYmplY3QgPSB7Ci0gICAgICAgIGNvdW50ZXI6IDAsCi0gICAgICAgIHZhbHVlT2Y6
IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9Ci0gICAgfTsKLSAgICBs
ZXQgZmxvb3IxNiA9IE1hdGguZmxvb3IoMTYpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKLSAgICAgICAgaWYgKG9wYXF1ZUZsb29yRm9yU2lkZUVmZmVjdHModGVzdE9iamVj
dCkgIT09IGZsb29yMTYpCi0gICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiB0
ZXN0U2lkZUVmZmVjdCgpIjsKLSAgICB9Ci0gICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0g
MWU0KQotICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaWRlRWZmZWN0KCkiOwotICAgIGlmIChu
dW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUZsb29yRm9yU2lkZUVmZmVjdHMpID4gMSkKLSAgICAg
ICAgdGhyb3cgIm9wYXF1ZUZsb29yRm9yU2lkZUVmZmVjdHMoKSBpcyBwcmVkaWN0YWJsZSwgaXQg
c2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOwotfQotdGVzdFNpZGVFZmZlY3QoKTsKLQot
Ci0vLyBWZXJpZnkgZmxvb3IoKSBpcyBub3Qgc3ViamVjdCB0byBDU0UgaWYgdGhlIGFyZ3VtZW50
IGhhcyBzaWRlIGVmZmVjdHMuCi1mdW5jdGlvbiBvcGFxdWVGbG9vckZvckNTRShhcmd1bWVudCkg
ewotICAgIHJldHVybiBNYXRoLmZsb29yKGFyZ3VtZW50KSArIE1hdGguZmxvb3IoYXJndW1lbnQp
ICsgTWF0aC5mbG9vcihhcmd1bWVudCk7Ci19Ci1ub0lubGluZShvcGFxdWVGbG9vckZvckNTRSk7
Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUZsb29yRm9yQ1NFKTsKLQotZnVuY3Rpb24gdGVzdENT
RSgpIHsKLSAgICBsZXQgdGVzdE9iamVjdCA9IHsKLSAgICAgICAgY291bnRlcjogMCwKLSAgICAg
ICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7ICsrdGhpcy5jb3VudGVyOyByZXR1cm4gMTY7IH0KLSAg
ICB9OwotICAgIGxldCBmbG9vcjE2ID0gTWF0aC5mbG9vcigxNik7Ci0gICAgbGV0IHRocmVlRmxv
b3IxNiA9IGZsb29yMTYgKyBmbG9vcjE2ICsgZmxvb3IxNjsKLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKSB7Ci0gICAgICAgIGlmIChvcGFxdWVGbG9vckZvckNTRSh0ZXN0T2JqZWN0
KSAhPT0gdGhyZWVGbG9vcjE2KQotICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQg
aW4gdGVzdENTRSgpIjsKLSAgICB9Ci0gICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0gM2U0
KQotICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RDU0UoKSI7Ci0gICAgaWYgKG51bWJlck9mREZH
Q29tcGlsZXMob3BhcXVlRmxvb3JGb3JDU0UpID4gMSkKLSAgICAgICAgdGhyb3cgIm9wYXF1ZUZs
b29yRm9yQ1NFKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9u
Y2UuIjsKLX0KLXRlc3RDU0UoKTsKLQotCi0vLyBWZXJpZnkgZmxvb3IoKSBpcyBub3Qgc3ViamVj
dCB0byBEQ0UgaWYgdGhlIGFyZ3VtZW50IGhhcyBzaWRlIGVmZmVjdHMuCi1mdW5jdGlvbiBvcGFx
dWVGbG9vckZvckRDRShhcmd1bWVudCkgewotICAgIE1hdGguZmxvb3IoYXJndW1lbnQpOwotfQot
bm9JbmxpbmUob3BhcXVlRmxvb3JGb3JEQ0UpOwotbm9PU1JFeGl0RnV6emluZyhvcGFxdWVGbG9v
ckZvckRDRSk7Ci0KLWZ1bmN0aW9uIHRlc3REQ0UoKSB7Ci0gICAgbGV0IHRlc3RPYmplY3QgPSB7
Ci0gICAgICAgIGNvdW50ZXI6IDAsCi0gICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3Ro
aXMuY291bnRlcjsgcmV0dXJuIDE2OyB9Ci0gICAgfTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDFlNDsgKytpKSB7Ci0gICAgICAgIG9wYXF1ZUZsb29yRm9yRENFKHRlc3RPYmplY3QpOwotICAg
IH0KLSAgICBpZiAodGVzdE9iamVjdC5jb3VudGVyICE9PSAxZTQpCi0gICAgICAgIHRocm93ICJG
YWlsZWQgdGVzdERDRSgpIjsKLSAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVGbG9v
ckZvckRDRSkgPiAxKQotICAgICAgICB0aHJvdyAib3BhcXVlRmxvb3JGb3JEQ0UoKSBpcyBwcmVk
aWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOwotfQotdGVzdERDRSgp
OwotCi0KLS8vIFRlc3QgZXhjZXB0aW9ucyBpbiB0aGUgYXJndW1lbnQuCi1mdW5jdGlvbiB0ZXN0
RXhjZXB0aW9uKCkgewotICAgIGxldCBjb3VudGVyID0gMDsKLSAgICBmdW5jdGlvbiBvcGFxdWVG
bG9vcldpdGhFeGNlcHRpb24oYXJndW1lbnQpIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IE1hdGgu
Zmxvb3IoYXJndW1lbnQpOwotICAgICAgICArK2NvdW50ZXI7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotICAgIG5vSW5saW5lKG9wYXF1ZUZsb29yV2l0aEV4Y2VwdGlvbik7Ci0KLSAg
ICBsZXQgdGVzdE9iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyAgcmV0dXJuIDY0OyB9IH07Ci0g
ICAgbGV0IGZsb29yNjQgPSBNYXRoLmZsb29yKDY0KTsKLQotICAgIC8vIFdhcm0gdXAgd2l0aG91
dCBleGNlcHRpb24uCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgewotICAgICAg
ICBpZiAob3BhcXVlRmxvb3JXaXRoRXhjZXB0aW9uKHRlc3RPYmplY3QpICE9PSBmbG9vcjY0KQot
ICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gb3BhcXVlRmxvb3JXaXRoRXhj
ZXB0aW9uKCkiOwotICAgIH0KLQotICAgIGxldCB0ZXN0VGhyb3dPYmplY3QgPSB7IHZhbHVlT2Y6
ICgpID0+IHsgdGhyb3cgdGVzdE9iamVjdDsgcmV0dXJuIDY0OyB9IH07Ci0KLSAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlMjsgKytpKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAo
b3BhcXVlRmxvb3JXaXRoRXhjZXB0aW9uKHRlc3RUaHJvd09iamVjdCkgIT09IDgpCi0gICAgICAg
ICAgICAgICAgdGhyb3cgIlRoaXMgY29kZSBzaG91bGQgbm90IGJlIHJlYWNoZWQhISI7Ci0gICAg
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGlmIChlICE9PSB0ZXN0T2JqZWN0KSB7Ci0g
ICAgICAgICAgICAgICAgdGhyb3cgIldyb25nIG9iamVjdCB0aHJvd24gZnJvbSBvcGFxdWVGbG9v
cldpdGhFeGNlcHRpb24uIgotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKGNvdW50ZXIgIT09IDFlMykgewotICAgICAgICB0aHJvdyAiSW52YWxpZCBjb3VudCBpbiB0
ZXN0RXhjZXB0aW9uKCkiOwotICAgIH0KLX0KLXRlc3RFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2FyaXRoLXJvdW5kLW9uLXZhcmlvdXMtdHlwZXMuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9hcml0aC1yb3VuZC1vbi12YXJpb3VzLXR5cGVzLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzNzE5MjFiMzYzNzYyYmJkMjhhYjg1MWFjMzUwMTEwNzUyNDY4ZTRhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2FyaXRoLXJvdW5kLW9uLXZhcmlvdXMtdHlwZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwy
OTUgKzAsMCBAQAotInVzZSBzdHJpY3QiOwotCi1sZXQgdmFsaWRJbnB1dFRlc3RDYXNlcyA9IFsK
LSAgICAvLyBpbnB1dCBhcyBzdHJpbmcsIGV4cGVjdGVkIHJlc3VsdCBhcyBzdHJpbmcuCi0gICAg
WyJ1bmRlZmluZWQiLCAiTmFOIl0sCi0gICAgWyJudWxsIiwgIjAiXSwKLSAgICBbIjAiLCAiMCJd
LAotICAgIFsiLTAuIiwgIi0wIl0sCi0gICAgWyIwLjUiLCAiMSJdLAotICAgIFsiLTAuNSIsICIt
MCJdLAotICAgIFsiNCIsICI0Il0sCi0gICAgWyI0Mi4xIiwgIjQyIl0sCi0gICAgWyI0Mi41Iiwg
IjQzIl0sCi0gICAgWyI0Mi45IiwgIjQzIl0sCi0gICAgWyItNDIuMSIsICItNDIiXSwKLSAgICBb
Ii00Mi41IiwgIi00MiJdLAotICAgIFsiLTQyLjkiLCAiLTQzIl0sCi0gICAgWyJNYXRoLlBJIiwg
IjMiXSwKLSAgICBbIkluZmluaXR5IiwgIkluZmluaXR5Il0sCi0gICAgWyItSW5maW5pdHkiLCAi
LUluZmluaXR5Il0sCi0gICAgWyJOYU4iLCAiTmFOIl0sCi0gICAgWyJcIldlYktpdFwiIiwgIk5h
TiJdLAotICAgIFsiXCI0XCIiLCAiNCJdLAotICAgIFsiXCI0Mi41XCIiLCAiNDMiXSwKLSAgICBb
InsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gNDsgfSB9IiwgIjQiXSwKLSAgICBbInsgdmFsdWVP
ZjogKCkgPT4geyByZXR1cm4gMDsgfSB9IiwgIjAiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4g
eyByZXR1cm4gLTA7IH0gfSIsICItMCJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVy
biAwLjU7IH0gfSIsICIxIl0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuIC0wLjU7
IH0gfSIsICItMCJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiBOdW1iZXIuTUlO
X1NBRkVfSU5URUdFUjsgfSB9IiwgIi05MDA3MTk5MjU0NzQwOTkxIl0sCi0gICAgWyJ7IHZhbHVl
T2Y6ICgpID0+IHsgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOyB9IH0iLCAiOTAwNzE5
OTI1NDc0MDk5MSJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAweDgwMDAwMDAw
fDA7IH0gfSIsICItMjE0NzQ4MzY0OCJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVy
biAweDdmZmZmZmZmfDA7IH0gfSIsICIyMTQ3NDgzNjQ3Il0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgp
ID0+IHsgcmV0dXJuICgweDgwMDAwMDAwfDApIC0gMC41OyB9IH0iLCAiLTIxNDc0ODM2NDgiXSwK
LSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gKDB4N2ZmZmZmZmZ8MCkgKyAwLjU7IH0g
fSIsICIyMTQ3NDgzNjQ4Il0sCi1dOwotCi1sZXQgdmFsaWRJbnB1dFR5cGVkVGVzdENhc2VzID0g
dmFsaWRJbnB1dFRlc3RDYXNlcy5tYXAoKGVsZW1lbnQpID0+IHsgcmV0dXJuIFtldmFsKCIoIiAr
IGVsZW1lbnRbMF0gKyAiKSIpLCBldmFsKGVsZW1lbnRbMV0pXSB9KTsKLQotZnVuY3Rpb24gaXNJ
ZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKLXsKLSAgICBpZiAoZXhwZWN0ZWQgPT09IGV4cGVj
dGVkKSB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWV4cGVjdGVkICYmICgxIC8gZXhwZWN0ZWQpICE9PSAo
MSAvIHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQgIT09IHJlc3VsdDsKLX0KLQotCi0vLyBU
ZXN0IE1hdGgucm91bmQoKSB3aXRob3V0IGFyZ3VtZW50cy4KLWZ1bmN0aW9uIG9wYXF1ZVJvdW5k
Tm9Bcmd1bWVudCgpIHsKLSAgICByZXR1cm4gTWF0aC5yb3VuZCgpOwotfQotbm9JbmxpbmUob3Bh
cXVlUm91bmROb0FyZ3VtZW50KTsKLW5vT1NSRXhpdEZ1enppbmcob3BhcXVlUm91bmROb0FyZ3Vt
ZW50KTsKLQotZnVuY3Rpb24gdGVzdE5vQXJndW1lbnQoKSB7Ci0gICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgewotICAgICAgICBsZXQgb3V0cHV0ID0gb3BhcXVlUm91bmROb0FyZ3Vt
ZW50KCk7Ci0gICAgICAgIGlmICghaXNJZGVudGljYWwob3V0cHV0LCBOYU4pKSB7Ci0gICAgICAg
ICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZVJvdW5kTm9Bcmd1bWVudCI7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlUm91bmROb0FyZ3VtZW50KSA+
IDEpCi0gICAgICAgIHRocm93ICJUaGUgY2FsbCB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgbmV2
ZXIgZXhpdC4iOwotfQotdGVzdE5vQXJndW1lbnQoKTsKLQotCi0vLyBUZXN0IE1hdGgucm91bmQo
KSB3aXRoIGEgdmVyeSBwb2x5bW9ycGhpYyBpbnB1dC4gQWxsIHRlc3QgY2FzZXMgYXJlIHNlZW4g
YXQgZWFjaCBpdGVyYXRpb24uCi1mdW5jdGlvbiBvcGFxdWVBbGxUeXBlc1JvdW5kKGFyZ3VtZW50
KSB7Ci0gICAgcmV0dXJuIE1hdGgucm91bmQoYXJndW1lbnQpOwotfQotbm9JbmxpbmUob3BhcXVl
QWxsVHlwZXNSb3VuZCk7Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUFsbFR5cGVzUm91bmQpOwot
Ci1mdW5jdGlvbiB0ZXN0QWxsVHlwZXNDYWxsKCkgewotICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWUzOyArK2kpIHsKLSAgICAgICAgZm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxpZElucHV0
VHlwZWRUZXN0Q2FzZXMpIHsKLSAgICAgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVBbGxUeXBl
c1JvdW5kKHRlc3RDYXNlSW5wdXRbMF0pOwotICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChv
dXRwdXQsIHRlc3RDYXNlSW5wdXRbMV0pKQotICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
dGVzdEFsbFR5cGVzQ2FsbCBmb3IgaW5wdXQgIiArIHRlc3RDYXNlSW5wdXRbMF0gKyAiIGV4cGVj
dGVkICIgKyB0ZXN0Q2FzZUlucHV0WzFdICsgIiBnb3QgIiArIG91dHB1dDsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVBbGxUeXBlc1JvdW5kKSA+
IDMpCi0gICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBkZXRlY3RlZCByb3VuZCgpIHdhcyBw
b2x5bW9ycGhpYyBhbmQgZ2VuZXJhdGVkIGEgZ2VuZXJpYyB2ZXJzaW9uLiI7Ci19Ci10ZXN0QWxs
VHlwZXNDYWxsKCk7Ci0KLQotLy8gUG9seW1vcnBoaWMgaW5wdXQgYnV0IG5lZ2F0aXZlIHplcm8g
aXMgbm90IG9ic2VydmFibGUuCi1mdW5jdGlvbiBvcGFxdWVBbGxUeXBlc1JvdW5kV2l0aG91dE5l
Z2F0aXZlWmVybyhhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRoLnJvdW5kKGFyZ3VtZW50KSAr
IDA7Ci19Ci1ub0lubGluZShvcGFxdWVBbGxUeXBlc1JvdW5kV2l0aG91dE5lZ2F0aXZlWmVybyk7
Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUFsbFR5cGVzUm91bmRXaXRob3V0TmVnYXRpdmVaZXJv
KTsKLQotZnVuY3Rpb24gdGVzdEFsbFR5cGVzV2l0aG91dE5lZ2F0aXZlWmVyb0NhbGwoKSB7Ci0g
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgewotICAgICAgICBmb3IgKGxldCB0ZXN0
Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUeXBlZFRlc3RDYXNlcykgewotICAgICAgICAgICAgbGV0
IG91dHB1dCA9IG9wYXF1ZUFsbFR5cGVzUm91bmRXaXRob3V0TmVnYXRpdmVaZXJvKHRlc3RDYXNl
SW5wdXRbMF0pOwotICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvdXRwdXQsIHRlc3RDYXNl
SW5wdXRbMV0gKyAwKSkKLSAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RBbGxUeXBl
c1dpdGhvdXROZWdhdGl2ZVplcm9DYWxsIGZvciBpbnB1dCAiICsgdGVzdENhc2VJbnB1dFswXSAr
ICIgZXhwZWN0ZWQgIiArIHRlc3RDYXNlSW5wdXRbMV0gKyAiIGdvdCAiICsgb3V0cHV0OwotICAg
ICAgICB9Ci0gICAgfQotICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUFsbFR5cGVz
Um91bmQpID4gMykKLSAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGRldGVjdGVkIHJvdW5k
KCkgd2FzIHBvbHltb3JwaGljIGFuZCBnZW5lcmF0ZWQgYSBnZW5lcmljIHZlcnNpb24uIjsKLX0K
LXRlc3RBbGxUeXBlc1dpdGhvdXROZWdhdGl2ZVplcm9DYWxsKCk7Ci0KLQotLy8gVGVzdCBNYXRo
LnJvdW5kKCkgb24gYSBjb21wbGV0ZWx5IHR5cGVkIGlucHV0LiBFdmVyeSBjYWxsIHNlZSBvbmx5
IG9uZSB0eXBlLgotZnVuY3Rpb24gdGVzdFNpbmdsZVR5cGVDYWxsKCkgewotICAgIGZvciAobGV0
IHRlc3RDYXNlSW5wdXQgb2YgdmFsaWRJbnB1dFRlc3RDYXNlcykgewotICAgICAgICBldmFsKGAK
LSAgICAgICAgICAgIGZ1bmN0aW9uIG9wYXF1ZVJvdW5kKGFyZ3VtZW50KSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIE1hdGgucm91bmQoYXJndW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgbm9JbmxpbmUob3BhcXVlUm91bmQpOwotICAgICAgICAgICAgbm9PU1JFeGl0RnV6emlu
ZyhvcGFxdWVSb3VuZCk7Ci0KLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKG9wYXF1ZVJvdW5kKCR7dGVz
dENhc2VJbnB1dFswXX0pLCAke3Rlc3RDYXNlSW5wdXRbMV19KSkgewotICAgICAgICAgICAgICAg
ICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVUeXBlQ2FsbCgpIjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhv
cGFxdWVSb3VuZCkgPiAxKQotICAgICAgICAgICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBj
b21waWxlZCBhIHNpbmdsZSByb3VuZCBmb3IgdGhlIGV4cGVjdGVkIHR5cGUuIjsKLSAgICAgICAg
YCk7Ci0gICAgfQotfQotdGVzdFNpbmdsZVR5cGVDYWxsKCk7Ci0KLQotLy8gVGVzdCBNYXRoLnJv
dW5kKCkgb24gYSBjb21wbGV0ZWx5IHR5cGVkIGlucHV0LCBidXQgd2l0aG91dCBuZWdhdGl2ZSB6
ZXJvLgotZnVuY3Rpb24gdGVzdFNpbmdsZVR5cGVXaXRob3V0TmVnYXRpdmVaZXJvQ2FsbCgpIHsK
LSAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKLSAg
ICAgICAgZXZhbChgCi0gICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVSb3VuZChhcmd1bWVudCkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKGFyZ3VtZW50KSArIDA7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBub0lubGluZShvcGFxdWVSb3VuZCk7Ci0gICAgICAgICAg
ICBub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVJvdW5kKTsKLQotICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwo
b3BhcXVlUm91bmQoJHt0ZXN0Q2FzZUlucHV0WzBdfSksICR7dGVzdENhc2VJbnB1dFsxXX0gKyAw
KSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVUeXBlV2l0
aG91dE5lZ2F0aXZlWmVyb0NhbGwoKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlUm91bmQpID4gMSkK
LSAgICAgICAgICAgICAgICB0aHJvdyAiV2Ugc2hvdWxkIGhhdmUgY29tcGlsZWQgYSBzaW5nbGUg
cm91bmQgZm9yIHRoZSBleHBlY3RlZCB0eXBlLiI7Ci0gICAgICAgIGApOwotICAgIH0KLX0KLXRl
c3RTaW5nbGVUeXBlV2l0aG91dE5lZ2F0aXZlWmVyb0NhbGwoKTsKLQotCi0vLyBUZXN0IE1hdGgu
cm91bmQoKSBvbiBjb25zdGFudHMKLWZ1bmN0aW9uIHRlc3RDb25zdGFudCgpIHsKLSAgICBmb3Ig
KGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKLSAgICAgICAgZXZh
bChgCi0gICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVSb3VuZE9uQ29uc3RhbnQoKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoJHt0ZXN0Q2FzZUlucHV0WzBdfSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBub0lubGluZShvcGFxdWVSb3VuZE9uQ29uc3RhbnQpOwot
ICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhvcGFxdWVSb3VuZE9uQ29uc3RhbnQpOwotCi0g
ICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVSb3VuZE9uQ29uc3RhbnQoKSwgJHt0ZXN0Q2FzZUlu
cHV0WzFdfSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0Q29uc3Rh
bnQoKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlUm91bmRPbkNvbnN0YW50KSA+IDEpCi0gICAgICAg
ICAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGNvbXBpbGVkIGEgc2luZ2xlIHJvdW5kIGZv
ciB0aGUgZXhwZWN0ZWQgdHlwZS4iOwotICAgICAgICBgKTsKLSAgICB9Ci19Ci10ZXN0Q29uc3Rh
bnQoKTsKLQotCi0vLyBWZXJpZnkgd2UgY2FsbCB2YWx1ZU9mKCkgZXhhY3RseSBvbmNlIHBlciBj
YWxsLgotZnVuY3Rpb24gb3BhcXVlUm91bmRGb3JTaWRlRWZmZWN0cyhhcmd1bWVudCkgewotICAg
IHJldHVybiBNYXRoLnJvdW5kKGFyZ3VtZW50KTsKLX0KLW5vSW5saW5lKG9wYXF1ZVJvdW5kRm9y
U2lkZUVmZmVjdHMpOwotbm9PU1JFeGl0RnV6emluZyhvcGFxdWVSb3VuZEZvclNpZGVFZmZlY3Rz
KTsKLQotZnVuY3Rpb24gdGVzdFNpZGVFZmZlY3QoKSB7Ci0gICAgbGV0IHRlc3RPYmplY3QgPSB7
Ci0gICAgICAgIGNvdW50ZXI6IDAsCi0gICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3Ro
aXMuY291bnRlcjsgcmV0dXJuIDE2OyB9Ci0gICAgfTsKLSAgICBsZXQgcm91bmQxNiA9IE1hdGgu
cm91bmQoMTYpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKLSAgICAgICAg
aWYgKG9wYXF1ZVJvdW5kRm9yU2lkZUVmZmVjdHModGVzdE9iamVjdCkgIT09IHJvdW5kMTYpCi0g
ICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiB0ZXN0U2lkZUVmZmVjdCgpIjsK
LSAgICB9Ci0gICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0gMWU0KQotICAgICAgICB0aHJv
dyAiRmFpbGVkIHRlc3RTaWRlRWZmZWN0KCkiOwotICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVz
KG9wYXF1ZVJvdW5kRm9yU2lkZUVmZmVjdHMpID4gMSkKLSAgICAgICAgdGhyb3cgIm9wYXF1ZVJv
dW5kRm9yU2lkZUVmZmVjdHMoKSBpcyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29t
cGlsZWQgb25jZS4iOwotfQotdGVzdFNpZGVFZmZlY3QoKTsKLQotCi0vLyBWZXJpZnkgcm91bmQo
KSBpcyBub3Qgc3ViamVjdCB0byBDU0UgaWYgdGhlIGFyZ3VtZW50IGhhcyBzaWRlIGVmZmVjdHMu
Ci1mdW5jdGlvbiBvcGFxdWVSb3VuZEZvckNTRShhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRo
LnJvdW5kKGFyZ3VtZW50KSArIE1hdGgucm91bmQoYXJndW1lbnQpICsgTWF0aC5yb3VuZChhcmd1
bWVudCk7Ci19Ci1ub0lubGluZShvcGFxdWVSb3VuZEZvckNTRSk7Ci1ub09TUkV4aXRGdXp6aW5n
KG9wYXF1ZVJvdW5kRm9yQ1NFKTsKLQotZnVuY3Rpb24gdGVzdENTRSgpIHsKLSAgICBsZXQgdGVz
dE9iamVjdCA9IHsKLSAgICAgICAgY291bnRlcjogMCwKLSAgICAgICAgdmFsdWVPZjogZnVuY3Rp
b24oKSB7ICsrdGhpcy5jb3VudGVyOyByZXR1cm4gMTY7IH0KLSAgICB9OwotICAgIGxldCByb3Vu
ZDE2ID0gTWF0aC5yb3VuZCgxNik7Ci0gICAgbGV0IHRocmVlUm91bmQxNiA9IHJvdW5kMTYgKyBy
b3VuZDE2ICsgcm91bmQxNjsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0g
ICAgICAgIGlmIChvcGFxdWVSb3VuZEZvckNTRSh0ZXN0T2JqZWN0KSAhPT0gdGhyZWVSb3VuZDE2
KQotICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gdGVzdENTRSgpIjsKLSAg
ICB9Ci0gICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0gM2U0KQotICAgICAgICB0aHJvdyAi
RmFpbGVkIHRlc3RDU0UoKSI7Ci0gICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlUm91
bmRGb3JDU0UpID4gMSkKLSAgICAgICAgdGhyb3cgIm9wYXF1ZVJvdW5kRm9yQ1NFKCkgaXMgcHJl
ZGljdGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9uY2UuIjsKLX0KLXRlc3RDU0Uo
KTsKLQotCi0vLyBWZXJpZnkgcm91bmQoKSBpcyBub3Qgc3ViamVjdCB0byBEQ0UgaWYgdGhlIGFy
Z3VtZW50IGhhcyBzaWRlIGVmZmVjdHMuCi1mdW5jdGlvbiBvcGFxdWVSb3VuZEZvckRDRShhcmd1
bWVudCkgewotICAgIE1hdGgucm91bmQoYXJndW1lbnQpOwotfQotbm9JbmxpbmUob3BhcXVlUm91
bmRGb3JEQ0UpOwotbm9PU1JFeGl0RnV6emluZyhvcGFxdWVSb3VuZEZvckRDRSk7Ci0KLWZ1bmN0
aW9uIHRlc3REQ0UoKSB7Ci0gICAgbGV0IHRlc3RPYmplY3QgPSB7Ci0gICAgICAgIGNvdW50ZXI6
IDAsCi0gICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJu
IDE2OyB9Ci0gICAgfTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAg
ICAgIG9wYXF1ZVJvdW5kRm9yRENFKHRlc3RPYmplY3QpOwotICAgIH0KLSAgICBpZiAodGVzdE9i
amVjdC5jb3VudGVyICE9PSAxZTQpCi0gICAgICAgIHRocm93ICJGYWlsZWQgdGVzdERDRSgpIjsK
LSAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVSb3VuZEZvckRDRSkgPiAxKQotICAg
ICAgICB0aHJvdyAib3BhcXVlUm91bmRGb3JEQ0UoKSBpcyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxk
IG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOwotfQotdGVzdERDRSgpOwotCi0KLS8vIFRlc3QgZXhj
ZXB0aW9ucyBpbiB0aGUgYXJndW1lbnQuCi1mdW5jdGlvbiB0ZXN0RXhjZXB0aW9uKCkgewotICAg
IGxldCBjb3VudGVyID0gMDsKLSAgICBmdW5jdGlvbiBvcGFxdWVSb3VuZFdpdGhFeGNlcHRpb24o
YXJndW1lbnQpIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IE1hdGgucm91bmQoYXJndW1lbnQpOwot
ICAgICAgICArK2NvdW50ZXI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIG5v
SW5saW5lKG9wYXF1ZVJvdW5kV2l0aEV4Y2VwdGlvbik7Ci0KLSAgICBsZXQgdGVzdE9iamVjdCA9
IHsgdmFsdWVPZjogKCkgPT4geyAgcmV0dXJuIDY0OyB9IH07Ci0gICAgbGV0IHJvdW5kNjQgPSBN
YXRoLnJvdW5kKDY0KTsKLQotICAgIC8vIFdhcm0gdXAgd2l0aG91dCBleGNlcHRpb24uCi0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgewotICAgICAgICBpZiAob3BhcXVlUm91bmRX
aXRoRXhjZXB0aW9uKHRlc3RPYmplY3QpICE9PSByb3VuZDY0KQotICAgICAgICAgICAgdGhyb3cg
IkluY29ycmVjdCByZXN1bHQgaW4gb3BhcXVlUm91bmRXaXRoRXhjZXB0aW9uKCkiOwotICAgIH0K
LQotICAgIGxldCB0ZXN0VGhyb3dPYmplY3QgPSB7IHZhbHVlT2Y6ICgpID0+IHsgdGhyb3cgdGVz
dE9iamVjdDsgcmV0dXJuIDY0OyB9IH07Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsg
KytpKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAob3BhcXVlUm91bmRXaXRoRXhj
ZXB0aW9uKHRlc3RUaHJvd09iamVjdCkgIT09IDgpCi0gICAgICAgICAgICAgICAgdGhyb3cgIlRo
aXMgY29kZSBzaG91bGQgbm90IGJlIHJlYWNoZWQhISI7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgIGlmIChlICE9PSB0ZXN0T2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3cgIldyb25nIG9iamVjdCB0aHJvd24gZnJvbSBvcGFxdWVSb3VuZFdpdGhFeGNlcHRpb24uIgot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNvdW50ZXIgIT09IDFl
MykgewotICAgICAgICB0aHJvdyAiSW52YWxpZCBjb3VudCBpbiB0ZXN0RXhjZXB0aW9uKCkiOwot
ICAgIH0KLX0KLXRlc3RFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fy
aXRoLXRydW5jLW9uLXZhcmlvdXMtdHlwZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC10cnVu
Yy1vbi12YXJpb3VzLXR5cGVzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGM1
MzViNjE5ZjhlZDMyNGVmYjk3ZDE3MDVlN2Q4ZjA1MjA2NGMyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL2FyaXRoLXRydW5jLW9u
LXZhcmlvdXMtdHlwZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotInVzZSBz
dHJpY3QiOwotCi1sZXQgdmFsaWRJbnB1dFRlc3RDYXNlcyA9IFsKLSAgICAvLyBpbnB1dCBhcyBz
dHJpbmcsIGV4cGVjdGVkIHJlc3VsdCBhcyBzdHJpbmcuCi0gICAgWyJ1bmRlZmluZWQiLCAiTmFO
Il0sCi0gICAgWyJudWxsIiwgIjAiXSwKLSAgICBbIjAiLCAiMCJdLAotICAgIFsiLTAuIiwgIi0w
Il0sCi0gICAgWyIwLjUiLCAiMCJdLAotICAgIFsiLTAuNSIsICItMCJdLAotICAgIFsiNCIsICI0
Il0sCi0gICAgWyI0Mi4xIiwgIjQyIl0sCi0gICAgWyI0Mi41IiwgIjQyIl0sCi0gICAgWyI0Mi45
IiwgIjQyIl0sCi0gICAgWyItNDIuMSIsICItNDIiXSwKLSAgICBbIi00Mi41IiwgIi00MiJdLAot
ICAgIFsiLTQyLjkiLCAiLTQyIl0sCi0gICAgWyJNYXRoLlBJIiwgIjMiXSwKLSAgICBbIkluZmlu
aXR5IiwgIkluZmluaXR5Il0sCi0gICAgWyItSW5maW5pdHkiLCAiLUluZmluaXR5Il0sCi0gICAg
WyJOYU4iLCAiTmFOIl0sCi0gICAgWyJcIldlYktpdFwiIiwgIk5hTiJdLAotICAgIFsiXCI0XCIi
LCAiNCJdLAotICAgIFsiXCI0Mi41XCIiLCAiNDIiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4g
eyByZXR1cm4gNDsgfSB9IiwgIjQiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4g
MDsgfSB9IiwgIjAiXSwKLSAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gLTA7IH0gfSIs
ICItMCJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAwLjU7IH0gfSIsICIwIl0s
Ci0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuIC0wLjU7IH0gfSIsICItMCJdLAotICAg
IFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjsgfSB9
IiwgIi05MDA3MTk5MjU0NzQwOTkxIl0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJu
IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOyB9IH0iLCAiOTAwNzE5OTI1NDc0MDk5MSJdLAotICAg
IFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAweDgwMDAwMDAwfDA7IH0gfSIsICItMjE0NzQ4
MzY0OCJdLAotICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiAweDdmZmZmZmZmfDA7IH0g
fSIsICIyMTQ3NDgzNjQ3Il0sCi0gICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuICgweDgw
MDAwMDAwfDApIC0gMC41OyB9IH0iLCAiLTIxNDc0ODM2NDgiXSwKLSAgICBbInsgdmFsdWVPZjog
KCkgPT4geyByZXR1cm4gKDB4N2ZmZmZmZmZ8MCkgKyAwLjU7IH0gfSIsICIyMTQ3NDgzNjQ3Il0s
Ci1dOwotCi1sZXQgdmFsaWRJbnB1dFR5cGVkVGVzdENhc2VzID0gdmFsaWRJbnB1dFRlc3RDYXNl
cy5tYXAoKGVsZW1lbnQpID0+IHsgcmV0dXJuIFtldmFsKCIoIiArIGVsZW1lbnRbMF0gKyAiKSIp
LCBldmFsKGVsZW1lbnRbMV0pXSB9KTsKLQotZnVuY3Rpb24gaXNJZGVudGljYWwocmVzdWx0LCBl
eHBlY3RlZCkKLXsKLSAgICBpZiAoZXhwZWN0ZWQgPT09IGV4cGVjdGVkKSB7Ci0gICAgICAgIGlm
IChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAoIWV4cGVjdGVkICYmICgxIC8gZXhwZWN0ZWQpICE9PSAoMSAvIHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQgIT09IHJlc3VsdDsKLX0KLQotCi0vLyBUZXN0IE1hdGgudHJ1bmMoKSB3
aXRob3V0IGFyZ3VtZW50cy4KLWZ1bmN0aW9uIG9wYXF1ZVRydW5jTm9Bcmd1bWVudCgpIHsKLSAg
ICByZXR1cm4gTWF0aC50cnVuYygpOwotfQotbm9JbmxpbmUob3BhcXVlVHJ1bmNOb0FyZ3VtZW50
KTsKLW5vT1NSRXhpdEZ1enppbmcob3BhcXVlVHJ1bmNOb0FyZ3VtZW50KTsKLQotZnVuY3Rpb24g
dGVzdE5vQXJndW1lbnQoKSB7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewot
ICAgICAgICBsZXQgb3V0cHV0ID0gb3BhcXVlVHJ1bmNOb0FyZ3VtZW50KCk7Ci0gICAgICAgIGlm
ICghaXNJZGVudGljYWwob3V0cHV0LCBOYU4pKSB7Ci0gICAgICAgICAgICB0aHJvdyAiRmFpbGVk
IG9wYXF1ZVRydW5jTm9Bcmd1bWVudCI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG51bWJl
ck9mREZHQ29tcGlsZXMob3BhcXVlVHJ1bmNOb0FyZ3VtZW50KSA+IDEpCi0gICAgICAgIHRocm93
ICJUaGUgY2FsbCB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgbmV2ZXIgZXhpdC4iOwotfQotdGVz
dE5vQXJndW1lbnQoKTsKLQotCi0vLyBUZXN0IE1hdGgudHJ1bmMoKSB3aXRoIGEgdmVyeSBwb2x5
bW9ycGhpYyBpbnB1dC4gQWxsIHRlc3QgY2FzZXMgYXJlIHNlZW4gYXQgZWFjaCBpdGVyYXRpb24u
Ci1mdW5jdGlvbiBvcGFxdWVBbGxUeXBlc1RydW5jKGFyZ3VtZW50KSB7Ci0gICAgcmV0dXJuIE1h
dGgudHJ1bmMoYXJndW1lbnQpOwotfQotbm9JbmxpbmUob3BhcXVlQWxsVHlwZXNUcnVuYyk7Ci1u
b09TUkV4aXRGdXp6aW5nKG9wYXF1ZUFsbFR5cGVzVHJ1bmMpOwotCi1mdW5jdGlvbiB0ZXN0QWxs
VHlwZXNDYWxsKCkgewotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKLSAgICAg
ICAgZm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxpZElucHV0VHlwZWRUZXN0Q2FzZXMpIHsK
LSAgICAgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVBbGxUeXBlc1RydW5jKHRlc3RDYXNlSW5w
dXRbMF0pOwotICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvdXRwdXQsIHRlc3RDYXNlSW5w
dXRbMV0pKQotICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdEFsbFR5cGVzQ2FsbCBm
b3IgaW5wdXQgIiArIHRlc3RDYXNlSW5wdXRbMF0gKyAiIGV4cGVjdGVkICIgKyB0ZXN0Q2FzZUlu
cHV0WzFdICsgIiBnb3QgIiArIG91dHB1dDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnVt
YmVyT2ZERkdDb21waWxlcyhvcGFxdWVBbGxUeXBlc1RydW5jKSA+IDMpCi0gICAgICAgIHRocm93
ICJXZSBzaG91bGQgaGF2ZSBkZXRlY3RlZCB0cnVuYygpIHdhcyBwb2x5bW9ycGhpYyBhbmQgZ2Vu
ZXJhdGVkIGEgZ2VuZXJpYyB2ZXJzaW9uLiI7Ci19Ci10ZXN0QWxsVHlwZXNDYWxsKCk7Ci0KLQot
Ly8gUG9seW1vcnBoaWMgaW5wdXQgYnV0IG5lZ2F0aXZlIHplcm8gaXMgbm90IG9ic2VydmFibGUu
Ci1mdW5jdGlvbiBvcGFxdWVBbGxUeXBlc1RydW5jV2l0aG91dE5lZ2F0aXZlWmVybyhhcmd1bWVu
dCkgewotICAgIHJldHVybiBNYXRoLnRydW5jKGFyZ3VtZW50KSArIDA7Ci19Ci1ub0lubGluZShv
cGFxdWVBbGxUeXBlc1RydW5jV2l0aG91dE5lZ2F0aXZlWmVybyk7Ci1ub09TUkV4aXRGdXp6aW5n
KG9wYXF1ZUFsbFR5cGVzVHJ1bmNXaXRob3V0TmVnYXRpdmVaZXJvKTsKLQotZnVuY3Rpb24gdGVz
dEFsbFR5cGVzV2l0aG91dE5lZ2F0aXZlWmVyb0NhbGwoKSB7Ci0gICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTM7ICsraSkgewotICAgICAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlk
SW5wdXRUeXBlZFRlc3RDYXNlcykgewotICAgICAgICAgICAgbGV0IG91dHB1dCA9IG9wYXF1ZUFs
bFR5cGVzVHJ1bmNXaXRob3V0TmVnYXRpdmVaZXJvKHRlc3RDYXNlSW5wdXRbMF0pOwotICAgICAg
ICAgICAgaWYgKCFpc0lkZW50aWNhbChvdXRwdXQsIHRlc3RDYXNlSW5wdXRbMV0gKyAwKSkKLSAg
ICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RBbGxUeXBlc1dpdGhvdXROZWdhdGl2ZVpl
cm9DYWxsIGZvciBpbnB1dCAiICsgdGVzdENhc2VJbnB1dFswXSArICIgZXhwZWN0ZWQgIiArIHRl
c3RDYXNlSW5wdXRbMV0gKyAiIGdvdCAiICsgb3V0cHV0OwotICAgICAgICB9Ci0gICAgfQotICAg
IGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUFsbFR5cGVzVHJ1bmMpID4gMykKLSAgICAg
ICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGRldGVjdGVkIHRydW5jKCkgd2FzIHBvbHltb3JwaGlj
IGFuZCBnZW5lcmF0ZWQgYSBnZW5lcmljIHZlcnNpb24uIjsKLX0KLXRlc3RBbGxUeXBlc1dpdGhv
dXROZWdhdGl2ZVplcm9DYWxsKCk7Ci0KLQotLy8gVGVzdCBNYXRoLnRydW5jKCkgb24gYSBjb21w
bGV0ZWx5IHR5cGVkIGlucHV0LiBFdmVyeSBjYWxsIHNlZSBvbmx5IG9uZSB0eXBlLgotZnVuY3Rp
b24gdGVzdFNpbmdsZVR5cGVDYWxsKCkgewotICAgIGZvciAobGV0IHRlc3RDYXNlSW5wdXQgb2Yg
dmFsaWRJbnB1dFRlc3RDYXNlcykgewotICAgICAgICBldmFsKGAKLSAgICAgICAgICAgIGZ1bmN0
aW9uIG9wYXF1ZVRydW5jKGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgu
dHJ1bmMoYXJndW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbm9JbmxpbmUob3Bh
cXVlVHJ1bmMpOwotICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhvcGFxdWVUcnVuYyk7Ci0K
LSAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWlzSWRlbnRpY2FsKG9wYXF1ZVRydW5jKCR7dGVzdENhc2VJbnB1dFswXX0pLCAk
e3Rlc3RDYXNlSW5wdXRbMV19KSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVk
IHRlc3RTaW5nbGVUeXBlQ2FsbCgpIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVUcnVuYykgPiAxKQot
ICAgICAgICAgICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBjb21waWxlZCBhIHNpbmdsZSB0
cnVuYyBmb3IgdGhlIGV4cGVjdGVkIHR5cGUuIjsKLSAgICAgICAgYCk7Ci0gICAgfQotfQotdGVz
dFNpbmdsZVR5cGVDYWxsKCk7Ci0KLQotLy8gVGVzdCBNYXRoLnRydW5jKCkgb24gYSBjb21wbGV0
ZWx5IHR5cGVkIGlucHV0LCBidXQgd2l0aG91dCBuZWdhdGl2ZSB6ZXJvLgotZnVuY3Rpb24gdGVz
dFNpbmdsZVR5cGVXaXRob3V0TmVnYXRpdmVaZXJvQ2FsbCgpIHsKLSAgICBmb3IgKGxldCB0ZXN0
Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKLSAgICAgICAgZXZhbChgCi0gICAg
ICAgICAgICBmdW5jdGlvbiBvcGFxdWVUcnVuYyhhcmd1bWVudCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBNYXRoLnRydW5jKGFyZ3VtZW50KSAtIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBub0lubGluZShvcGFxdWVUcnVuYyk7Ci0gICAgICAgICAgICBub09TUkV4aXRGdXp6aW5n
KG9wYXF1ZVRydW5jKTsKLQotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgewotICAgICAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwob3BhcXVlVHJ1bmMoJHt0ZXN0
Q2FzZUlucHV0WzBdfSksICR7dGVzdENhc2VJbnB1dFsxXX0gLSAwKSkgewotICAgICAgICAgICAg
ICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVUeXBlV2l0aG91dE5lZ2F0aXZlWmVyb0Nh
bGwoKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlVHJ1bmMpID4gMSkKLSAgICAgICAgICAgICAgICB0
aHJvdyAiV2Ugc2hvdWxkIGhhdmUgY29tcGlsZWQgYSBzaW5nbGUgdHJ1bmMgZm9yIHRoZSBleHBl
Y3RlZCB0eXBlLiI7Ci0gICAgICAgIGApOwotICAgIH0KLX0KLXRlc3RTaW5nbGVUeXBlV2l0aG91
dE5lZ2F0aXZlWmVyb0NhbGwoKTsKLQotCi0vLyBUZXN0IE1hdGgudHJ1bmMoKSBvbiBjb25zdGFu
dHMKLWZ1bmN0aW9uIHRlc3RDb25zdGFudCgpIHsKLSAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0
IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKLSAgICAgICAgZXZhbChgCi0gICAgICAgICAgICBm
dW5jdGlvbiBvcGFxdWVUcnVuY09uQ29uc3RhbnQoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IE1hdGgudHJ1bmMoJHt0ZXN0Q2FzZUlucHV0WzBdfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBub0lubGluZShvcGFxdWVUcnVuY09uQ29uc3RhbnQpOwotICAgICAgICAgICAgbm9PU1JF
eGl0RnV6emluZyhvcGFxdWVUcnVuY09uQ29uc3RhbnQpOwotCi0gICAgICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNh
bChvcGFxdWVUcnVuY09uQ29uc3RhbnQoKSwgJHt0ZXN0Q2FzZUlucHV0WzFdfSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0Q29uc3RhbnQoKSI7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG51bWJlck9mREZHQ29tcGls
ZXMob3BhcXVlVHJ1bmNPbkNvbnN0YW50KSA+IDEpCi0gICAgICAgICAgICAgICAgdGhyb3cgIldl
IHNob3VsZCBoYXZlIGNvbXBpbGVkIGEgc2luZ2xlIHRydW5jIGZvciB0aGUgZXhwZWN0ZWQgdHlw
ZS4iOwotICAgICAgICBgKTsKLSAgICB9Ci19Ci10ZXN0Q29uc3RhbnQoKTsKLQotCi0vLyBWZXJp
Znkgd2UgY2FsbCB2YWx1ZU9mKCkgZXhhY3RseSBvbmNlIHBlciBjYWxsLgotZnVuY3Rpb24gb3Bh
cXVlVHJ1bmNGb3JTaWRlRWZmZWN0cyhhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRoLnRydW5j
KGFyZ3VtZW50KTsKLX0KLW5vSW5saW5lKG9wYXF1ZVRydW5jRm9yU2lkZUVmZmVjdHMpOwotbm9P
U1JFeGl0RnV6emluZyhvcGFxdWVUcnVuY0ZvclNpZGVFZmZlY3RzKTsKLQotZnVuY3Rpb24gdGVz
dFNpZGVFZmZlY3QoKSB7Ci0gICAgbGV0IHRlc3RPYmplY3QgPSB7Ci0gICAgICAgIGNvdW50ZXI6
IDAsCi0gICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJu
IDE2OyB9Ci0gICAgfTsKLSAgICBsZXQgdHJ1bmMxNiA9IE1hdGgudHJ1bmMoMTYpOwotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKLSAgICAgICAgaWYgKG9wYXF1ZVRydW5jRm9y
U2lkZUVmZmVjdHModGVzdE9iamVjdCkgIT09IHRydW5jMTYpCi0gICAgICAgICAgICB0aHJvdyAi
SW5jb3JyZWN0IHJlc3VsdCBpbiB0ZXN0U2lkZUVmZmVjdCgpIjsKLSAgICB9Ci0gICAgaWYgKHRl
c3RPYmplY3QuY291bnRlciAhPT0gMWU0KQotICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaWRl
RWZmZWN0KCkiOwotICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZVRydW5jRm9yU2lk
ZUVmZmVjdHMpID4gMSkKLSAgICAgICAgdGhyb3cgIm9wYXF1ZVRydW5jRm9yU2lkZUVmZmVjdHMo
KSBpcyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOwotfQot
dGVzdFNpZGVFZmZlY3QoKTsKLQotCi0vLyBWZXJpZnkgdHJ1bmMoKSBpcyBub3Qgc3ViamVjdCB0
byBDU0UgaWYgdGhlIGFyZ3VtZW50IGhhcyBzaWRlIGVmZmVjdHMuCi1mdW5jdGlvbiBvcGFxdWVU
cnVuY0ZvckNTRShhcmd1bWVudCkgewotICAgIHJldHVybiBNYXRoLnRydW5jKGFyZ3VtZW50KSAr
IE1hdGgudHJ1bmMoYXJndW1lbnQpICsgTWF0aC50cnVuYyhhcmd1bWVudCk7Ci19Ci1ub0lubGlu
ZShvcGFxdWVUcnVuY0ZvckNTRSk7Ci1ub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVRydW5jRm9yQ1NF
KTsKLQotZnVuY3Rpb24gdGVzdENTRSgpIHsKLSAgICBsZXQgdGVzdE9iamVjdCA9IHsKLSAgICAg
ICAgY291bnRlcjogMCwKLSAgICAgICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7ICsrdGhpcy5jb3Vu
dGVyOyByZXR1cm4gMTY7IH0KLSAgICB9OwotICAgIGxldCB0cnVuYzE2ID0gTWF0aC50cnVuYygx
Nik7Ci0gICAgbGV0IHRocmVlVHJ1bmMxNiA9IHRydW5jMTYgKyB0cnVuYzE2ICsgdHJ1bmMxNjsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAgIGlmIChvcGFxdWVU
cnVuY0ZvckNTRSh0ZXN0T2JqZWN0KSAhPT0gdGhyZWVUcnVuYzE2KQotICAgICAgICAgICAgdGhy
b3cgIkluY29ycmVjdCByZXN1bHQgaW4gdGVzdENTRSgpIjsKLSAgICB9Ci0gICAgaWYgKHRlc3RP
YmplY3QuY291bnRlciAhPT0gM2U0KQotICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RDU0UoKSI7
Ci0gICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlVHJ1bmNGb3JDU0UpID4gMSkKLSAg
ICAgICAgdGhyb3cgIm9wYXF1ZVRydW5jRm9yQ1NFKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3Vs
ZCBvbmx5IGJlIGNvbXBpbGVkIG9uY2UuIjsKLX0KLXRlc3RDU0UoKTsKLQotCi0vLyBWZXJpZnkg
dHJ1bmMoKSBpcyBub3Qgc3ViamVjdCB0byBEQ0UgaWYgdGhlIGFyZ3VtZW50IGhhcyBzaWRlIGVm
ZmVjdHMuCi1mdW5jdGlvbiBvcGFxdWVUcnVuY0ZvckRDRShhcmd1bWVudCkgewotICAgIE1hdGgu
dHJ1bmMoYXJndW1lbnQpOwotfQotbm9JbmxpbmUob3BhcXVlVHJ1bmNGb3JEQ0UpOwotbm9PU1JF
eGl0RnV6emluZyhvcGFxdWVUcnVuY0ZvckRDRSk7Ci0KLWZ1bmN0aW9uIHRlc3REQ0UoKSB7Ci0g
ICAgbGV0IHRlc3RPYmplY3QgPSB7Ci0gICAgICAgIGNvdW50ZXI6IDAsCi0gICAgICAgIHZhbHVl
T2Y6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9Ci0gICAgfTsKLSAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAgIG9wYXF1ZVRydW5jRm9y
RENFKHRlc3RPYmplY3QpOwotICAgIH0KLSAgICBpZiAodGVzdE9iamVjdC5jb3VudGVyICE9PSAx
ZTQpCi0gICAgICAgIHRocm93ICJGYWlsZWQgdGVzdERDRSgpIjsKLSAgICBpZiAobnVtYmVyT2ZE
RkdDb21waWxlcyhvcGFxdWVUcnVuY0ZvckRDRSkgPiAxKQotICAgICAgICB0aHJvdyAib3BhcXVl
VHJ1bmNGb3JEQ0UoKSBpcyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29tcGlsZWQg
b25jZS4iOwotfQotdGVzdERDRSgpOwotCi0KLS8vIFRlc3QgZXhjZXB0aW9ucyBpbiB0aGUgYXJn
dW1lbnQuCi1mdW5jdGlvbiB0ZXN0RXhjZXB0aW9uKCkgewotICAgIGxldCBjb3VudGVyID0gMDsK
LSAgICBmdW5jdGlvbiBvcGFxdWVUcnVuY1dpdGhFeGNlcHRpb24oYXJndW1lbnQpIHsKLSAgICAg
ICAgbGV0IHJlc3VsdCA9IE1hdGgudHJ1bmMoYXJndW1lbnQpOwotICAgICAgICArK2NvdW50ZXI7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIG5vSW5saW5lKG9wYXF1ZVRydW5j
V2l0aEV4Y2VwdGlvbik7Ci0KLSAgICBsZXQgdGVzdE9iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4g
eyAgcmV0dXJuIDY0OyB9IH07Ci0gICAgbGV0IHRydW5jNjQgPSBNYXRoLnRydW5jKDY0KTsKLQot
ICAgIC8vIFdhcm0gdXAgd2l0aG91dCBleGNlcHRpb24uCi0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTM7ICsraSkgewotICAgICAgICBpZiAob3BhcXVlVHJ1bmNXaXRoRXhjZXB0aW9uKHRlc3RP
YmplY3QpICE9PSB0cnVuYzY0KQotICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQg
aW4gb3BhcXVlVHJ1bmNXaXRoRXhjZXB0aW9uKCkiOwotICAgIH0KLQotICAgIGxldCB0ZXN0VGhy
b3dPYmplY3QgPSB7IHZhbHVlT2Y6ICgpID0+IHsgdGhyb3cgdGVzdE9iamVjdDsgcmV0dXJuIDY0
OyB9IH07Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKSB7Ci0gICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICBpZiAob3BhcXVlVHJ1bmNXaXRoRXhjZXB0aW9uKHRlc3RUaHJvd09i
amVjdCkgIT09IDgpCi0gICAgICAgICAgICAgICAgdGhyb3cgIlRoaXMgY29kZSBzaG91bGQgbm90
IGJlIHJlYWNoZWQhISI7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGlmIChl
ICE9PSB0ZXN0T2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgIldyb25nIG9iamVjdCB0
aHJvd24gZnJvbSBvcGFxdWVUcnVuY1dpdGhFeGNlcHRpb24uIgotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNvdW50ZXIgIT09IDFlMykgewotICAgICAgICB0aHJv
dyAiSW52YWxpZCBjb3VudCBpbiB0ZXN0RXhjZXB0aW9uKCkiOwotICAgIH0KLX0KLXRlc3RFeGNl
cHRpb24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>