<?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>34995</bug_id>
          
          <creation_ts>2010-02-16 13:57:25 -0800</creation_ts>
          <short_desc>Refactor DB layout tests so that they work in Web Workers as well as Pages.</short_desc>
          <delta_ts>2010-05-28 20:46:07 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>34990</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dimich</cc>
    
    <cc>dumi</cc>
    
    <cc>ericu</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190736</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-02-16 13:57:25 -0800</bug_when>
    <thetext>All the current layout tests should be able to run in the Worker implementation of the async DB as well, with a small refactoring.

Umbrella bug 34990 depends on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229924</commentid>
    <comment_count>1</comment_count>
      <attachid>56933</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-05-24 14:54:19 -0700</bug_when>
    <thetext>Created attachment 56933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230403</commentid>
    <comment_count>2</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-25 12:48:47 -0700</bug_when>
    <thetext>LGTM. Are the other DB layout tests failing in workers, or are you just trying to keep the patches small?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230419</commentid>
    <comment_count>3</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-05-25 13:37:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; LGTM. Are the other DB layout tests failing in workers, or are you just trying to keep the patches small?

The latter.  I figured a bunch of small patches would be easier to review, so I&apos;m just porting a few at a time.

Some of them will be less trivial to port [those involving reloading, in particular], but there are still a bunch more trivial ones to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230548</commentid>
    <comment_count>4</comment_count>
      <attachid>57060</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-05-25 18:29:29 -0700</bug_when>
    <thetext>Created attachment 57060
Another set of tests.  This is much smaller than the diff size suggests.

This is almost entirely trivial changes [moving code from .html to .js files].  It&apos;s *much* smaller than the patch size suggests.

It adds changes to a file added in the first patch, so I&apos;ll have to do a manual merge in between the two of them being committed.  I&apos;m setting CQ? on #1 and CQ- on #2 to enable that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231454</commentid>
    <comment_count>5</comment_count>
      <attachid>56933</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-05-27 14:05:43 -0700</bug_when>
    <thetext>Comment on attachment 56933
Patch

Sorry it takes too long.

LayoutTests/storage/multiple-databases-garbage-collection.js:27
 +      persistentDB = openDatabase(&quot;MultipleDatabasesTest1&quot;, &quot;1.0&quot;, &quot;Test one out of a set of databases being destroyed (1)&quot;, 32768);
+ DB_TEST_SUFFIX here?

LayoutTests/storage/multiple-databases-garbage-collection.js:28
 +      forgottenDB = openDatabase(&quot;MultipleDatabasesTest2&quot;, &quot;1.0&quot;, &quot;Test one out of a set of databases being destroyed (2)&quot;, 32768);
same

LayoutTests/storage/multiple-transactions-on-different-handles.js:13
 +      return openDatabase(&quot;MultipleTransactionsOnDifferentHandlesTest&quot;,
+ DB_TEST_SUFFIX
Maybe there should be a single function somewhere in database-common.js to make sure the suffix is not forgotten in each test, and perhaps simply a variable for each test containing the desired name of the database? Perhaps openTestDatabase can be repurposed to be this common function...

r- to add the suffix and please consider a common function that does this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231457</commentid>
    <comment_count>6</comment_count>
      <attachid>57060</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-05-27 14:09:01 -0700</bug_when>
    <thetext>Comment on attachment 57060
Another set of tests.  This is much smaller than the diff size suggests.

Same prefix issue with openDatabase, otherwise LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231543</commentid>
    <comment_count>7</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-05-27 19:35:09 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 56933 [details])
&gt; Sorry it takes too long.
&gt; 
&gt; LayoutTests/storage/multiple-databases-garbage-collection.js:27
&gt;  +      persistentDB = openDatabase(&quot;MultipleDatabasesTest1&quot;, &quot;1.0&quot;, &quot;Test one out of a set of databases being destroyed (1)&quot;, 32768);
&gt; + DB_TEST_SUFFIX here?
&gt; 
&gt; LayoutTests/storage/multiple-databases-garbage-collection.js:28
&gt;  +      forgottenDB = openDatabase(&quot;MultipleDatabasesTest2&quot;, &quot;1.0&quot;, &quot;Test one out of a set of databases being destroyed (2)&quot;, 32768);
&gt; same
&gt; 
&gt; LayoutTests/storage/multiple-transactions-on-different-handles.js:13
&gt;  +      return openDatabase(&quot;MultipleTransactionsOnDifferentHandlesTest&quot;,
&gt; + DB_TEST_SUFFIX
&gt; Maybe there should be a single function somewhere in database-common.js to make sure the suffix is not forgotten in each test, and perhaps simply a variable for each test containing the desired name of the database? Perhaps openTestDatabase can be repurposed to be this common function...
&gt; 
&gt; r- to add the suffix and please consider a common function that does this.

I made a common function, put it into database-common.js and database-worker.js, and removed the explicit mentions of DB_TEST_SUFFIX in each of the test files.  Other than overriding openDatabase directly, which I think would be confusing, I think that&apos;s about all we can do.

I&apos;ve merged the two changelists together, since I&apos;m not sure what the commit queue does if you give it two partial changelists; the code is [other than that addition and the calls to it] unchanged.  However, I&apos;ve removed one test: fast/workers/storage/hash-change-with-xhr.html is causing asserts, so I want to chase that down.  But I don&apos;t see any reason to delay the rest of the CL based on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231545</commentid>
    <comment_count>8</comment_count>
      <attachid>57291</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-05-27 19:38:27 -0700</bug_when>
    <thetext>Created attachment 57291
Merged the two patches and added a function

Please don&apos;t take my word that this is the same code--give it a once-over to see if I&apos;ve missed anything.  There was a bit of slicing and dicing to get all the changes integrated and in the same client.  I *think* it&apos;s all right, but it&apos;s possible I missed a file somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231546</commentid>
    <comment_count>9</comment_count>
      <attachid>57291</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-05-27 19:39:10 -0700</bug_when>
    <thetext>Comment on attachment 57291
Merged the two patches and added a function

Forgot to click &quot;patch&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231881</commentid>
    <comment_count>10</comment_count>
      <attachid>57291</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-05-28 12:47:14 -0700</bug_when>
    <thetext>Comment on attachment 57291
Merged the two patches and added a function

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232062</commentid>
    <comment_count>11</comment_count>
      <attachid>57291</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-28 20:46:01 -0700</bug_when>
    <thetext>Comment on attachment 57291
Merged the two patches and added a function

Clearing flags on attachment: 57291

Committed r60387: &lt;http://trac.webkit.org/changeset/60387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232063</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-28 20:46:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56933</attachid>
            <date>2010-05-24 14:54:19 -0700</date>
            <delta_ts>2010-05-27 19:38:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34995-20100524145417.patch</filename>
            <type>text/plain</type>
            <size>27150</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwMDg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDUtMjQgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWZhY3RvciBEQiBsYXlvdXQgdGVzdHMgc28gdGhhdCB0aGV5IHdvcmsgaW4g
V2ViIFdvcmtlcnMgYXMgd2VsbCBhcyBQYWdlcy4KKyAgICAgICAgVGhpcyBpcyBqdXN0IHRoZSBm
aXJzdCBwYXRjaDsgSSBkaWRuJ3Qgd2FudCB0byBwdXQgdG9vIG1hbnkgY2hhbmdlcyBpbiBvbmUg
cmV2aWV3LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNDk5NQorCisgICAgICAgIEluIGVhY2ggY2FzZSBiZWxvdywgSSBwdWxsIHRoZSBtZWF0IG9m
IHRoZSB0ZXN0IG91dCBpbnRvIGEgLmpzIGZpbGUgdGhhdCdzIGluY2x1ZGVkIGZyb20gYm90aCBE
T00gYW5kIHdvcmtlciB0ZXN0cy4gIEFsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBmYWlybHkgdHJp
dmlhbDsgaXQncyBqdXN0IHRoZSBuZXcgZmlsZXMgdGhhdCBpbmNyZWFzZSB0aGUgbGluZSBjb3Vu
dC4gIEFsbCBvZiB0aGUgLmpzIGZpbGVzJyBjb2RlIGlzIGRpcmVjdGx5IG1vdmVkIGZyb20gdGhl
IG9sZCAuaHRtbCBmaWxlcyB3aXRob3V0IGVkaXRzIG90aGVyIHRoYW4gc3dpdGNoaW5nIHRvIHRo
ZSBzaGFyZWQgbG9nZ2luZyBmdW5jdGlvbi4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtZGF0YWJhc2VzLWdh
cmJhZ2UtY29sbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3Rv
cmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50
LWhhbmRsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3Rv
cmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2NoYW5nZS12ZXJz
aW9uLWhhbmRsZS1yZXVzZS13b3JrZXIuaHRtbDogUHVsbGVkIG91dCBldmVuIG1vcmUgYm9pbGVy
cGxhdGUuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy13
b3JrZXIuaHRtbDogUHVsbGVkIG91dCBldmVuIG1vcmUgYm9pbGVycGxhdGUuCisgICAgICAgICog
ZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVy
OiBIZXJlJ3Mgd2hlcmUgdGhlIGJvaWxlcnBsYXRlIHdlbnQuCisgICAgICAgICogc3RvcmFnZS9t
dWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxl
cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZl
cmVudC1oYW5kbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL211bHRpcGxlLXRyYW5z
YWN0aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmpz
OiBBZGRlZC4KKyAgICAgICAgSSBtYWRlIGEgc21hbGwgY29tbW9uIGluY2x1ZGUgZm9yIGFsbCB0
aGUgbm9uLXdvcmtlciB0ZXN0cyB0byByZW1vdmUgYSBsaXR0bGUgYm9pbGVycGxhdGUuCisgICAg
ICAgICogc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2UtY29tbW9uLmpzOiBBZGRlZC4KKyAgICAg
ICAgVGhlc2UgdHdvIHRlc3RzIGhhZCBhbHJlYWR5IGJlZW4gcG9ydGVkIHRvIHdvcmtlcnM7IEkg
dXBkYXRlZCB0aGVtIHRvIHVzZSB0aGUgY29tbW9uIGluY2x1ZGUgZmlsZS4KKyAgICAgICAgKiBz
dG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVzZS5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvZXhlY3V0ZS1zcWwtYXJncy5odG1sOgorCiAyMDEwLTA1LTE4ICBKYWltZSBZYXAgIDxqYWlt
ZXlhcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1oYW5k
bGUtcmV1c2Utd29ya2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLXdvcmtlci5odG1sCShyZXZp
c2lvbiA1OTk3MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL2NoYW5nZS12
ZXJzaW9uLWhhbmRsZS1yZXVzZS13b3JrZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyMiAr
MSw4IEBACiA8aHRtbD4gCiA8aGVhZD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJhc2Ut
d29ya2VyLWNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PiAKLTxzY3JpcHQ+IAotCi1mdW5jdGlvbiBz
ZXR1cEFuZFJ1blRlc3QoKQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgfQotIAotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIiI7Ci0gICAgZGF0YWJh
c2VXb3JrZXIucG9zdE1lc3NhZ2UoImltcG9ydFNjcmlwdHM6Li4vLi4vLi4vc3RvcmFnZS9jaGFu
Z2UtdmVyc2lvbi1oYW5kbGUtcmV1c2UuanMiKTsKLSAgICBkYXRhYmFzZVdvcmtlci5wb3N0TWVz
c2FnZSgicnVuVGVzdCIpOwotfQotPC9zY3JpcHQ+IAogPC9oZWFkPiAKLTxib2R5IG9ubG9hZD0i
c2V0dXBBbmRSdW5UZXN0KCkiPiAKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgnY2hhbmdlLXZlcnNp
b24taGFuZGxlLXJldXNlLmpzJykiPiAKIDxkaXY+VGhpcyB0ZXN0cyB0aGF0IGEgZGF0YWJhc2Ug
Y2FuIGJlIGFjY2Vzc2VkIGFmdGVyIGNoYW5naW5nIGl0cyB2ZXJzaW9uLiBZb3Ugc2hvdWxkIHNl
ZSBhbiBlcnJvciBhYm91dCBGb29CYXIgdGFibGUgYmVsb3csIG5vdCBhYm91dCBtaXNtYXRjaGlu
ZyB2ZXJzaW9ucy4KIDxwcmUgaWQ9ImNvbnNvbGUiPiAKIEZBSUxVUkU6IHRlc3QgZGlkbid0IHJ1
bi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFy
Z3Mtd29ya2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0
b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy13b3JrZXIuaHRtbAkocmV2aXNpb24gNTk5NzEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9leGVjdXRlLXNxbC1hcmdzLXdvcmtlci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICsxLDEyIEBACiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBzZXR1cEFuZFJ1blRlc3QoKQotewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgfQotICAgIGRhdGFiYXNlV29ya2VyLnBvc3RNZXNzYWdlKCJpbXBvcnRTY3Jp
cHRzOi4uLy4uLy4uL3N0b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy5qcyIpOwotICAgIGRhdGFiYXNl
V29ya2VyLnBvc3RNZXNzYWdlKCJydW5UZXN0Iik7Ci19Ci0KLTwvc2NyaXB0PgogPC9oZWFkPgog
Ci08Ym9keSBvbmxvYWQ9InNldHVwQW5kUnVuVGVzdCgpIj4KLTxwcmUgaWQ9ImNvbnNvbGUiPjwv
cHJlPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCdleGVjdXRlLXNxbC1hcmdzLmpzJykiPgorPHBy
ZSBpZD0iY29uc29sZSI+IAorRkFJTFVSRTogdGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+IAogPC9i
b2R5PgogCiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9t
dWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS1kYXRhYmFz
ZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNv
bGxlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMg
dGVzdCBvcGVucyB0d28gZGF0YWJhc2VzLCBxdWV1ZXMgdXAgYSBzZXJpZXMgb2Ygb3BlcmF0aW9u
cyBvbiBib3RoLCB0aGVuICJmb3JnZXRzIiBhYm91dCBvbmUgb2YgdGhlbS4gQWZ0ZXIgZm9yY2lu
ZyBHQywgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRhdGFiYXNlIHNob3VsZCBiZSBm
cmVlZCBncmFjZWZ1bGx5LgorRm9yZ290dGVuIERhdGFiYXNlIFRyYW5zYWN0aW9uIENvbXBsZXRl
CitQZXJzaXN0ZW50IERhdGFiYXNlIFRyYW5zYWN0aW9uIENvbXBsZXRlCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNv
bGxlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3Rv
cmFnZS9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS1kYXRhYmFz
ZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1j
b250cm9sbGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgn
bXVsdGlwbGUtZGF0YWJhc2VzLWdhcmJhZ2UtY29sbGVjdGlvbi5qcycpOyI+CitUaGlzIHRlc3Qg
b3BlbnMgdHdvIGRhdGFiYXNlcywgcXVldWVzIHVwIGEgc2VyaWVzIG9mIG9wZXJhdGlvbnMgb24g
Ym90aCwgdGhlbiAiZm9yZ2V0cyIgYWJvdXQgb25lIG9mIHRoZW0uCitBZnRlciBmb3JjaW5nIEdD
LCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgZGF0YWJhc2Ugc2hvdWxkIGJlIGZyZWVk
IGdyYWNlZnVsbHkuPGJyPgorPHByZSBpZD0iY29uc29sZSI+IAorRkFJTFVSRTogdGVzdCBkaWRu
J3QgcnVuLgorPC9wcmU+IAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS10cmFu
c2FjdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIGlzIGEgdGVzdCB0byBzZWUgaWYgdGhlIGRhdGFi
YXNlIEFQSSBhbGxvd3MgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHRvIGJlIHF1ZXVlZCBvbiB0aGUg
c2FtZSBkYXRhYmFzZSBhdCBvbmNlOgorVHJhbnNhY3Rpb24gMSBTdGFydGVkCitUcmFuc2FjdGlv
biAxIFN1Y2NlZWRlZAorVHJhbnNhY3Rpb24gMiBTdGFydGVkCitUcmFuc2FjdGlvbiAyIFN1Y2Nl
ZWRlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS10
cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9u
cy1vbi1kaWZmZXJlbnQtaGFuZGxlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlm
ZmVyZW50LWhhbmRsZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K1RoaXMgaXMgYSB0ZXN0IHRvIHNlZSBpZiBxdWV1ZWluZyB1cCBtdWx0aXBsZSB0cmFuc2FjdGlv
bnMgb24gZGlmZmVyZW50IGhhbmRsZXMgdG8gdGhlIHNhbWUgZGF0YWJhc2UgcmVzdWx0cyBpbiBh
IGRlYWRsb2NrLgorZGIxIHJlYWQgc3RhdGVtZW50IHN1Y2NlZWRlZAorZGIxIHdyaXRlIHN0YXRl
bWVudCBzdWNjZWVkZWQKK2RiMSB0cmFuc2FjdGlvbiBzdWNjZWVkZWQKK2RiMiByZWFkIHN0YXRl
bWVudCBzdWNjZWVkZWQKK2RiMiB3cml0ZSBzdGF0ZW1lbnQgc3VjY2VlZGVkCitkYjIgdHJhbnNh
Y3Rpb24gc3VjY2VlZGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdl
L211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0
aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVu
dC1oYW5kbGVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCdtdWx0aXBsZS10
cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMuanMnKSI+CitUaGlzIGlzIGEgdGVzdCB0
byBzZWUgaWYgcXVldWVpbmcgdXAgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIG9uIGRpZmZlcmVudCBo
YW5kbGVzIHRvIHRoZSBzYW1lIGRhdGFiYXNlIHJlc3VsdHMgaW4gYSBkZWFkbG9jay48YnI+Cis8
cHJlIGlkPSJjb25zb2xlIj4gCitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCis8
L2JvZHk+CisKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdl
L211bHRpcGxlLXRyYW5zYWN0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rp
b25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCdtdWx0aXBsZS10cmFuc2Fj
dGlvbnMuanMnKSI+CitUaGlzIGlzIGEgdGVzdCB0byBzZWUgaWYgdGhlIGRhdGFiYXNlIEFQSSBh
bGxvd3MgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHRvIGJlIHF1ZXVlZCBvbiB0aGUgc2FtZSBkYXRh
YmFzZSBhdCBvbmNlOjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPiAKK0ZBSUxVUkU6IHRlc3QgZGlk
bid0IHJ1bi4KKzwvcHJlPiAKKzwvYm9keT4KKworPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVy
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291
cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcwkocmV2aXNpb24gNTk5NzEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2Utd29ya2Vy
LWNvbnRyb2xsZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxLDMgKzIxLDE1IEBAIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
aW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwogfQorCitmdW5jdGlvbiBydW5UZXN0KHRlc3RG
aWxlKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIiI7CisgICAgZGF0YWJhc2VXb3JrZXIucG9zdE1l
c3NhZ2UoImltcG9ydFNjcmlwdHM6Li4vLi4vLi4vc3RvcmFnZS8iICsgdGVzdEZpbGUpOworICAg
IGRhdGFiYXNlV29ya2VyLnBvc3RNZXNzYWdlKCJydW5UZXN0Iik7Cit9CisKSW5kZXg6IExheW91
dFRlc3RzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1oYW5kbGUtcmV1c2UuaHRt
bAkocmV2aXNpb24gNTk5NzEpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2NoYW5nZS12ZXJzaW9u
LWhhbmRsZS1yZXVzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI3ICsxLDcgQEAKIDxodG1s
PiAKIDxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVzZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PiAKLQotdmFyIERCX1RFU1RfU1VGRklYID0gIl9kb20iOwotCi1mdW5j
dGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVyVGV4dCArPSBtZXNzYWdlICsgIlxuIjsKLX0KLQotZnVuY3Rpb24gc2V0dXBBbmRS
dW5UZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KLSAKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCA9ICIiOwotIAotICAgIHJ1blRlc3QoKTsK
LX0KLTwvc2NyaXB0PiAKIDwvaGVhZD4gCiA8Ym9keSBvbmxvYWQ9InNldHVwQW5kUnVuVGVzdCgp
Ij4gCiA8ZGl2PlRoaXMgdGVzdHMgdGhhdCBhIGRhdGFiYXNlIGNhbiBiZSBhY2Nlc3NlZCBhZnRl
ciBjaGFuZ2luZyBpdHMgdmVyc2lvbi4gWW91IHNob3VsZCBzZWUgYW4gZXJyb3IgYWJvdXQgRm9v
QmFyIHRhYmxlIGJlbG93LCBub3QgYWJvdXQgbWlzbWF0Y2hpbmcgdmVyc2lvbnMuCkluZGV4OiBM
YXlvdXRUZXN0cy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFyZ3MuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFyZ3MuaHRtbAkocmV2aXNpb24gNTk5NzEp
CisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFyZ3MuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwzMCArMSwxMyBAQAogPGh0bWw+Ci0KIDxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImV4ZWN1
dGUtc3FsLWFyZ3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotdmFyIERCX1RFU1RfU1VGRklY
ID0gIl9kb20iOwotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCArPSBtZXNzYWdlICsgIlxuIjsKLX0KLQot
ZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAg
ICBydW5UZXN0KCk7Ci19Ci0KLTwvc2NyaXB0PgogPC9oZWFkPgogCiA8Ym9keSBvbmxvYWQ9InNl
dHVwQW5kUnVuVGVzdCgpIj4KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHByZSBpZD0iY29u
c29sZSI+IAorRkFJTFVSRTogdGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+IAogPC9ib2R5PgogCiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJi
YWdlLWNvbGxlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL211
bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbAkocmV2aXNpb24gNTk5NzEp
CisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxl
Y3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMSwxMiBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmJv
ZHkuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWZ1bmN0aW9uIEdDKCkKLXsK
LSAgICAvLyBGb3JjZSBHQy4KLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAg
R0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7Ci0gICAgICAgICAgICAoeyB9KTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotLy8gVmFyaWFibGUgZm9yIHRoZSBkYXRhYmFzZSB0aGF0IHdpbGwgbmV2ZXIgYmUg
Zm9yZ290dGVuCi12YXIgcGVyc2lzdGVudERCID0gMDsKLS8vIFZhcmlhYmxlIGZvciB0aGUgZm9y
Z290dGVuIGRhdGFiYXNlCi12YXIgZm9yZ290dGVuREIgPSAwOwotCi12YXIgY29tcGxldGVkID0g
MDsKLWZ1bmN0aW9uIGNoZWNrQ29tcGxldGlvbigpCi17Ci0gICAgaWYgKCsrY29tcGxldGVkID09
IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAgIHBlcnNpc3RlbnREQiA9IG9wZW5EYXRhYmFzZSgi
TXVsdGlwbGVEYXRhYmFzZXNUZXN0MSIsICIxLjAiLCAiVGVzdCBvbmUgb3V0IG9mIGEgc2V0IG9m
IGRhdGFiYXNlcyBiZWluZyBkZXN0cm95ZWQgKDEpIiwgMzI3NjgpOwotICAgIGZvcmdvdHRlbkRC
ID0gb3BlbkRhdGFiYXNlKCJNdWx0aXBsZURhdGFiYXNlc1Rlc3QyIiwgIjEuMCIsICJUZXN0IG9u
ZSBvdXQgb2YgYSBzZXQgb2YgZGF0YWJhc2VzIGJlaW5nIGRlc3Ryb3llZCAoMikiLCAzMjc2OCk7
Ci0KLSAgICBwZXJzaXN0ZW50REIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKLSAgICAgICAg
dHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRGF0YVRlc3QgKHJhbmRv
bURhdGEpIiwgW10sIGZ1bmN0aW9uKHR4LCByZXN1bHQpIHsgCi0gICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDI1OyArK2kpCi0gICAgICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5T
RVJUIElOVE8gRGF0YVRlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoMSkiLCBbXSk7Ci0gICAgICAg
IH0pOyAKLSAgICB9LCBmdW5jdGlvbihlcnIpIHsKLSAgICAgICAgbG9nKCJQZXJzaXN0ZW50IERh
dGFiYXNlIFRyYW5zYWN0aW9uIEVycm9yZWQgLSAiICsgZXJyKTsKLSAgICAgICAgY2hlY2tDb21w
bGV0aW9uKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiUGVyc2lzdGVudCBE
YXRhYmFzZSBUcmFuc2FjdGlvbiBDb21wbGV0ZSIpOwotICAgICAgICBjaGVja0NvbXBsZXRpb24o
KTsKLSAgICB9KTsKLQotICAgIGZvcmdvdHRlbkRCLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7
Ci0gICAgICAgIHR4LmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEVtcHR5
VGFibGUgKHVuaW1wb3J0YW50RGF0YSkiLCBbXSk7Ci0gICAgfSwgZnVuY3Rpb24oZXJyKSB7Ci0g
ICAgICAgIGxvZygiRm9yZ290dGVuIERhdGFiYXNlIFRyYW5zYWN0aW9uIEVycm9yZWQgLSAiICsg
ZXJyKTsKLSAgICAgICAgZm9yZ290dGVuREIgPSAwOwotICAgICAgICBHQygpOwotICAgICAgICBj
aGVja0NvbXBsZXRpb24oKTsKLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJGb3Jn
b3R0ZW4gRGF0YWJhc2UgVHJhbnNhY3Rpb24gQ29tcGxldGUiKTsKLSAgICAgICAgZm9yZ290dGVu
REIgPSAwOwotICAgICAgICBHQygpOwotICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKLSAgICB9
KTsKLX0KLQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Im11bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgorPGJv
ZHkgb25sb2FkPSJzZXR1cEFuZFJ1blRlc3QoKTsiPgogVGhpcyB0ZXN0IG9wZW5zIHR3byBkYXRh
YmFzZXMsIHF1ZXVlcyB1cCBhIHNlcmllcyBvZiBvcGVyYXRpb25zIG9uIGJvdGgsIHRoZW4gImZv
cmdldHMiIGFib3V0IG9uZSBvZiB0aGVtLgogQWZ0ZXIgZm9yY2luZyBHQywgcmVzb3VyY2VzIGFz
c29jaWF0ZWQgd2l0aCB0aGF0IGRhdGFiYXNlIHNob3VsZCBiZSBmcmVlZCBncmFjZWZ1bGx5Ljxi
cj4KKzxwcmUgaWQ9ImNvbnNvbGUiPiAKK0ZBSUxVUkU6IHRlc3QgZGlkbid0IHJ1bi4KKzwvcHJl
PiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvbXVsdGlwbGUt
ZGF0YWJhc2VzLWdhcmJhZ2UtY29sbGVjdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdl
LWNvbGxlY3Rpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIEdD
KCkKK3sKKyAgICAvLyBGb3JjZSBHQy4KKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAg
ICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgICAgICAoeyB9KTsKKyAgICAgICAg
fQorICAgIH0KK30KKworLy8gVmFyaWFibGUgZm9yIHRoZSBkYXRhYmFzZSB0aGF0IHdpbGwgbmV2
ZXIgYmUgZm9yZ290dGVuCit2YXIgcGVyc2lzdGVudERCID0gMDsKKy8vIFZhcmlhYmxlIGZvciB0
aGUgZm9yZ290dGVuIGRhdGFiYXNlCit2YXIgZm9yZ290dGVuREIgPSAwOworCit2YXIgY29tcGxl
dGVkID0gMDsKK2Z1bmN0aW9uIGNoZWNrQ29tcGxldGlvbigpCit7CisgICAgaWYgKCsrY29tcGxl
dGVkID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIHBlcnNpc3RlbnREQiA9IG9wZW5EYXRhYmFzZSgiTXVsdGlwbGVEYXRhYmFzZXNUZXN0MSIs
ICIxLjAiLCAiVGVzdCBvbmUgb3V0IG9mIGEgc2V0IG9mIGRhdGFiYXNlcyBiZWluZyBkZXN0cm95
ZWQgKDEpIiwgMzI3NjgpOworICAgIGZvcmdvdHRlbkRCID0gb3BlbkRhdGFiYXNlKCJNdWx0aXBs
ZURhdGFiYXNlc1Rlc3QyIiwgIjEuMCIsICJUZXN0IG9uZSBvdXQgb2YgYSBzZXQgb2YgZGF0YWJh
c2VzIGJlaW5nIGRlc3Ryb3llZCAoMikiLCAzMjc2OCk7CisKKyAgICBwZXJzaXN0ZW50REIudHJh
bnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRB
QkxFIElGIE5PVCBFWElTVFMgRGF0YVRlc3QgKHJhbmRvbURhdGEpIiwgW10sIGZ1bmN0aW9uKHR4
LCByZXN1bHQpIHsgCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyArK2kpCisg
ICAgICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gRGF0YVRlc3QgKHJhbmRv
bURhdGEpIFZBTFVFUyAoMSkiLCBbXSk7CisgICAgICAgIH0pOyAKKyAgICB9LCBmdW5jdGlvbihl
cnIpIHsKKyAgICAgICAgbG9nKCJQZXJzaXN0ZW50IERhdGFiYXNlIFRyYW5zYWN0aW9uIEVycm9y
ZWQgLSAiICsgZXJyKTsKKyAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7CisgICAgfSwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGxvZygiUGVyc2lzdGVudCBEYXRhYmFzZSBUcmFuc2FjdGlvbiBDb21w
bGV0ZSIpOworICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAgICB9KTsKKworICAgIGZvcmdv
dHRlbkRCLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7CisgICAgICAgIHR4LmV4ZWN1dGVTcWwo
IkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEVtcHR5VGFibGUgKHVuaW1wb3J0YW50RGF0YSki
LCBbXSk7CisgICAgfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGxvZygiRm9yZ290dGVuIERh
dGFiYXNlIFRyYW5zYWN0aW9uIEVycm9yZWQgLSAiICsgZXJyKTsKKyAgICAgICAgZm9yZ290dGVu
REIgPSAwOworICAgICAgICBHQygpOworICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAgICB9
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKCJGb3Jnb3R0ZW4gRGF0YWJhc2UgVHJhbnNhY3Rp
b24gQ29tcGxldGUiKTsKKyAgICAgICAgZm9yZ290dGVuREIgPSAwOworICAgICAgICBHQygpOwor
ICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAgICB9KTsKK30KSW5kZXg6IExheW91dFRlc3Rz
L3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMt
b24tZGlmZmVyZW50LWhhbmRsZXMuaHRtbAkocmV2aXNpb24gNTk5NzEpCisrKyBMYXlvdXRUZXN0
cy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDk2ICsxLDEyIEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dD4KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuYm9keS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFyIGNvbXBsZXRlID0gMDsKLQotZnVuY3Rp
b24gY2hlY2tDb21wbGV0aW9uKCkKLXsKLSAgICAvLyBUaGUgdGVzdCBzaG91bGQgZW5kIGFmdGVy
IHR3byB0cmFuc2FjdGlvbnMKLSAgICBpZiAoKytjb21wbGV0ZSA9PSAyICYmIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwotfQotCi0vLyBPcGVucyB0aGUgZGF0YWJhc2UgdXNlZCBpbiB0aGlzIHRlc3QgY2FzZQot
ZnVuY3Rpb24gb3BlblRlc3REYXRhYmFzZSgpCi17Ci0gICAgcmV0dXJuIG9wZW5EYXRhYmFzZSgi
TXVsdGlwbGVUcmFuc2FjdGlvbnNPbkRpZmZlcmVudEhhbmRsZXNUZXN0IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICIxLjAiLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3QgdG8gbWFr
ZSBzdXJlIHRoYXQgcXVldWVpbmcgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIG9uIGRpZmZlcmVudCBE
QiBoYW5kbGVzIGRvZXMgbm90IHJlc3VsdCBpbiBhIGRlYWRsb2NrLiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAzMjc2OCk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXRlbWVudFN1Y2Nlc3NDYWxsYmFj
ayhkYk5hbWUsIHN0YXRlbWVudFR5cGUpCi17Ci0gICAgbG9nKGRiTmFtZSArICIgIiArIHN0YXRl
bWVudFR5cGUgKyAiIHN0YXRlbWVudCBzdWNjZWVkZWQiKTsKLX0KLQotZnVuY3Rpb24gc3RhdGVt
ZW50RXJyb3JDYWxsYmFjayhkYk5hbWUsIHN0YXRlbWVudFR5cGUsIGVycm9yKQotewotICAgIGxv
ZyhkYk5hbWUgKyAiICIgKyBzdGF0ZW1lbnRUeXBlICsgIiBzdGF0ZW1lbnQgZmFpbGVkOiAiICsg
ZXJyb3IubWVzc2FnZSk7Ci19Ci0KLS8vIFJ1bnMgYSB0cmFuc2FjdGlvbiBvbiB0aGUgZ2l2ZW4g
ZGF0YWJhc2UKLWZ1bmN0aW9uIHJ1blRyYW5zYWN0aW9uKGRiLCBkYk5hbWUsIHZhbCkKLXsKLSAg
ICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgewotICAgICAgIC8vIEV4ZWN1dGUgYSByZWFk
LW9ubHkgc3RhdGVtZW50Ci0gICAgICAgdHguZXhlY3V0ZVNxbCgiU0VMRUNUIENPVU5UKCopIEZS
T00gVGVzdDsiLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkgeyBz
dGF0ZW1lbnRTdWNjZXNzQ2FsbGJhY2soZGJOYW1lLCAicmVhZCIpOyB9LAotICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24odHgsIGVycm9yKSB7IHN0YXRlbWVudEVycm9yQ2FsbGJhY2soZGJO
YW1lLCAicmVhZCIsIGVycm9yKTsgfSk7Ci0KLSAgICAgICAvLyBFeGVjdXRlIGEgd3JpdGUgc3Rh
dGVtZW50IHRvIG1ha2Ugc3VyZSBTUUxpdGUgdHJpZXMgdG8gYWNxdWlyZSBhbiBleGNsdXNpdmUg
bG9jayBvbiB0aGUgREIgZmlsZQotICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIFRl
c3QgVkFMVUVTICg/KTsiLCBbdmFsXSwKLSAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJl
c3VsdCkgeyBzdGF0ZW1lbnRTdWNjZXNzQ2FsbGJhY2soZGJOYW1lLCAid3JpdGUiKTsgfSwKLSAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeyBzdGF0ZW1lbnRFcnJvckNh
bGxiYWNrKGRiTmFtZSwgIndyaXRlIiwgZXJyb3IpOyB9KTsKLSAgICAgICB9LCBmdW5jdGlvbihl
cnJvcikgewotICAgICAgICAgICAvLyBUcmFuc2FjdGlvbiBmYWlsdXJlIGNhbGxiYWNrCi0gICAg
ICAgICAgIGxvZyhkYk5hbWUgKyAiIHRyYW5zYWN0aW9uIGZhaWxlZDogIiArIGVycm9yLm1lc3Nh
Z2UpOwotICAgICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKLSAgICAgICB9LCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgLy8gVHJhbnNhY3Rpb24gc3VjY2VzcyBjYWxsYmFjawotICAgICAgICAg
ICBsb2coZGJOYW1lICsgIiB0cmFuc2FjdGlvbiBzdWNjZWVkZWQiKTsKLSAgICAgICAgICAgY2hl
Y2tDb21wbGV0aW9uKCk7Ci0gICAgICAgfSk7Ci19Ci0KLS8vIFdlIG5lZWQgdG8gZ3VhcmFudGVl
IHRoYXQgdGhlIFRlc3QgdGFibGUgZXhpc3RzIGJlZm9yZSB3ZSBydW4gb3VyIHRlc3QuCi0vLyBU
aGVyZWZvcmUsIHRoZSB0ZXN0IGNvZGUgaXMgaW4gdGhlIHN1Y2Nlc3NDYWxsYmFjayBvZiB0aGUg
dHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSB0YWJsZS4KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICB2YXIgZGIgPSBv
cGVuVGVzdERhdGFiYXNlKCk7Ci0gICAgICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7
Ci0gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIFRlc3QgdGFibGUgaWYgaXQgZG9lcyBub3QgZXhp
c3QKLSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RT
IFRlc3QgKEZvbyBpbnQpOyIsIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bihyZXN1bHQpIHt9LCBmdW5jdGlvbih0eCwgZXJyb3IpIHt9KTsKLSAgICAgICAgICAgIH0sIGZ1
bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJDcmVhdGluZyB0aGUgVGVzdCB0
YWJsZSBmYWlsZWQ6ICIgKyBlcnJvci5tZXNzYWdlKTsKLSAgICAgICAgICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBUZXN0IHRhYmxlIHdhcyBjcmVhdGVkIHN1Y2Nl
c3NmdWxseQotICAgICAgICAgICAgICAgIHZhciBkYjEgPSBvcGVuVGVzdERhdGFiYXNlKCk7Ci0g
ICAgICAgICAgICAgICAgdmFyIGRiMiA9IG9wZW5UZXN0RGF0YWJhc2UoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoZGIxID09IGRiMikKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJmYWlsdXJlOiBk
YjEgPT0gZGIyIik7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJ1blRyYW5zYWN0aW9uKGRiMSwgImRiMSIsIDEpOwotICAgICAgICAgICAgICAgICAgICBydW5U
cmFuc2FjdGlvbihkYjIsICJkYjIiLCAyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KTsKLSAgICB9IGNhdGNoKGVycikge30KLX0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im11bHRp
cGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGJvZHkgb25sb2FkPSJzZXR1cEFuZFJ1
blRlc3QoKTsiPgogVGhpcyBpcyBhIHRlc3QgdG8gc2VlIGlmIHF1ZXVlaW5nIHVwIG11bHRpcGxl
IHRyYW5zYWN0aW9ucyBvbiBkaWZmZXJlbnQgaGFuZGxlcyB0byB0aGUgc2FtZSBkYXRhYmFzZSBy
ZXN1bHRzIGluIGEgZGVhZGxvY2suPGJyPgorPHByZSBpZD0iY29uc29sZSI+IAorRkFJTFVSRTog
dGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+IAogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlv
bnMtb24tZGlmZmVyZW50LWhhbmRsZXMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5qcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAordmFyIGNvbXBsZXRlID0gMDsKKworZnVuY3Rpb24g
Y2hlY2tDb21wbGV0aW9uKCkKK3sKKyAgICAvLyBUaGUgdGVzdCBzaG91bGQgZW5kIGFmdGVyIHR3
byB0cmFuc2FjdGlvbnMKKyAgICBpZiAoKytjb21wbGV0ZSA9PSAyICYmIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorCisvLyBPcGVucyB0aGUgZGF0YWJhc2UgdXNlZCBpbiB0aGlzIHRlc3QgY2FzZQorZnVu
Y3Rpb24gb3BlblRlc3REYXRhYmFzZSgpCit7CisgICAgcmV0dXJuIG9wZW5EYXRhYmFzZSgiTXVs
dGlwbGVUcmFuc2FjdGlvbnNPbkRpZmZlcmVudEhhbmRsZXNUZXN0IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIxLjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3QgdG8gbWFrZSBz
dXJlIHRoYXQgcXVldWVpbmcgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIG9uIGRpZmZlcmVudCBEQiBo
YW5kbGVzIGRvZXMgbm90IHJlc3VsdCBpbiBhIGRlYWRsb2NrLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAzMjc2OCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRlbWVudFN1Y2Nlc3NDYWxsYmFjayhk
Yk5hbWUsIHN0YXRlbWVudFR5cGUpCit7CisgICAgbG9nKGRiTmFtZSArICIgIiArIHN0YXRlbWVu
dFR5cGUgKyAiIHN0YXRlbWVudCBzdWNjZWVkZWQiKTsKK30KKworZnVuY3Rpb24gc3RhdGVtZW50
RXJyb3JDYWxsYmFjayhkYk5hbWUsIHN0YXRlbWVudFR5cGUsIGVycm9yKQoreworICAgIGxvZyhk
Yk5hbWUgKyAiICIgKyBzdGF0ZW1lbnRUeXBlICsgIiBzdGF0ZW1lbnQgZmFpbGVkOiAiICsgZXJy
b3IubWVzc2FnZSk7Cit9CisKKy8vIFJ1bnMgYSB0cmFuc2FjdGlvbiBvbiB0aGUgZ2l2ZW4gZGF0
YWJhc2UKK2Z1bmN0aW9uIHJ1blRyYW5zYWN0aW9uKGRiLCBkYk5hbWUsIHZhbCkKK3sKKyAgICBk
Yi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAgIC8vIEV4ZWN1dGUgYSByZWFkLW9u
bHkgc3RhdGVtZW50CisgICAgICAgdHguZXhlY3V0ZVNxbCgiU0VMRUNUIENPVU5UKCopIEZST00g
VGVzdDsiLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkgeyBzdGF0
ZW1lbnRTdWNjZXNzQ2FsbGJhY2soZGJOYW1lLCAicmVhZCIpOyB9LAorICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24odHgsIGVycm9yKSB7IHN0YXRlbWVudEVycm9yQ2FsbGJhY2soZGJOYW1l
LCAicmVhZCIsIGVycm9yKTsgfSk7CisKKyAgICAgICAvLyBFeGVjdXRlIGEgd3JpdGUgc3RhdGVt
ZW50IHRvIG1ha2Ugc3VyZSBTUUxpdGUgdHJpZXMgdG8gYWNxdWlyZSBhbiBleGNsdXNpdmUgbG9j
ayBvbiB0aGUgREIgZmlsZQorICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIFRlc3Qg
VkFMVUVTICg/KTsiLCBbdmFsXSwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3Vs
dCkgeyBzdGF0ZW1lbnRTdWNjZXNzQ2FsbGJhY2soZGJOYW1lLCAid3JpdGUiKTsgfSwKKyAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeyBzdGF0ZW1lbnRFcnJvckNhbGxi
YWNrKGRiTmFtZSwgIndyaXRlIiwgZXJyb3IpOyB9KTsKKyAgICAgICB9LCBmdW5jdGlvbihlcnJv
cikgeworICAgICAgICAgICAvLyBUcmFuc2FjdGlvbiBmYWlsdXJlIGNhbGxiYWNrCisgICAgICAg
ICAgIGxvZyhkYk5hbWUgKyAiIHRyYW5zYWN0aW9uIGZhaWxlZDogIiArIGVycm9yLm1lc3NhZ2Up
OworICAgICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAgICAgICB9LCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgLy8gVHJhbnNhY3Rpb24gc3VjY2VzcyBjYWxsYmFjaworICAgICAgICAgICBs
b2coZGJOYW1lICsgIiB0cmFuc2FjdGlvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgICAgY2hlY2tD
b21wbGV0aW9uKCk7CisgICAgICAgfSk7Cit9CisKKy8vIFdlIG5lZWQgdG8gZ3VhcmFudGVlIHRo
YXQgdGhlIFRlc3QgdGFibGUgZXhpc3RzIGJlZm9yZSB3ZSBydW4gb3VyIHRlc3QuCisvLyBUaGVy
ZWZvcmUsIHRoZSB0ZXN0IGNvZGUgaXMgaW4gdGhlIHN1Y2Nlc3NDYWxsYmFjayBvZiB0aGUgdHJh
bnNhY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSB0YWJsZS4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIGRiID0gb3BlblRlc3REYXRhYmFzZSgpOworICAgICAgICBk
Yi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBU
ZXN0IHRhYmxlIGlmIGl0IGRvZXMgbm90IGV4aXN0CisgICAgICAgICAgICB0eC5leGVjdXRlU3Fs
KCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBUZXN0IChGb28gaW50KTsiLCBbXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0KSB7fSwgZnVuY3Rpb24odHgsIGVy
cm9yKSB7fSk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAg
ICAgIGxvZygiQ3JlYXRpbmcgdGhlIFRlc3QgdGFibGUgZmFpbGVkOiAiICsgZXJyb3IubWVzc2Fn
ZSk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUg
VGVzdCB0YWJsZSB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgICAgICB2YXIg
ZGIxID0gb3BlblRlc3REYXRhYmFzZSgpOworICAgICAgICAgICAgICAgIHZhciBkYjIgPSBvcGVu
VGVzdERhdGFiYXNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGRiMSA9PSBkYjIpCisgICAgICAg
ICAgICAgICAgICAgIGxvZygiZmFpbHVyZTogZGIxID09IGRiMiIpOworICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBydW5UcmFuc2FjdGlvbihkYjEsICJkYjEiLCAx
KTsKKyAgICAgICAgICAgICAgICAgICAgcnVuVHJhbnNhY3Rpb24oZGIyLCAiZGIyIiwgMik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgfSBjYXRjaChlcnIpIHt9Cit9
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9u
cy5odG1sCShyZXZpc2lvbiA1OTk3MSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvbXVsdGlwbGUt
dHJhbnNhY3Rpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzEsMTIgQEAKIDxodG1s
PgogPGhlYWQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1
bWVudC5ib2R5LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgY29tcGxl
dGUgPSAwOwotCi1mdW5jdGlvbiBjaGVja0NvbXBsZXRpb24oKQotewotICAgIGlmICgrK2NvbXBs
ZXRlID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAgIHZhciBkYiA9IG9wZW5EYXRhYmFzZSgi
TXVsdGlwbGVUcmFuc2FjdGlvbnNUZXN0IiwgIjEuMCIsICJUZXN0IHRvIG1ha2Ugc3VyZSBtdWx0
aXBsZSB0cmFuc2FjdGlvbnMgY2FuIGJlIHF1ZXVlZCBhdCBvbmNlIGZvciBhbiBIVE1MNSBkYXRh
YmFzZSIsIDMyNzY4KTsKLQotICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7Ci0gICAg
ICAgIGxvZygiVHJhbnNhY3Rpb24gMSBTdGFydGVkIik7Ci0gICAgfSwgZnVuY3Rpb24oZXJyKSB7
Ci0gICAgICAgIGxvZygiVHJhbnNhY3Rpb24gMSBFcnJvcmVkIC0gIiArIGVycik7Ci0gICAgICAg
IGNoZWNrQ29tcGxldGlvbigpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coIlRy
YW5zYWN0aW9uIDEgU3VjY2VlZGVkIik7Ci0gICAgICAgIGNoZWNrQ29tcGxldGlvbigpOwotICAg
IH0pOwotCi0gICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKLSAgICAgICAgbG9nKCJU
cmFuc2FjdGlvbiAyIFN0YXJ0ZWQiKTsKLSAgICB9LCBmdW5jdGlvbihlcnIpIHsKLSAgICAgICAg
bG9nKCJUcmFuc2FjdGlvbiAyIEVycm9yZWQgLSAiICsgZXJyKTsKLSAgICAgICAgY2hlY2tDb21w
bGV0aW9uKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiVHJhbnNhY3Rpb24g
MiBTdWNjZWVkZWQiKTsKLSAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7Ci0gICAgfSk7Ci19Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Im11bHRpcGxlLXRyYW5zYWN0aW9ucy5qcyI+PC9zY3JpcHQ+
CiA8aGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8Ym9keSBvbmxvYWQ9InNldHVw
QW5kUnVuVGVzdCgpOyI+CiBUaGlzIGlzIGEgdGVzdCB0byBzZWUgaWYgdGhlIGRhdGFiYXNlIEFQ
SSBhbGxvd3MgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHRvIGJlIHF1ZXVlZCBvbiB0aGUgc2FtZSBk
YXRhYmFzZSBhdCBvbmNlOjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPiAKK0ZBSUxVUkU6IHRlc3Qg
ZGlkbid0IHJ1bi4KKzwvcHJlPiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzIgQEAKK3ZhciBjb21wbGV0ZSA9IDA7CisKK2Z1bmN0aW9uIGNoZWNrQ29tcGxl
dGlvbigpCit7CisgICAgaWYgKCsrY29tcGxldGUgPT0gMiAmJiB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCJNdWx0
aXBsZVRyYW5zYWN0aW9uc1Rlc3QiLCAiMS4wIiwgIlRlc3QgdG8gbWFrZSBzdXJlIG11bHRpcGxl
IHRyYW5zYWN0aW9ucyBjYW4gYmUgcXVldWVkIGF0IG9uY2UgZm9yIGFuIEhUTUw1IGRhdGFiYXNl
IiwgMzI3NjgpOworCisgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKKyAgICAgICAg
bG9nKCJUcmFuc2FjdGlvbiAxIFN0YXJ0ZWQiKTsKKyAgICB9LCBmdW5jdGlvbihlcnIpIHsKKyAg
ICAgICAgbG9nKCJUcmFuc2FjdGlvbiAxIEVycm9yZWQgLSAiICsgZXJyKTsKKyAgICAgICAgY2hl
Y2tDb21wbGV0aW9uKCk7CisgICAgfSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGxvZygiVHJhbnNh
Y3Rpb24gMSBTdWNjZWVkZWQiKTsKKyAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7CisgICAgfSk7
CisKKyAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAgICBsb2coIlRyYW5z
YWN0aW9uIDIgU3RhcnRlZCIpOworICAgIH0sIGZ1bmN0aW9uKGVycikgeworICAgICAgICBsb2co
IlRyYW5zYWN0aW9uIDIgRXJyb3JlZCAtICIgKyBlcnIpOworICAgICAgICBjaGVja0NvbXBsZXRp
b24oKTsKKyAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKCJUcmFuc2FjdGlvbiAyIFN1
Y2NlZWRlZCIpOworICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAgICB9KTsKK30KSW5kZXg6
IExheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL2RhdGFiYXNlLWNvbW1vbi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9kYXRhYmFzZS1j
b21tb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK3ZhciBEQl9URVNUX1NVRkZJ
WCA9ICJfZG9tIjsKKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Cit9CisK
K2Z1bmN0aW9uIHNldHVwQW5kUnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiIjsKKyAg
ICBydW5UZXN0KCk7Cit9CisK
</data>
<flag name="review"
          id="41430"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57060</attachid>
            <date>2010-05-25 18:29:29 -0700</date>
            <delta_ts>2010-05-27 19:38:27 -0700</delta_ts>
            <desc>Another set of tests.  This is much smaller than the diff size suggests.</desc>
            <filename>one.patch</filename>
            <type>text/plain</type>
            <size>49629</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwMjA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTAtMDUtMjUgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWZhY3RvciBEQiBsYXlvdXQgdGVzdHMgc28gdGhhdCB0aGV5IHdvcmsgaW4g
V2ViIFdvcmtlcnMgYXMgd2VsbCBhcyBQYWdlcy4KKyAgICAgICAgVGhpcyBpcyB0aGUgc2Vjb25k
IGJhdGNoIG9mIHRlc3QgcG9ydHM7IHRoZXJlIGFyZSBzdGlsbCBtb3JlIHRvIGNvbWUuCisgICAg
ICAgIEluIGdlbmVyYWwsIHRoaXMgaXMgYWxsIGp1c3QgdHJpdmlhbCBjaGFuZ2VzLiAgRm9yIGVh
Y2ggdGVzdCBmaWxlLCBJIHB1bGwgb3V0IHRoZSBtZWF0IGludG8gYSAuanMgZmlsZSBbd2l0aCBu
byBmdW5jdGlvbmFsIGNoYW5nZXNdLiAgVGhlbiBJIGluY2x1ZGUgdGhhdCBmcm9tIGJvdGggdGhl
IERPTSB0ZXN0IGFuZCBhIG5ldyB3b3JrZXIgdGVzdDsgaW4gYm90aCBjYXNlcywgdGhlIC5odG1s
IGZpbGVzIGFyZSB0cml2aWFsIHdyYXBwZXJzLiAgQWxsIGJvaWxlcnBsYXRlIGNvZGUgaXMgcHVs
bGVkIG91dCBpbnRvIHRoZSByZXNvdXJjZSBmaWxlcy4KKworICAgICAgICBJIGhhZCB0byBhZGQg
YSBiaXQgb2YgZnVuY3Rpb25hbGl0eSB0byBkYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcyBh
bmQgZGF0YWJhc2Utd29ya2VyLmpzIGluIG9yZGVyIHRvIGRlYWwgd2l0aCBoYXNoLWNoYW5nZS13
aXRoLXhoci5odG1sLiAgSXQgbmVlZHMgdG8gd3JpdGUgbG9jYXRpb24uaHJlZiBhbmQgY2FsbCBo
aXN0b3J5LmJhY2soKSBmcm9tIHdvcmtlciBjb250ZXh0LCBzbyBJIHBhc3MgdGhvc2UgdG8gdGhl
IERPTSB2aWEgcG9zdE1lc3NhZ2UuCisKKyAgICAgICAgSW4gYSBjb3VwbGUgb2YgdGhlc2UgdGVz
dHMsIHRoZXJlIHdlcmUgdHJ5L2NhdGNoIHdyYXBwZXJzIHRoYXQgc3VwcHJlc3NlZCBlcnJvcnMu
ICBJIGRvbid0IHNlZSB3aHkgeW91J2Qgd2FudCB0byBkbyB0aGF0IGluIGEgdGVzdDsgbGV0J3Mg
bGV0IHRob3NlIGVycm9ycyBjYXVzZSB0ZXN0IGZhaWx1cmVzLCB0aGVuIGZpeCB0aGVtLiAgSSB0
b29rIG91dCB0aGUgd3JhcHBlcnMgYW5kIHNhdyBubyBkaWZmZXJlbmNlIGluIGJlaGF2aW9yLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NQor
CisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9oYXNoLWNo
YW5nZS13aXRoLXhoci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13
aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3dvcmtlcnMvc3RvcmFnZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9n
ZXRoZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvdGVzdC1hdXRob3JpemVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvdGVzdC1hdXRo
b3JpemVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14
aHItZXhwZWN0ZWQudHh0OiBUcml2aWFsIHdoaXRlc3BhY2UgY2hhbmdlLgorICAgICAgICAqIHN0
b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2hhc2gt
Y2hhbmdlLXdpdGgteGhyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL29wZW4tZGF0YWJh
c2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRv
Z2V0aGVyLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlv
bnMtZG9udC1ydW4tdG9nZXRoZXIuanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvdGVzdC1h
dXRob3JpemVyLmh0bWw6CisgICAgICAgICogc3RvcmFnZS90ZXN0LWF1dGhvcml6ZXIuanM6IEFk
ZGVkLgorICAgICAgICBBZGRlZCBuZXcgQVBJIGZvciBzZXR0aW5nIGxvY2F0aW9uLmhhc2ggYW5k
IGNhbGxpbmcgaGlzdG9yeS5iYWNrKCkgZnJvbSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAgKiBm
YXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIu
anM6CisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL2RhdGFiYXNlLXdv
cmtlci5qczoKKyAgICAgICAgKHNldExvY2F0aW9uSGFzaCk6CisgICAgICAgIChoaXN0b3J5LmJh
Y2spOgorICAgICAgICBUaGlzIGV4aXN0cyBpbiB0aGUgcHJldmlvdXMgcGF0Y2gsIGJ1dCBJJ3Zl
IGFkZGVkIHRvIGl0IGhlcmUuICBJJ2xsIGhhdmUgdG8gbWVyZ2UgYmV0d2VlbiBjb21taXQgb2Yg
dGhlIGZpcnN0IGFuZCB0aGUgc2Vjb25kIHBhdGNoZXMuCisgICAgICAgICogc3RvcmFnZS9yZXNv
dXJjZXMvZGF0YWJhc2UtY29tbW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNldExvY2F0aW9uSGFz
aCk6CisKIDIwMTAtMDUtMjUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIHBpeGVsIGV4cGVjdGF0aW9ucyBjaGFuZ2UKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9o
YXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorQ2hhbmdpbmcgdGhlIGhhc2ggdG8gY3Jl
YXRlIGhpc3RvcnkgZW50cmllcy4KK0RiIGlzIHdhcm1lZCB1cAorVGVzdCBDb21wbGV0ZSwgU1VD
Q0VTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9oYXNoLWNoYW5n
ZS13aXRoLXhoci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
dG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgnaGFzaC1jaGFuZ2Utd2l0aC14aHIuanMnKSI+Cis8
cHJlIGlkPSJjb25zb2xlIj4gCitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCis8
L2JvZHk+CisKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdl
L29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0
YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13
aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgdG8gc2VlIGlmIG9wZW5pbmcgYSBkYXRhYmFz
ZSB3aGlsZSBhIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgb24gYSBkaWZmZXJlbnQgaGFuZGxlIHRv
IHRoZSBzYW1lIGRhdGFiYXNlIHJlc3VsdHMgaW4gYSBkZWFkbG9jay4KK29wZW5EYXRhYmFzZSgp
IHN1Y2NlZWRlZC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Bl
bi1kYXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUt
dHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4t
cHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoJ29wZW4tZGF0YWJh
c2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuanMnKSI+CitUaGlzIGlzIGEgdGVzdCB0
byBzZWUgaWYgb3BlbmluZyBhIGRhdGFiYXNlIHdoaWxlIGEgdHJhbnNhY3Rpb24gaXMgcnVubmlu
ZyBvbiBhIGRpZmZlcmVudCBoYW5kbGUgdG8gdGhlIHNhbWUgZGF0YWJhc2UgcmVzdWx0cyBpbiBh
IGRlYWRsb2NrLjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPiAKK0ZBSUxVUkU6IHRlc3QgZGlkbid0
IHJ1bi4KKzwvcHJlPiAKKzwvYm9keT4KKworPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3N0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRv
Z2V0aGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc3RvcmFnZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0
b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0IHRlc3RzIHRo
YXQgcmVhZCBhbmQgd3JpdGUgdHJhbnNhY3Rpb25zIG9uIGRpZmZlcmVudCBoYW5kbGVzIHRvIHRo
ZSBzYW1lIGRhdGFiYXNlIGRvbid0IHJ1biB0b2dldGhlci4KK1RyYW5zYWN0aW9uIHN1Y2Nlc3Nm
dWwuCitUcmFuc2FjdGlvbiBzdWNjZXNzZnVsLgorVHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bC4KK1Ry
YW5zYWN0aW9uIHN1Y2Nlc3NmdWwuCitUcmFuc2FjdGlvbiBzdWNjZXNzZnVsLgorVHJhbnNhY3Rp
b24gc3VjY2Vzc2Z1bC4KK1RyYW5zYWN0aW9uIHN1Y2Nlc3NmdWwuCitUcmFuc2FjdGlvbiBzdWNj
ZXNzZnVsLgorVHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bC4KK1RyYW5zYWN0aW9uIHN1Y2Nlc3NmdWwu
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRl
LXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1k
b250LXJ1bi10b2dldGhlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3N0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRvZ2V0
aGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCdyZWFkLWFuZC13cml0ZS10
cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIuanMnKSI+CitUaGlzIHRlc3QgdGVzdHMgdGhh
dCByZWFkIGFuZCB3cml0ZSB0cmFuc2FjdGlvbnMgb24gZGlmZmVyZW50IGhhbmRsZXMgdG8gdGhl
IHNhbWUgZGF0YWJhc2UgZG9uJ3QgcnVuIHRvZ2V0aGVyLjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUi
PiAKK0ZBSUxVUkU6IHRlc3QgZGlkbid0IHJ1bi4KKzwvcHJlPiAKKzwvYm9keT4KKworPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvdGVzdC1hdXRob3JpemVy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3Rv
cmFnZS90ZXN0LWF1dGhvcml6ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvdGVzdC1hdXRob3JpemVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorVGhpcyB0ZXN0IHRlc3RzIHRoZSBkYXRhYmFz
ZSBhdXRob3JpemVyLgorU1FMSVRFX0NSRUFURV9UQUJMRSBzdGF0ZW1lbnQgc3VjY2VlZGVkLgor
U1FMSVRFX0NSRUFURV9JTkRFWCBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9U
RU1QX1RBQkxFIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfQ1JFQVRFX1RFTVBfVFJJR0dF
UiBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9URU1QX1ZJRVcgc3RhdGVtZW50
IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVBVEVfVFJJR0dFUiBzdGF0ZW1lbnQgc3VjY2VlZGVkLgor
U1FMSVRFX0NSRUFURV9WSUVXIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfQ1JFQVRFX1ZU
QUJMRSBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX1JFQUQgc3RhdGVt
ZW50IHN1Y2NlZWRlZC4KK1NRTElURV9TRUxFQ1Qgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElU
RV9ERUxFVEUgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9JTlNFUlQgc3RhdGVtZW50IHN1
Y2NlZWRlZC4KK1NRTElURV9VUERBVEUgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9QUkFH
TUEgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9BTFRFUl9UQUJMRSBz
dGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0FMVEVSX1RBQkxFIHN0YXRlbWVudCBzdWNjZWVk
ZWQuCitTUUxJVEVfVFJBTlNBQ1RJT04gc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQK
K1NRTElURV9BVFRBQ0ggc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9E
RVRBQ0ggc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9SRUlOREVYIHN0
YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfQU5BTFlaRSBzdGF0ZW1lbnQgZmFpbGVkOiBub3Qg
YXV0aG9yaXplZAorU1FMSVRFX0RST1BfSU5ERVggc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElU
RV9EUk9QX1RFTVBfVEFCTEUgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9EUk9QX1RFTVBf
VFJJR0dFUiBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0RST1BfVEVNUF9WSUVXIHN0YXRl
bWVudCBzdWNjZWVkZWQuCitTUUxJVEVfRFJPUF9UUklHR0VSIHN0YXRlbWVudCBzdWNjZWVkZWQu
CitTUUxJVEVfRFJPUF9WSUVXIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfRFJPUF9UQUJM
RSBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorV3JpdGUgdHJhbnNhY3Rpb24gc3VjY2VlZGVkLgorU1FM
SVRFX0NSRUFURV9UQUJMRSBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRF
X0NSRUFURV9UQUJMRSBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9JTkRFWCBz
dGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0NSRUFURV9URU1QX1RBQkxF
IHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfQ1JFQVRFX1RFTVBfVFJJ
R0dFUiBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0NSRUFURV9URU1Q
X1ZJRVcgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9DUkVBVEVfVFJJ
R0dFUiBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0NSRUFURV9WSUVX
IHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfQ1JFQVRFX1ZUQUJMRSBz
dGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0NSRUFURV9JTkRFWCBzdGF0
ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9URU1QX1RBQkxFIHN0YXRlbWVudCBzdWNj
ZWVkZWQuCitTUUxJVEVfQ1JFQVRFX1RFTVBfVFJJR0dFUiBzdGF0ZW1lbnQgc3VjY2VlZGVkLgor
U1FMSVRFX0NSRUFURV9URU1QX1ZJRVcgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVB
VEVfVFJJR0dFUiBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9WSUVXIHN0YXRl
bWVudCBzdWNjZWVkZWQuCitTUUxJVEVfQ1JFQVRFX1ZUQUJMRSBzdGF0ZW1lbnQgZmFpbGVkOiBu
b3QgYXV0aG9yaXplZAorU1FMSVRFX1JFQUQgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9T
RUxFQ1Qgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9ERUxFVEUgc3RhdGVtZW50IGZhaWxl
ZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9JTlNFUlQgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1
dGhvcml6ZWQKK1NRTElURV9VUERBVEUgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQK
K1NRTElURV9QUkFHTUEgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9B
TFRFUl9UQUJMRSBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0FMVEVS
X1RBQkxFIHN0YXRlbWVudCBmYWlsZWQ6IG5vIHN1Y2ggdGFibGU6IFRlc3RUYWJsZQorU1FMSVRF
X1RSQU5TQUNUSU9OIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfQVRU
QUNIIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfREVUQUNIIHN0YXRl
bWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfUkVJTkRFWCBzdGF0ZW1lbnQgZmFp
bGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0FOQUxZWkUgc3RhdGVtZW50IGZhaWxlZDogbm90
IGF1dGhvcml6ZWQKK1NRTElURV9EUk9QX0lOREVYIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRo
b3JpemVkCitTUUxJVEVfRFJPUF9URU1QX1RBQkxFIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRo
b3JpemVkCitTUUxJVEVfRFJPUF9URU1QX1RSSUdHRVIgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1
dGhvcml6ZWQKK1NRTElURV9EUk9QX1RFTVBfVklFVyBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0
aG9yaXplZAorU1FMSVRFX0RST1BfVFJJR0dFUiBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9y
aXplZAorU1FMSVRFX0RST1BfVklFVyBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAor
U1FMSVRFX0RST1BfVEFCTEUgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1JlYWQg
dHJhbnNhY3Rpb25zIHN1Y2NlZWRlZC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3N0b3JhZ2UvdGVzdC1hdXRob3JpemVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3N0b3JhZ2UvdGVzdC1hdXRob3JpemVyLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS90ZXN0LWF1dGhvcml6ZXIuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoJ3Rlc3QtYXV0aG9yaXplci5qcycpIj4KK1Ro
aXMgdGVzdCB0ZXN0cyB0aGUgZGF0YWJhc2UgYXV0aG9yaXplci48YnI+Cis8cHJlIGlkPSJjb25z
b2xlIj4gCitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCis8L2JvZHk+CisKKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy9k
YXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIu
anMJKHJldmlzaW9uIDYwMDkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2Uv
cmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC04LDExICs4LDE1IEBAIGRhdGFiYXNlV29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkK
IH07CiAKIGRhdGFiYXNlV29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
aWYgKGV2ZW50LmRhdGEuaW5kZXhPZignbG9nOicpID09IDApCisgICAgaWYgKGV2ZW50LmRhdGEu
aW5kZXhPZignbG9nOicpID09IDApIHsKICAgICAgICAgbG9nKGV2ZW50LmRhdGEuc3Vic3RyaW5n
KDQpKTsKLSAgICBlbHNlIGlmIChldmVudC5kYXRhID09ICdub3RpZnlEb25lJykgeworICAgIH0g
ZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAnbm90aWZ5RG9uZScpIHsKICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZignc2V0TG9j
YXRpb25IYXNoOicpID09ICcwJykgeworICAgICAgICBsb2NhdGlvbi5oYXNoID0gZXZlbnQuZGF0
YS5zdWJzdHJpbmcoJ3NldExvY2F0aW9uSGFzaDonLmxlbmd0aCk7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICdiYWNrJykgeworICAgICAgICBoaXN0b3J5LmJhY2soKTsKICAgICB9IGVs
c2UKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgbWVzc2FnZTogIiArIGV2
ZW50KTsKIH07CkBAIC0yMSwzICsyNSwxNSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsKICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCArPSBtZXNzYWdl
ICsgIlxuIjsKIH0KKworZnVuY3Rpb24gcnVuVGVzdCh0ZXN0RmlsZSkKK3sKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
VGV4dCA9ICIiOworICAgIGRhdGFiYXNlV29ya2VyLnBvc3RNZXNzYWdlKCJpbXBvcnRTY3JpcHRz
Oi4uLy4uLy4uL3N0b3JhZ2UvIiArIHRlc3RGaWxlKTsKKyAgICBkYXRhYmFzZVdvcmtlci5wb3N0
TWVzc2FnZSgicnVuVGVzdCIpOworfQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
c3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy9kYXRhYmFzZS13b3JrZXIuanMJ
KHJldmlzaW9uIDYwMDkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVz
b3VyY2VzL2RhdGFiYXNlLXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDE0IEBA
IGZ1bmN0aW9uIGxvZyhzKSB7CiAgICAgcG9zdE1lc3NhZ2UoImxvZzoiICsgcyk7CiB9CiAKK2Z1
bmN0aW9uIHNldExvY2F0aW9uSGFzaChoYXNoKSB7CisgICAgcG9zdE1lc3NhZ2UoInNldExvY2F0
aW9uSGFzaDoiICsgaGFzaCk7Cit9CisKK3ZhciBoaXN0b3J5ID0geworICAgIGJhY2s6IGZ1bmN0
aW9uKCkgeyBwb3N0TWVzc2FnZSgiYmFjayIpOyB9Cit9OworCiBvbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkgewogICAgIHRyeSB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoImlt
cG9ydFNjcmlwdHM6IikgPT0gMCkgewpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNo
YW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDkxKQor
KysgTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACiBDaGFuZ2luZyB0aGUgaGFzaCB0byBjcmVh
dGUgaGlzdG9yeSBlbnRyaWVzLgogRGIgaXMgd2FybWVkIHVwCiBUZXN0IENvbXBsZXRlLCBTVUND
RVNTCisKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhy
Lmh0bWwJKHJldmlzaW9uIDYwMDkxKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5n
ZS13aXRoLXhoci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0MCArMSwxMiBAQAogPGh0bWw+
IAogPGhlYWQ+IAogPHRpdGxlPkhhc2ggQ2hhbmdlIHdpdGggYW4gT3BlbiBYSFIgc2hvdWxkIG5v
dCBzdG9wIGRhdGFiYXNlIHRyYW5zYWN0aW9uczwvdGl0bGU+Ci0KLTxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4gCi0gCi12YXIgREJfVVBEQVRFX0lOVEVSVkFMID0gMTAwOwotdmFyIFNF
TkRfWEhSX0lOVEVSVkFMID0gMTAwOwotdmFyIEJBQ0tfSU5URVJWQUwgPSAxMDA7Ci12YXIgQ1JF
QVRFX0hFQUxUSF9UQUJMRSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBoZWFsdGggKGtl
eSBWQVJDSEFSKDE2KSBQUklNQVJZIEtFWSk7JzsKLXZhciBVUERBVEVfREFUQSA9ICdSRVBMQUNF
IElOVE8gaGVhbHRoIFZBTFVFUygiaGVhbHRoLWNoZWNrLWtleSIpOyc7Ci0gCi12YXIgZGIgPSB3
aW5kb3cub3BlbkRhdGFiYXNlKCdidWcyNTcxMCcsICcxLjAnLCAnTGF5b3V0VGVzdCBmb3IgYnVn
IDI1NzEwJywgMTAyNDAwKTsKLXZhciBiYWNrSXRlcmF0aW9uczsKLXZhciBtc2dEaXY7Ci12YXIg
eGhyRmN0SW50ZXJ2YWxJZDsKLXZhciBiYWNrRmN0SW50ZXJ2YWxJZDsKLXZhciBzdWNjZXNzQ2hl
Y2tJbnRlcnZhbElkOwotdmFyIGRiRmN0SW50ZXJ2YWxJZDsKLXZhciBzdWNjZXNzZXM7Ci12YXIg
ZGF0YWJhc2VVcGRhdGVzOwotdmFyIHN0b3BwZWRJbnRlcnZhbHM7Ci0gCi1mdW5jdGlvbiBsb2co
bXNnKQotewotICAgIHZhciBuZXdNc2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
LSAgICBuZXdNc2cuaW5uZXJUZXh0ID0gbXNnOwotICAgIG1zZ0Rpdi5hcHBlbmRDaGlsZChuZXdN
c2cpOwotfQotCi1mdW5jdGlvbiBzdG9wSW50ZXJ2YWxzKCkKLXsKLSAgICBzdG9wcGVkSW50ZXJ2
YWxzID0gdHJ1ZTsKLSAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChkYkZjdEludGVydmFsSWQpOwot
ICAgIHdpbmRvdy5jbGVhckludGVydmFsKHhockZjdEludGVydmFsSWQpOwotICAgIHdpbmRvdy5j
bGVhckludGVydmFsKGJhY2tGY3RJbnRlcnZhbElkKTsKLX0KLQotZnVuY3Rpb24gc3RvcFRlc3Qo
bWVzc2FnZSkKLXsKLSAgICBpZiAoIXN0b3BwZWRJbnRlcnZhbHMpCi0gICAgICAgIHN0b3BJbnRl
cnZhbHMoKTsKLQotICAgIGxvZyhtZXNzYWdlKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
LX0KLSAgICAKLWZ1bmN0aW9uIHVwZGF0ZURhdGFiYXNlKCkKLXsKLSAgICBkYXRhYmFzZVVwZGF0
ZXMrKzsgIAotICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5zYWN0aW9uKSB7Ci0gICAg
ICAgIHRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwoVVBEQVRFX0RBVEEsIFtdLCBmdW5jdGlvbigpIHt9
LCBlcnJvckhhbmRsZXIpOwotICAgIH0sIGVycm9ySGFuZGxlciwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHN1Y2Nlc3NlcysrOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBjaGVja0ZvclN1Y2Nlc3Mo
KQotewotICAgIGlmIChzdWNjZXNzZXMgPT0gZGF0YWJhc2VVcGRhdGVzKSB7Ci0gICAgICAgIHN0
b3BUZXN0KCdUZXN0IENvbXBsZXRlLCBTVUNDRVNTJyk7Ci0gICAgICAgIHdpbmRvdy5jbGVhcklu
dGVydmFsKHN1Y2Nlc3NDaGVja0ludGVydmFsSWQpOwotICAgIH0KLX0KLSAKLWZ1bmN0aW9uIGVy
cm9ySGFuZGxlcih0eCwgZXJyb3IpCi17Ci0gICAgbG9nKCdEQiBlcnJvciwgY29kZTogJyArIGVy
cm9yLmNvZGUgKyAnLCBtc2c6ICcgKyBlcnJvci5tZXNzYWdlKTsKLSAgICBzdG9wVGVzdCgnVGVz
dCBDb21wbGV0ZSwgRkFJTEVEJyk7Ci19Ci0gCi1mdW5jdGlvbiBzZW5kWGhyKCkKLXsKLSAgICB4
aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbignR0VUJywgbG9jYXRpb24u
aHJlZiwgdHJ1ZSk7Ci0gICAgeGhyLnNlbmQoJycpOwotfQotIAotZnVuY3Rpb24gaW52b2tlQmFj
aygpCi17Ci0gICAgYmFja0l0ZXJhdGlvbnMtLTsKLSAgICBpZiAoYmFja0l0ZXJhdGlvbnMpIHsK
LSAgICAgICAgaGlzdG9yeS5iYWNrKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RvcEludGVy
dmFscygpOwotICAgICAgICAvLyBBbGxvdyBhIGxpdHRsZSB0aW1lIGZvciBhbGwgdGhlIGRhdGFi
YXNlIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZSBub3cgd2UndmUgc3RvcHBlZCBtYWtpbmcgdGhl
bS4KLSAgICAgICAgc3VjY2Vzc0NoZWNrSW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChj
aGVja0ZvclN1Y2Nlc3MsIDI1MCk7Ci0gICAgICAgIC8vIElmIHdlIGRvbid0IGZpbmlzaCBiZWZv
cmUgdGhpcyB0aW1lLCB0aGVuIHdlIGNvbnNpZGVyIHRoZSB0ZXN0IGZhaWxlZC4KLSAgICAgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHN0b3BUZXN0KCdUaW1lZCBvdXQgd2FpdGlu
ZyBmb3IgdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLiBGQUlMRUQnKTsgfSwgMjAwMDApOwotICAg
ICAgICAKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Ci0gICAgfQotICAKLSAgICBtc2dEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXNncycp
OwotCi0gICAgbXNnRGl2LmlubmVySFRNTCA9ICcnOwotICAgIGJhY2tJdGVyYXRpb25zID0gMTA7
Ci0gICAgY29uc2VjdXRpdmVGYWlsdXJlcyA9IDA7Ci0gICAgc3VjY2Vzc2VzID0gMDsKLSAgICBk
YXRhYmFzZVVwZGF0ZXMgPSAwOwotICAgIHN0b3BwZWRJbnRlcnZhbHMgPSBmYWxzZTsKLQotICAg
IC8vIENyZWF0ZSBzb21lIGhhc2hlcyBzbyB3ZSBjYW4gY2FsbCBoaXN0b3J5LmJhY2soKS4KLSAg
ICBsb2coJ0NoYW5naW5nIHRoZSBoYXNoIHRvIGNyZWF0ZSBoaXN0b3J5IGVudHJpZXMuJyk7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYWNrSXRlcmF0aW9uczsgaSsrKSB7Ci0gICAgICAgIGxv
Y2F0aW9uLmhhc2ggPSBpOwotICAgIH0KLQotICAgIC8vIEluaXQgdGhlIGRhdGFiYXNlLgotICAg
IGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5zYWN0aW9uKSB7Ci0gICAgICAgIHRyYW5zYWN0
aW9uLmV4ZWN1dGVTcWwoQ1JFQVRFX0hFQUxUSF9UQUJMRSwgW10sIGZ1bmN0aW9uKCkge30sIGVy
cm9ySGFuZGxlcik7Ci0gICAgfSwgZXJyb3JIYW5kbGVyLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
Ly8gR2l2ZSBhIGxpdHRsZSBmb3IgdGhlIGRhdGFiYXNlIHRvICd3YXJtIHVwJyBiZWZvcmUgbWFr
aW5nIHhociByZXF1ZXN0cwotICAgICAgICAvLyBhbmQgY2FsbGluZyBoaXN0b3J5LmJhY2soKS4K
LSAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsb2co
J0RiIGlzIHdhcm1lZCB1cCcpOwotCi0gICAgICAgICAgICAvLyBOT1RFOiBJZiB3ZSBkb24ndCBt
YWtlIGFueSB4aHIgcmVxdWVzdHMsIHRoZW4gdGhlIHRlc3QKLSAgICAgICAgICAgIC8vIHN1Y2Nl
c3NmdWxseSBwYXNzZXMgKGNvbW1lbnQgdGhpcyBsaW5lIG91dCkuCi0gICAgICAgICAgICB4aHJG
Y3RJbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKHNlbmRYaHIsIFNFTkRfWEhSX0lOVEVS
VkFMKTsKLSAgICAgICAgICAgIGJhY2tGY3RJbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFs
KGludm9rZUJhY2ssIEJBQ0tfSU5URVJWQUwpOwotICAgICAgICAgICAgZGJGY3RJbnRlcnZhbElk
ID0gd2luZG93LnNldEludGVydmFsKHVwZGF0ZURhdGFiYXNlLCBEQl9VUERBVEVfSU5URVJWQUwp
OwotICAgICAgICB9LCA1MDApOwotICAgIH0pOwotfQotPC9zY3JpcHQ+IAorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Imhh
c2gtY2hhbmdlLXdpdGgteGhyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4gCi08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+IAotPGRpdiBpZD0ibXNncyI+PC9kaXY+IAorPGJvZHkgb25sb2FkPSJzZXR1
cEFuZFJ1blRlc3QoKSI+IAorPHByZSBpZD0iY29uc29sZSI+CitGQUlMVVJFOiB0ZXN0IGRpZG4n
dCBydW4uCis8L3ByZT4KIDwvYm9keT4gCiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9y
YWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0
b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDExMiBAQAordmFyIERCX1VQREFURV9JTlRFUlZBTCA9IDEwMDsKK3ZhciBTRU5EX1hIUl9JTlRF
UlZBTCA9IDEwMDsKK3ZhciBCQUNLX0lOVEVSVkFMID0gMTAwOwordmFyIENSRUFURV9IRUFMVEhf
VEFCTEUgPSAnQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgaGVhbHRoIChrZXkgVkFSQ0hBUigx
NikgUFJJTUFSWSBLRVkpOyc7Cit2YXIgVVBEQVRFX0RBVEEgPSAnUkVQTEFDRSBJTlRPIGhlYWx0
aCBWQUxVRVMoImhlYWx0aC1jaGVjay1rZXkiKTsnOworIAordmFyIGRiID0gb3BlbkRhdGFiYXNl
KCdidWcyNTcxMCcsICcxLjAnLCAnTGF5b3V0VGVzdCBmb3IgYnVnIDI1NzEwJywgMTAyNDAwKTsK
K3ZhciBiYWNrSXRlcmF0aW9uczsKK3ZhciB4aHJGY3RJbnRlcnZhbElkOwordmFyIGJhY2tGY3RJ
bnRlcnZhbElkOwordmFyIHN1Y2Nlc3NDaGVja0ludGVydmFsSWQ7Cit2YXIgZGJGY3RJbnRlcnZh
bElkOwordmFyIHN1Y2Nlc3NlczsKK3ZhciBkYXRhYmFzZVVwZGF0ZXM7Cit2YXIgc3RvcHBlZElu
dGVydmFsczsKKyAKK2Z1bmN0aW9uIHN0b3BJbnRlcnZhbHMoKQoreworICAgIHN0b3BwZWRJbnRl
cnZhbHMgPSB0cnVlOworICAgIGNsZWFySW50ZXJ2YWwoZGJGY3RJbnRlcnZhbElkKTsKKyAgICBj
bGVhckludGVydmFsKHhockZjdEludGVydmFsSWQpOworICAgIGNsZWFySW50ZXJ2YWwoYmFja0Zj
dEludGVydmFsSWQpOworfQorCitmdW5jdGlvbiBzdG9wVGVzdChtZXNzYWdlKQoreworICAgIGlm
ICghc3RvcHBlZEludGVydmFscykKKyAgICAgICAgc3RvcEludGVydmFscygpOworCisgICAgbG9n
KG1lc3NhZ2UpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorICAgIAorZnVuY3Rpb24g
dXBkYXRlRGF0YWJhc2UoKQoreworICAgIGRhdGFiYXNlVXBkYXRlcysrOyAgCisgICAgZGIudHJh
bnNhY3Rpb24oZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZXhl
Y3V0ZVNxbChVUERBVEVfREFUQSwgW10sIGZ1bmN0aW9uKCkge30sIGVycm9ySGFuZGxlcik7Cisg
ICAgfSwgZXJyb3JIYW5kbGVyLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc2VzKys7Cisg
ICAgfSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRm9yU3VjY2VzcygpCit7CisgICAgaWYgKHN1Y2Nl
c3NlcyA9PSBkYXRhYmFzZVVwZGF0ZXMpIHsKKyAgICAgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxl
dGUsIFNVQ0NFU1MnKTsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChzdWNjZXNzQ2hlY2tJbnRlcnZh
bElkKTsKKyAgICB9Cit9CisgCitmdW5jdGlvbiBlcnJvckhhbmRsZXIodHgsIGVycm9yKQorewor
ICAgIGxvZygnREIgZXJyb3IsIGNvZGU6ICcgKyBlcnJvci5jb2RlICsgJywgbXNnOiAnICsgZXJy
b3IubWVzc2FnZSk7CisgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxldGUsIEZBSUxFRCcpOworfQor
IAorZnVuY3Rpb24gc2VuZFhocigpCit7CisgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CisgICAgeGhyLm9wZW4oJ0dFVCcsIGxvY2F0aW9uLmhyZWYsIHRydWUpOworICAgIHhoci5zZW5k
KCcnKTsKK30KKyAKK2Z1bmN0aW9uIGludm9rZUJhY2soKQoreworICAgIGJhY2tJdGVyYXRpb25z
LS07CisgICAgaWYgKGJhY2tJdGVyYXRpb25zKSB7CisgICAgICAgIGhpc3RvcnkuYmFjaygpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHN0b3BJbnRlcnZhbHMoKTsKKyAgICAgICAgLy8gQWxsb3cg
YSBsaXR0bGUgdGltZSBmb3IgYWxsIHRoZSBkYXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gY29tcGxl
dGUgbm93IHdlJ3ZlIHN0b3BwZWQgbWFraW5nIHRoZW0uCisgICAgICAgIHN1Y2Nlc3NDaGVja0lu
dGVydmFsSWQgPSBzZXRJbnRlcnZhbChjaGVja0ZvclN1Y2Nlc3MsIDI1MCk7CisgICAgICAgIC8v
IElmIHdlIGRvbid0IGZpbmlzaCBiZWZvcmUgdGhpcyB0aW1lLCB0aGVuIHdlIGNvbnNpZGVyIHRo
ZSB0ZXN0IGZhaWxlZC4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3RvcFRlc3Qo
J1RpbWVkIG91dCB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUuIEZBSUxFRCcp
OyB9LCAyMDAwMCk7CisgICAgICAgIAorICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgYmFja0l0ZXJhdGlvbnMgPSAxMDsKKyAgICBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsK
KyAgICBzdWNjZXNzZXMgPSAwOworICAgIGRhdGFiYXNlVXBkYXRlcyA9IDA7CisgICAgc3RvcHBl
ZEludGVydmFscyA9IGZhbHNlOworCisgICAgLy8gQ3JlYXRlIHNvbWUgaGFzaGVzIHNvIHdlIGNh
biBjYWxsIGhpc3RvcnkuYmFjaygpLgorICAgIGxvZygnQ2hhbmdpbmcgdGhlIGhhc2ggdG8gY3Jl
YXRlIGhpc3RvcnkgZW50cmllcy4nKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tJdGVy
YXRpb25zOyBpKyspIHsKKyAgICAgICAgc2V0TG9jYXRpb25IYXNoKGkpOworICAgIH0KKworICAg
IC8vIEluaXQgdGhlIGRhdGFiYXNlLgorICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5z
YWN0aW9uKSB7CisgICAgICAgIHRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwoQ1JFQVRFX0hFQUxUSF9U
QUJMRSwgW10sIGZ1bmN0aW9uKCkge30sIGVycm9ySGFuZGxlcik7CisgICAgfSwgZXJyb3JIYW5k
bGVyLCBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gR2l2ZSBhIGxpdHRsZSBmb3IgdGhlIGRhdGFi
YXNlIHRvICd3YXJtIHVwJyBiZWZvcmUgbWFraW5nIHhociByZXF1ZXN0cworICAgICAgICAvLyBh
bmQgY2FsbGluZyBoaXN0b3J5LmJhY2soKS4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGxvZygnRGIgaXMgd2FybWVkIHVwJyk7CisKKyAgICAgICAgICAgIC8v
IE5PVEU6IElmIHdlIGRvbid0IG1ha2UgYW55IHhociByZXF1ZXN0cywgdGhlbiB0aGUgdGVzdAor
ICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHBhc3NlcyAoY29tbWVudCB0aGlzIGxpbmUgb3V0
KS4KKyAgICAgICAgICAgIHhockZjdEludGVydmFsSWQgPSBzZXRJbnRlcnZhbChzZW5kWGhyLCBT
RU5EX1hIUl9JTlRFUlZBTCk7CisgICAgICAgICAgICBiYWNrRmN0SW50ZXJ2YWxJZCA9IHNldElu
dGVydmFsKGludm9rZUJhY2ssIEJBQ0tfSU5URVJWQUwpOworICAgICAgICAgICAgZGJGY3RJbnRl
cnZhbElkID0gc2V0SW50ZXJ2YWwodXBkYXRlRGF0YWJhc2UsIERCX1VQREFURV9JTlRFUlZBTCk7
CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdl
L29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rp
b24taW4tcHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gNjAwOTEpCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw3MSArMSwxMiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQ+Ci0K
LWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLXZhciBjb21wbGV0ZSA9IDA7Ci0KLWZ1bmN0aW9uIGNo
ZWNrQ29tcGxldGlvbigpCi17Ci0gICAgLy8gVGhlIHRlc3Qgc2hvdWxkIGVuZCBhZnRlciB0d28g
dHJhbnNhY3Rpb25zCi0gICAgaWYgKCsrY29tcGxldGUgPT0gMSAmJiB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
LX0KLQotLy8gT3BlbnMgdGhlIGRhdGFiYXNlIHVzZWQgaW4gdGhpcyB0ZXN0IGNhc2UKLWZ1bmN0
aW9uIG9wZW5UZXN0RGF0YWJhc2UoKQotewotICAgIHJldHVybiBvcGVuRGF0YWJhc2UoIk9wZW5E
YXRhYmFzZVdoaWxlVHJhbnNhY3Rpb25JblByb2dyZXNzVGVzdCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiMS4wIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0IHRvIG1ha2Ugc3Vy
ZSB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNlKCkgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBw
cm9ncmVzcyBvbiBhIGRpZmZlcmVudCBoYW5kbGUgdG8gdGhlIHNhbWUgZGF0YWJhc2UgZG9lcyBu
b3QgcmVzdWx0IGluIGEgZGVhZGxvY2suIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDIxMDAw
MDApOyAvLyAyTUIgKyBlcHNpbG9uCi19Ci0KLS8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjgyMDcKLS8vIEluIG9yZGVyIHRvIHRyaWdnZXIgdGhpcyBidWcs
IHRoZSB0cmFuc2FjdGlvbiBtdXN0IGFjcXVpcmUgYW4gZXhjbHVzaXZlCi0vLyBsb2NrIG9uIHRo
ZSBEQiBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gb2J0YWluIGEgc2Vjb25kIGhhbmRsZSB0byB0aGUg
c2FtZSBEQi4KLS8vIFRoZSBvbmx5IHdheSB0byBmb3JjZSBTUUxpdGUgdG8gb2J0YWluIGFuIGV4
Y2x1c2l2ZSBsb2NrIGlzIHRvIGNoYW5nZSBtb3JlCi0vLyB0aGFuIGNhY2hlX3NpemUgKiBwYWdl
X3NpemUgYnl0ZXMgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKLS8vIGNh
Y2hlX3NpemUgaXMgMjAwMCBwYWdlcywgYW5kIHRoZSBkZWZhdWx0IHBhZ2Vfc2l6ZSBpcyAxMDI0
IGJ5dGVzLiBTbyB0aGUKLS8vIHNpemUgb2YgdGhlIGJsb2IgbXVzdCBiZSBhdCBsZWFzdCAyTUIu
Ci1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHRy
eSB7Ci0gICAgICAgIHZhciBkYjEgPSBvcGVuVGVzdERhdGFiYXNlKCk7Ci0gICAgICAgIGRiMS50
cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgewotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBUZXN0
IHRhYmxlIGlmIGl0IGRvZXMgbm90IGV4aXN0Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBUZXN0IChGb28gQkxPQik7Iik7Ci0gICAgICAgICAg
ICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBUZXN0IFZBTFVFUyAoWkVST0JMT0IoMjA5NzE1
MikpOyIsIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihyZXN1bHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYjIgPSBvcGVuVGVzdERhdGFiYXNl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coIm9wZW5EYXRhYmFzZSgpIHN1
Y2NlZWRlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24odHgsIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2coIkV4ZWN1dGluZyBzdGF0ZW1lbnQgZmFpbGVkOiAiICsgZXJyb3IubWVzc2Fn
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAvLyBDbGVh
biB1cCB0aGUgREIgdG8gYWxsb3cgZm9yIHJlcGVhdGVkIHJ1bnMgb2YgdGhpcyB0ZXN0Ci0gICAg
ICAgICAgICAvLyB3aXRob3V0IG5lZWRpbmcgdG8gaW5jcmVhc2UgdGhlIGRlZmF1bHQgYWxsb3dl
ZCBxdW90YSAoNU1CKQotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiREVMRVRFIEZST00gVGVz
dDsiKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgIGxvZygiVHJh
bnNhY3Rpb24gZmFpbGVkOiAiICsgZXJyb3IubWVzc2FnZSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7Ci0gICAgICAgIH0pOwotICAgIH0g
Y2F0Y2goZXJyKSB7fQotfQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFi
YXNlLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ib3Blbi1kYXRhYmFzZS13aGls
ZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKTsiPgorPGJvZHkgb25sb2FkPSJzZXR1cEFuZFJ1blRlc3QoKTsiPgog
VGhpcyBpcyBhIHRlc3QgdG8gc2VlIGlmIG9wZW5pbmcgYSBkYXRhYmFzZSB3aGlsZSBhIHRyYW5z
YWN0aW9uIGlzIHJ1bm5pbmcgb24gYSBkaWZmZXJlbnQgaGFuZGxlIHRvIHRoZSBzYW1lIGRhdGFi
YXNlIHJlc3VsdHMgaW4gYSBkZWFkbG9jay48YnI+Cis8cHJlIGlkPSJjb25zb2xlIj4KK0ZBSUxV
UkU6IHRlc3QgZGlkbid0IHJ1bi4KKzwvcHJlPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dy
ZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13
aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorLy8gT3BlbnMgdGhlIGRhdGFiYXNlIHVz
ZWQgaW4gdGhpcyB0ZXN0IGNhc2UKK2Z1bmN0aW9uIG9wZW5UZXN0RGF0YWJhc2UoKQoreworICAg
IHJldHVybiBvcGVuRGF0YWJhc2UoIk9wZW5EYXRhYmFzZVdoaWxlVHJhbnNhY3Rpb25JblByb2dy
ZXNzVGVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiMS4wIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNlKCkg
d2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcyBvbiBhIGRpZmZlcmVudCBoYW5kbGUg
dG8gdGhlIHNhbWUgZGF0YWJhc2UgZG9lcyBub3QgcmVzdWx0IGluIGEgZGVhZGxvY2suIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDIxMDAwMDApOyAvLyAyTUIgKyBlcHNpbG9uCit9CisKKy8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyMDcKKy8vIElu
IG9yZGVyIHRvIHRyaWdnZXIgdGhpcyBidWcsIHRoZSB0cmFuc2FjdGlvbiBtdXN0IGFjcXVpcmUg
YW4gZXhjbHVzaXZlCisvLyBsb2NrIG9uIHRoZSBEQiBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gb2J0
YWluIGEgc2Vjb25kIGhhbmRsZSB0byB0aGUgc2FtZSBEQi4KKy8vIFRoZSBvbmx5IHdheSB0byBm
b3JjZSBTUUxpdGUgdG8gb2J0YWluIGFuIGV4Y2x1c2l2ZSBsb2NrIGlzIHRvIGNoYW5nZSBtb3Jl
CisvLyB0aGFuIGNhY2hlX3NpemUgKiBwYWdlX3NpemUgYnl0ZXMgaW4gdGhlIGRhdGFiYXNlLiBU
aGUgZGVmYXVsdCB2YWx1ZSBmb3IKKy8vIGNhY2hlX3NpemUgaXMgMjAwMCBwYWdlcywgYW5kIHRo
ZSBkZWZhdWx0IHBhZ2Vfc2l6ZSBpcyAxMDI0IGJ5dGVzLiBTbyB0aGUKKy8vIHNpemUgb2YgdGhl
IGJsb2IgbXVzdCBiZSBhdCBsZWFzdCAyTUIuCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2
YXIgZGIxID0gb3BlblRlc3REYXRhYmFzZSgpOworICAgIGRiMS50cmFuc2FjdGlvbihmdW5jdGlv
bih0eCkgeworICAgICAgICAvLyBDcmVhdGUgdGhlIFRlc3QgdGFibGUgaWYgaXQgZG9lcyBub3Qg
ZXhpc3QKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMg
VGVzdCAoRm9vIEJMT0IpOyIpOworICAgICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBU
ZXN0IFZBTFVFUyAoWkVST0JMT0IoMjA5NzE1MikpOyIsIFtdLAorICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGIy
ID0gb3BlblRlc3REYXRhYmFzZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coIm9w
ZW5EYXRhYmFzZSgpIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2coIkV4ZWN1dGluZyBzdGF0ZW1lbnQgZmFpbGVkOiAiICsgZXJyb3IubWVz
c2FnZSk7CisgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xlYW4gdXAg
dGhlIERCIHRvIGFsbG93IGZvciByZXBlYXRlZCBydW5zIG9mIHRoaXMgdGVzdAorICAgICAgICAv
LyB3aXRob3V0IG5lZWRpbmcgdG8gaW5jcmVhc2UgdGhlIGRlZmF1bHQgYWxsb3dlZCBxdW90YSAo
NU1CKQorICAgICAgICB0eC5leGVjdXRlU3FsKCJERUxFVEUgRlJPTSBUZXN0OyIpOworICAgIH0s
IGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGxvZygiVHJhbnNhY3Rpb24gZmFpbGVkOiAiICsg
ZXJyb3IubWVzc2FnZSk7CisgICAgfSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL3JlYWQt
YW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQt
cnVuLXRvZ2V0aGVyLmh0bWwJKHJldmlzaW9uIDYwMDkxKQorKysgTGF5b3V0VGVzdHMvc3RvcmFn
ZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMDMgKzEsMTIgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0Pgot
Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCAr
PSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1mdW5jdGlvbiB0ZXJtaW5hdGVUZXN0KCkKLXsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5UZXN0RGF0YWJhc2UoKQot
ewotICAgIHJldHVybiBvcGVuRGF0YWJhc2UoIlJlYWRBbmRXcml0ZVRyYW5zYWN0aW9uc0RvbnRS
dW5Ub2dldGhlclRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgIjEuMCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCByZWFkIGFuZCB3cml0ZSB0
cmFuc2FjdGlvbnMgb24gZGlmZmVyZW50IERCIGhhbmRsZXMgdG8gdGhlIHNhbWUgREIgZG9uJ3Qg
cnVuIGF0IHRoZSBzYW1lIHRpbWUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDMyNzY4KTsK
LX0KLQotdmFyIHJlYWRUcmFuc2FjdGlvbnNJblByb2dyZXNzID0gMDsKLXZhciB3cml0ZVRyYW5z
YWN0aW9uc0luUHJvZ3Jlc3MgPSAwOwotdmFyIHRvdGFsVHJhbnNhY3Rpb25zID0gMDsKLXZhciBm
aW5pc2hlZFRyYW5zYWN0aW9ucyA9IDA7Ci0KLWZ1bmN0aW9uIHJ1blRyYW5zYWN0aW9uKGRiLCBy
ZWFkT25seSkKLXsKLSAgICB2YXIgdHJhbnNhY3Rpb25GdW5jdGlvbiA9IChyZWFkT25seSA/IGRi
LnJlYWRUcmFuc2FjdGlvbiA6IGRiLnRyYW5zYWN0aW9uKTsKLSAgICB0cmFuc2FjdGlvbkZ1bmN0
aW9uLmNhbGwoZGIsIGZ1bmN0aW9uKHR4KSB7Ci0gICAgICAgICAgICBpZiAocmVhZE9ubHkpIHsK
LSAgICAgICAgICAgICAgICBpZiAod3JpdGVUcmFuc2FjdGlvbnNJblByb2dyZXNzICE9IDApIHsK
LSAgICAgICAgICAgICAgICAgICAgbG9nKCJSZWFkIHRyYW5zYWN0aW9uIHN0YXJ0aW5nIHdoaWxl
IHdyaXRlIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzLiIpOwotICAgICAgICAgICAgICAgICAgICB0
ZXJtaW5hdGVUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlYWRU
cmFuc2FjdGlvbnNJblByb2dyZXNzKys7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGlmICgocmVhZFRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgIT0gMCkgfHwgKHdyaXRlVHJh
bnNhY3Rpb25zSW5Qcm9ncmVzcyAhPSAwKSkgewotICAgICAgICAgICAgICAgICAgICBsb2coIldy
aXRlIHRyYW5zYWN0aW9uIHN0YXJ0aW5nIHdoaWxlIGFub3RoZXIgdHJhbnNhY3Rpb24gaW4gcHJv
Z3Jlc3MuIik7Ci0gICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVRlc3QoKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd3JpdGVUcmFuc2FjdGlvbnNJblByb2dyZXNzKys7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJTRUxFQ1QgKiBGUk9N
IFRlc3Q7Iik7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICBsb2co
KHJlYWRPbmx5ID8gIlJlYWQiIDogIldyaXRlIikgKyAiIHRyYW5zYWN0aW9uIGZhaWxlZDogIiAr
IGVycm9yLm1lc3NhZ2UpOwotICAgICAgICAgICAgdGVybWluYXRlVGVzdCgpOwotICAgICAgICB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBmaW5pc2hlZFRyYW5zYWN0aW9ucysrOwotICAg
ICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAgICAgICAgICAgICAgcmVhZFRyYW5zYWN0aW9u
c0luUHJvZ3Jlc3MtLTsKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIHdyaXRl
VHJhbnNhY3Rpb25zSW5Qcm9ncmVzcy0tOwotICAgICAgICAgICAgIGxvZygiVHJhbnNhY3Rpb24g
c3VjY2Vzc2Z1bC4iKTsKLSAgICAgICAgICAgICBpZiAoKGZpbmlzaGVkVHJhbnNhY3Rpb25zID09
IHRvdGFsVHJhbnNhY3Rpb25zKSAmJiAocmVhZFRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgPT0gMCkg
JiYgKHdyaXRlVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcyA9PSAwKSkKLSAgICAgICAgICAgICAgICAg
dGVybWluYXRlVGVzdCgpOwotICAgICAgICB9KTsKLX0KLQotZnVuY3Rpb24gcnVuUmVhZEFuZFdy
aXRlVHJhbnNhY3Rpb25zKGRiMSwgZGIyLCBkYjMpCi17Ci0gICAgdG90YWxUcmFuc2FjdGlvbnMg
PSAxMDsKLSAgICBmaW5pc2hlZFRyYW5zYWN0aW9ucyA9IDA7Ci0gICAgcnVuVHJhbnNhY3Rpb24o
ZGIxLCB0cnVlKTsKLSAgICBydW5UcmFuc2FjdGlvbihkYjIsIHRydWUpOwotICAgIHJ1blRyYW5z
YWN0aW9uKGRiMSwgZmFsc2UpOwotICAgIHJ1blRyYW5zYWN0aW9uKGRiMSwgdHJ1ZSk7Ci0gICAg
cnVuVHJhbnNhY3Rpb24oZGIyLCB0cnVlKTsKLSAgICBydW5UcmFuc2FjdGlvbihkYjMsIHRydWUp
OwotICAgIHJ1blRyYW5zYWN0aW9uKGRiMSwgZmFsc2UpOwotICAgIHJ1blRyYW5zYWN0aW9uKGRi
MiwgZmFsc2UpOwotICAgIHJ1blRyYW5zYWN0aW9uKGRiMSwgdHJ1ZSk7Ci0gICAgcnVuVHJhbnNh
Y3Rpb24oZGIzLCB0cnVlKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBkYjEgPSBvcGVuVGVzdERhdGFi
YXNlKCk7Ci0gICAgICAgIHZhciBkYjIgPSBvcGVuVGVzdERhdGFiYXNlKCk7Ci0gICAgICAgIHZh
ciBkYjMgPSBvcGVuVGVzdERhdGFiYXNlKCk7Ci0gICAgICAgIGRiMS50cmFuc2FjdGlvbihmdW5j
dGlvbih0eCkgewotICAgICAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJ
RiBOT1QgRVhJU1RTIFRlc3QgKEZvbyBpbnQpOyIpOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24o
ZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBsb2coIkNhbm5vdCBjcmVhdGUgdGhlIFRlc3QgdGFi
bGU6ICIgKyBlcnJvci5tZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB0ZXJtaW5hdGVUZXN0KCk7
Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBydW5SZWFkQW5k
V3JpdGVUcmFuc2FjdGlvbnMoZGIxLCBkYjIsIGRiMyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
fSBjYXRjaChlcnIpIHt9Ci19Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0
YWJhc2UtY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZWFkLWFuZC13cml0ZS10
cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxib2R5IG9ubG9hZD0ic2V0dXBBbmRSdW5UZXN0KCk7
Ij4KIFRoaXMgdGVzdCB0ZXN0cyB0aGF0IHJlYWQgYW5kIHdyaXRlIHRyYW5zYWN0aW9ucyBvbiBk
aWZmZXJlbnQgaGFuZGxlcyB0byB0aGUgc2FtZSBkYXRhYmFzZSBkb24ndCBydW4gdG9nZXRoZXIu
PGJyPgorPHByZSBpZD0iY29uc29sZSI+CitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8L3By
ZT4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvcmVhZC1hbmQt
d3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRv
Z2V0aGVyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9yZWFkLWFuZC13
cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODEgQEAKK2Z1bmN0aW9uIHRlcm1pbmF0ZVRlc3QoKQoreworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gb3BlblRlc3REYXRhYmFzZSgpCit7CisgICAgcmV0dXJu
IG9wZW5EYXRhYmFzZSgiUmVhZEFuZFdyaXRlVHJhbnNhY3Rpb25zRG9udFJ1blRvZ2V0aGVyVGVz
dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiMS4wIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHJlYWQgYW5kIHdyaXRlIHRyYW5zYWN0aW9ucyBv
biBkaWZmZXJlbnQgREIgaGFuZGxlcyB0byB0aGUgc2FtZSBEQiBkb24ndCBydW4gYXQgdGhlIHNh
bWUgdGltZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgMzI3NjgpOworfQorCit2YXIgcmVh
ZFRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgPSAwOwordmFyIHdyaXRlVHJhbnNhY3Rpb25zSW5Qcm9n
cmVzcyA9IDA7Cit2YXIgdG90YWxUcmFuc2FjdGlvbnMgPSAwOwordmFyIGZpbmlzaGVkVHJhbnNh
Y3Rpb25zID0gMDsKKworZnVuY3Rpb24gcnVuVHJhbnNhY3Rpb24oZGIsIHJlYWRPbmx5KQorewor
ICAgIHZhciB0cmFuc2FjdGlvbkZ1bmN0aW9uID0gKHJlYWRPbmx5ID8gZGIucmVhZFRyYW5zYWN0
aW9uIDogZGIudHJhbnNhY3Rpb24pOworICAgIHRyYW5zYWN0aW9uRnVuY3Rpb24uY2FsbChkYiwg
ZnVuY3Rpb24odHgpIHsKKyAgICAgICAgICAgIGlmIChyZWFkT25seSkgeworICAgICAgICAgICAg
ICAgIGlmICh3cml0ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgIT0gMCkgeworICAgICAgICAgICAg
ICAgICAgICBsb2coIlJlYWQgdHJhbnNhY3Rpb24gc3RhcnRpbmcgd2hpbGUgd3JpdGUgdHJhbnNh
Y3Rpb24gaW4gcHJvZ3Jlc3MuIik7CisgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVRlc3Qo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZFRyYW5zYWN0aW9uc0lu
UHJvZ3Jlc3MrKzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKChy
ZWFkVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcyAhPSAwKSB8fCAod3JpdGVUcmFuc2FjdGlvbnNJblBy
b2dyZXNzICE9IDApKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygiV3JpdGUgdHJhbnNhY3Rp
b24gc3RhcnRpbmcgd2hpbGUgYW5vdGhlciB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcy4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVybWluYXRlVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB3cml0ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MrKzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIlNFTEVDVCAqIEZST00gVGVzdDsiKTsKKyAg
ICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIGxvZygocmVhZE9ubHkgPyAi
UmVhZCIgOiAiV3JpdGUiKSArICIgdHJhbnNhY3Rpb24gZmFpbGVkOiAiICsgZXJyb3IubWVzc2Fn
ZSk7CisgICAgICAgICAgICB0ZXJtaW5hdGVUZXN0KCk7CisgICAgICAgIH0sIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgIGZpbmlzaGVkVHJhbnNhY3Rpb25zKys7CisgICAgICAgICAgICAgaWYg
KHJlYWRPbmx5KQorICAgICAgICAgICAgICAgICByZWFkVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcy0t
OworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgd3JpdGVUcmFuc2FjdGlvbnNJ
blByb2dyZXNzLS07CisgICAgICAgICAgICAgbG9nKCJUcmFuc2FjdGlvbiBzdWNjZXNzZnVsLiIp
OworICAgICAgICAgICAgIGlmICgoZmluaXNoZWRUcmFuc2FjdGlvbnMgPT0gdG90YWxUcmFuc2Fj
dGlvbnMpICYmIChyZWFkVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcyA9PSAwKSAmJiAod3JpdGVUcmFu
c2FjdGlvbnNJblByb2dyZXNzID09IDApKQorICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVUZXN0
KCk7CisgICAgICAgIH0pOworfQorCitmdW5jdGlvbiBydW5SZWFkQW5kV3JpdGVUcmFuc2FjdGlv
bnMoZGIxLCBkYjIsIGRiMykKK3sKKyAgICB0b3RhbFRyYW5zYWN0aW9ucyA9IDEwOworICAgIGZp
bmlzaGVkVHJhbnNhY3Rpb25zID0gMDsKKyAgICBydW5UcmFuc2FjdGlvbihkYjEsIHRydWUpOwor
ICAgIHJ1blRyYW5zYWN0aW9uKGRiMiwgdHJ1ZSk7CisgICAgcnVuVHJhbnNhY3Rpb24oZGIxLCBm
YWxzZSk7CisgICAgcnVuVHJhbnNhY3Rpb24oZGIxLCB0cnVlKTsKKyAgICBydW5UcmFuc2FjdGlv
bihkYjIsIHRydWUpOworICAgIHJ1blRyYW5zYWN0aW9uKGRiMywgdHJ1ZSk7CisgICAgcnVuVHJh
bnNhY3Rpb24oZGIxLCBmYWxzZSk7CisgICAgcnVuVHJhbnNhY3Rpb24oZGIyLCBmYWxzZSk7Cisg
ICAgcnVuVHJhbnNhY3Rpb24oZGIxLCB0cnVlKTsKKyAgICBydW5UcmFuc2FjdGlvbihkYjMsIHRy
dWUpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciBkYjEgPSBvcGVuVGVzdERh
dGFiYXNlKCk7CisgICAgdmFyIGRiMiA9IG9wZW5UZXN0RGF0YWJhc2UoKTsKKyAgICB2YXIgZGIz
ID0gb3BlblRlc3REYXRhYmFzZSgpOworICAgIGRiMS50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkg
eworICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMg
VGVzdCAoRm9vIGludCk7Iik7CisgICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAg
ICAgICBsb2coIkNhbm5vdCBjcmVhdGUgdGhlIFRlc3QgdGFibGU6ICIgKyBlcnJvci5tZXNzYWdl
KTsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVRlc3QoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBydW5SZWFkQW5kV3JpdGVUcmFuc2FjdGlvbnMoZGIxLCBkYjIsIGRiMyk7
CisgICAgICAgIH0pOworfQpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS90ZXN0LWF1dGhvcml6
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3Rlc3QtYXV0aG9yaXpl
ci5odG1sCShyZXZpc2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvdGVzdC1hdXRo
b3JpemVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTc1ICsxLDEyIEBACiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdD4KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotZnVuY3Rpb24gdGVybWlu
YXRlVGVzdCgpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2dB
bmRUZXJtaW5hdGVUZXN0KG1lc3NhZ2UsIGVycm9yKQotewotICAgIGxvZyhtZXNzYWdlICsgIjog
IiArIGVycm9yLm1lc3NhZ2UpOwotICAgIHRlcm1pbmF0ZVRlc3QoKTsKLX0KLQotZnVuY3Rpb24g
Y2xlYW51cChkYikKLXsKLSAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgewotICAgICAg
ICAgICAgdHguZXhlY3V0ZVNxbCgiRFJPUCBUQUJMRSBJRiBFWElTVFMgVGVzdDsiKTsKLSAgICAg
ICAgICAgIHR4LmV4ZWN1dGVTcWwoIkRST1AgSU5ERVggSUYgRVhJU1RTIFRlc3RJbmRleDsiKTsK
LSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkRST1AgVklFVyBJRiBFWElTVFMgVGVzdFZpZXc7
Iik7Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJEUk9QIFRSSUdHRVIgSUYgRVhJU1RTIFRl
c3RUcmlnZ2VyOyIpOwotICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeyBsb2dBbmRUZXJtaW5h
dGVUZXN0KCJDbGVhbnVwIGZhaWxlZCIsIGVycm9yKTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXRl
bWVudFN1Y2Nlc3NDYWxsYmFjayhzdGF0ZW1lbnRUeXBlKQotewotICAgIGxvZyhzdGF0ZW1lbnRU
eXBlICsgIiBzdGF0ZW1lbnQgc3VjY2VlZGVkLiIpOwotfQotCi1mdW5jdGlvbiBzdGF0ZW1lbnRF
cnJvckNhbGxiYWNrKHN0YXRlbWVudFR5cGUsIGVycm9yKQotewotICAgIGxvZyhzdGF0ZW1lbnRU
eXBlICsgIiBzdGF0ZW1lbnQgZmFpbGVkOiAiICsgZXJyb3IubWVzc2FnZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1mdW5jdGlvbiBleGVjdXRlU3RhdGVtZW50KHR4LCBzdGF0ZW1lbnQsIG9w
ZXJhdGlvbikKLXsKLSAgICB0eC5leGVjdXRlU3FsKHN0YXRlbWVudCwgW10sCi0gICAgICAgICAg
ICAgICAgICBmdW5jdGlvbihyZXN1bHQpIHsgc3RhdGVtZW50U3VjY2Vzc0NhbGxiYWNrKG9wZXJh
dGlvbik7IH0sCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbih0eCwgZXJyb3IpIHsgcmV0dXJu
IHN0YXRlbWVudEVycm9yQ2FsbGJhY2sob3BlcmF0aW9uLCBlcnJvcik7IH0pOwotfQotCi1mdW5j
dGlvbiBjcmVhdGVUYWJsZUNhbGxiYWNrKHR4KQotewotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgs
ICJDUkVBVEUgVEFCTEUgVGVzdCAoRm9vIGludCk7IiwgIlNRTElURV9DUkVBVEVfVEFCTEUiKTsK
LX0KLQotZnVuY3Rpb24gY3JlYXRlU3RhdGVtZW50c0NhbGxiYWNrKHR4KQotewotICAgIGV4ZWN1
dGVTdGF0ZW1lbnQodHgsICJDUkVBVEUgSU5ERVggVGVzdEluZGV4IE9OIFRlc3QgKEZvbyk7Iiwg
IlNRTElURV9DUkVBVEVfSU5ERVgiKTsKLQotICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBmb2xsb3dp
bmcgcXVlcnkgc2hvdWxkIHRyaWdnZXIgYSBTUUxJVEVfQ1JFQVRFX1RFTVBfSU5ERVggb3BlcmF0
aW9uCi0gICAgLy8gKGFjY29yZGluZyB0byBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvdGVtcGZpbGVz
Lmh0bWwpLCBpdCBkb2Vzbid0LCBhbmQgSSdtIG5vdCBhd2FyZQotICAgIC8vIG9mIGFueSBvdGhl
ciB3YXkgdG8gdHJpZ2dlciB0aGlzIG9wZXJhdGlvbi4gU28gd2UnbGwgc2tpcCBpdCBmb3Igbm93
LgotICAgIC8vZXhlY3V0ZVN0YXRlbWVudCh0eCwgIlNFTEVDVCAqIEZST00gVGVzdCBXSEVSRSBG
b28gSU4gKDEsIDIsIDMpOyIsICJTUUxJVEVfQ1JFQVRFX1RFTVBfSU5ERVgiKTsKLQotICAgIGV4
ZWN1dGVTdGF0ZW1lbnQodHgsICJDUkVBVEUgVEVNUCBUQUJMRSBUZXN0VGVtcFRhYmxlIChGb28g
aW50KTsiLCAiU1FMSVRFX0NSRUFURV9URU1QX1RBQkxFIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVu
dCh0eCwgIkNSRUFURSBURU1QIFRSSUdHRVIgVGVzdFRlbXBUcmlnZ2VyIElOU0VSVCBPTiBUZXN0
IEJFR0lOIFNFTEVDVCBDT1VOVCgqKSBGUk9NIFRlc3Q7IEVORDsiLCAiU1FMSVRFX0NSRUFURV9U
RU1QX1RSSUdHRVIiKTsKLSAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQ1JFQVRFIFRFTVAgVklF
VyBUZXN0VGVtcFZpZXcgQVMgU0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsiLCAiU1FMSVRFX0NS
RUFURV9URU1QX1ZJRVciKTsKLSAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQ1JFQVRFIFRSSUdH
RVIgVGVzdFRyaWdnZXIgSU5TRVJUIE9OIFRlc3QgQkVHSU4gU0VMRUNUIENPVU5UKCopIEZST00g
VGVzdDsgRU5EOyIsICJTUUxJVEVfQ1JFQVRFX1RSSUdHRVIiKTsKLSAgICBleGVjdXRlU3RhdGVt
ZW50KHR4LCAiQ1JFQVRFIFZJRVcgVGVzdFZpZXcgQVMgU0VMRUNUIENPVU5UKCopIEZST00gVGVz
dDsiLCAiU1FMSVRFX0NSRUFURV9WSUVXIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNS
RUFURSBWSVJUVUFMIFRBQkxFIFRlc3RWaXJ0dWFsVGFibGUgVVNJTkcgTWlzc2luZ01vZHVsZTsi
LCAiU1FMSVRFX0NSRUFURV9WVEFCTEUiKTsKLX0KLQotZnVuY3Rpb24gb3RoZXJTdGF0ZW1lbnRz
Q2FsbGJhY2sodHgpCi17Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIlNFTEVDVCBDT1VOVCgq
KSBGUk9NIFRlc3Q7IiwgIlNRTElURV9SRUFEIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwg
IlNFTEVDVCBDT1VOVCgqKSBGUk9NIFRlc3Q7IiwgIlNRTElURV9TRUxFQ1QiKTsKLSAgICBleGVj
dXRlU3RhdGVtZW50KHR4LCAiREVMRVRFIEZST00gVGVzdDsiLCAiU1FMSVRFX0RFTEVURSIpOwot
ICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJJTlNFUlQgSU5UTyBUZXN0IFZBTFVFUyAoMSk7Iiwg
IlNRTElURV9JTlNFUlQiKTsKLSAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiVVBEQVRFIFRlc3Qg
U0VUIEZvbyA9IDIgV0hFUkUgRm9vID0gMTsiLCAiU1FMSVRFX1VQREFURSIpOwotICAgIGV4ZWN1
dGVTdGF0ZW1lbnQodHgsICJQUkFHTUEgY2FjaGVfc2l6ZTsiLCAiU1FMSVRFX1BSQUdNQSIpOwot
Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkFMVEVSIFRBQkxFIFRlc3QgUkVOQU1FIFRPIFRl
c3RUYWJsZTsiLCAiU1FMSVRFX0FMVEVSX1RBQkxFIik7Ci0gICAgLy8gUmVuYW1lIHRoZSB0YWJs
ZSBiYWNrIHRvIGl0cyBvcmlnaW5hbCBuYW1lCi0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkFM
VEVSIFRBQkxFIFRlc3RUYWJsZSBSRU5BTUUgVG8gVGVzdDsiLCAiU1FMSVRFX0FMVEVSX1RBQkxF
Iik7Ci0KLSAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQkVHSU4gVFJBTlNBQ1RJT047IiwgIlNR
TElURV9UUkFOU0FDVElPTiIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJBVFRBQ0ggbWFp
biBBUyBUZXN0TWFpbjsiLCAiU1FMSVRFX0FUVEFDSCIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQo
dHgsICJERVRBQ0ggVGVzdE1haW47IiwgIlNRTElURV9ERVRBQ0giKTsKLSAgICBleGVjdXRlU3Rh
dGVtZW50KHR4LCAiUkVJTkRFWDsiLCAiU1FMSVRFX1JFSU5ERVgiKTsKLSAgICBleGVjdXRlU3Rh
dGVtZW50KHR4LCAiQU5BTFlaRTsiLCAiU1FMSVRFX0FOQUxZWkUiKTsKLQotICAgIC8vIFNRTElU
RV9GVU5DVElPTjogYWxsb3dlZCB3cml0ZSBtb2RlCi0gICAgLy8gVGhlcmUgaXMgbm8gU1FML0ph
dmFzY3JpcHQgQVBJIHRvIGFkZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHRvIFNRTGl0ZSwKLSAg
ICAvLyBzbyB3ZSBjYW5ub3QgdGVzdCB0aGlzIG9wZXJhdGlvbgotfQotCi1mdW5jdGlvbiBkcm9w
U3RhdGVtZW50c0NhbGxiYWNrKHR4KQotewotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9Q
IElOREVYIFRlc3RJbmRleDsiLCAiU1FMSVRFX0RST1BfSU5ERVgiKTsKLQotICAgIC8vIFNRTElU
RV9EUk9QX1RFTVBfSU5ERVg6IGFsbG93ZWQgaW4gd3JpdGUgbW9kZQotICAgIC8vIE5vdCBzdXJl
IGhvdyB0byB0ZXN0IHRoaXM6IHRlbXAgaW5kZXhlcyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVk
IHdoZW4KLSAgICAvLyB0aGUgZGF0YWJhc2UgaXMgY2xvc2VkLCBidXQgSFRNTDUgZG9lc24ndCBz
cGVjaWZ5IGEgY2xvc2VEYXRhYmFzZSgpIGNhbGwuCi0KLSAgICBleGVjdXRlU3RhdGVtZW50KHR4
LCAiRFJPUCBUQUJMRSBUZXN0VGVtcFRhYmxlOyIsICJTUUxJVEVfRFJPUF9URU1QX1RBQkxFIik7
Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRST1AgVFJJR0dFUiBUZXN0VGVtcFRyaWdnZXI7
IiwgIlNRTElURV9EUk9QX1RFTVBfVFJJR0dFUiIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgs
ICJEUk9QIFZJRVcgVGVzdFRlbXBWaWV3OyIsICJTUUxJVEVfRFJPUF9URU1QX1ZJRVciKTsKLSAg
ICBleGVjdXRlU3RhdGVtZW50KHR4LCAiRFJPUCBUUklHR0VSIFRlc3RUcmlnZ2VyOyIsICJTUUxJ
VEVfRFJPUF9UUklHR0VSIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRST1AgVklFVyBU
ZXN0VmlldzsiLCAiU1FMSVRFX0RST1BfVklFVyIpOwotCi0gICAgLy8gU1FMSVRFX0RST1BfVlRB
QkxFOiBhbGxvd2VkIGluIHdyaXRlIG1vZGUKLSAgICAvLyBOb3Qgc3VyZSBob3cgdG8gdGVzdCB0
aGlzOiB3ZSBjYW5ub3QgY3JlYXRlIGEgdmlydHVhbCB0YWJsZSBiZWNhdXNlIHdlIGRvIG5vdAot
ICAgIC8vIGhhdmUgU1FML0phdmFzY3JpcHQgQVBJcyB0byByZWdpc3RlciBhIG1vZHVsZSB0aGF0
IGltcGxlbWVudHMgYSB2aXJ0dWFsIHRhYmxlLgotICAgIC8vIFRoZXJlZm9yZSwgdHJ5aW5nIHRv
IGRyb3AgYSB2aXJ0dWFsIHRhYmxlIHdpbGwgYWx3YXlzIGZhaWwgKG5vIHN1Y2ggdGFibGUpCi0g
ICAgLy8gYmVmb3JlIGV2ZW4gZ2V0dGluZyB0byB0aGUgYXV0aG9yaXplci4KLQotICAgIGV4ZWN1
dGVTdGF0ZW1lbnQodHgsICJEUk9QIFRBQkxFIFRlc3Q7IiwgIlNRTElURV9EUk9QX1RBQkxFIik7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZWFkV3JpdGVNb2RlKGRiKQotewotICAgIGRiLnRyYW5zYWN0
aW9uKGZ1bmN0aW9uKHR4KSB7Ci0gICAgICAgICAgICBjcmVhdGVUYWJsZUNhbGxiYWNrKHR4KTsK
LSAgICAgICAgICAgIGNyZWF0ZVN0YXRlbWVudHNDYWxsYmFjayh0eCk7Ci0gICAgICAgICAgICBv
dGhlclN0YXRlbWVudHNDYWxsYmFjayh0eCk7Ci0gICAgICAgICAgICBkcm9wU3RhdGVtZW50c0Nh
bGxiYWNrKHR4KTsKLSAgICAgICAgfSwKLSAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgbG9nQW5k
VGVybWluYXRlVGVzdCgiV3JpdGUgdHJhbnNhY3Rpb24gZmFpbGVkIiwgZXJyb3IpOyB9LAotICAg
ICAgICBmdW5jdGlvbigpIHsgbG9nKCJXcml0ZSB0cmFuc2FjdGlvbiBzdWNjZWVkZWQuIik7IH0p
OwotfQotCi1mdW5jdGlvbiB0ZXN0UmVhZE9ubHlNb2RlKGRiKQotewotICAgIC8vIFRlc3QgdGhl
ICdDUkVBVEUgVEFCTEUnIG9wZXJhdGlvbjsgaXQgc2hvdWxkIGJlIGRpc2FsbG93ZWQKLSAgICBk
Yi5yZWFkVHJhbnNhY3Rpb24oY3JlYXRlVGFibGVDYWxsYmFjaywKLSAgICAgICAgZnVuY3Rpb24o
ZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgiUmVhZCAnQ1JFQVRFIFRBQkxFJyB0cmFuc2Fj
dGlvbiBmYWlsZWQiLCBlcnJvcik7IH0pOwotCi0gICAgLy8gSW4gb3JkZXIgdG8gdGVzdCBhbGwg
b3RoZXIgJ0NSRUFURScgb3BlcmF0aW9ucywgd2UgbXVzdCBjcmVhdGUgdGhlIHRhYmxlIGZpcnN0
Ci0gICAgZGIudHJhbnNhY3Rpb24oY3JlYXRlVGFibGVDYWxsYmFjaywKLSAgICAgICAgZnVuY3Rp
b24oZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgiV3JpdGUgJ0NSRUFURSBUQUJMRScgdHJh
bnNhY3Rpb24gZmFpbGVkIiwgZXJyb3IpOyB9KTsKLSAgICBkYi5yZWFkVHJhbnNhY3Rpb24oY3Jl
YXRlU3RhdGVtZW50c0NhbGxiYWNrLAotICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBsb2dBbmRU
ZXJtaW5hdGVUZXN0KCJSZWFkICdDUkVBVEUnIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9yKTsg
fSk7Ci0KLSAgICAvLyBJbiBvcmRlciB0byB0ZXN0IHRoZSAnRFJPUCcgYW5kICdvdGhlcicgb3Bl
cmF0aW9ucywgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgdGhlIHJlc3BlY3RpdmUgZW50aXRpZXMK
LSAgICBkYi50cmFuc2FjdGlvbihjcmVhdGVTdGF0ZW1lbnRzQ2FsbGJhY2ssCi0gICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIldyaXRlICdDUkVBVEUnIHRyYW5z
YWN0aW9uIGZhaWxlZCIsIGVycm9yKTsgfSk7Ci0gICAgZGIucmVhZFRyYW5zYWN0aW9uKG90aGVy
U3RhdGVtZW50c0NhbGxiYWNrLAotICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBsb2dBbmRUZXJt
aW5hdGVUZXN0KCJSZWFkICdvdGhlcicgdHJhbnNhY3Rpb24gZmFpbGVkIiwgZXJyb3IpOyB9KTsK
LQotICAgIC8vIEhhY2s6IGluc2VydCBhbiBlbXB0eSB3cml0ZSB0cmFuc2FjdGlvbiB0byBndWFy
YXRlZSB0aGF0IHRoZXNlIHRyYW5zYWN0aW9ucyBhcmUgZXhlY3V0ZWQgc2VxdWVudGlhbGx5Ci0g
ICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsgfSk7Ci0gICAgZGIucmVhZFRyYW5zYWN0
aW9uKGRyb3BTdGF0ZW1lbnRzQ2FsbGJhY2ssCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGxv
Z0FuZFRlcm1pbmF0ZVRlc3QoIlJlYWQgJ0RST1AnIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9y
KTsgfSwKLSAgICAgICAgZnVuY3Rpb24oKSB7IGxvZygiUmVhZCB0cmFuc2FjdGlvbnMgc3VjY2Vl
ZGVkLiIpOyB0ZXJtaW5hdGVUZXN0KCk7IH0pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBkYiA9IG9w
ZW5EYXRhYmFzZSgiQXV0aG9yaXplclRlc3QiLCAiMS4wIiwgIlRlc3RzIHRoZSBkYXRhYmFzZSBh
dXRob3JpemVyLiIsIDMyNzY4KTsKLSAgICAgICAgY2xlYW51cChkYik7Ci0gICAgICAgIHRlc3RS
ZWFkV3JpdGVNb2RlKGRiKTsKLSAgICAgICAgdGVzdFJlYWRPbmx5TW9kZShkYik7Ci0gICAgfSBj
YXRjaChlcnIpIHt9Ci19Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJh
c2UtY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ0ZXN0LWF1dGhvcml6ZXIuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxib2R5IG9u
bG9hZD0ic2V0dXBBbmRSdW5UZXN0KCk7Ij4KIFRoaXMgdGVzdCB0ZXN0cyB0aGUgZGF0YWJhc2Ug
YXV0aG9yaXplci48YnI+Cis8cHJlIGlkPSJjb25zb2xlIj4KK0ZBSUxVUkU6IHRlc3QgZGlkbid0
IHJ1bi4KKzwvcHJlPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFn
ZS90ZXN0LWF1dGhvcml6ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS90
ZXN0LWF1dGhvcml6ZXIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3Rl
c3QtYXV0aG9yaXplci5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTMgQEAKK2Z1bmN0aW9u
IHRlcm1pbmF0ZVRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gbG9nQW5kVGVybWluYXRlVGVzdChtZXNzYWdlLCBlcnJvcikKK3sKKyAgICBsb2cobWVzc2Fn
ZSArICI6ICIgKyBlcnJvci5tZXNzYWdlKTsKKyAgICB0ZXJtaW5hdGVUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIGNsZWFudXAoZGIpCit7CisgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsK
KyAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkRST1AgVEFCTEUgSUYgRVhJU1RTIFRlc3Q7Iik7
CisgICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJEUk9QIElOREVYIElGIEVYSVNUUyBUZXN0SW5k
ZXg7Iik7CisgICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJEUk9QIFZJRVcgSUYgRVhJU1RTIFRl
c3RWaWV3OyIpOworICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiRFJPUCBUUklHR0VSIElGIEVY
SVNUUyBUZXN0VHJpZ2dlcjsiKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsgbG9nQW5k
VGVybWluYXRlVGVzdCgiQ2xlYW51cCBmYWlsZWQiLCBlcnJvcik7IH0pOworfQorCitmdW5jdGlv
biBzdGF0ZW1lbnRTdWNjZXNzQ2FsbGJhY2soc3RhdGVtZW50VHlwZSkKK3sKKyAgICBsb2coc3Rh
dGVtZW50VHlwZSArICIgc3RhdGVtZW50IHN1Y2NlZWRlZC4iKTsKK30KKworZnVuY3Rpb24gc3Rh
dGVtZW50RXJyb3JDYWxsYmFjayhzdGF0ZW1lbnRUeXBlLCBlcnJvcikKK3sKKyAgICBsb2coc3Rh
dGVtZW50VHlwZSArICIgc3RhdGVtZW50IGZhaWxlZDogIiArIGVycm9yLm1lc3NhZ2UpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVN0YXRlbWVudCh0eCwgc3RhdGVt
ZW50LCBvcGVyYXRpb24pCit7CisgICAgdHguZXhlY3V0ZVNxbChzdGF0ZW1lbnQsIFtdLAorICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0KSB7IHN0YXRlbWVudFN1Y2Nlc3NDYWxsYmFj
ayhvcGVyYXRpb24pOyB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odHgsIGVycm9yKSB7
IHJldHVybiBzdGF0ZW1lbnRFcnJvckNhbGxiYWNrKG9wZXJhdGlvbiwgZXJyb3IpOyB9KTsKK30K
KworZnVuY3Rpb24gY3JlYXRlVGFibGVDYWxsYmFjayh0eCkKK3sKKyAgICBleGVjdXRlU3RhdGVt
ZW50KHR4LCAiQ1JFQVRFIFRBQkxFIFRlc3QgKEZvbyBpbnQpOyIsICJTUUxJVEVfQ1JFQVRFX1RB
QkxFIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVN0YXRlbWVudHNDYWxsYmFjayh0eCkKK3sKKyAg
ICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQ1JFQVRFIElOREVYIFRlc3RJbmRleCBPTiBUZXN0IChG
b28pOyIsICJTUUxJVEVfQ1JFQVRFX0lOREVYIik7CisKKyAgICAvLyBFdmVuIHRob3VnaCB0aGUg
Zm9sbG93aW5nIHF1ZXJ5IHNob3VsZCB0cmlnZ2VyIGEgU1FMSVRFX0NSRUFURV9URU1QX0lOREVY
IG9wZXJhdGlvbgorICAgIC8vIChhY2NvcmRpbmcgdG8gaHR0cDovL3d3dy5zcWxpdGUub3JnL3Rl
bXBmaWxlcy5odG1sKSwgaXQgZG9lc24ndCwgYW5kIEknbSBub3QgYXdhcmUKKyAgICAvLyBvZiBh
bnkgb3RoZXIgd2F5IHRvIHRyaWdnZXIgdGhpcyBvcGVyYXRpb24uIFNvIHdlJ2xsIHNraXAgaXQg
Zm9yIG5vdy4KKyAgICAvL2V4ZWN1dGVTdGF0ZW1lbnQodHgsICJTRUxFQ1QgKiBGUk9NIFRlc3Qg
V0hFUkUgRm9vIElOICgxLCAyLCAzKTsiLCAiU1FMSVRFX0NSRUFURV9URU1QX0lOREVYIik7CisK
KyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQ1JFQVRFIFRFTVAgVEFCTEUgVGVzdFRlbXBUYWJs
ZSAoRm9vIGludCk7IiwgIlNRTElURV9DUkVBVEVfVEVNUF9UQUJMRSIpOworICAgIGV4ZWN1dGVT
dGF0ZW1lbnQodHgsICJDUkVBVEUgVEVNUCBUUklHR0VSIFRlc3RUZW1wVHJpZ2dlciBJTlNFUlQg
T04gVGVzdCBCRUdJTiBTRUxFQ1QgQ09VTlQoKikgRlJPTSBUZXN0OyBFTkQ7IiwgIlNRTElURV9D
UkVBVEVfVEVNUF9UUklHR0VSIik7CisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBU
RU1QIFZJRVcgVGVzdFRlbXBWaWV3IEFTIFNFTEVDVCBDT1VOVCgqKSBGUk9NIFRlc3Q7IiwgIlNR
TElURV9DUkVBVEVfVEVNUF9WSUVXIik7CisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFU
RSBUUklHR0VSIFRlc3RUcmlnZ2VyIElOU0VSVCBPTiBUZXN0IEJFR0lOIFNFTEVDVCBDT1VOVCgq
KSBGUk9NIFRlc3Q7IEVORDsiLCAiU1FMSVRFX0NSRUFURV9UUklHR0VSIik7CisgICAgZXhlY3V0
ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBWSUVXIFRlc3RWaWV3IEFTIFNFTEVDVCBDT1VOVCgqKSBG
Uk9NIFRlc3Q7IiwgIlNRTElURV9DUkVBVEVfVklFVyIpOworICAgIGV4ZWN1dGVTdGF0ZW1lbnQo
dHgsICJDUkVBVEUgVklSVFVBTCBUQUJMRSBUZXN0VmlydHVhbFRhYmxlIFVTSU5HIE1pc3NpbmdN
b2R1bGU7IiwgIlNRTElURV9DUkVBVEVfVlRBQkxFIik7Cit9CisKK2Z1bmN0aW9uIG90aGVyU3Rh
dGVtZW50c0NhbGxiYWNrKHR4KQoreworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJTRUxFQ1Qg
Q09VTlQoKikgRlJPTSBUZXN0OyIsICJTUUxJVEVfUkVBRCIpOworICAgIGV4ZWN1dGVTdGF0ZW1l
bnQodHgsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBUZXN0OyIsICJTUUxJVEVfU0VMRUNUIik7Cisg
ICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRFTEVURSBGUk9NIFRlc3Q7IiwgIlNRTElURV9ERUxF
VEUiKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiSU5TRVJUIElOVE8gVGVzdCBWQUxVRVMg
KDEpOyIsICJTUUxJVEVfSU5TRVJUIik7CisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIlVQREFU
RSBUZXN0IFNFVCBGb28gPSAyIFdIRVJFIEZvbyA9IDE7IiwgIlNRTElURV9VUERBVEUiKTsKKyAg
ICBleGVjdXRlU3RhdGVtZW50KHR4LCAiUFJBR01BIGNhY2hlX3NpemU7IiwgIlNRTElURV9QUkFH
TUEiKTsKKworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJBTFRFUiBUQUJMRSBUZXN0IFJFTkFN
RSBUTyBUZXN0VGFibGU7IiwgIlNRTElURV9BTFRFUl9UQUJMRSIpOworICAgIC8vIFJlbmFtZSB0
aGUgdGFibGUgYmFjayB0byBpdHMgb3JpZ2luYWwgbmFtZQorICAgIGV4ZWN1dGVTdGF0ZW1lbnQo
dHgsICJBTFRFUiBUQUJMRSBUZXN0VGFibGUgUkVOQU1FIFRvIFRlc3Q7IiwgIlNRTElURV9BTFRF
Ul9UQUJMRSIpOworCisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkJFR0lOIFRSQU5TQUNUSU9O
OyIsICJTUUxJVEVfVFJBTlNBQ1RJT04iKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQVRU
QUNIIG1haW4gQVMgVGVzdE1haW47IiwgIlNRTElURV9BVFRBQ0giKTsKKyAgICBleGVjdXRlU3Rh
dGVtZW50KHR4LCAiREVUQUNIIFRlc3RNYWluOyIsICJTUUxJVEVfREVUQUNIIik7CisgICAgZXhl
Y3V0ZVN0YXRlbWVudCh0eCwgIlJFSU5ERVg7IiwgIlNRTElURV9SRUlOREVYIik7CisgICAgZXhl
Y3V0ZVN0YXRlbWVudCh0eCwgIkFOQUxZWkU7IiwgIlNRTElURV9BTkFMWVpFIik7CisKKyAgICAv
LyBTUUxJVEVfRlVOQ1RJT046IGFsbG93ZWQgd3JpdGUgbW9kZQorICAgIC8vIFRoZXJlIGlzIG5v
IFNRTC9KYXZhc2NyaXB0IEFQSSB0byBhZGQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB0byBTUUxp
dGUsCisgICAgLy8gc28gd2UgY2Fubm90IHRlc3QgdGhpcyBvcGVyYXRpb24KK30KKworZnVuY3Rp
b24gZHJvcFN0YXRlbWVudHNDYWxsYmFjayh0eCkKK3sKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4
LCAiRFJPUCBJTkRFWCBUZXN0SW5kZXg7IiwgIlNRTElURV9EUk9QX0lOREVYIik7CisKKyAgICAv
LyBTUUxJVEVfRFJPUF9URU1QX0lOREVYOiBhbGxvd2VkIGluIHdyaXRlIG1vZGUKKyAgICAvLyBO
b3Qgc3VyZSBob3cgdG8gdGVzdCB0aGlzOiB0ZW1wIGluZGV4ZXMgYXJlIGF1dG9tYXRpY2FsbHkg
ZHJvcHBlZCB3aGVuCisgICAgLy8gdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCwgYnV0IEhUTUw1IGRv
ZXNuJ3Qgc3BlY2lmeSBhIGNsb3NlRGF0YWJhc2UoKSBjYWxsLgorCisgICAgZXhlY3V0ZVN0YXRl
bWVudCh0eCwgIkRST1AgVEFCTEUgVGVzdFRlbXBUYWJsZTsiLCAiU1FMSVRFX0RST1BfVEVNUF9U
QUJMRSIpOworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9QIFRSSUdHRVIgVGVzdFRlbXBU
cmlnZ2VyOyIsICJTUUxJVEVfRFJPUF9URU1QX1RSSUdHRVIiKTsKKyAgICBleGVjdXRlU3RhdGVt
ZW50KHR4LCAiRFJPUCBWSUVXIFRlc3RUZW1wVmlldzsiLCAiU1FMSVRFX0RST1BfVEVNUF9WSUVX
Iik7CisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRST1AgVFJJR0dFUiBUZXN0VHJpZ2dlcjsi
LCAiU1FMSVRFX0RST1BfVFJJR0dFUiIpOworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9Q
IFZJRVcgVGVzdFZpZXc7IiwgIlNRTElURV9EUk9QX1ZJRVciKTsKKworICAgIC8vIFNRTElURV9E
Uk9QX1ZUQUJMRTogYWxsb3dlZCBpbiB3cml0ZSBtb2RlCisgICAgLy8gTm90IHN1cmUgaG93IHRv
IHRlc3QgdGhpczogd2UgY2Fubm90IGNyZWF0ZSBhIHZpcnR1YWwgdGFibGUgYmVjYXVzZSB3ZSBk
byBub3QKKyAgICAvLyBoYXZlIFNRTC9KYXZhc2NyaXB0IEFQSXMgdG8gcmVnaXN0ZXIgYSBtb2R1
bGUgdGhhdCBpbXBsZW1lbnRzIGEgdmlydHVhbCB0YWJsZS4KKyAgICAvLyBUaGVyZWZvcmUsIHRy
eWluZyB0byBkcm9wIGEgdmlydHVhbCB0YWJsZSB3aWxsIGFsd2F5cyBmYWlsIChubyBzdWNoIHRh
YmxlKQorICAgIC8vIGJlZm9yZSBldmVuIGdldHRpbmcgdG8gdGhlIGF1dGhvcml6ZXIuCisKKyAg
ICBleGVjdXRlU3RhdGVtZW50KHR4LCAiRFJPUCBUQUJMRSBUZXN0OyIsICJTUUxJVEVfRFJPUF9U
QUJMRSIpOworfQorCitmdW5jdGlvbiB0ZXN0UmVhZFdyaXRlTW9kZShkYikKK3sKKyAgICBkYi50
cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAgICAgICAgY3JlYXRlVGFibGVDYWxsYmFj
ayh0eCk7CisgICAgICAgICAgICBjcmVhdGVTdGF0ZW1lbnRzQ2FsbGJhY2sodHgpOworICAgICAg
ICAgICAgb3RoZXJTdGF0ZW1lbnRzQ2FsbGJhY2sodHgpOworICAgICAgICAgICAgZHJvcFN0YXRl
bWVudHNDYWxsYmFjayh0eCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7
IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIldyaXRlIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9yKTsg
fSwKKyAgICAgICAgZnVuY3Rpb24oKSB7IGxvZygiV3JpdGUgdHJhbnNhY3Rpb24gc3VjY2VlZGVk
LiIpOyB9KTsKK30KKworZnVuY3Rpb24gdGVzdFJlYWRPbmx5TW9kZShkYikKK3sKKyAgICAvLyBU
ZXN0IHRoZSAnQ1JFQVRFIFRBQkxFJyBvcGVyYXRpb247IGl0IHNob3VsZCBiZSBkaXNhbGxvd2Vk
CisgICAgZGIucmVhZFRyYW5zYWN0aW9uKGNyZWF0ZVRhYmxlQ2FsbGJhY2ssCisgICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIlJlYWQgJ0NSRUFURSBUQUJMRScg
dHJhbnNhY3Rpb24gZmFpbGVkIiwgZXJyb3IpOyB9KTsKKworICAgIC8vIEluIG9yZGVyIHRvIHRl
c3QgYWxsIG90aGVyICdDUkVBVEUnIG9wZXJhdGlvbnMsIHdlIG11c3QgY3JlYXRlIHRoZSB0YWJs
ZSBmaXJzdAorICAgIGRiLnRyYW5zYWN0aW9uKGNyZWF0ZVRhYmxlQ2FsbGJhY2ssCisgICAgICAg
IGZ1bmN0aW9uKGVycm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIldyaXRlICdDUkVBVEUgVEFC
TEUnIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9yKTsgfSk7CisgICAgZGIucmVhZFRyYW5zYWN0
aW9uKGNyZWF0ZVN0YXRlbWVudHNDYWxsYmFjaywKKyAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsg
bG9nQW5kVGVybWluYXRlVGVzdCgiUmVhZCAnQ1JFQVRFJyB0cmFuc2FjdGlvbiBmYWlsZWQiLCBl
cnJvcik7IH0pOworCisgICAgLy8gSW4gb3JkZXIgdG8gdGVzdCB0aGUgJ0RST1AnIGFuZCAnb3Ro
ZXInIG9wZXJhdGlvbnMsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIHRoZSByZXNwZWN0aXZlIGVu
dGl0aWVzCisgICAgZGIudHJhbnNhY3Rpb24oY3JlYXRlU3RhdGVtZW50c0NhbGxiYWNrLAorICAg
ICAgICBmdW5jdGlvbihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJXcml0ZSAnQ1JFQVRF
JyB0cmFuc2FjdGlvbiBmYWlsZWQiLCBlcnJvcik7IH0pOworICAgIGRiLnJlYWRUcmFuc2FjdGlv
bihvdGhlclN0YXRlbWVudHNDYWxsYmFjaywKKyAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgbG9n
QW5kVGVybWluYXRlVGVzdCgiUmVhZCAnb3RoZXInIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9y
KTsgfSk7CisKKyAgICAvLyBIYWNrOiBpbnNlcnQgYW4gZW1wdHkgd3JpdGUgdHJhbnNhY3Rpb24g
dG8gZ3VhcmF0ZWUgdGhhdCB0aGVzZSB0cmFuc2FjdGlvbnMgYXJlIGV4ZWN1dGVkIHNlcXVlbnRp
YWxseQorICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7IH0pOworICAgIGRiLnJlYWRU
cmFuc2FjdGlvbihkcm9wU3RhdGVtZW50c0NhbGxiYWNrLAorICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJSZWFkICdEUk9QJyB0cmFuc2FjdGlvbiBmYWlsZWQi
LCBlcnJvcik7IH0sCisgICAgICAgIGZ1bmN0aW9uKCkgeyBsb2coIlJlYWQgdHJhbnNhY3Rpb25z
IHN1Y2NlZWRlZC4iKTsgdGVybWluYXRlVGVzdCgpOyB9KTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCJBdXRob3JpemVyVGVzdCIsICIxLjAi
LCAiVGVzdHMgdGhlIGRhdGFiYXNlIGF1dGhvcml6ZXIuIiwgMzI3NjgpOworICAgIGNsZWFudXAo
ZGIpOworICAgIHRlc3RSZWFkV3JpdGVNb2RlKGRiKTsKKyAgICB0ZXN0UmVhZE9ubHlNb2RlKGRi
KTsKK30KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL2RhdGFiYXNlLWNvbW1v
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9kYXRhYmFz
ZS1jb21tb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNl
cy9kYXRhYmFzZS1jb21tb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK3ZhciBE
Ql9URVNUX1NVRkZJWCA9ICJfZG9tIjsKKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgKz0gbWVzc2FnZSAr
ICJcbiI7Cit9CisKK2Z1bmN0aW9uIHNldExvY2F0aW9uSGFzaChoYXNoKSB7CisgICAgbG9jYXRp
b24uaGFzaCA9IGhhc2g7Cit9CisKK2Z1bmN0aW9uIHNldHVwQW5kUnVuVGVzdCgpCit7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lclRleHQgPSAiIjsKKyAgICBydW5UZXN0KCk7Cit9CisK
</data>
<flag name="review"
          id="41577"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="41578"
          type_id="3"
          status="-"
          setter="ericu"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57291</attachid>
            <date>2010-05-27 19:38:27 -0700</date>
            <delta_ts>2010-05-28 20:46:01 -0700</delta_ts>
            <desc>Merged the two patches and added a function</desc>
            <filename>one.patch</filename>
            <type>text/plain</type>
            <size>74532</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwMjA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDUtMjUgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWZhY3RvciBEQiBsYXlvdXQgdGVzdHMgc28gdGhhdCB0aGV5IHdvcmsgaW4g
V2ViIFdvcmtlcnMgYXMgd2VsbCBhcyBQYWdlcy4KKyAgICAgICAgVGhpcyBpcyBhIGJpZyBzZXQg
b2YgcG9ydHMsIGJ1dCB0aGVyZSBhcmUgc3RpbGwgbW9yZSB0byBjb21lLgorICAgICAgICBJbiBn
ZW5lcmFsLCB0aGlzIGlzIGFsbCBqdXN0IHRyaXZpYWwgY2hhbmdlcy4gIEZvciBlYWNoIHRlc3Qg
ZmlsZSwgSSBwdWxsIG91dCB0aGUgbWVhdCBpbnRvIGEgLmpzIGZpbGUgW3dpdGggbm8gZnVuY3Rp
b25hbCBjaGFuZ2VzXS4gIFRoZW4gSSBpbmNsdWRlIHRoYXQgZnJvbSBib3RoIHRoZSBET00gdGVz
dCBhbmQgYSBuZXcgd29ya2VyIHRlc3Q7IGluIGJvdGggY2FzZXMsIHRoZSAuaHRtbCBmaWxlcyBh
cmUgdHJpdmlhbCB3cmFwcGVycy4gIEFsbCBib2lsZXJwbGF0ZSBjb2RlIGlzIHB1bGxlZCBvdXQg
aW50byB0aGUgcmVzb3VyY2UgZmlsZXMuCisKKyAgICAgICAgSW4gYSBjb3VwbGUgb2YgdGhlc2Ug
dGVzdHMsIHRoZXJlIHdlcmUgdHJ5L2NhdGNoIHdyYXBwZXJzIHRoYXQgc3VwcHJlc3NlZCBlcnJv
cnMuICBJIGRvbid0IHNlZSB3aHkgeW91J2Qgd2FudCB0byBkbyB0aGF0IGluIGEgdGVzdDsgbGV0
J3MgbGV0IHRob3NlIGVycm9ycyBjYXVzZSB0ZXN0IGZhaWx1cmVzLCB0aGVuIGZpeCB0aGVtLiAg
SSB0b29rIG91dCB0aGUgd3JhcHBlcnMgYW5kIHNhdyBubyBkaWZmZXJlbmNlIGluIGJlaGF2aW9y
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5
NQorCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtZGF0YWJhc2VzLWdh
cmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29y
a2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rp
b25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2Uv
bXVsdGlwbGUtdHJhbnNhY3Rpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxl
LXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1oYW5kbGUtcmV1c2Utd29ya2Vy
Lmh0bWw6IFB1bGxlZCBvdXQgZXZlbiBtb3JlIGJvaWxlcnBsYXRlLgorICAgICAgICAqIGZhc3Qv
d29ya2Vycy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFyZ3Mtd29ya2VyLmh0bWw6IFB1bGxlZCBvdXQg
ZXZlbiBtb3JlIGJvaWxlcnBsYXRlLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jl
c291cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlcjogSGVyZSdzIHdoZXJlIHRoZSBib2ls
ZXJwbGF0ZSB3ZW50LgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy9k
YXRhYmFzZS13b3JrZXIuanM6CisgICAgICAgICogc3RvcmFnZS9tdWx0aXBsZS1kYXRhYmFzZXMt
Z2FyYmFnZS1jb2xsZWN0aW9uLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9tdWx0aXBsZS1kYXRh
YmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL211
bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dDogVHJpdmlhbCB3aGl0
ZXNwYWNlIGNoYW5nZS4KKyAgICAgICAgKiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qczogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dy
ZXNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0
aW9uLWluLXByb2dyZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL3JlYWQtYW5kLXdy
aXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL3Rlc3QtYXV0aG9yaXplci5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvdGVzdC1hdXRob3JpemVyLmpzOiBBZGRlZC4KKyAgICAgICAgSSBtYWRlIGEgc21hbGwg
Y29tbW9uIGluY2x1ZGUgZm9yIGFsbCB0aGUgbm9uLXdvcmtlciB0ZXN0cyB0byByZW1vdmUgYSBs
aXR0bGUgYm9pbGVycGxhdGUuCisgICAgICAgICogc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2Ut
Y29tbW9uLmpzOiBBZGRlZC4KKyAgICAgICAgVGhlc2UgdHdvIHRlc3RzIGhhZCBhbHJlYWR5IGJl
ZW4gcG9ydGVkIHRvIHdvcmtlcnM7IEkgdXBkYXRlZCB0aGVtIHRvIHVzZSB0aGUgY29tbW9uIGlu
Y2x1ZGUgZmlsZS4KKyAgICAgICAgKiBzdG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVz
ZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy5odG1sOgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24t
aW4tcHJvZ3Jlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
c3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRlLXRy
YW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250
LXJ1bi10b2dldGhlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS90ZXN0LWF1dGhvcml6ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dv
cmtlcnMvc3RvcmFnZS90ZXN0LWF1dGhvcml6ZXIuaHRtbDogQWRkZWQuCisKIDIwMTAtMDUtMjUg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIHBpeGVsIGV4cGVjdGF0aW9ucyBjaGFuZ2UKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zdG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVzZS13b3JrZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lv
bi1oYW5kbGUtcmV1c2Utd29ya2VyLmh0bWwJKHJldmlzaW9uIDYwMDkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLXdvcmtl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyICsxLDggQEAKIDxodG1sPiAKIDxoZWFkPgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcyI+PC9z
Y3JpcHQ+IAotPHNjcmlwdD4gCi0KLWZ1bmN0aW9uIHNldHVwQW5kUnVuVGVzdCgpCi17Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICB9Ci0gCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lclRleHQgPSAiIjsKLSAgICBkYXRhYmFzZVdvcmtlci5wb3N0TWVzc2FnZSgiaW1w
b3J0U2NyaXB0czouLi8uLi8uLi9zdG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVzZS5q
cyIpOwotICAgIGRhdGFiYXNlV29ya2VyLnBvc3RNZXNzYWdlKCJydW5UZXN0Iik7Ci19Ci08L3Nj
cmlwdD4gCiA8L2hlYWQ+IAotPGJvZHkgb25sb2FkPSJzZXR1cEFuZFJ1blRlc3QoKSI+IAorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCdjaGFuZ2UtdmVyc2lvbi1oYW5kbGUtcmV1c2UuanMnKSI+IAog
PGRpdj5UaGlzIHRlc3RzIHRoYXQgYSBkYXRhYmFzZSBjYW4gYmUgYWNjZXNzZWQgYWZ0ZXIgY2hh
bmdpbmcgaXRzIHZlcnNpb24uIFlvdSBzaG91bGQgc2VlIGFuIGVycm9yIGFib3V0IEZvb0JhciB0
YWJsZSBiZWxvdywgbm90IGFib3V0IG1pc21hdGNoaW5nIHZlcnNpb25zLgogPHByZSBpZD0iY29u
c29sZSI+IAogRkFJTFVSRTogdGVzdCBkaWRuJ3QgcnVuLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3N0b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy13b3JrZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9leGVjdXRlLXNxbC1hcmdzLXdv
cmtlci5odG1sCShyZXZpc2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
dG9yYWdlL2V4ZWN1dGUtc3FsLWFyZ3Mtd29ya2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjMgKzEsMTIgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFi
YXNlLXdvcmtlci1jb250cm9sbGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IHNldHVwQW5kUnVuVGVzdCgpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0gICAgZGF0YWJh
c2VXb3JrZXIucG9zdE1lc3NhZ2UoImltcG9ydFNjcmlwdHM6Li4vLi4vLi4vc3RvcmFnZS9leGVj
dXRlLXNxbC1hcmdzLmpzIik7Ci0gICAgZGF0YWJhc2VXb3JrZXIucG9zdE1lc3NhZ2UoInJ1blRl
c3QiKTsKLX0KLQotPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ic2V0dXBBbmRS
dW5UZXN0KCkiPgotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoJ2V4ZWN1dGUtc3FsLWFyZ3MuanMnKSI+Cis8cHJlIGlkPSJjb25zb2xlIj4gCitGQUlMVVJF
OiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCiA8L2JvZHk+CiAKIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdl
LWNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3Jh
Z2UvbXVsdGlwbGUtZGF0YWJhc2VzLWdhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IG9wZW5zIHR3byBkYXRhYmFzZXMs
IHF1ZXVlcyB1cCBhIHNlcmllcyBvZiBvcGVyYXRpb25zIG9uIGJvdGgsIHRoZW4gImZvcmdldHMi
IGFib3V0IG9uZSBvZiB0aGVtLiBBZnRlciBmb3JjaW5nIEdDLCByZXNvdXJjZXMgYXNzb2NpYXRl
ZCB3aXRoIHRoYXQgZGF0YWJhc2Ugc2hvdWxkIGJlIGZyZWVkIGdyYWNlZnVsbHkuCitGb3Jnb3R0
ZW4gRGF0YWJhc2UgVHJhbnNhY3Rpb24gQ29tcGxldGUKK1BlcnNpc3RlbnQgRGF0YWJhc2UgVHJh
bnNhY3Rpb24gQ29tcGxldGUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3Jh
Z2UvbXVsdGlwbGUtZGF0YWJhc2VzLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1n
YXJiYWdlLWNvbGxlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCdtdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFn
ZS1jb2xsZWN0aW9uLmpzJyk7Ij4KK1RoaXMgdGVzdCBvcGVucyB0d28gZGF0YWJhc2VzLCBxdWV1
ZXMgdXAgYSBzZXJpZXMgb2Ygb3BlcmF0aW9ucyBvbiBib3RoLCB0aGVuICJmb3JnZXRzIiBhYm91
dCBvbmUgb2YgdGhlbS4KK0FmdGVyIGZvcmNpbmcgR0MsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdp
dGggdGhhdCBkYXRhYmFzZSBzaG91bGQgYmUgZnJlZWQgZ3JhY2VmdWxseS48YnI+Cis8cHJlIGlk
PSJjb25zb2xlIj4gCitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBs
ZS10cmFuc2FjdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS10
cmFuc2FjdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1Ro
aXMgaXMgYSB0ZXN0IHRvIHNlZSBpZiB0aGUgZGF0YWJhc2UgQVBJIGFsbG93cyBtdWx0aXBsZSB0
cmFuc2FjdGlvbnMgdG8gYmUgcXVldWVkIG9uIHRoZSBzYW1lIGRhdGFiYXNlIGF0IG9uY2U6CitU
cmFuc2FjdGlvbiAxIFN0YXJ0ZWQKK1RyYW5zYWN0aW9uIDEgU3VjY2VlZGVkCitUcmFuc2FjdGlv
biAyIFN0YXJ0ZWQKK1RyYW5zYWN0aW9uIDIgU3VjY2VlZGVkCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQt
aGFuZGxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9y
YWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpcyBhIHRlc3QgdG8gc2VlIGlm
IHF1ZXVlaW5nIHVwIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBvbiBkaWZmZXJlbnQgaGFuZGxlcyB0
byB0aGUgc2FtZSBkYXRhYmFzZSByZXN1bHRzIGluIGEgZGVhZGxvY2suCitkYjEgcmVhZCBzdGF0
ZW1lbnQgc3VjY2VlZGVkCitkYjEgd3JpdGUgc3RhdGVtZW50IHN1Y2NlZWRlZAorZGIxIHRyYW5z
YWN0aW9uIHN1Y2NlZWRlZAorZGIyIHJlYWQgc3RhdGVtZW50IHN1Y2NlZWRlZAorZGIyIHdyaXRl
IHN0YXRlbWVudCBzdWNjZWVkZWQKK2RiMiB0cmFuc2FjdGlvbiBzdWNjZWVkZWQKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9u
LWRpZmZlcmVudC1oYW5kbGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9t
dWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZGF0YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoJ211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQt
aGFuZGxlcy5qcycpIj4KK1RoaXMgaXMgYSB0ZXN0IHRvIHNlZSBpZiBxdWV1ZWluZyB1cCBtdWx0
aXBsZSB0cmFuc2FjdGlvbnMgb24gZGlmZmVyZW50IGhhbmRsZXMgdG8gdGhlIHNhbWUgZGF0YWJh
c2UgcmVzdWx0cyBpbiBhIGRlYWRsb2NrLjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPiAKK0ZBSUxV
UkU6IHRlc3QgZGlkbid0IHJ1bi4KKzwvcHJlPiAKKzwvYm9keT4KKworPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlw
bGUtdHJhbnNhY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0
YWJhc2Utd29ya2VyLWNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoJ211bHRpcGxlLXRyYW5zYWN0aW9ucy5qcycpIj4KK1RoaXMgaXMgYSB0
ZXN0IHRvIHNlZSBpZiB0aGUgZGF0YWJhc2UgQVBJIGFsbG93cyBtdWx0aXBsZSB0cmFuc2FjdGlv
bnMgdG8gYmUgcXVldWVkIG9uIHRoZSBzYW1lIGRhdGFiYXNlIGF0IG9uY2U6PGJyPgorPHByZSBp
ZD0iY29uc29sZSI+IAorRkFJTFVSRTogdGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+IAorPC9ib2R5
PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVu
LWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNl
LXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUt
dHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IHRvIHNlZSBpZiBvcGVuaW5nIGEgZGF0YWJhc2Ugd2hp
bGUgYSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIG9uIGEgZGlmZmVyZW50IGhhbmRsZSB0byB0aGUg
c2FtZSBkYXRhYmFzZSByZXN1bHRzIGluIGEgZGVhZGxvY2suCitvcGVuRGF0YWJhc2UoKSBzdWNj
ZWVkZWQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0
YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5z
YWN0aW9uLWluLXByb2dyZXNzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dy
ZXNzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCdvcGVuLWRhdGFiYXNlLXdo
aWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLmpzJykiPgorVGhpcyBpcyBhIHRlc3QgdG8gc2Vl
IGlmIG9wZW5pbmcgYSBkYXRhYmFzZSB3aGlsZSBhIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgb24g
YSBkaWZmZXJlbnQgaGFuZGxlIHRvIHRoZSBzYW1lIGRhdGFiYXNlIHJlc3VsdHMgaW4gYSBkZWFk
bG9jay48YnI+Cis8cHJlIGlkPSJjb25zb2xlIj4gCitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4u
Cis8L3ByZT4gCis8L2JvZHk+CisKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0
b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdl
L3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB0ZXN0cyB0aGF0IHJl
YWQgYW5kIHdyaXRlIHRyYW5zYWN0aW9ucyBvbiBkaWZmZXJlbnQgaGFuZGxlcyB0byB0aGUgc2Ft
ZSBkYXRhYmFzZSBkb24ndCBydW4gdG9nZXRoZXIuCitUcmFuc2FjdGlvbiBzdWNjZXNzZnVsLgor
VHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bC4KK1RyYW5zYWN0aW9uIHN1Y2Nlc3NmdWwuCitUcmFuc2Fj
dGlvbiBzdWNjZXNzZnVsLgorVHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bC4KK1RyYW5zYWN0aW9uIHN1
Y2Nlc3NmdWwuCitUcmFuc2FjdGlvbiBzdWNjZXNzZnVsLgorVHJhbnNhY3Rpb24gc3VjY2Vzc2Z1
bC4KK1RyYW5zYWN0aW9uIHN1Y2Nlc3NmdWwuCitUcmFuc2FjdGlvbiBzdWNjZXNzZnVsLgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZWFkLWFuZC13cml0ZS10cmFu
c2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1y
dW4tdG9nZXRoZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgncmVhZC1hbmQtd3JpdGUtdHJhbnNh
Y3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLmpzJykiPgorVGhpcyB0ZXN0IHRlc3RzIHRoYXQgcmVh
ZCBhbmQgd3JpdGUgdHJhbnNhY3Rpb25zIG9uIGRpZmZlcmVudCBoYW5kbGVzIHRvIHRoZSBzYW1l
IGRhdGFiYXNlIGRvbid0IHJ1biB0b2dldGhlci48YnI+Cis8cHJlIGlkPSJjb25zb2xlIj4gCitG
QUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCis8L2JvZHk+CisKKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Rlc3QtYXV0aG9yaXplci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2Uv
dGVzdC1hdXRob3JpemVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Rlc3QtYXV0aG9yaXplci1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjggQEAKK1RoaXMgdGVzdCB0ZXN0cyB0aGUgZGF0YWJhc2UgYXV0
aG9yaXplci4KK1NRTElURV9DUkVBVEVfVEFCTEUgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElU
RV9DUkVBVEVfSU5ERVggc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVBVEVfVEVNUF9U
QUJMRSBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVIgc3Rh
dGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVBVEVfVEVNUF9WSUVXIHN0YXRlbWVudCBzdWNj
ZWVkZWQuCitTUUxJVEVfQ1JFQVRFX1RSSUdHRVIgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElU
RV9DUkVBVEVfVklFVyBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9WVEFCTEUg
c3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9SRUFEIHN0YXRlbWVudCBz
dWNjZWVkZWQuCitTUUxJVEVfU0VMRUNUIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfREVM
RVRFIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfSU5TRVJUIHN0YXRlbWVudCBzdWNjZWVk
ZWQuCitTUUxJVEVfVVBEQVRFIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfUFJBR01BIHN0
YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfQUxURVJfVEFCTEUgc3RhdGVt
ZW50IHN1Y2NlZWRlZC4KK1NRTElURV9BTFRFUl9UQUJMRSBzdGF0ZW1lbnQgc3VjY2VlZGVkLgor
U1FMSVRFX1RSQU5TQUNUSU9OIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJ
VEVfQVRUQUNIIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfREVUQUNI
IHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfUkVJTkRFWCBzdGF0ZW1l
bnQgc3VjY2VlZGVkLgorU1FMSVRFX0FOQUxZWkUgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhv
cml6ZWQKK1NRTElURV9EUk9QX0lOREVYIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfRFJP
UF9URU1QX1RBQkxFIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfRFJPUF9URU1QX1RSSUdH
RVIgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9EUk9QX1RFTVBfVklFVyBzdGF0ZW1lbnQg
c3VjY2VlZGVkLgorU1FMSVRFX0RST1BfVFJJR0dFUiBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FM
SVRFX0RST1BfVklFVyBzdGF0ZW1lbnQgc3VjY2VlZGVkLgorU1FMSVRFX0RST1BfVEFCTEUgc3Rh
dGVtZW50IHN1Y2NlZWRlZC4KK1dyaXRlIHRyYW5zYWN0aW9uIHN1Y2NlZWRlZC4KK1NRTElURV9D
UkVBVEVfVEFCTEUgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9DUkVB
VEVfVEFCTEUgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVBVEVfSU5ERVggc3RhdGVt
ZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9DUkVBVEVfVEVNUF9UQUJMRSBzdGF0
ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVIg
c3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9DUkVBVEVfVEVNUF9WSUVX
IHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfQ1JFQVRFX1RSSUdHRVIg
c3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9DUkVBVEVfVklFVyBzdGF0
ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0NSRUFURV9WVEFCTEUgc3RhdGVt
ZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9DUkVBVEVfSU5ERVggc3RhdGVtZW50
IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVBVEVfVEVNUF9UQUJMRSBzdGF0ZW1lbnQgc3VjY2VlZGVk
LgorU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVIgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElU
RV9DUkVBVEVfVEVNUF9WSUVXIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfQ1JFQVRFX1RS
SUdHRVIgc3RhdGVtZW50IHN1Y2NlZWRlZC4KK1NRTElURV9DUkVBVEVfVklFVyBzdGF0ZW1lbnQg
c3VjY2VlZGVkLgorU1FMSVRFX0NSRUFURV9WVEFCTEUgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1
dGhvcml6ZWQKK1NRTElURV9SRUFEIHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfU0VMRUNU
IHN0YXRlbWVudCBzdWNjZWVkZWQuCitTUUxJVEVfREVMRVRFIHN0YXRlbWVudCBmYWlsZWQ6IG5v
dCBhdXRob3JpemVkCitTUUxJVEVfSU5TRVJUIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3Jp
emVkCitTUUxJVEVfVVBEQVRFIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJ
VEVfUFJBR01BIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitTUUxJVEVfQUxURVJf
VEFCTEUgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElURV9BTFRFUl9UQUJM
RSBzdGF0ZW1lbnQgZmFpbGVkOiBubyBzdWNoIHRhYmxlOiBUZXN0VGFibGUKK1NRTElURV9UUkFO
U0FDVElPTiBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0FUVEFDSCBz
dGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX0RFVEFDSCBzdGF0ZW1lbnQg
ZmFpbGVkOiBub3QgYXV0aG9yaXplZAorU1FMSVRFX1JFSU5ERVggc3RhdGVtZW50IGZhaWxlZDog
bm90IGF1dGhvcml6ZWQKK1NRTElURV9BTkFMWVpFIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRo
b3JpemVkCitTUUxJVEVfRFJPUF9JTkRFWCBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXpl
ZAorU1FMSVRFX0RST1BfVEVNUF9UQUJMRSBzdGF0ZW1lbnQgZmFpbGVkOiBub3QgYXV0aG9yaXpl
ZAorU1FMSVRFX0RST1BfVEVNUF9UUklHR0VSIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3Jp
emVkCitTUUxJVEVfRFJPUF9URU1QX1ZJRVcgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6
ZWQKK1NRTElURV9EUk9QX1RSSUdHRVIgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQK
K1NRTElURV9EUk9QX1ZJRVcgc3RhdGVtZW50IGZhaWxlZDogbm90IGF1dGhvcml6ZWQKK1NRTElU
RV9EUk9QX1RBQkxFIHN0YXRlbWVudCBmYWlsZWQ6IG5vdCBhdXRob3JpemVkCitSZWFkIHRyYW5z
YWN0aW9ucyBzdWNjZWVkZWQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9y
YWdlL3Rlc3QtYXV0aG9yaXplci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zdG9yYWdlL3Rlc3QtYXV0aG9yaXplci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvdGVzdC1hdXRob3JpemVyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSJydW5UZXN0KCd0ZXN0LWF1dGhvcml6ZXIuanMnKSI+CitUaGlzIHRl
c3QgdGVzdHMgdGhlIGRhdGFiYXNlIGF1dGhvcml6ZXIuPGJyPgorPHByZSBpZD0iY29uc29sZSI+
IAorRkFJTFVSRTogdGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+IAorPC9ib2R5PgorCis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJh
c2Utd29ya2VyLWNvbnRyb2xsZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci1jb250cm9sbGVyLmpzCShy
ZXZpc2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291
cmNlcy9kYXRhYmFzZS13b3JrZXItY29udHJvbGxlci5qcwkod29ya2luZyBjb3B5KQpAQCAtOCwx
MSArOCwxNSBAQCBkYXRhYmFzZVdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCiB9Owog
CiBkYXRhYmFzZVdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgIGlmIChl
dmVudC5kYXRhLmluZGV4T2YoJ2xvZzonKSA9PSAwKQorICAgIGlmIChldmVudC5kYXRhLmluZGV4
T2YoJ2xvZzonKSA9PSAwKSB7CiAgICAgICAgIGxvZyhldmVudC5kYXRhLnN1YnN0cmluZyg0KSk7
Ci0gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAnbm90aWZ5RG9uZScpIHsKKyAgICB9IGVsc2Ug
aWYgKGV2ZW50LmRhdGEgPT0gJ25vdGlmeURvbmUnKSB7CiAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhLmluZGV4T2YoJ3NldExvY2F0aW9u
SGFzaDonKSA9PSAnMCcpIHsKKyAgICAgICAgbG9jYXRpb24uaGFzaCA9IGV2ZW50LmRhdGEuc3Vi
c3RyaW5nKCdzZXRMb2NhdGlvbkhhc2g6Jy5sZW5ndGgpOworICAgIH0gZWxzZSBpZiAoZXZlbnQu
ZGF0YSA9PSAnYmFjaycpIHsKKyAgICAgICAgaGlzdG9yeS5iYWNrKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIG1lc3NhZ2U6ICIgKyBldmVudCk7
CiB9OwpAQCAtMjEsMyArMjUsMTUgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJc
biI7CiB9CisKK2Z1bmN0aW9uIHJ1blRlc3QodGVzdEZpbGUpCit7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQg
PSAiIjsKKyAgICBkYXRhYmFzZVdvcmtlci5wb3N0TWVzc2FnZSgiaW1wb3J0U2NyaXB0czouLi8u
Li8uLi9zdG9yYWdlLyIgKyB0ZXN0RmlsZSk7CisgICAgZGF0YWJhc2VXb3JrZXIucG9zdE1lc3Nh
Z2UoInJ1blRlc3QiKTsKK30KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3Jh
Z2UvcmVzb3VyY2VzL2RhdGFiYXNlLXdvcmtlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvZGF0YWJhc2Utd29ya2VyLmpzCShyZXZp
c2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNl
cy9kYXRhYmFzZS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDEzIEBAIG9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiB9OwogCiB2YXIgREJfVEVTVF9TVUZGSVggPSAi
X3dvcmtlciI7CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZVdpdGhTdWZmaXgobmFtZSwgdmVyc2lv
biwgZGVzY3JpcHRpb24sIHNpemUsIGNhbGxiYWNrKQoreworICAgIGlmIChhcmd1bWVudHMubGVu
Z3RoID4gNCkgeworICAgICAgICByZXR1cm4gb3BlbkRhdGFiYXNlKG5hbWUgKyBEQl9URVNUX1NV
RkZJWCwgdmVyc2lvbiwgZGVzY3JpcHRpb24sIHNpemUsIGNhbGxiYWNrKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gb3BlbkRhdGFiYXNlKG5hbWUgKyBEQl9URVNUX1NVRkZJWCwgdmVy
c2lvbiwgZGVzY3JpcHRpb24sIHNpemUpOworICAgIH0KK30KKwpJbmRleDogTGF5b3V0VGVzdHMv
c3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1oYW5kbGUtcmV1c2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVzZS5odG1sCShyZXZp
c2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxl
LXJldXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzEsNyBAQAogPGh0bWw+IAogPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLWNvbW1vbi5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+IAotCi12YXIgREJfVEVTVF9TVUZGSVggPSAiX2RvbSI7Ci0KLWZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwotfQotCi1mdW5jdGlvbiBzZXR1cEFuZFJ1blRlc3Qo
KQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgfQotIAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIiI7Ci0gCi0gICAgcnVuVGVzdCgpOwotfQotPC9z
Y3JpcHQ+IAogPC9oZWFkPiAKIDxib2R5IG9ubG9hZD0ic2V0dXBBbmRSdW5UZXN0KCkiPiAKIDxk
aXY+VGhpcyB0ZXN0cyB0aGF0IGEgZGF0YWJhc2UgY2FuIGJlIGFjY2Vzc2VkIGFmdGVyIGNoYW5n
aW5nIGl0cyB2ZXJzaW9uLiBZb3Ugc2hvdWxkIHNlZSBhbiBlcnJvciBhYm91dCBGb29CYXIgdGFi
bGUgYmVsb3csIG5vdCBhYm91dCBtaXNtYXRjaGluZyB2ZXJzaW9ucy4KSW5kZXg6IExheW91dFRl
c3RzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLmpzCShyZXZp
c2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxl
LXJldXNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIHRyeSB7Ci0gICAgICAgIGRiID0gb3Bl
bkRhdGFiYXNlKCJDaGFuZ2VWZXJzaW9uIiArIERCX1RFU1RfU1VGRklYLCAiIiwgIlRlc3QgdGhh
dCBjaGFuZ2luZyBhIGRhdGFiYXNlIHZlcnNpb24gZG9lc24ndCBraWxsIG91ciBoYW5kbGUgdG8g
aXQiLCAxKTsKKyAgICAgICAgZGIgPSBvcGVuRGF0YWJhc2VXaXRoU3VmZml4KCJDaGFuZ2VWZXJz
aW9uIiwgIiIsICJUZXN0IHRoYXQgY2hhbmdpbmcgYSBkYXRhYmFzZSB2ZXJzaW9uIGRvZXNuJ3Qg
a2lsbCBvdXIgaGFuZGxlIHRvIGl0IiwgMSk7CiAgICAgICAgIHZhciB2ZXJzaW9uID0gZGIudmVy
c2lvbjsKICAgICAgICAgdmFyIG5ld1ZlcnNpb24gPSB2ZXJzaW9uID8gKHBhcnNlSW50KHZlcnNp
b24pICsgMSkudG9TdHJpbmcoKSA6ICIxIjsgCiAgICAgICAgIGRiLmNoYW5nZVZlcnNpb24odmVy
c2lvbiwgbmV3VmVyc2lvbiwgZnVuY3Rpb24odHgpIHsKSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2UvZXhlY3V0ZS1zcWwtYXJncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3Jh
Z2UvZXhlY3V0ZS1zcWwtYXJncy5odG1sCShyZXZpc2lvbiA2MDA5MSkKKysrIExheW91dFRlc3Rz
L3N0b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwICsx
LDEzIEBACiA8aHRtbD4KLQogPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNl
LWNvbW1vbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZXhlY3V0ZS1zcWwtYXJncy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi12YXIgREJfVEVTVF9TVUZGSVggPSAiX2RvbSI7Ci0KLWZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwotfQotCi1mdW5jdGlvbiBzZXR1cEFu
ZFJ1blRlc3QoKQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIHJ1blRlc3QoKTsKLX0K
LQotPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKIDxib2R5IG9ubG9hZD0ic2V0dXBBbmRSdW5UZXN0KCki
PgotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8cHJlIGlkPSJjb25zb2xlIj4gCitGQUlMVVJF
OiB0ZXN0IGRpZG4ndCBydW4uCis8L3ByZT4gCiA8L2JvZHk+CiAKIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL3N0b3JhZ2UvZXhlY3V0ZS1zcWwtYXJncy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFyZ3MuanMJKHJldmlzaW9uIDYwMDkxKQorKysg
TGF5b3V0VGVzdHMvc3RvcmFnZS9leGVjdXRlLXNxbC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw2ICs4MSw2IEBAIGZ1bmN0aW9uIHJ1blRyYW5zYWN0aW9uVGVzdHModHJhbnNhY3Rpb24K
IGZ1bmN0aW9uIHJ1blRlc3QoKQogewogCi0gICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCJFeGVj
dXRlU1FMQXJnc1Rlc3QiICsgREJfVEVTVF9TVUZGSVgsICIxLjAiLCAiVGVzdCBvZiBoYW5kbGlu
ZyBvZiB0aGUgYXJndW1lbnRzIHRvIFNRTFRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwiLCAxKTsKKyAg
ICB2YXIgZGIgPSBvcGVuRGF0YWJhc2VXaXRoU3VmZml4KCJFeGVjdXRlU1FMQXJnc1Rlc3QiLCAi
MS4wIiwgIlRlc3Qgb2YgaGFuZGxpbmcgb2YgdGhlIGFyZ3VtZW50cyB0byBTUUxUcmFuc2FjdGlv
bi5leGVjdXRlU3FsIiwgMSk7CiAgICAgZGIudHJhbnNhY3Rpb24ocnVuVHJhbnNhY3Rpb25UZXN0
cyk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdl
LXdpdGgteGhyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwOTEpCisrKyBMYXlvdXRUZXN0cy9z
dG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQgQEAKIENoYW5naW5nIHRoZSBoYXNoIHRvIGNyZWF0ZSBoaXN0b3J5IGVudHJp
ZXMuCiBEYiBpcyB3YXJtZWQgdXAKIFRlc3QgQ29tcGxldGUsIFNVQ0NFU1MKKwpJbmRleDogTGF5
b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24g
NjAwOTEpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTQwICsxLDEyIEBACiA8aHRtbD4gCiA8aGVhZD4gCiA8dGl0
bGU+SGFzaCBDaGFuZ2Ugd2l0aCBhbiBPcGVuIFhIUiBzaG91bGQgbm90IHN0b3AgZGF0YWJhc2Ug
dHJhbnNhY3Rpb25zPC90aXRsZT4KLQotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiAK
LSAKLXZhciBEQl9VUERBVEVfSU5URVJWQUwgPSAxMDA7Ci12YXIgU0VORF9YSFJfSU5URVJWQUwg
PSAxMDA7Ci12YXIgQkFDS19JTlRFUlZBTCA9IDEwMDsKLXZhciBDUkVBVEVfSEVBTFRIX1RBQkxF
ID0gJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGhlYWx0aCAoa2V5IFZBUkNIQVIoMTYpIFBS
SU1BUlkgS0VZKTsnOwotdmFyIFVQREFURV9EQVRBID0gJ1JFUExBQ0UgSU5UTyBoZWFsdGggVkFM
VUVTKCJoZWFsdGgtY2hlY2sta2V5Iik7JzsKLSAKLXZhciBkYiA9IHdpbmRvdy5vcGVuRGF0YWJh
c2UoJ2J1ZzI1NzEwJywgJzEuMCcsICdMYXlvdXRUZXN0IGZvciBidWcgMjU3MTAnLCAxMDI0MDAp
OwotdmFyIGJhY2tJdGVyYXRpb25zOwotdmFyIG1zZ0RpdjsKLXZhciB4aHJGY3RJbnRlcnZhbElk
OwotdmFyIGJhY2tGY3RJbnRlcnZhbElkOwotdmFyIHN1Y2Nlc3NDaGVja0ludGVydmFsSWQ7Ci12
YXIgZGJGY3RJbnRlcnZhbElkOwotdmFyIHN1Y2Nlc3NlczsKLXZhciBkYXRhYmFzZVVwZGF0ZXM7
Ci12YXIgc3RvcHBlZEludGVydmFsczsKLSAKLWZ1bmN0aW9uIGxvZyhtc2cpCi17Ci0gICAgdmFy
IG5ld01zZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIG5ld01zZy5pbm5l
clRleHQgPSBtc2c7Ci0gICAgbXNnRGl2LmFwcGVuZENoaWxkKG5ld01zZyk7Ci19Ci0KLWZ1bmN0
aW9uIHN0b3BJbnRlcnZhbHMoKQotewotICAgIHN0b3BwZWRJbnRlcnZhbHMgPSB0cnVlOwotICAg
IHdpbmRvdy5jbGVhckludGVydmFsKGRiRmN0SW50ZXJ2YWxJZCk7Ci0gICAgd2luZG93LmNsZWFy
SW50ZXJ2YWwoeGhyRmN0SW50ZXJ2YWxJZCk7Ci0gICAgd2luZG93LmNsZWFySW50ZXJ2YWwoYmFj
a0ZjdEludGVydmFsSWQpOwotfQotCi1mdW5jdGlvbiBzdG9wVGVzdChtZXNzYWdlKQotewotICAg
IGlmICghc3RvcHBlZEludGVydmFscykKLSAgICAgICAgc3RvcEludGVydmFscygpOwotCi0gICAg
bG9nKG1lc3NhZ2UpOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotICAgIAotZnVuY3Rp
b24gdXBkYXRlRGF0YWJhc2UoKQotewotICAgIGRhdGFiYXNlVXBkYXRlcysrOyAgCi0gICAgZGIu
dHJhbnNhY3Rpb24oZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKLSAgICAgICAgdHJhbnNhY3Rpb24u
ZXhlY3V0ZVNxbChVUERBVEVfREFUQSwgW10sIGZ1bmN0aW9uKCkge30sIGVycm9ySGFuZGxlcik7
Ci0gICAgfSwgZXJyb3JIYW5kbGVyLCBmdW5jdGlvbigpIHsKLSAgICAgICAgc3VjY2Vzc2VzKys7
Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrRm9yU3VjY2VzcygpCi17Ci0gICAgaWYgKHN1
Y2Nlc3NlcyA9PSBkYXRhYmFzZVVwZGF0ZXMpIHsKLSAgICAgICAgc3RvcFRlc3QoJ1Rlc3QgQ29t
cGxldGUsIFNVQ0NFU1MnKTsKLSAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc3VjY2Vzc0No
ZWNrSW50ZXJ2YWxJZCk7Ci0gICAgfQotfQotIAotZnVuY3Rpb24gZXJyb3JIYW5kbGVyKHR4LCBl
cnJvcikKLXsKLSAgICBsb2coJ0RCIGVycm9yLCBjb2RlOiAnICsgZXJyb3IuY29kZSArICcsIG1z
ZzogJyArIGVycm9yLm1lc3NhZ2UpOwotICAgIHN0b3BUZXN0KCdUZXN0IENvbXBsZXRlLCBGQUlM
RUQnKTsKLX0KLSAKLWZ1bmN0aW9uIHNlbmRYaHIoKQotewotICAgIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCdHRVQnLCBsb2NhdGlvbi5ocmVmLCB0cnVlKTsKLSAg
ICB4aHIuc2VuZCgnJyk7Ci19Ci0gCi1mdW5jdGlvbiBpbnZva2VCYWNrKCkKLXsKLSAgICBiYWNr
SXRlcmF0aW9ucy0tOwotICAgIGlmIChiYWNrSXRlcmF0aW9ucykgewotICAgICAgICBoaXN0b3J5
LmJhY2soKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzdG9wSW50ZXJ2YWxzKCk7Ci0gICAgICAg
IC8vIEFsbG93IGEgbGl0dGxlIHRpbWUgZm9yIGFsbCB0aGUgZGF0YWJhc2UgdHJhbnNhY3Rpb25z
IHRvIGNvbXBsZXRlIG5vdyB3ZSd2ZSBzdG9wcGVkIG1ha2luZyB0aGVtLgotICAgICAgICBzdWNj
ZXNzQ2hlY2tJbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKGNoZWNrRm9yU3VjY2Vzcywg
MjUwKTsKLSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgZmluaXNoIGJlZm9yZSB0aGlzIHRpbWUsIHRo
ZW4gd2UgY29uc2lkZXIgdGhlIHRlc3QgZmFpbGVkLgotICAgICAgICB3aW5kb3cuc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc3RvcFRlc3QoJ1RpbWVkIG91dCB3YWl0aW5nIGZvciB0cmFuc2FjdGlv
bnMgdG8gY29tcGxldGUuIEZBSUxFRCcpOyB9LCAyMDAwMCk7Ci0gICAgICAgIAotICAgIH0KLX0K
LQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0gIAotICAg
IG1zZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc2dzJyk7Ci0KLSAgICBtc2dEaXYu
aW5uZXJIVE1MID0gJyc7Ci0gICAgYmFja0l0ZXJhdGlvbnMgPSAxMDsKLSAgICBjb25zZWN1dGl2
ZUZhaWx1cmVzID0gMDsKLSAgICBzdWNjZXNzZXMgPSAwOwotICAgIGRhdGFiYXNlVXBkYXRlcyA9
IDA7Ci0gICAgc3RvcHBlZEludGVydmFscyA9IGZhbHNlOwotCi0gICAgLy8gQ3JlYXRlIHNvbWUg
aGFzaGVzIHNvIHdlIGNhbiBjYWxsIGhpc3RvcnkuYmFjaygpLgotICAgIGxvZygnQ2hhbmdpbmcg
dGhlIGhhc2ggdG8gY3JlYXRlIGhpc3RvcnkgZW50cmllcy4nKTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGJhY2tJdGVyYXRpb25zOyBpKyspIHsKLSAgICAgICAgbG9jYXRpb24uaGFzaCA9IGk7
Ci0gICAgfQotCi0gICAgLy8gSW5pdCB0aGUgZGF0YWJhc2UuCi0gICAgZGIudHJhbnNhY3Rpb24o
ZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKLSAgICAgICAgdHJhbnNhY3Rpb24uZXhlY3V0ZVNxbChD
UkVBVEVfSEVBTFRIX1RBQkxFLCBbXSwgZnVuY3Rpb24oKSB7fSwgZXJyb3JIYW5kbGVyKTsKLSAg
ICB9LCBlcnJvckhhbmRsZXIsIGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBHaXZlIGEgbGl0dGxl
IGZvciB0aGUgZGF0YWJhc2UgdG8gJ3dhcm0gdXAnIGJlZm9yZSBtYWtpbmcgeGhyIHJlcXVlc3Rz
Ci0gICAgICAgIC8vIGFuZCBjYWxsaW5nIGhpc3RvcnkuYmFjaygpLgotICAgICAgICB3aW5kb3cu
c2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxvZygnRGIgaXMgd2FybWVkIHVw
Jyk7Ci0KLSAgICAgICAgICAgIC8vIE5PVEU6IElmIHdlIGRvbid0IG1ha2UgYW55IHhociByZXF1
ZXN0cywgdGhlbiB0aGUgdGVzdAotICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHBhc3NlcyAo
Y29tbWVudCB0aGlzIGxpbmUgb3V0KS4KLSAgICAgICAgICAgIHhockZjdEludGVydmFsSWQgPSB3
aW5kb3cuc2V0SW50ZXJ2YWwoc2VuZFhociwgU0VORF9YSFJfSU5URVJWQUwpOwotICAgICAgICAg
ICAgYmFja0ZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoaW52b2tlQmFjaywgQkFD
S19JTlRFUlZBTCk7Ci0gICAgICAgICAgICBkYkZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50
ZXJ2YWwodXBkYXRlRGF0YWJhc2UsIERCX1VQREFURV9JTlRFUlZBTCk7Ci0gICAgICAgIH0sIDUw
MCk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4gCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFi
YXNlLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaGFzaC1jaGFuZ2Utd2l0aC14
aHIuanMiPjwvc2NyaXB0PgogPC9oZWFkPiAKLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4gCi08
ZGl2IGlkPSJtc2dzIj48L2Rpdj4gCis8Ym9keSBvbmxvYWQ9InNldHVwQW5kUnVuVGVzdCgpIj4g
Cis8cHJlIGlkPSJjb25zb2xlIj4KK0ZBSUxVUkU6IHRlc3QgZGlkbid0IHJ1bi4KKzwvcHJlPgog
PC9ib2R5PiAKIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Ut
d2l0aC14aHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5n
ZS13aXRoLXhoci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1j
aGFuZ2Utd2l0aC14aHIuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEyIEBACit2YXIgREJf
VVBEQVRFX0lOVEVSVkFMID0gMTAwOwordmFyIFNFTkRfWEhSX0lOVEVSVkFMID0gMTAwOwordmFy
IEJBQ0tfSU5URVJWQUwgPSAxMDA7Cit2YXIgQ1JFQVRFX0hFQUxUSF9UQUJMRSA9ICdDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBoZWFsdGggKGtleSBWQVJDSEFSKDE2KSBQUklNQVJZIEtFWSk7
JzsKK3ZhciBVUERBVEVfREFUQSA9ICdSRVBMQUNFIElOVE8gaGVhbHRoIFZBTFVFUygiaGVhbHRo
LWNoZWNrLWtleSIpOyc7CisgCit2YXIgZGIgPSBvcGVuRGF0YWJhc2VXaXRoU3VmZml4KCdidWcy
NTcxMCcsICcxLjAnLCAnTGF5b3V0VGVzdCBmb3IgYnVnIDI1NzEwJywgMTAyNDAwKTsKK3ZhciBi
YWNrSXRlcmF0aW9uczsKK3ZhciB4aHJGY3RJbnRlcnZhbElkOwordmFyIGJhY2tGY3RJbnRlcnZh
bElkOwordmFyIHN1Y2Nlc3NDaGVja0ludGVydmFsSWQ7Cit2YXIgZGJGY3RJbnRlcnZhbElkOwor
dmFyIHN1Y2Nlc3NlczsKK3ZhciBkYXRhYmFzZVVwZGF0ZXM7Cit2YXIgc3RvcHBlZEludGVydmFs
czsKKyAKK2Z1bmN0aW9uIHN0b3BJbnRlcnZhbHMoKQoreworICAgIHN0b3BwZWRJbnRlcnZhbHMg
PSB0cnVlOworICAgIGNsZWFySW50ZXJ2YWwoZGJGY3RJbnRlcnZhbElkKTsKKyAgICBjbGVhcklu
dGVydmFsKHhockZjdEludGVydmFsSWQpOworICAgIGNsZWFySW50ZXJ2YWwoYmFja0ZjdEludGVy
dmFsSWQpOworfQorCitmdW5jdGlvbiBzdG9wVGVzdChtZXNzYWdlKQoreworICAgIGlmICghc3Rv
cHBlZEludGVydmFscykKKyAgICAgICAgc3RvcEludGVydmFscygpOworCisgICAgbG9nKG1lc3Nh
Z2UpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorICAgIAorZnVuY3Rpb24gdXBkYXRl
RGF0YWJhc2UoKQoreworICAgIGRhdGFiYXNlVXBkYXRlcysrOyAgCisgICAgZGIudHJhbnNhY3Rp
b24oZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZXhlY3V0ZVNx
bChVUERBVEVfREFUQSwgW10sIGZ1bmN0aW9uKCkge30sIGVycm9ySGFuZGxlcik7CisgICAgfSwg
ZXJyb3JIYW5kbGVyLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc2VzKys7CisgICAgfSk7
Cit9CisKK2Z1bmN0aW9uIGNoZWNrRm9yU3VjY2VzcygpCit7CisgICAgaWYgKHN1Y2Nlc3NlcyA9
PSBkYXRhYmFzZVVwZGF0ZXMpIHsKKyAgICAgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxldGUsIFNV
Q0NFU1MnKTsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChzdWNjZXNzQ2hlY2tJbnRlcnZhbElkKTsK
KyAgICB9Cit9CisgCitmdW5jdGlvbiBlcnJvckhhbmRsZXIodHgsIGVycm9yKQoreworICAgIGxv
ZygnREIgZXJyb3IsIGNvZGU6ICcgKyBlcnJvci5jb2RlICsgJywgbXNnOiAnICsgZXJyb3IubWVz
c2FnZSk7CisgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxldGUsIEZBSUxFRCcpOworfQorIAorZnVu
Y3Rpb24gc2VuZFhocigpCit7CisgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
eGhyLm9wZW4oJ0dFVCcsIGxvY2F0aW9uLmhyZWYsIHRydWUpOworICAgIHhoci5zZW5kKCcnKTsK
K30KKyAKK2Z1bmN0aW9uIGludm9rZUJhY2soKQoreworICAgIGJhY2tJdGVyYXRpb25zLS07Cisg
ICAgaWYgKGJhY2tJdGVyYXRpb25zKSB7CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHN0b3BJbnRlcnZhbHMoKTsKKyAgICAgICAgLy8gQWxsb3cgYSBsaXR0
bGUgdGltZSBmb3IgYWxsIHRoZSBkYXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUgbm93
IHdlJ3ZlIHN0b3BwZWQgbWFraW5nIHRoZW0uCisgICAgICAgIHN1Y2Nlc3NDaGVja0ludGVydmFs
SWQgPSBzZXRJbnRlcnZhbChjaGVja0ZvclN1Y2Nlc3MsIDI1MCk7CisgICAgICAgIC8vIElmIHdl
IGRvbid0IGZpbmlzaCBiZWZvcmUgdGhpcyB0aW1lLCB0aGVuIHdlIGNvbnNpZGVyIHRoZSB0ZXN0
IGZhaWxlZC4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3RvcFRlc3QoJ1RpbWVk
IG91dCB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUuIEZBSUxFRCcpOyB9LCAy
MDAwMCk7CisgICAgICAgIAorICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAg
YmFja0l0ZXJhdGlvbnMgPSAxMDsKKyAgICBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsKKyAgICBz
dWNjZXNzZXMgPSAwOworICAgIGRhdGFiYXNlVXBkYXRlcyA9IDA7CisgICAgc3RvcHBlZEludGVy
dmFscyA9IGZhbHNlOworCisgICAgLy8gQ3JlYXRlIHNvbWUgaGFzaGVzIHNvIHdlIGNhbiBjYWxs
IGhpc3RvcnkuYmFjaygpLgorICAgIGxvZygnQ2hhbmdpbmcgdGhlIGhhc2ggdG8gY3JlYXRlIGhp
c3RvcnkgZW50cmllcy4nKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tJdGVyYXRpb25z
OyBpKyspIHsKKyAgICAgICAgc2V0TG9jYXRpb25IYXNoKGkpOworICAgIH0KKworICAgIC8vIElu
aXQgdGhlIGRhdGFiYXNlLgorICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5zYWN0aW9u
KSB7CisgICAgICAgIHRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwoQ1JFQVRFX0hFQUxUSF9UQUJMRSwg
W10sIGZ1bmN0aW9uKCkge30sIGVycm9ySGFuZGxlcik7CisgICAgfSwgZXJyb3JIYW5kbGVyLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgLy8gR2l2ZSBhIGxpdHRsZSBmb3IgdGhlIGRhdGFiYXNlIHRv
ICd3YXJtIHVwJyBiZWZvcmUgbWFraW5nIHhociByZXF1ZXN0cworICAgICAgICAvLyBhbmQgY2Fs
bGluZyBoaXN0b3J5LmJhY2soKS4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGxvZygnRGIgaXMgd2FybWVkIHVwJyk7CisKKyAgICAgICAgICAgIC8vIE5PVEU6
IElmIHdlIGRvbid0IG1ha2UgYW55IHhociByZXF1ZXN0cywgdGhlbiB0aGUgdGVzdAorICAgICAg
ICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHBhc3NlcyAoY29tbWVudCB0aGlzIGxpbmUgb3V0KS4KKyAg
ICAgICAgICAgIHhockZjdEludGVydmFsSWQgPSBzZXRJbnRlcnZhbChzZW5kWGhyLCBTRU5EX1hI
Ul9JTlRFUlZBTCk7CisgICAgICAgICAgICBiYWNrRmN0SW50ZXJ2YWxJZCA9IHNldEludGVydmFs
KGludm9rZUJhY2ssIEJBQ0tfSU5URVJWQUwpOworICAgICAgICAgICAgZGJGY3RJbnRlcnZhbElk
ID0gc2V0SW50ZXJ2YWwodXBkYXRlRGF0YWJhc2UsIERCX1VQREFURV9JTlRFUlZBTCk7CisgICAg
ICAgIH0sIDUwMCk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRp
cGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uaHRt
bAkocmV2aXNpb24gNjAwOTEpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLWRhdGFi
YXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMSwx
MiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQot
ewotICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0K
LWZ1bmN0aW9uIEdDKCkKLXsKLSAgICAvLyBGb3JjZSBHQy4KLSAgICBpZiAod2luZG93LkdDQ29u
dHJvbGxlcikKLSAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Ci0gICAgICAgICAgICAoeyB9
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gVmFyaWFibGUgZm9yIHRoZSBkYXRhYmFzZSB0
aGF0IHdpbGwgbmV2ZXIgYmUgZm9yZ290dGVuCi12YXIgcGVyc2lzdGVudERCID0gMDsKLS8vIFZh
cmlhYmxlIGZvciB0aGUgZm9yZ290dGVuIGRhdGFiYXNlCi12YXIgZm9yZ290dGVuREIgPSAwOwot
Ci12YXIgY29tcGxldGVkID0gMDsKLWZ1bmN0aW9uIGNoZWNrQ29tcGxldGlvbigpCi17Ci0gICAg
aWYgKCsrY29tcGxldGVkID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1
blRlc3QoKQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAgIHBlcnNpc3RlbnRE
QiA9IG9wZW5EYXRhYmFzZSgiTXVsdGlwbGVEYXRhYmFzZXNUZXN0MSIsICIxLjAiLCAiVGVzdCBv
bmUgb3V0IG9mIGEgc2V0IG9mIGRhdGFiYXNlcyBiZWluZyBkZXN0cm95ZWQgKDEpIiwgMzI3Njgp
OwotICAgIGZvcmdvdHRlbkRCID0gb3BlbkRhdGFiYXNlKCJNdWx0aXBsZURhdGFiYXNlc1Rlc3Qy
IiwgIjEuMCIsICJUZXN0IG9uZSBvdXQgb2YgYSBzZXQgb2YgZGF0YWJhc2VzIGJlaW5nIGRlc3Ry
b3llZCAoMikiLCAzMjc2OCk7Ci0KLSAgICBwZXJzaXN0ZW50REIudHJhbnNhY3Rpb24oZnVuY3Rp
b24odHgpIHsKLSAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElT
VFMgRGF0YVRlc3QgKHJhbmRvbURhdGEpIiwgW10sIGZ1bmN0aW9uKHR4LCByZXN1bHQpIHsgCi0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyArK2kpCi0gICAgICAgICAgICAgICAg
dHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gRGF0YVRlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAo
MSkiLCBbXSk7Ci0gICAgICAgIH0pOyAKLSAgICB9LCBmdW5jdGlvbihlcnIpIHsKLSAgICAgICAg
bG9nKCJQZXJzaXN0ZW50IERhdGFiYXNlIFRyYW5zYWN0aW9uIEVycm9yZWQgLSAiICsgZXJyKTsK
LSAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGxvZygiUGVyc2lzdGVudCBEYXRhYmFzZSBUcmFuc2FjdGlvbiBDb21wbGV0ZSIpOwotICAgICAg
ICBjaGVja0NvbXBsZXRpb24oKTsKLSAgICB9KTsKLQotICAgIGZvcmdvdHRlbkRCLnRyYW5zYWN0
aW9uKGZ1bmN0aW9uKHR4KSB7Ci0gICAgICAgIHR4LmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJ
RiBOT1QgRVhJU1RTIEVtcHR5VGFibGUgKHVuaW1wb3J0YW50RGF0YSkiLCBbXSk7Ci0gICAgfSwg
ZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgIGxvZygiRm9yZ290dGVuIERhdGFiYXNlIFRyYW5zYWN0
aW9uIEVycm9yZWQgLSAiICsgZXJyKTsKLSAgICAgICAgZm9yZ290dGVuREIgPSAwOwotICAgICAg
ICBHQygpOwotICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKLSAgICB9LCBmdW5jdGlvbigpIHsK
LSAgICAgICAgbG9nKCJGb3Jnb3R0ZW4gRGF0YWJhc2UgVHJhbnNhY3Rpb24gQ29tcGxldGUiKTsK
LSAgICAgICAgZm9yZ290dGVuREIgPSAwOwotICAgICAgICBHQygpOwotICAgICAgICBjaGVja0Nv
bXBsZXRpb24oKTsKLSAgICB9KTsKLX0KLQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKTsiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Im11bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24u
anMiPjwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJzZXR1cEFuZFJ1blRlc3QoKTsiPgogVGhpcyB0
ZXN0IG9wZW5zIHR3byBkYXRhYmFzZXMsIHF1ZXVlcyB1cCBhIHNlcmllcyBvZiBvcGVyYXRpb25z
IG9uIGJvdGgsIHRoZW4gImZvcmdldHMiIGFib3V0IG9uZSBvZiB0aGVtLgogQWZ0ZXIgZm9yY2lu
ZyBHQywgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRhdGFiYXNlIHNob3VsZCBiZSBm
cmVlZCBncmFjZWZ1bGx5Ljxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPiAKK0ZBSUxVUkU6IHRlc3Qg
ZGlkbid0IHJ1bi4KKzwvcHJlPiAKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3N0b3JhZ2UvbXVsdGlwbGUtZGF0YWJhc2VzLWdhcmJhZ2UtY29sbGVjdGlvbi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNv
bGxlY3Rpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxl
LWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTYgQEAKK2Z1bmN0aW9uIEdDKCkKK3sKKyAgICAvLyBGb3JjZSBHQy4KKyAgICBpZiAod2luZG93
LkdDQ29udHJvbGxlcikKKyAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgICAg
ICAoeyB9KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVmFyaWFibGUgZm9yIHRoZSBkYXRh
YmFzZSB0aGF0IHdpbGwgbmV2ZXIgYmUgZm9yZ290dGVuCit2YXIgcGVyc2lzdGVudERCID0gMDsK
Ky8vIFZhcmlhYmxlIGZvciB0aGUgZm9yZ290dGVuIGRhdGFiYXNlCit2YXIgZm9yZ290dGVuREIg
PSAwOworCit2YXIgY29tcGxldGVkID0gMDsKK2Z1bmN0aW9uIGNoZWNrQ29tcGxldGlvbigpCit7
CisgICAgaWYgKCsrY29tcGxldGVkID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIHBlcnNpc3RlbnREQiA9IG9wZW5EYXRhYmFzZVdpdGhTdWZm
aXgoIk11bHRpcGxlRGF0YWJhc2VzVGVzdDEiLCAiMS4wIiwgIlRlc3Qgb25lIG91dCBvZiBhIHNl
dCBvZiBkYXRhYmFzZXMgYmVpbmcgZGVzdHJveWVkICgxKSIsIDMyNzY4KTsKKyAgICBmb3Jnb3R0
ZW5EQiA9IG9wZW5EYXRhYmFzZVdpdGhTdWZmaXgoIk11bHRpcGxlRGF0YWJhc2VzVGVzdDIiLCAi
MS4wIiwgIlRlc3Qgb25lIG91dCBvZiBhIHNldCBvZiBkYXRhYmFzZXMgYmVpbmcgZGVzdHJveWVk
ICgyKSIsIDMyNzY4KTsKKworICAgIHBlcnNpc3RlbnREQi50cmFuc2FjdGlvbihmdW5jdGlvbih0
eCkgeworICAgICAgICB0eC5leGVjdXRlU3FsKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBE
YXRhVGVzdCAocmFuZG9tRGF0YSkiLCBbXSwgZnVuY3Rpb24odHgsIHJlc3VsdCkgeyAKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU7ICsraSkKKyAgICAgICAgICAgICAgICB0eC5l
eGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBEYXRhVGVzdCAocmFuZG9tRGF0YSkgVkFMVUVTICgxKSIs
IFtdKTsKKyAgICAgICAgfSk7IAorICAgIH0sIGZ1bmN0aW9uKGVycikgeworICAgICAgICBsb2co
IlBlcnNpc3RlbnQgRGF0YWJhc2UgVHJhbnNhY3Rpb24gRXJyb3JlZCAtICIgKyBlcnIpOworICAg
ICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9n
KCJQZXJzaXN0ZW50IERhdGFiYXNlIFRyYW5zYWN0aW9uIENvbXBsZXRlIik7CisgICAgICAgIGNo
ZWNrQ29tcGxldGlvbigpOworICAgIH0pOworCisgICAgZm9yZ290dGVuREIudHJhbnNhY3Rpb24o
ZnVuY3Rpb24odHgpIHsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5P
VCBFWElTVFMgRW1wdHlUYWJsZSAodW5pbXBvcnRhbnREYXRhKSIsIFtdKTsKKyAgICB9LCBmdW5j
dGlvbihlcnIpIHsKKyAgICAgICAgbG9nKCJGb3Jnb3R0ZW4gRGF0YWJhc2UgVHJhbnNhY3Rpb24g
RXJyb3JlZCAtICIgKyBlcnIpOworICAgICAgICBmb3Jnb3R0ZW5EQiA9IDA7CisgICAgICAgIEdD
KCk7CisgICAgICAgIGNoZWNrQ29tcGxldGlvbigpOworICAgIH0sIGZ1bmN0aW9uKCkgeworICAg
ICAgICBsb2coIkZvcmdvdHRlbiBEYXRhYmFzZSBUcmFuc2FjdGlvbiBDb21wbGV0ZSIpOworICAg
ICAgICBmb3Jnb3R0ZW5EQiA9IDA7CisgICAgICAgIEdDKCk7CisgICAgICAgIGNoZWNrQ29tcGxl
dGlvbigpOworICAgIH0pOworfQpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10
cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxl
cy5odG1sCShyZXZpc2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvbXVsdGlwbGUt
dHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOTYgKzEsMTIgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBsb2co
bWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxi
cj4iOwotfQotCi12YXIgY29tcGxldGUgPSAwOwotCi1mdW5jdGlvbiBjaGVja0NvbXBsZXRpb24o
KQotewotICAgIC8vIFRoZSB0ZXN0IHNob3VsZCBlbmQgYWZ0ZXIgdHdvIHRyYW5zYWN0aW9ucwot
ICAgIGlmICgrK2NvbXBsZXRlID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLS8vIE9wZW5z
IHRoZSBkYXRhYmFzZSB1c2VkIGluIHRoaXMgdGVzdCBjYXNlCi1mdW5jdGlvbiBvcGVuVGVzdERh
dGFiYXNlKCkKLXsKLSAgICByZXR1cm4gb3BlbkRhdGFiYXNlKCJNdWx0aXBsZVRyYW5zYWN0aW9u
c09uRGlmZmVyZW50SGFuZGxlc1Rlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgIjEuMCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBxdWV1ZWlu
ZyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgb24gZGlmZmVyZW50IERCIGhhbmRsZXMgZG9lcyBub3Qg
cmVzdWx0IGluIGEgZGVhZGxvY2suIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDMyNzY4KTsK
LX0KLQotZnVuY3Rpb24gc3RhdGVtZW50U3VjY2Vzc0NhbGxiYWNrKGRiTmFtZSwgc3RhdGVtZW50
VHlwZSkKLXsKLSAgICBsb2coZGJOYW1lICsgIiAiICsgc3RhdGVtZW50VHlwZSArICIgc3RhdGVt
ZW50IHN1Y2NlZWRlZCIpOwotfQotCi1mdW5jdGlvbiBzdGF0ZW1lbnRFcnJvckNhbGxiYWNrKGRi
TmFtZSwgc3RhdGVtZW50VHlwZSwgZXJyb3IpCi17Ci0gICAgbG9nKGRiTmFtZSArICIgIiArIHN0
YXRlbWVudFR5cGUgKyAiIHN0YXRlbWVudCBmYWlsZWQ6ICIgKyBlcnJvci5tZXNzYWdlKTsKLX0K
LQotLy8gUnVucyBhIHRyYW5zYWN0aW9uIG9uIHRoZSBnaXZlbiBkYXRhYmFzZQotZnVuY3Rpb24g
cnVuVHJhbnNhY3Rpb24oZGIsIGRiTmFtZSwgdmFsKQotewotICAgIGRiLnRyYW5zYWN0aW9uKGZ1
bmN0aW9uKHR4KSB7Ci0gICAgICAgLy8gRXhlY3V0ZSBhIHJlYWQtb25seSBzdGF0ZW1lbnQKLSAg
ICAgICB0eC5leGVjdXRlU3FsKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBUZXN0OyIsIFtdLAotICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0KSB7IHN0YXRlbWVudFN1Y2Nlc3NDYWxs
YmFjayhkYk5hbWUsICJyZWFkIik7IH0sCi0gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0
eCwgZXJyb3IpIHsgc3RhdGVtZW50RXJyb3JDYWxsYmFjayhkYk5hbWUsICJyZWFkIiwgZXJyb3Ip
OyB9KTsKLQotICAgICAgIC8vIEV4ZWN1dGUgYSB3cml0ZSBzdGF0ZW1lbnQgdG8gbWFrZSBzdXJl
IFNRTGl0ZSB0cmllcyB0byBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBEQiBmaWxl
Ci0gICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gVGVzdCBWQUxVRVMgKD8pOyIsIFt2
YWxdLAotICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0KSB7IHN0YXRlbWVudFN1
Y2Nlc3NDYWxsYmFjayhkYk5hbWUsICJ3cml0ZSIpOyB9LAotICAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24odHgsIGVycm9yKSB7IHN0YXRlbWVudEVycm9yQ2FsbGJhY2soZGJOYW1lLCAid3Jp
dGUiLCBlcnJvcik7IH0pOwotICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAg
IC8vIFRyYW5zYWN0aW9uIGZhaWx1cmUgY2FsbGJhY2sKLSAgICAgICAgICAgbG9nKGRiTmFtZSAr
ICIgdHJhbnNhY3Rpb24gZmFpbGVkOiAiICsgZXJyb3IubWVzc2FnZSk7Ci0gICAgICAgICAgIGNo
ZWNrQ29tcGxldGlvbigpOwotICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAvLyBU
cmFuc2FjdGlvbiBzdWNjZXNzIGNhbGxiYWNrCi0gICAgICAgICAgIGxvZyhkYk5hbWUgKyAiIHRy
YW5zYWN0aW9uIHN1Y2NlZWRlZCIpOwotICAgICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKLSAg
ICAgICB9KTsKLX0KLQotLy8gV2UgbmVlZCB0byBndWFyYW50ZWUgdGhhdCB0aGUgVGVzdCB0YWJs
ZSBleGlzdHMgYmVmb3JlIHdlIHJ1biBvdXIgdGVzdC4KLS8vIFRoZXJlZm9yZSwgdGhlIHRlc3Qg
Y29kZSBpcyBpbiB0aGUgc3VjY2Vzc0NhbGxiYWNrIG9mIHRoZSB0cmFuc2FjdGlvbiB0aGF0IGNy
ZWF0ZXMgdGhlIHRhYmxlLgotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBkYiA9IG9wZW5UZXN0RGF0YWJhc2UoKTsK
LSAgICAgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKLSAgICAgICAgICAgIC8vIENy
ZWF0ZSB0aGUgVGVzdCB0YWJsZSBpZiBpdCBkb2VzIG5vdCBleGlzdAotICAgICAgICAgICAgdHgu
ZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgVGVzdCAoRm9vIGludCk7Iiwg
W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkge30sIGZ1bmN0
aW9uKHR4LCBlcnJvcikge30pOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAg
ICAgICAgICAgICAgICBsb2coIkNyZWF0aW5nIHRoZSBUZXN0IHRhYmxlIGZhaWxlZDogIiArIGVy
cm9yLm1lc3NhZ2UpOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gVGhlIFRlc3QgdGFibGUgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Ci0gICAgICAgICAg
ICAgICAgdmFyIGRiMSA9IG9wZW5UZXN0RGF0YWJhc2UoKTsKLSAgICAgICAgICAgICAgICB2YXIg
ZGIyID0gb3BlblRlc3REYXRhYmFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChkYjEgPT0gZGIy
KQotICAgICAgICAgICAgICAgICAgICBsb2coImZhaWx1cmU6IGRiMSA9PSBkYjIiKTsKLSAgICAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcnVuVHJhbnNhY3Rpb24oZGIx
LCAiZGIxIiwgMSk7Ci0gICAgICAgICAgICAgICAgICAgIHJ1blRyYW5zYWN0aW9uKGRiMiwgImRi
MiIsIDIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgIH0gY2F0Y2go
ZXJyKSB7fQotfQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9u
LWRpZmZlcmVudC1oYW5kbGVzLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpOyI+Cis8Ym9keSBvbmxvYWQ9InNldHVwQW5kUnVuVGVzdCgpOyI+CiBUaGlzIGlz
IGEgdGVzdCB0byBzZWUgaWYgcXVldWVpbmcgdXAgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIG9uIGRp
ZmZlcmVudCBoYW5kbGVzIHRvIHRoZSBzYW1lIGRhdGFiYXNlIHJlc3VsdHMgaW4gYSBkZWFkbG9j
ay48YnI+Cis8cHJlIGlkPSJjb25zb2xlIj4gCitGQUlMVVJFOiB0ZXN0IGRpZG4ndCBydW4uCis8
L3ByZT4gCiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL211bHRp
cGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdG9yYWdlL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFu
ZGxlcy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvbXVsdGlwbGUtdHJh
bnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc4IEBACit2YXIgY29tcGxldGUgPSAwOworCitmdW5jdGlvbiBjaGVja0NvbXBsZXRpb24oKQor
eworICAgIC8vIFRoZSB0ZXN0IHNob3VsZCBlbmQgYWZ0ZXIgdHdvIHRyYW5zYWN0aW9ucworICAg
IGlmICgrK2NvbXBsZXRlID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKy8vIE9wZW5zIHRo
ZSBkYXRhYmFzZSB1c2VkIGluIHRoaXMgdGVzdCBjYXNlCitmdW5jdGlvbiBvcGVuVGVzdERhdGFi
YXNlKCkKK3sKKyAgICByZXR1cm4gb3BlbkRhdGFiYXNlV2l0aFN1ZmZpeCgiTXVsdGlwbGVUcmFu
c2FjdGlvbnNPbkRpZmZlcmVudEhhbmRsZXNUZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiMS4wIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVz
dCB0byBtYWtlIHN1cmUgdGhhdCBxdWV1ZWluZyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgb24gZGlm
ZmVyZW50IERCIGhhbmRsZXMgZG9lcyBub3QgcmVzdWx0IGluIGEgZGVhZGxvY2suIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjc2OCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRl
bWVudFN1Y2Nlc3NDYWxsYmFjayhkYk5hbWUsIHN0YXRlbWVudFR5cGUpCit7CisgICAgbG9nKGRi
TmFtZSArICIgIiArIHN0YXRlbWVudFR5cGUgKyAiIHN0YXRlbWVudCBzdWNjZWVkZWQiKTsKK30K
KworZnVuY3Rpb24gc3RhdGVtZW50RXJyb3JDYWxsYmFjayhkYk5hbWUsIHN0YXRlbWVudFR5cGUs
IGVycm9yKQoreworICAgIGxvZyhkYk5hbWUgKyAiICIgKyBzdGF0ZW1lbnRUeXBlICsgIiBzdGF0
ZW1lbnQgZmFpbGVkOiAiICsgZXJyb3IubWVzc2FnZSk7Cit9CisKKy8vIFJ1bnMgYSB0cmFuc2Fj
dGlvbiBvbiB0aGUgZ2l2ZW4gZGF0YWJhc2UKK2Z1bmN0aW9uIHJ1blRyYW5zYWN0aW9uKGRiLCBk
Yk5hbWUsIHZhbCkKK3sKKyAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAg
IC8vIEV4ZWN1dGUgYSByZWFkLW9ubHkgc3RhdGVtZW50CisgICAgICAgdHguZXhlY3V0ZVNxbCgi
U0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsiLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKHJlc3VsdCkgeyBzdGF0ZW1lbnRTdWNjZXNzQ2FsbGJhY2soZGJOYW1lLCAicmVhZCIp
OyB9LAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odHgsIGVycm9yKSB7IHN0YXRlbWVu
dEVycm9yQ2FsbGJhY2soZGJOYW1lLCAicmVhZCIsIGVycm9yKTsgfSk7CisKKyAgICAgICAvLyBF
eGVjdXRlIGEgd3JpdGUgc3RhdGVtZW50IHRvIG1ha2Ugc3VyZSBTUUxpdGUgdHJpZXMgdG8gYWNx
dWlyZSBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgREIgZmlsZQorICAgICAgIHR4LmV4ZWN1dGVT
cWwoIklOU0VSVCBJTlRPIFRlc3QgVkFMVUVTICg/KTsiLCBbdmFsXSwKKyAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkgeyBzdGF0ZW1lbnRTdWNjZXNzQ2FsbGJhY2soZGJOYW1l
LCAid3JpdGUiKTsgfSwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikg
eyBzdGF0ZW1lbnRFcnJvckNhbGxiYWNrKGRiTmFtZSwgIndyaXRlIiwgZXJyb3IpOyB9KTsKKyAg
ICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAvLyBUcmFuc2FjdGlvbiBmYWls
dXJlIGNhbGxiYWNrCisgICAgICAgICAgIGxvZyhkYk5hbWUgKyAiIHRyYW5zYWN0aW9uIGZhaWxl
ZDogIiArIGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICBjaGVja0NvbXBsZXRpb24oKTsKKyAg
ICAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgLy8gVHJhbnNhY3Rpb24gc3VjY2VzcyBj
YWxsYmFjaworICAgICAgICAgICBsb2coZGJOYW1lICsgIiB0cmFuc2FjdGlvbiBzdWNjZWVkZWQi
KTsKKyAgICAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7CisgICAgICAgfSk7Cit9CisKKy8vIFdl
IG5lZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIFRlc3QgdGFibGUgZXhpc3RzIGJlZm9yZSB3ZSBy
dW4gb3VyIHRlc3QuCisvLyBUaGVyZWZvcmUsIHRoZSB0ZXN0IGNvZGUgaXMgaW4gdGhlIHN1Y2Nl
c3NDYWxsYmFjayBvZiB0aGUgdHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSB0YWJsZS4KK2Z1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGRiID0gb3BlblRlc3RE
YXRhYmFzZSgpOworICAgICAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBUZXN0IHRhYmxlIGlmIGl0IGRvZXMgbm90IGV4aXN0CisgICAg
ICAgICAgICB0eC5leGVjdXRlU3FsKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBUZXN0IChG
b28gaW50KTsiLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0
KSB7fSwgZnVuY3Rpb24odHgsIGVycm9yKSB7fSk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbihl
cnJvcikgeworICAgICAgICAgICAgICAgIGxvZygiQ3JlYXRpbmcgdGhlIFRlc3QgdGFibGUgZmFp
bGVkOiAiICsgZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAvLyBUaGUgVGVzdCB0YWJsZSB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkK
KyAgICAgICAgICAgICAgICB2YXIgZGIxID0gb3BlblRlc3REYXRhYmFzZSgpOworICAgICAgICAg
ICAgICAgIHZhciBkYjIgPSBvcGVuVGVzdERhdGFiYXNlKCk7CisgICAgICAgICAgICAgICAgaWYg
KGRiMSA9PSBkYjIpCisgICAgICAgICAgICAgICAgICAgIGxvZygiZmFpbHVyZTogZGIxID09IGRi
MiIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBydW5UcmFu
c2FjdGlvbihkYjEsICJkYjEiLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuVHJhbnNhY3Rp
b24oZGIyLCAiZGIyIiwgMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7Cisg
ICAgfSBjYXRjaChlcnIpIHt9Cit9CisKKwpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9tdWx0
aXBsZS10cmFuc2FjdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdl
L211bHRpcGxlLXRyYW5zYWN0aW9ucy5odG1sCShyZXZpc2lvbiA2MDA5MSkKKysrIExheW91dFRl
c3RzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTMgKzEsMTIgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBsb2co
bWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxi
cj4iOwotfQotCi12YXIgY29tcGxldGUgPSAwOwotCi1mdW5jdGlvbiBjaGVja0NvbXBsZXRpb24o
KQotewotICAgIGlmICgrK2NvbXBsZXRlID09IDIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1
bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAgIHZh
ciBkYiA9IG9wZW5EYXRhYmFzZSgiTXVsdGlwbGVUcmFuc2FjdGlvbnNUZXN0IiwgIjEuMCIsICJU
ZXN0IHRvIG1ha2Ugc3VyZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgY2FuIGJlIHF1ZXVlZCBhdCBv
bmNlIGZvciBhbiBIVE1MNSBkYXRhYmFzZSIsIDMyNzY4KTsKLQotICAgIGRiLnRyYW5zYWN0aW9u
KGZ1bmN0aW9uKHR4KSB7Ci0gICAgICAgIGxvZygiVHJhbnNhY3Rpb24gMSBTdGFydGVkIik7Ci0g
ICAgfSwgZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgIGxvZygiVHJhbnNhY3Rpb24gMSBFcnJvcmVk
IC0gIiArIGVycik7Ci0gICAgICAgIGNoZWNrQ29tcGxldGlvbigpOwotICAgIH0sIGZ1bmN0aW9u
KCkgewotICAgICAgICBsb2coIlRyYW5zYWN0aW9uIDEgU3VjY2VlZGVkIik7Ci0gICAgICAgIGNo
ZWNrQ29tcGxldGlvbigpOwotICAgIH0pOwotCi0gICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24o
dHgpIHsKLSAgICAgICAgbG9nKCJUcmFuc2FjdGlvbiAyIFN0YXJ0ZWQiKTsKLSAgICB9LCBmdW5j
dGlvbihlcnIpIHsKLSAgICAgICAgbG9nKCJUcmFuc2FjdGlvbiAyIEVycm9yZWQgLSAiICsgZXJy
KTsKLSAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGxvZygiVHJhbnNhY3Rpb24gMiBTdWNjZWVkZWQiKTsKLSAgICAgICAgY2hlY2tDb21wbGV0
aW9uKCk7Ci0gICAgfSk7Ci19Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9k
YXRhYmFzZS1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im11bHRpcGxlLXRyYW5z
YWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8aGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+
Cis8Ym9keSBvbmxvYWQ9InNldHVwQW5kUnVuVGVzdCgpOyI+CiBUaGlzIGlzIGEgdGVzdCB0byBz
ZWUgaWYgdGhlIGRhdGFiYXNlIEFQSSBhbGxvd3MgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHRvIGJl
IHF1ZXVlZCBvbiB0aGUgc2FtZSBkYXRhYmFzZSBhdCBvbmNlOjxicj4KKzxwcmUgaWQ9ImNvbnNv
bGUiPiAKK0ZBSUxVUkU6IHRlc3QgZGlkbid0IHJ1bi4KKzwvcHJlPiAKIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlv
bnMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKK3ZhciBjb21wbGV0ZSA9IDA7CisK
K2Z1bmN0aW9uIGNoZWNrQ29tcGxldGlvbigpCit7CisgICAgaWYgKCsrY29tcGxldGUgPT0gMiAm
JiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGRi
ID0gb3BlbkRhdGFiYXNlV2l0aFN1ZmZpeCgiTXVsdGlwbGVUcmFuc2FjdGlvbnNUZXN0IiwgIjEu
MCIsICJUZXN0IHRvIG1ha2Ugc3VyZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgY2FuIGJlIHF1ZXVl
ZCBhdCBvbmNlIGZvciBhbiBIVE1MNSBkYXRhYmFzZSIsIDMyNzY4KTsKKworICAgIGRiLnRyYW5z
YWN0aW9uKGZ1bmN0aW9uKHR4KSB7CisgICAgICAgIGxvZygiVHJhbnNhY3Rpb24gMSBTdGFydGVk
Iik7CisgICAgfSwgZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGxvZygiVHJhbnNhY3Rpb24gMSBF
cnJvcmVkIC0gIiArIGVycik7CisgICAgICAgIGNoZWNrQ29tcGxldGlvbigpOworICAgIH0sIGZ1
bmN0aW9uKCkgeworICAgICAgICBsb2coIlRyYW5zYWN0aW9uIDEgU3VjY2VlZGVkIik7CisgICAg
ICAgIGNoZWNrQ29tcGxldGlvbigpOworICAgIH0pOworCisgICAgZGIudHJhbnNhY3Rpb24oZnVu
Y3Rpb24odHgpIHsKKyAgICAgICAgbG9nKCJUcmFuc2FjdGlvbiAyIFN0YXJ0ZWQiKTsKKyAgICB9
LCBmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgbG9nKCJUcmFuc2FjdGlvbiAyIEVycm9yZWQgLSAi
ICsgZXJyKTsKKyAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7CisgICAgfSwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGxvZygiVHJhbnNhY3Rpb24gMiBTdWNjZWVkZWQiKTsKKyAgICAgICAgY2hlY2tD
b21wbGV0aW9uKCk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL29wZW4t
ZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4t
cHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gNjAwOTEpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL29w
ZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw3MSArMSwxMiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MICs9IG1lc3Nh
Z2UgKyAiPGJyPiI7Ci19Ci0KLXZhciBjb21wbGV0ZSA9IDA7Ci0KLWZ1bmN0aW9uIGNoZWNrQ29t
cGxldGlvbigpCi17Ci0gICAgLy8gVGhlIHRlc3Qgc2hvdWxkIGVuZCBhZnRlciB0d28gdHJhbnNh
Y3Rpb25zCi0gICAgaWYgKCsrY29tcGxldGUgPT0gMSAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQot
Ly8gT3BlbnMgdGhlIGRhdGFiYXNlIHVzZWQgaW4gdGhpcyB0ZXN0IGNhc2UKLWZ1bmN0aW9uIG9w
ZW5UZXN0RGF0YWJhc2UoKQotewotICAgIHJldHVybiBvcGVuRGF0YWJhc2UoIk9wZW5EYXRhYmFz
ZVdoaWxlVHJhbnNhY3Rpb25JblByb2dyZXNzVGVzdCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiMS4wIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0
IGNhbGxpbmcgb3BlbkRhdGFiYXNlKCkgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVz
cyBvbiBhIGRpZmZlcmVudCBoYW5kbGUgdG8gdGhlIHNhbWUgZGF0YWJhc2UgZG9lcyBub3QgcmVz
dWx0IGluIGEgZGVhZGxvY2suIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDIxMDAwMDApOyAv
LyAyTUIgKyBlcHNpbG9uCi19Ci0KLS8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgyMDcKLS8vIEluIG9yZGVyIHRvIHRyaWdnZXIgdGhpcyBidWcsIHRoZSB0
cmFuc2FjdGlvbiBtdXN0IGFjcXVpcmUgYW4gZXhjbHVzaXZlCi0vLyBsb2NrIG9uIHRoZSBEQiBm
aWxlIGJlZm9yZSB0cnlpbmcgdG8gb2J0YWluIGEgc2Vjb25kIGhhbmRsZSB0byB0aGUgc2FtZSBE
Qi4KLS8vIFRoZSBvbmx5IHdheSB0byBmb3JjZSBTUUxpdGUgdG8gb2J0YWluIGFuIGV4Y2x1c2l2
ZSBsb2NrIGlzIHRvIGNoYW5nZSBtb3JlCi0vLyB0aGFuIGNhY2hlX3NpemUgKiBwYWdlX3NpemUg
Ynl0ZXMgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKLS8vIGNhY2hlX3Np
emUgaXMgMjAwMCBwYWdlcywgYW5kIHRoZSBkZWZhdWx0IHBhZ2Vfc2l6ZSBpcyAxMDI0IGJ5dGVz
LiBTbyB0aGUKLS8vIHNpemUgb2YgdGhlIGJsb2IgbXVzdCBiZSBhdCBsZWFzdCAyTUIuCi1mdW5j
dGlvbiBydW5UZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHRyeSB7Ci0g
ICAgICAgIHZhciBkYjEgPSBvcGVuVGVzdERhdGFiYXNlKCk7Ci0gICAgICAgIGRiMS50cmFuc2Fj
dGlvbihmdW5jdGlvbih0eCkgewotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBUZXN0IHRhYmxl
IGlmIGl0IGRvZXMgbm90IGV4aXN0Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBUZXN0IChGb28gQkxPQik7Iik7Ci0gICAgICAgICAgICB0eC5l
eGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBUZXN0IFZBTFVFUyAoWkVST0JMT0IoMjA5NzE1MikpOyIs
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYjIgPSBvcGVuVGVzdERhdGFiYXNlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coIm9wZW5EYXRhYmFzZSgpIHN1Y2NlZWRl
ZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24odHgsIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2coIkV4ZWN1dGluZyBzdGF0ZW1lbnQgZmFpbGVkOiAiICsgZXJyb3IubWVzc2FnZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAvLyBDbGVhbiB1cCB0
aGUgREIgdG8gYWxsb3cgZm9yIHJlcGVhdGVkIHJ1bnMgb2YgdGhpcyB0ZXN0Ci0gICAgICAgICAg
ICAvLyB3aXRob3V0IG5lZWRpbmcgdG8gaW5jcmVhc2UgdGhlIGRlZmF1bHQgYWxsb3dlZCBxdW90
YSAoNU1CKQotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiREVMRVRFIEZST00gVGVzdDsiKTsK
LSAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgICAgIGxvZygiVHJhbnNhY3Rp
b24gZmFpbGVkOiAiICsgZXJyb3IubWVzc2FnZSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgY2hlY2tDb21wbGV0aW9uKCk7Ci0gICAgICAgIH0pOwotICAgIH0gY2F0Y2go
ZXJyKSB7fQotfQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ib3Blbi1kYXRhYmFzZS13aGlsZS10cmFu
c2FjdGlvbi1pbi1wcm9ncmVzcy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKTsiPgorPGJvZHkgb25sb2FkPSJzZXR1cEFuZFJ1blRlc3QoKTsiPgogVGhpcyBp
cyBhIHRlc3QgdG8gc2VlIGlmIG9wZW5pbmcgYSBkYXRhYmFzZSB3aGlsZSBhIHRyYW5zYWN0aW9u
IGlzIHJ1bm5pbmcgb24gYSBkaWZmZXJlbnQgaGFuZGxlIHRvIHRoZSBzYW1lIGRhdGFiYXNlIHJl
c3VsdHMgaW4gYSBkZWFkbG9jay48YnI+Cis8cHJlIGlkPSJjb25zb2xlIj4KK0ZBSUxVUkU6IHRl
c3QgZGlkbid0IHJ1bi4KKzwvcHJlPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13aGlsZS10
cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0
b3JhZ2Uvb3Blbi1kYXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5qcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorLy8gT3BlbnMgdGhlIGRhdGFiYXNlIHVzZWQgaW4g
dGhpcyB0ZXN0IGNhc2UKK2Z1bmN0aW9uIG9wZW5UZXN0RGF0YWJhc2UoKQoreworICAgIHJldHVy
biBvcGVuRGF0YWJhc2VXaXRoU3VmZml4KCJPcGVuRGF0YWJhc2VXaGlsZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc1Rlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxLjAiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0
IGNhbGxpbmcgb3BlbkRhdGFiYXNlKCkgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVz
cyBvbiBhIGRpZmZlcmVudCBoYW5kbGUgdG8gdGhlIHNhbWUgZGF0YWJhc2UgZG9lcyBub3QgcmVz
dWx0IGluIGEgZGVhZGxvY2suIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MTAwMDAwKTsgLy8gMk1CICsgZXBzaWxvbgorfQorCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjA3CisvLyBJbiBvcmRlciB0byB0cmlnZ2VyIHRoaXMg
YnVnLCB0aGUgdHJhbnNhY3Rpb24gbXVzdCBhY3F1aXJlIGFuIGV4Y2x1c2l2ZQorLy8gbG9jayBv
biB0aGUgREIgZmlsZSBiZWZvcmUgdHJ5aW5nIHRvIG9idGFpbiBhIHNlY29uZCBoYW5kbGUgdG8g
dGhlIHNhbWUgREIuCisvLyBUaGUgb25seSB3YXkgdG8gZm9yY2UgU1FMaXRlIHRvIG9idGFpbiBh
biBleGNsdXNpdmUgbG9jayBpcyB0byBjaGFuZ2UgbW9yZQorLy8gdGhhbiBjYWNoZV9zaXplICog
cGFnZV9zaXplIGJ5dGVzIGluIHRoZSBkYXRhYmFzZS4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yCisv
LyBjYWNoZV9zaXplIGlzIDIwMDAgcGFnZXMsIGFuZCB0aGUgZGVmYXVsdCBwYWdlX3NpemUgaXMg
MTAyNCBieXRlcy4gU28gdGhlCisvLyBzaXplIG9mIHRoZSBibG9iIG11c3QgYmUgYXQgbGVhc3Qg
Mk1CLgorZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGRiMSA9IG9wZW5UZXN0RGF0YWJh
c2UoKTsKKyAgICBkYjEudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKKyAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBUZXN0IHRhYmxlIGlmIGl0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIHR4LmV4ZWN1
dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFRlc3QgKEZvbyBCTE9CKTsiKTsKKyAg
ICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gVGVzdCBWQUxVRVMgKFpFUk9CTE9CKDIw
OTcxNTIpKTsiLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRiMiA9IG9wZW5UZXN0RGF0YWJhc2UoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJvcGVuRGF0YWJhc2UoKSBzdWNjZWVkZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbih0eCwgZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJFeGVjdXRp
bmcgc3RhdGVtZW50IGZhaWxlZDogIiArIGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgIC8vIENsZWFuIHVwIHRoZSBEQiB0byBhbGxvdyBmb3IgcmVw
ZWF0ZWQgcnVucyBvZiB0aGlzIHRlc3QKKyAgICAgICAgLy8gd2l0aG91dCBuZWVkaW5nIHRvIGlu
Y3JlYXNlIHRoZSBkZWZhdWx0IGFsbG93ZWQgcXVvdGEgKDVNQikKKyAgICAgICAgdHguZXhlY3V0
ZVNxbCgiREVMRVRFIEZST00gVGVzdDsiKTsKKyAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAg
ICAgICBsb2coIlRyYW5zYWN0aW9uIGZhaWxlZDogIiArIGVycm9yLm1lc3NhZ2UpOworICAgIH0s
IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0pOwor
fQpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMt
ZG9udC1ydW4tdG9nZXRoZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdl
L3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci5odG1sCShyZXZp
c2lvbiA2MDA5MSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNh
Y3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAzICsx
LDEyIEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdD4KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
Ci17Ci0gICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0K
LQotZnVuY3Rpb24gdGVybWluYXRlVGVzdCgpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
fQotCi1mdW5jdGlvbiBvcGVuVGVzdERhdGFiYXNlKCkKLXsKLSAgICByZXR1cm4gb3BlbkRhdGFi
YXNlKCJSZWFkQW5kV3JpdGVUcmFuc2FjdGlvbnNEb250UnVuVG9nZXRoZXJUZXN0IiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICIxLjAiLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3Qg
dG8gbWFrZSBzdXJlIHRoYXQgcmVhZCBhbmQgd3JpdGUgdHJhbnNhY3Rpb25zIG9uIGRpZmZlcmVu
dCBEQiBoYW5kbGVzIHRvIHRoZSBzYW1lIERCIGRvbid0IHJ1biBhdCB0aGUgc2FtZSB0aW1lLiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAzMjc2OCk7Ci19Ci0KLXZhciByZWFkVHJhbnNhY3Rp
b25zSW5Qcm9ncmVzcyA9IDA7Ci12YXIgd3JpdGVUcmFuc2FjdGlvbnNJblByb2dyZXNzID0gMDsK
LXZhciB0b3RhbFRyYW5zYWN0aW9ucyA9IDA7Ci12YXIgZmluaXNoZWRUcmFuc2FjdGlvbnMgPSAw
OwotCi1mdW5jdGlvbiBydW5UcmFuc2FjdGlvbihkYiwgcmVhZE9ubHkpCi17Ci0gICAgdmFyIHRy
YW5zYWN0aW9uRnVuY3Rpb24gPSAocmVhZE9ubHkgPyBkYi5yZWFkVHJhbnNhY3Rpb24gOiBkYi50
cmFuc2FjdGlvbik7Ci0gICAgdHJhbnNhY3Rpb25GdW5jdGlvbi5jYWxsKGRiLCBmdW5jdGlvbih0
eCkgewotICAgICAgICAgICAgaWYgKHJlYWRPbmx5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdy
aXRlVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxv
ZygiUmVhZCB0cmFuc2FjdGlvbiBzdGFydGluZyB3aGlsZSB3cml0ZSB0cmFuc2FjdGlvbiBpbiBw
cm9ncmVzcy4iKTsKLSAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlVGVzdCgpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZWFkVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcysr
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoKHJlYWRUcmFuc2Fj
dGlvbnNJblByb2dyZXNzICE9IDApIHx8ICh3cml0ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgIT0g
MCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJXcml0ZSB0cmFuc2FjdGlvbiBzdGFydGlu
ZyB3aGlsZSBhbm90aGVyIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzLiIpOwotICAgICAgICAgICAg
ICAgICAgICB0ZXJtaW5hdGVUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHdyaXRlVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcysrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdHguZXhlY3V0ZVNxbCgiU0VMRUNUICogRlJPTSBUZXN0OyIpOwotICAgICAgICB9LCBm
dW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgbG9nKChyZWFkT25seSA/ICJSZWFkIiA6ICJX
cml0ZSIpICsgIiB0cmFuc2FjdGlvbiBmYWlsZWQ6ICIgKyBlcnJvci5tZXNzYWdlKTsKLSAgICAg
ICAgICAgIHRlcm1pbmF0ZVRlc3QoKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgZmluaXNoZWRUcmFuc2FjdGlvbnMrKzsKLSAgICAgICAgICAgICBpZiAocmVhZE9ubHkp
Ci0gICAgICAgICAgICAgICAgIHJlYWRUcmFuc2FjdGlvbnNJblByb2dyZXNzLS07Ci0gICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICB3cml0ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3Mt
LTsKLSAgICAgICAgICAgICBsb2coIlRyYW5zYWN0aW9uIHN1Y2Nlc3NmdWwuIik7Ci0gICAgICAg
ICAgICAgaWYgKChmaW5pc2hlZFRyYW5zYWN0aW9ucyA9PSB0b3RhbFRyYW5zYWN0aW9ucykgJiYg
KHJlYWRUcmFuc2FjdGlvbnNJblByb2dyZXNzID09IDApICYmICh3cml0ZVRyYW5zYWN0aW9uc0lu
UHJvZ3Jlc3MgPT0gMCkpCi0gICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVRlc3QoKTsKLSAgICAg
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blJlYWRBbmRXcml0ZVRyYW5zYWN0aW9ucyhkYjEsIGRi
MiwgZGIzKQotewotICAgIHRvdGFsVHJhbnNhY3Rpb25zID0gMTA7Ci0gICAgZmluaXNoZWRUcmFu
c2FjdGlvbnMgPSAwOwotICAgIHJ1blRyYW5zYWN0aW9uKGRiMSwgdHJ1ZSk7Ci0gICAgcnVuVHJh
bnNhY3Rpb24oZGIyLCB0cnVlKTsKLSAgICBydW5UcmFuc2FjdGlvbihkYjEsIGZhbHNlKTsKLSAg
ICBydW5UcmFuc2FjdGlvbihkYjEsIHRydWUpOwotICAgIHJ1blRyYW5zYWN0aW9uKGRiMiwgdHJ1
ZSk7Ci0gICAgcnVuVHJhbnNhY3Rpb24oZGIzLCB0cnVlKTsKLSAgICBydW5UcmFuc2FjdGlvbihk
YjEsIGZhbHNlKTsKLSAgICBydW5UcmFuc2FjdGlvbihkYjIsIGZhbHNlKTsKLSAgICBydW5UcmFu
c2FjdGlvbihkYjEsIHRydWUpOwotICAgIHJ1blRyYW5zYWN0aW9uKGRiMywgdHJ1ZSk7Ci19Ci0K
LWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0KLSAgICB0cnkg
ewotICAgICAgICB2YXIgZGIxID0gb3BlblRlc3REYXRhYmFzZSgpOwotICAgICAgICB2YXIgZGIy
ID0gb3BlblRlc3REYXRhYmFzZSgpOwotICAgICAgICB2YXIgZGIzID0gb3BlblRlc3REYXRhYmFz
ZSgpOwotICAgICAgICBkYjEudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKLSAgICAgICAgICAg
ICAgICB0eC5leGVjdXRlU3FsKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBUZXN0IChGb28g
aW50KTsiKTsKLSAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgbG9nKCJDYW5ub3QgY3JlYXRlIHRoZSBUZXN0IHRhYmxlOiAiICsgZXJyb3IubWVzc2FnZSk7
Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlVGVzdCgpOwotICAgICAgICAgICAgfSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgcnVuUmVhZEFuZFdyaXRlVHJhbnNhY3Rpb25zKGRiMSwg
ZGIyLCBkYjMpOwotICAgICAgICAgICAgfSk7Ci0gICAgIH0gY2F0Y2goZXJyKSB7fQotfQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLWNvbW1vbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRv
Z2V0aGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+
Cis8Ym9keSBvbmxvYWQ9InNldHVwQW5kUnVuVGVzdCgpOyI+CiBUaGlzIHRlc3QgdGVzdHMgdGhh
dCByZWFkIGFuZCB3cml0ZSB0cmFuc2FjdGlvbnMgb24gZGlmZmVyZW50IGhhbmRsZXMgdG8gdGhl
IHNhbWUgZGF0YWJhc2UgZG9uJ3QgcnVuIHRvZ2V0aGVyLjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUi
PgorRkFJTFVSRTogdGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250
LXJ1bi10b2dldGhlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3JlYWQt
YW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N0b3JhZ2UvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQt
cnVuLXRvZ2V0aGVyLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACitmdW5jdGlvbiB0
ZXJtaW5hdGVUZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IG9wZW5UZXN0RGF0YWJhc2UoKQoreworICAgIHJldHVybiBvcGVuRGF0YWJhc2VXaXRoU3VmZml4
KCJSZWFkQW5kV3JpdGVUcmFuc2FjdGlvbnNEb250UnVuVG9nZXRoZXJUZXN0IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiMS4wIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVGVzdCB0byBtYWtlIHN1cmUgdGhhdCByZWFkIGFuZCB3cml0ZSB0cmFuc2Fj
dGlvbnMgb24gZGlmZmVyZW50IERCIGhhbmRsZXMgdG8gdGhlIHNhbWUgREIgZG9uJ3QgcnVuIGF0
IHRoZSBzYW1lIHRpbWUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjc2
OCk7Cit9CisKK3ZhciByZWFkVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcyA9IDA7Cit2YXIgd3JpdGVU
cmFuc2FjdGlvbnNJblByb2dyZXNzID0gMDsKK3ZhciB0b3RhbFRyYW5zYWN0aW9ucyA9IDA7Cit2
YXIgZmluaXNoZWRUcmFuc2FjdGlvbnMgPSAwOworCitmdW5jdGlvbiBydW5UcmFuc2FjdGlvbihk
YiwgcmVhZE9ubHkpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uRnVuY3Rpb24gPSAocmVhZE9ubHkg
PyBkYi5yZWFkVHJhbnNhY3Rpb24gOiBkYi50cmFuc2FjdGlvbik7CisgICAgdHJhbnNhY3Rpb25G
dW5jdGlvbi5jYWxsKGRiLCBmdW5jdGlvbih0eCkgeworICAgICAgICAgICAgaWYgKHJlYWRPbmx5
KSB7CisgICAgICAgICAgICAgICAgaWYgKHdyaXRlVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcyAhPSAw
KSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygiUmVhZCB0cmFuc2FjdGlvbiBzdGFydGluZyB3
aGlsZSB3cml0ZSB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcy4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGVybWluYXRlVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZWFkVHJhbnNhY3Rpb25zSW5Qcm9ncmVzcysrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKHJlYWRUcmFuc2FjdGlvbnNJblByb2dyZXNzICE9IDApIHx8ICh3cml0
ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgIT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9n
KCJXcml0ZSB0cmFuc2FjdGlvbiBzdGFydGluZyB3aGlsZSBhbm90aGVyIHRyYW5zYWN0aW9uIGlu
IHByb2dyZXNzLiIpOworICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVUZXN0KCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRlVHJhbnNhY3Rpb25zSW5Qcm9ncmVz
cysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiU0VMRUNUICog
RlJPTSBUZXN0OyIpOworICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAg
bG9nKChyZWFkT25seSA/ICJSZWFkIiA6ICJXcml0ZSIpICsgIiB0cmFuc2FjdGlvbiBmYWlsZWQ6
ICIgKyBlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVRlc3QoKTsKKyAgICAg
ICAgfSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgZmluaXNoZWRUcmFuc2FjdGlvbnMrKzsK
KyAgICAgICAgICAgICBpZiAocmVhZE9ubHkpCisgICAgICAgICAgICAgICAgIHJlYWRUcmFuc2Fj
dGlvbnNJblByb2dyZXNzLS07CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICB3
cml0ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MtLTsKKyAgICAgICAgICAgICBsb2coIlRyYW5zYWN0
aW9uIHN1Y2Nlc3NmdWwuIik7CisgICAgICAgICAgICAgaWYgKChmaW5pc2hlZFRyYW5zYWN0aW9u
cyA9PSB0b3RhbFRyYW5zYWN0aW9ucykgJiYgKHJlYWRUcmFuc2FjdGlvbnNJblByb2dyZXNzID09
IDApICYmICh3cml0ZVRyYW5zYWN0aW9uc0luUHJvZ3Jlc3MgPT0gMCkpCisgICAgICAgICAgICAg
ICAgIHRlcm1pbmF0ZVRlc3QoKTsKKyAgICAgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJ1blJlYWRB
bmRXcml0ZVRyYW5zYWN0aW9ucyhkYjEsIGRiMiwgZGIzKQoreworICAgIHRvdGFsVHJhbnNhY3Rp
b25zID0gMTA7CisgICAgZmluaXNoZWRUcmFuc2FjdGlvbnMgPSAwOworICAgIHJ1blRyYW5zYWN0
aW9uKGRiMSwgdHJ1ZSk7CisgICAgcnVuVHJhbnNhY3Rpb24oZGIyLCB0cnVlKTsKKyAgICBydW5U
cmFuc2FjdGlvbihkYjEsIGZhbHNlKTsKKyAgICBydW5UcmFuc2FjdGlvbihkYjEsIHRydWUpOwor
ICAgIHJ1blRyYW5zYWN0aW9uKGRiMiwgdHJ1ZSk7CisgICAgcnVuVHJhbnNhY3Rpb24oZGIzLCB0
cnVlKTsKKyAgICBydW5UcmFuc2FjdGlvbihkYjEsIGZhbHNlKTsKKyAgICBydW5UcmFuc2FjdGlv
bihkYjIsIGZhbHNlKTsKKyAgICBydW5UcmFuc2FjdGlvbihkYjEsIHRydWUpOworICAgIHJ1blRy
YW5zYWN0aW9uKGRiMywgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFy
IGRiMSA9IG9wZW5UZXN0RGF0YWJhc2UoKTsKKyAgICB2YXIgZGIyID0gb3BlblRlc3REYXRhYmFz
ZSgpOworICAgIHZhciBkYjMgPSBvcGVuVGVzdERhdGFiYXNlKCk7CisgICAgZGIxLnRyYW5zYWN0
aW9uKGZ1bmN0aW9uKHR4KSB7CisgICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJDUkVBVEUgVEFC
TEUgSUYgTk9UIEVYSVNUUyBUZXN0IChGb28gaW50KTsiKTsKKyAgICAgICAgfSwgZnVuY3Rpb24o
ZXJyb3IpIHsKKyAgICAgICAgICAgIGxvZygiQ2Fubm90IGNyZWF0ZSB0aGUgVGVzdCB0YWJsZTog
IiArIGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgdGVybWluYXRlVGVzdCgpOworICAgICAg
ICB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJ1blJlYWRBbmRXcml0ZVRyYW5zYWN0aW9u
cyhkYjEsIGRiMiwgZGIzKTsKKyAgICAgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9y
YWdlL3Rlc3QtYXV0aG9yaXplci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3Jh
Z2UvdGVzdC1hdXRob3JpemVyLmh0bWwJKHJldmlzaW9uIDYwMDkxKQorKysgTGF5b3V0VGVzdHMv
c3RvcmFnZS90ZXN0LWF1dGhvcml6ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzUgKzEs
MTIgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkK
LXsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQot
Ci1mdW5jdGlvbiB0ZXJtaW5hdGVUZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19
Ci0KLWZ1bmN0aW9uIGxvZ0FuZFRlcm1pbmF0ZVRlc3QobWVzc2FnZSwgZXJyb3IpCi17Ci0gICAg
bG9nKG1lc3NhZ2UgKyAiOiAiICsgZXJyb3IubWVzc2FnZSk7Ci0gICAgdGVybWluYXRlVGVzdCgp
OwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKGRiKQotewotICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0
aW9uKHR4KSB7Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJEUk9QIFRBQkxFIElGIEVYSVNU
UyBUZXN0OyIpOwotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiRFJPUCBJTkRFWCBJRiBFWElT
VFMgVGVzdEluZGV4OyIpOwotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiRFJPUCBWSUVXIElG
IEVYSVNUUyBUZXN0VmlldzsiKTsKLSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkRST1AgVFJJ
R0dFUiBJRiBFWElTVFMgVGVzdFRyaWdnZXI7Iik7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9y
KSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIkNsZWFudXAgZmFpbGVkIiwgZXJyb3IpOyB9KTsKLX0K
LQotZnVuY3Rpb24gc3RhdGVtZW50U3VjY2Vzc0NhbGxiYWNrKHN0YXRlbWVudFR5cGUpCi17Ci0g
ICAgbG9nKHN0YXRlbWVudFR5cGUgKyAiIHN0YXRlbWVudCBzdWNjZWVkZWQuIik7Ci19Ci0KLWZ1
bmN0aW9uIHN0YXRlbWVudEVycm9yQ2FsbGJhY2soc3RhdGVtZW50VHlwZSwgZXJyb3IpCi17Ci0g
ICAgbG9nKHN0YXRlbWVudFR5cGUgKyAiIHN0YXRlbWVudCBmYWlsZWQ6ICIgKyBlcnJvci5tZXNz
YWdlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGV4ZWN1dGVTdGF0ZW1lbnQo
dHgsIHN0YXRlbWVudCwgb3BlcmF0aW9uKQotewotICAgIHR4LmV4ZWN1dGVTcWwoc3RhdGVtZW50
LCBbXSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkgeyBzdGF0ZW1lbnRTdWNj
ZXNzQ2FsbGJhY2sob3BlcmF0aW9uKTsgfSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4
LCBlcnJvcikgeyByZXR1cm4gc3RhdGVtZW50RXJyb3JDYWxsYmFjayhvcGVyYXRpb24sIGVycm9y
KTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRhYmxlQ2FsbGJhY2sodHgpCi17Ci0gICAgZXhl
Y3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBUQUJMRSBUZXN0IChGb28gaW50KTsiLCAiU1FMSVRF
X0NSRUFURV9UQUJMRSIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVTdGF0ZW1lbnRzQ2FsbGJhY2so
dHgpCi17Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBJTkRFWCBUZXN0SW5kZXgg
T04gVGVzdCAoRm9vKTsiLCAiU1FMSVRFX0NSRUFURV9JTkRFWCIpOwotCi0gICAgLy8gRXZlbiB0
aG91Z2ggdGhlIGZvbGxvd2luZyBxdWVyeSBzaG91bGQgdHJpZ2dlciBhIFNRTElURV9DUkVBVEVf
VEVNUF9JTkRFWCBvcGVyYXRpb24KLSAgICAvLyAoYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cuc3Fs
aXRlLm9yZy90ZW1wZmlsZXMuaHRtbCksIGl0IGRvZXNuJ3QsIGFuZCBJJ20gbm90IGF3YXJlCi0g
ICAgLy8gb2YgYW55IG90aGVyIHdheSB0byB0cmlnZ2VyIHRoaXMgb3BlcmF0aW9uLiBTbyB3ZSds
bCBza2lwIGl0IGZvciBub3cuCi0gICAgLy9leGVjdXRlU3RhdGVtZW50KHR4LCAiU0VMRUNUICog
RlJPTSBUZXN0IFdIRVJFIEZvbyBJTiAoMSwgMiwgMyk7IiwgIlNRTElURV9DUkVBVEVfVEVNUF9J
TkRFWCIpOwotCi0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBURU1QIFRBQkxFIFRl
c3RUZW1wVGFibGUgKEZvbyBpbnQpOyIsICJTUUxJVEVfQ1JFQVRFX1RFTVBfVEFCTEUiKTsKLSAg
ICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQ1JFQVRFIFRFTVAgVFJJR0dFUiBUZXN0VGVtcFRyaWdn
ZXIgSU5TRVJUIE9OIFRlc3QgQkVHSU4gU0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsgRU5EOyIs
ICJTUUxJVEVfQ1JFQVRFX1RFTVBfVFJJR0dFUiIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgs
ICJDUkVBVEUgVEVNUCBWSUVXIFRlc3RUZW1wVmlldyBBUyBTRUxFQ1QgQ09VTlQoKikgRlJPTSBU
ZXN0OyIsICJTUUxJVEVfQ1JFQVRFX1RFTVBfVklFVyIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQo
dHgsICJDUkVBVEUgVFJJR0dFUiBUZXN0VHJpZ2dlciBJTlNFUlQgT04gVGVzdCBCRUdJTiBTRUxF
Q1QgQ09VTlQoKikgRlJPTSBUZXN0OyBFTkQ7IiwgIlNRTElURV9DUkVBVEVfVFJJR0dFUiIpOwot
ICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJDUkVBVEUgVklFVyBUZXN0VmlldyBBUyBTRUxFQ1Qg
Q09VTlQoKikgRlJPTSBUZXN0OyIsICJTUUxJVEVfQ1JFQVRFX1ZJRVciKTsKLSAgICBleGVjdXRl
U3RhdGVtZW50KHR4LCAiQ1JFQVRFIFZJUlRVQUwgVEFCTEUgVGVzdFZpcnR1YWxUYWJsZSBVU0lO
RyBNaXNzaW5nTW9kdWxlOyIsICJTUUxJVEVfQ1JFQVRFX1ZUQUJMRSIpOwotfQotCi1mdW5jdGlv
biBvdGhlclN0YXRlbWVudHNDYWxsYmFjayh0eCkKLXsKLSAgICBleGVjdXRlU3RhdGVtZW50KHR4
LCAiU0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsiLCAiU1FMSVRFX1JFQUQiKTsKLSAgICBleGVj
dXRlU3RhdGVtZW50KHR4LCAiU0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsiLCAiU1FMSVRFX1NF
TEVDVCIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJERUxFVEUgRlJPTSBUZXN0OyIsICJT
UUxJVEVfREVMRVRFIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIklOU0VSVCBJTlRPIFRl
c3QgVkFMVUVTICgxKTsiLCAiU1FMSVRFX0lOU0VSVCIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQo
dHgsICJVUERBVEUgVGVzdCBTRVQgRm9vID0gMiBXSEVSRSBGb28gPSAxOyIsICJTUUxJVEVfVVBE
QVRFIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIlBSQUdNQSBjYWNoZV9zaXplOyIsICJT
UUxJVEVfUFJBR01BIik7Ci0KLSAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQUxURVIgVEFCTEUg
VGVzdCBSRU5BTUUgVE8gVGVzdFRhYmxlOyIsICJTUUxJVEVfQUxURVJfVEFCTEUiKTsKLSAgICAv
LyBSZW5hbWUgdGhlIHRhYmxlIGJhY2sgdG8gaXRzIG9yaWdpbmFsIG5hbWUKLSAgICBleGVjdXRl
U3RhdGVtZW50KHR4LCAiQUxURVIgVEFCTEUgVGVzdFRhYmxlIFJFTkFNRSBUbyBUZXN0OyIsICJT
UUxJVEVfQUxURVJfVEFCTEUiKTsKLQotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJCRUdJTiBU
UkFOU0FDVElPTjsiLCAiU1FMSVRFX1RSQU5TQUNUSU9OIik7Ci0gICAgZXhlY3V0ZVN0YXRlbWVu
dCh0eCwgIkFUVEFDSCBtYWluIEFTIFRlc3RNYWluOyIsICJTUUxJVEVfQVRUQUNIIik7Ci0gICAg
ZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRFVEFDSCBUZXN0TWFpbjsiLCAiU1FMSVRFX0RFVEFDSCIp
OwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJSRUlOREVYOyIsICJTUUxJVEVfUkVJTkRFWCIp
OwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJBTkFMWVpFOyIsICJTUUxJVEVfQU5BTFlaRSIp
OwotCi0gICAgLy8gU1FMSVRFX0ZVTkNUSU9OOiBhbGxvd2VkIHdyaXRlIG1vZGUKLSAgICAvLyBU
aGVyZSBpcyBubyBTUUwvSmF2YXNjcmlwdCBBUEkgdG8gYWRkIHVzZXItZGVmaW5lZCBmdW5jdGlv
bnMgdG8gU1FMaXRlLAotICAgIC8vIHNvIHdlIGNhbm5vdCB0ZXN0IHRoaXMgb3BlcmF0aW9uCi19
Ci0KLWZ1bmN0aW9uIGRyb3BTdGF0ZW1lbnRzQ2FsbGJhY2sodHgpCi17Ci0gICAgZXhlY3V0ZVN0
YXRlbWVudCh0eCwgIkRST1AgSU5ERVggVGVzdEluZGV4OyIsICJTUUxJVEVfRFJPUF9JTkRFWCIp
OwotCi0gICAgLy8gU1FMSVRFX0RST1BfVEVNUF9JTkRFWDogYWxsb3dlZCBpbiB3cml0ZSBtb2Rl
Ci0gICAgLy8gTm90IHN1cmUgaG93IHRvIHRlc3QgdGhpczogdGVtcCBpbmRleGVzIGFyZSBhdXRv
bWF0aWNhbGx5IGRyb3BwZWQgd2hlbgotICAgIC8vIHRoZSBkYXRhYmFzZSBpcyBjbG9zZWQsIGJ1
dCBIVE1MNSBkb2Vzbid0IHNwZWNpZnkgYSBjbG9zZURhdGFiYXNlKCkgY2FsbC4KLQotICAgIGV4
ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9QIFRBQkxFIFRlc3RUZW1wVGFibGU7IiwgIlNRTElURV9E
Uk9QX1RFTVBfVEFCTEUiKTsKLSAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiRFJPUCBUUklHR0VS
IFRlc3RUZW1wVHJpZ2dlcjsiLCAiU1FMSVRFX0RST1BfVEVNUF9UUklHR0VSIik7Ci0gICAgZXhl
Y3V0ZVN0YXRlbWVudCh0eCwgIkRST1AgVklFVyBUZXN0VGVtcFZpZXc7IiwgIlNRTElURV9EUk9Q
X1RFTVBfVklFVyIpOwotICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9QIFRSSUdHRVIgVGVz
dFRyaWdnZXI7IiwgIlNRTElURV9EUk9QX1RSSUdHRVIiKTsKLSAgICBleGVjdXRlU3RhdGVtZW50
KHR4LCAiRFJPUCBWSUVXIFRlc3RWaWV3OyIsICJTUUxJVEVfRFJPUF9WSUVXIik7Ci0KLSAgICAv
LyBTUUxJVEVfRFJPUF9WVEFCTEU6IGFsbG93ZWQgaW4gd3JpdGUgbW9kZQotICAgIC8vIE5vdCBz
dXJlIGhvdyB0byB0ZXN0IHRoaXM6IHdlIGNhbm5vdCBjcmVhdGUgYSB2aXJ0dWFsIHRhYmxlIGJl
Y2F1c2Ugd2UgZG8gbm90Ci0gICAgLy8gaGF2ZSBTUUwvSmF2YXNjcmlwdCBBUElzIHRvIHJlZ2lz
dGVyIGEgbW9kdWxlIHRoYXQgaW1wbGVtZW50cyBhIHZpcnR1YWwgdGFibGUuCi0gICAgLy8gVGhl
cmVmb3JlLCB0cnlpbmcgdG8gZHJvcCBhIHZpcnR1YWwgdGFibGUgd2lsbCBhbHdheXMgZmFpbCAo
bm8gc3VjaCB0YWJsZSkKLSAgICAvLyBiZWZvcmUgZXZlbiBnZXR0aW5nIHRvIHRoZSBhdXRob3Jp
emVyLgotCi0gICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRST1AgVEFCTEUgVGVzdDsiLCAiU1FM
SVRFX0RST1BfVEFCTEUiKTsKLX0KLQotZnVuY3Rpb24gdGVzdFJlYWRXcml0ZU1vZGUoZGIpCi17
Ci0gICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsKLSAgICAgICAgICAgIGNyZWF0ZVRh
YmxlQ2FsbGJhY2sodHgpOwotICAgICAgICAgICAgY3JlYXRlU3RhdGVtZW50c0NhbGxiYWNrKHR4
KTsKLSAgICAgICAgICAgIG90aGVyU3RhdGVtZW50c0NhbGxiYWNrKHR4KTsKLSAgICAgICAgICAg
IGRyb3BTdGF0ZW1lbnRzQ2FsbGJhY2sodHgpOwotICAgICAgICB9LAotICAgICAgICBmdW5jdGlv
bihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJXcml0ZSB0cmFuc2FjdGlvbiBmYWlsZWQi
LCBlcnJvcik7IH0sCi0gICAgICAgIGZ1bmN0aW9uKCkgeyBsb2coIldyaXRlIHRyYW5zYWN0aW9u
IHN1Y2NlZWRlZC4iKTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZWFkT25seU1vZGUoZGIpCi17
Ci0gICAgLy8gVGVzdCB0aGUgJ0NSRUFURSBUQUJMRScgb3BlcmF0aW9uOyBpdCBzaG91bGQgYmUg
ZGlzYWxsb3dlZAotICAgIGRiLnJlYWRUcmFuc2FjdGlvbihjcmVhdGVUYWJsZUNhbGxiYWNrLAot
ICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJSZWFkICdDUkVB
VEUgVEFCTEUnIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9yKTsgfSk7Ci0KLSAgICAvLyBJbiBv
cmRlciB0byB0ZXN0IGFsbCBvdGhlciAnQ1JFQVRFJyBvcGVyYXRpb25zLCB3ZSBtdXN0IGNyZWF0
ZSB0aGUgdGFibGUgZmlyc3QKLSAgICBkYi50cmFuc2FjdGlvbihjcmVhdGVUYWJsZUNhbGxiYWNr
LAotICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJXcml0ZSAn
Q1JFQVRFIFRBQkxFJyB0cmFuc2FjdGlvbiBmYWlsZWQiLCBlcnJvcik7IH0pOwotICAgIGRiLnJl
YWRUcmFuc2FjdGlvbihjcmVhdGVTdGF0ZW1lbnRzQ2FsbGJhY2ssCi0gICAgICAgIGZ1bmN0aW9u
KGVycm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIlJlYWQgJ0NSRUFURScgdHJhbnNhY3Rpb24g
ZmFpbGVkIiwgZXJyb3IpOyB9KTsKLQotICAgIC8vIEluIG9yZGVyIHRvIHRlc3QgdGhlICdEUk9Q
JyBhbmQgJ290aGVyJyBvcGVyYXRpb25zLCB3ZSBuZWVkIHRvIGZpcnN0IGNyZWF0ZSB0aGUgcmVz
cGVjdGl2ZSBlbnRpdGllcwotICAgIGRiLnRyYW5zYWN0aW9uKGNyZWF0ZVN0YXRlbWVudHNDYWxs
YmFjaywKLSAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgiV3Jp
dGUgJ0NSRUFURScgdHJhbnNhY3Rpb24gZmFpbGVkIiwgZXJyb3IpOyB9KTsKLSAgICBkYi5yZWFk
VHJhbnNhY3Rpb24ob3RoZXJTdGF0ZW1lbnRzQ2FsbGJhY2ssCi0gICAgICAgIGZ1bmN0aW9uKGVy
cm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIlJlYWQgJ290aGVyJyB0cmFuc2FjdGlvbiBmYWls
ZWQiLCBlcnJvcik7IH0pOwotCi0gICAgLy8gSGFjazogaW5zZXJ0IGFuIGVtcHR5IHdyaXRlIHRy
YW5zYWN0aW9uIHRvIGd1YXJhdGVlIHRoYXQgdGhlc2UgdHJhbnNhY3Rpb25zIGFyZSBleGVjdXRl
ZCBzZXF1ZW50aWFsbHkKLSAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeyB9KTsKLSAg
ICBkYi5yZWFkVHJhbnNhY3Rpb24oZHJvcFN0YXRlbWVudHNDYWxsYmFjaywKLSAgICAgICAgZnVu
Y3Rpb24oZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgiUmVhZCAnRFJPUCcgdHJhbnNhY3Rp
b24gZmFpbGVkIiwgZXJyb3IpOyB9LAotICAgICAgICBmdW5jdGlvbigpIHsgbG9nKCJSZWFkIHRy
YW5zYWN0aW9ucyBzdWNjZWVkZWQuIik7IHRlcm1pbmF0ZVRlc3QoKTsgfSk7Ci19Ci0KLWZ1bmN0
aW9uIHJ1blRlc3QoKQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAg
ICAgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCJBdXRob3JpemVyVGVzdCIsICIxLjAiLCAiVGVz
dHMgdGhlIGRhdGFiYXNlIGF1dGhvcml6ZXIuIiwgMzI3NjgpOwotICAgICAgICBjbGVhbnVwKGRi
KTsKLSAgICAgICAgdGVzdFJlYWRXcml0ZU1vZGUoZGIpOwotICAgICAgICB0ZXN0UmVhZE9ubHlN
b2RlKGRiKTsKLSAgICB9IGNhdGNoKGVycikge30KLX0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRl
c3QtYXV0aG9yaXplci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKTsiPgorPGJvZHkgb25sb2FkPSJzZXR1cEFuZFJ1blRlc3QoKTsiPgogVGhpcyB0ZXN0IHRl
c3RzIHRoZSBkYXRhYmFzZSBhdXRob3JpemVyLjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPgorRkFJ
TFVSRTogdGVzdCBkaWRuJ3QgcnVuLgorPC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9zdG9yYWdlL3Rlc3QtYXV0aG9yaXplci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdG9yYWdlL3Rlc3QtYXV0aG9yaXplci5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N0b3JhZ2UvdGVzdC1hdXRob3JpemVyLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE1MyBAQAorZnVuY3Rpb24gdGVybWluYXRlVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBsb2dBbmRUZXJtaW5hdGVUZXN0KG1lc3NhZ2UsIGVycm9yKQor
eworICAgIGxvZyhtZXNzYWdlICsgIjogIiArIGVycm9yLm1lc3NhZ2UpOworICAgIHRlcm1pbmF0
ZVRlc3QoKTsKK30KKworZnVuY3Rpb24gY2xlYW51cChkYikKK3sKKyAgICBkYi50cmFuc2FjdGlv
bihmdW5jdGlvbih0eCkgeworICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiRFJPUCBUQUJMRSBJ
RiBFWElTVFMgVGVzdDsiKTsKKyAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkRST1AgSU5ERVgg
SUYgRVhJU1RTIFRlc3RJbmRleDsiKTsKKyAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkRST1Ag
VklFVyBJRiBFWElTVFMgVGVzdFZpZXc7Iik7CisgICAgICAgICAgICB0eC5leGVjdXRlU3FsKCJE
Uk9QIFRSSUdHRVIgSUYgRVhJU1RTIFRlc3RUcmlnZ2VyOyIpOworICAgICAgICB9LCBmdW5jdGlv
bihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJDbGVhbnVwIGZhaWxlZCIsIGVycm9yKTsg
fSk7Cit9CisKK2Z1bmN0aW9uIHN0YXRlbWVudFN1Y2Nlc3NDYWxsYmFjayhzdGF0ZW1lbnRUeXBl
KQoreworICAgIGxvZyhzdGF0ZW1lbnRUeXBlICsgIiBzdGF0ZW1lbnQgc3VjY2VlZGVkLiIpOwor
fQorCitmdW5jdGlvbiBzdGF0ZW1lbnRFcnJvckNhbGxiYWNrKHN0YXRlbWVudFR5cGUsIGVycm9y
KQoreworICAgIGxvZyhzdGF0ZW1lbnRUeXBlICsgIiBzdGF0ZW1lbnQgZmFpbGVkOiAiICsgZXJy
b3IubWVzc2FnZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBleGVjdXRlU3Rh
dGVtZW50KHR4LCBzdGF0ZW1lbnQsIG9wZXJhdGlvbikKK3sKKyAgICB0eC5leGVjdXRlU3FsKHN0
YXRlbWVudCwgW10sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbihyZXN1bHQpIHsgc3RhdGVt
ZW50U3VjY2Vzc0NhbGxiYWNrKG9wZXJhdGlvbik7IH0sCisgICAgICAgICAgICAgICAgICBmdW5j
dGlvbih0eCwgZXJyb3IpIHsgcmV0dXJuIHN0YXRlbWVudEVycm9yQ2FsbGJhY2sob3BlcmF0aW9u
LCBlcnJvcik7IH0pOworfQorCitmdW5jdGlvbiBjcmVhdGVUYWJsZUNhbGxiYWNrKHR4KQorewor
ICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJDUkVBVEUgVEFCTEUgVGVzdCAoRm9vIGludCk7Iiwg
IlNRTElURV9DUkVBVEVfVEFCTEUiKTsKK30KKworZnVuY3Rpb24gY3JlYXRlU3RhdGVtZW50c0Nh
bGxiYWNrKHR4KQoreworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJDUkVBVEUgSU5ERVggVGVz
dEluZGV4IE9OIFRlc3QgKEZvbyk7IiwgIlNRTElURV9DUkVBVEVfSU5ERVgiKTsKKworICAgIC8v
IEV2ZW4gdGhvdWdoIHRoZSBmb2xsb3dpbmcgcXVlcnkgc2hvdWxkIHRyaWdnZXIgYSBTUUxJVEVf
Q1JFQVRFX1RFTVBfSU5ERVggb3BlcmF0aW9uCisgICAgLy8gKGFjY29yZGluZyB0byBodHRwOi8v
d3d3LnNxbGl0ZS5vcmcvdGVtcGZpbGVzLmh0bWwpLCBpdCBkb2Vzbid0LCBhbmQgSSdtIG5vdCBh
d2FyZQorICAgIC8vIG9mIGFueSBvdGhlciB3YXkgdG8gdHJpZ2dlciB0aGlzIG9wZXJhdGlvbi4g
U28gd2UnbGwgc2tpcCBpdCBmb3Igbm93LgorICAgIC8vZXhlY3V0ZVN0YXRlbWVudCh0eCwgIlNF
TEVDVCAqIEZST00gVGVzdCBXSEVSRSBGb28gSU4gKDEsIDIsIDMpOyIsICJTUUxJVEVfQ1JFQVRF
X1RFTVBfSU5ERVgiKTsKKworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJDUkVBVEUgVEVNUCBU
QUJMRSBUZXN0VGVtcFRhYmxlIChGb28gaW50KTsiLCAiU1FMSVRFX0NSRUFURV9URU1QX1RBQkxF
Iik7CisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBURU1QIFRSSUdHRVIgVGVzdFRl
bXBUcmlnZ2VyIElOU0VSVCBPTiBUZXN0IEJFR0lOIFNFTEVDVCBDT1VOVCgqKSBGUk9NIFRlc3Q7
IEVORDsiLCAiU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVIiKTsKKyAgICBleGVjdXRlU3RhdGVt
ZW50KHR4LCAiQ1JFQVRFIFRFTVAgVklFVyBUZXN0VGVtcFZpZXcgQVMgU0VMRUNUIENPVU5UKCop
IEZST00gVGVzdDsiLCAiU1FMSVRFX0NSRUFURV9URU1QX1ZJRVciKTsKKyAgICBleGVjdXRlU3Rh
dGVtZW50KHR4LCAiQ1JFQVRFIFRSSUdHRVIgVGVzdFRyaWdnZXIgSU5TRVJUIE9OIFRlc3QgQkVH
SU4gU0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsgRU5EOyIsICJTUUxJVEVfQ1JFQVRFX1RSSUdH
RVIiKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQ1JFQVRFIFZJRVcgVGVzdFZpZXcgQVMg
U0VMRUNUIENPVU5UKCopIEZST00gVGVzdDsiLCAiU1FMSVRFX0NSRUFURV9WSUVXIik7CisgICAg
ZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkNSRUFURSBWSVJUVUFMIFRBQkxFIFRlc3RWaXJ0dWFsVGFi
bGUgVVNJTkcgTWlzc2luZ01vZHVsZTsiLCAiU1FMSVRFX0NSRUFURV9WVEFCTEUiKTsKK30KKwor
ZnVuY3Rpb24gb3RoZXJTdGF0ZW1lbnRzQ2FsbGJhY2sodHgpCit7CisgICAgZXhlY3V0ZVN0YXRl
bWVudCh0eCwgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIFRlc3Q7IiwgIlNRTElURV9SRUFEIik7Cisg
ICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIFRlc3Q7IiwgIlNR
TElURV9TRUxFQ1QiKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiREVMRVRFIEZST00gVGVz
dDsiLCAiU1FMSVRFX0RFTEVURSIpOworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJJTlNFUlQg
SU5UTyBUZXN0IFZBTFVFUyAoMSk7IiwgIlNRTElURV9JTlNFUlQiKTsKKyAgICBleGVjdXRlU3Rh
dGVtZW50KHR4LCAiVVBEQVRFIFRlc3QgU0VUIEZvbyA9IDIgV0hFUkUgRm9vID0gMTsiLCAiU1FM
SVRFX1VQREFURSIpOworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJQUkFHTUEgY2FjaGVfc2l6
ZTsiLCAiU1FMSVRFX1BSQUdNQSIpOworCisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkFMVEVS
IFRBQkxFIFRlc3QgUkVOQU1FIFRPIFRlc3RUYWJsZTsiLCAiU1FMSVRFX0FMVEVSX1RBQkxFIik7
CisgICAgLy8gUmVuYW1lIHRoZSB0YWJsZSBiYWNrIHRvIGl0cyBvcmlnaW5hbCBuYW1lCisgICAg
ZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkFMVEVSIFRBQkxFIFRlc3RUYWJsZSBSRU5BTUUgVG8gVGVz
dDsiLCAiU1FMSVRFX0FMVEVSX1RBQkxFIik7CisKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAi
QkVHSU4gVFJBTlNBQ1RJT047IiwgIlNRTElURV9UUkFOU0FDVElPTiIpOworICAgIGV4ZWN1dGVT
dGF0ZW1lbnQodHgsICJBVFRBQ0ggbWFpbiBBUyBUZXN0TWFpbjsiLCAiU1FMSVRFX0FUVEFDSCIp
OworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJERVRBQ0ggVGVzdE1haW47IiwgIlNRTElURV9E
RVRBQ0giKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiUkVJTkRFWDsiLCAiU1FMSVRFX1JF
SU5ERVgiKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiQU5BTFlaRTsiLCAiU1FMSVRFX0FO
QUxZWkUiKTsKKworICAgIC8vIFNRTElURV9GVU5DVElPTjogYWxsb3dlZCB3cml0ZSBtb2RlCisg
ICAgLy8gVGhlcmUgaXMgbm8gU1FML0phdmFzY3JpcHQgQVBJIHRvIGFkZCB1c2VyLWRlZmluZWQg
ZnVuY3Rpb25zIHRvIFNRTGl0ZSwKKyAgICAvLyBzbyB3ZSBjYW5ub3QgdGVzdCB0aGlzIG9wZXJh
dGlvbgorfQorCitmdW5jdGlvbiBkcm9wU3RhdGVtZW50c0NhbGxiYWNrKHR4KQoreworICAgIGV4
ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9QIElOREVYIFRlc3RJbmRleDsiLCAiU1FMSVRFX0RST1Bf
SU5ERVgiKTsKKworICAgIC8vIFNRTElURV9EUk9QX1RFTVBfSU5ERVg6IGFsbG93ZWQgaW4gd3Jp
dGUgbW9kZQorICAgIC8vIE5vdCBzdXJlIGhvdyB0byB0ZXN0IHRoaXM6IHRlbXAgaW5kZXhlcyBh
cmUgYXV0b21hdGljYWxseSBkcm9wcGVkIHdoZW4KKyAgICAvLyB0aGUgZGF0YWJhc2UgaXMgY2xv
c2VkLCBidXQgSFRNTDUgZG9lc24ndCBzcGVjaWZ5IGEgY2xvc2VEYXRhYmFzZSgpIGNhbGwuCisK
KyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiRFJPUCBUQUJMRSBUZXN0VGVtcFRhYmxlOyIsICJT
UUxJVEVfRFJPUF9URU1QX1RBQkxFIik7CisgICAgZXhlY3V0ZVN0YXRlbWVudCh0eCwgIkRST1Ag
VFJJR0dFUiBUZXN0VGVtcFRyaWdnZXI7IiwgIlNRTElURV9EUk9QX1RFTVBfVFJJR0dFUiIpOwor
ICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9QIFZJRVcgVGVzdFRlbXBWaWV3OyIsICJTUUxJ
VEVfRFJPUF9URU1QX1ZJRVciKTsKKyAgICBleGVjdXRlU3RhdGVtZW50KHR4LCAiRFJPUCBUUklH
R0VSIFRlc3RUcmlnZ2VyOyIsICJTUUxJVEVfRFJPUF9UUklHR0VSIik7CisgICAgZXhlY3V0ZVN0
YXRlbWVudCh0eCwgIkRST1AgVklFVyBUZXN0VmlldzsiLCAiU1FMSVRFX0RST1BfVklFVyIpOwor
CisgICAgLy8gU1FMSVRFX0RST1BfVlRBQkxFOiBhbGxvd2VkIGluIHdyaXRlIG1vZGUKKyAgICAv
LyBOb3Qgc3VyZSBob3cgdG8gdGVzdCB0aGlzOiB3ZSBjYW5ub3QgY3JlYXRlIGEgdmlydHVhbCB0
YWJsZSBiZWNhdXNlIHdlIGRvIG5vdAorICAgIC8vIGhhdmUgU1FML0phdmFzY3JpcHQgQVBJcyB0
byByZWdpc3RlciBhIG1vZHVsZSB0aGF0IGltcGxlbWVudHMgYSB2aXJ0dWFsIHRhYmxlLgorICAg
IC8vIFRoZXJlZm9yZSwgdHJ5aW5nIHRvIGRyb3AgYSB2aXJ0dWFsIHRhYmxlIHdpbGwgYWx3YXlz
IGZhaWwgKG5vIHN1Y2ggdGFibGUpCisgICAgLy8gYmVmb3JlIGV2ZW4gZ2V0dGluZyB0byB0aGUg
YXV0aG9yaXplci4KKworICAgIGV4ZWN1dGVTdGF0ZW1lbnQodHgsICJEUk9QIFRBQkxFIFRlc3Q7
IiwgIlNRTElURV9EUk9QX1RBQkxFIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZWFkV3JpdGVNb2Rl
KGRiKQoreworICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7CisgICAgICAgICAgICBj
cmVhdGVUYWJsZUNhbGxiYWNrKHR4KTsKKyAgICAgICAgICAgIGNyZWF0ZVN0YXRlbWVudHNDYWxs
YmFjayh0eCk7CisgICAgICAgICAgICBvdGhlclN0YXRlbWVudHNDYWxsYmFjayh0eCk7CisgICAg
ICAgICAgICBkcm9wU3RhdGVtZW50c0NhbGxiYWNrKHR4KTsKKyAgICAgICAgfSwKKyAgICAgICAg
ZnVuY3Rpb24oZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgiV3JpdGUgdHJhbnNhY3Rpb24g
ZmFpbGVkIiwgZXJyb3IpOyB9LAorICAgICAgICBmdW5jdGlvbigpIHsgbG9nKCJXcml0ZSB0cmFu
c2FjdGlvbiBzdWNjZWVkZWQuIik7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0UmVhZE9ubHlNb2Rl
KGRiKQoreworICAgIC8vIFRlc3QgdGhlICdDUkVBVEUgVEFCTEUnIG9wZXJhdGlvbjsgaXQgc2hv
dWxkIGJlIGRpc2FsbG93ZWQKKyAgICBkYi5yZWFkVHJhbnNhY3Rpb24oY3JlYXRlVGFibGVDYWxs
YmFjaywKKyAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgiUmVh
ZCAnQ1JFQVRFIFRBQkxFJyB0cmFuc2FjdGlvbiBmYWlsZWQiLCBlcnJvcik7IH0pOworCisgICAg
Ly8gSW4gb3JkZXIgdG8gdGVzdCBhbGwgb3RoZXIgJ0NSRUFURScgb3BlcmF0aW9ucywgd2UgbXVz
dCBjcmVhdGUgdGhlIHRhYmxlIGZpcnN0CisgICAgZGIudHJhbnNhY3Rpb24oY3JlYXRlVGFibGVD
YWxsYmFjaywKKyAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgbG9nQW5kVGVybWluYXRlVGVzdCgi
V3JpdGUgJ0NSRUFURSBUQUJMRScgdHJhbnNhY3Rpb24gZmFpbGVkIiwgZXJyb3IpOyB9KTsKKyAg
ICBkYi5yZWFkVHJhbnNhY3Rpb24oY3JlYXRlU3RhdGVtZW50c0NhbGxiYWNrLAorICAgICAgICBm
dW5jdGlvbihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJSZWFkICdDUkVBVEUnIHRyYW5z
YWN0aW9uIGZhaWxlZCIsIGVycm9yKTsgfSk7CisKKyAgICAvLyBJbiBvcmRlciB0byB0ZXN0IHRo
ZSAnRFJPUCcgYW5kICdvdGhlcicgb3BlcmF0aW9ucywgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUg
dGhlIHJlc3BlY3RpdmUgZW50aXRpZXMKKyAgICBkYi50cmFuc2FjdGlvbihjcmVhdGVTdGF0ZW1l
bnRzQ2FsbGJhY2ssCisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRl
c3QoIldyaXRlICdDUkVBVEUnIHRyYW5zYWN0aW9uIGZhaWxlZCIsIGVycm9yKTsgfSk7CisgICAg
ZGIucmVhZFRyYW5zYWN0aW9uKG90aGVyU3RhdGVtZW50c0NhbGxiYWNrLAorICAgICAgICBmdW5j
dGlvbihlcnJvcikgeyBsb2dBbmRUZXJtaW5hdGVUZXN0KCJSZWFkICdvdGhlcicgdHJhbnNhY3Rp
b24gZmFpbGVkIiwgZXJyb3IpOyB9KTsKKworICAgIC8vIEhhY2s6IGluc2VydCBhbiBlbXB0eSB3
cml0ZSB0cmFuc2FjdGlvbiB0byBndWFyYXRlZSB0aGF0IHRoZXNlIHRyYW5zYWN0aW9ucyBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5CisgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsg
fSk7CisgICAgZGIucmVhZFRyYW5zYWN0aW9uKGRyb3BTdGF0ZW1lbnRzQ2FsbGJhY2ssCisgICAg
ICAgIGZ1bmN0aW9uKGVycm9yKSB7IGxvZ0FuZFRlcm1pbmF0ZVRlc3QoIlJlYWQgJ0RST1AnIHRy
YW5zYWN0aW9uIGZhaWxlZCIsIGVycm9yKTsgfSwKKyAgICAgICAgZnVuY3Rpb24oKSB7IGxvZygi
UmVhZCB0cmFuc2FjdGlvbnMgc3VjY2VlZGVkLiIpOyB0ZXJtaW5hdGVUZXN0KCk7IH0pOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgZGIgPSBvcGVuRGF0YWJhc2VXaXRoU3Vm
Zml4KCJBdXRob3JpemVyVGVzdCIsICIxLjAiLCAiVGVzdHMgdGhlIGRhdGFiYXNlIGF1dGhvcml6
ZXIuIiwgMzI3NjgpOworICAgIGNsZWFudXAoZGIpOworICAgIHRlc3RSZWFkV3JpdGVNb2RlKGRi
KTsKKyAgICB0ZXN0UmVhZE9ubHlNb2RlKGRiKTsKK30KSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2UvcmVzb3VyY2VzL2RhdGFiYXNlLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdG9yYWdlL3Jlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9kYXRhYmFzZS1jb21tb24uanMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciBEQl9URVNUX1NVRkZJWCA9ICJfZG9tIjsKKworZnVu
Y3Rpb24gb3BlbkRhdGFiYXNlV2l0aFN1ZmZpeChuYW1lLCB2ZXJzaW9uLCBkZXNjcmlwdGlvbiwg
c2l6ZSwgY2FsbGJhY2spCit7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiA0KSB7CisgICAg
ICAgIHJldHVybiBvcGVuRGF0YWJhc2UobmFtZSArIERCX1RFU1RfU1VGRklYLCB2ZXJzaW9uLCBk
ZXNjcmlwdGlvbiwgc2l6ZSwgY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVy
biBvcGVuRGF0YWJhc2UobmFtZSArIERCX1RFU1RfU1VGRklYLCB2ZXJzaW9uLCBkZXNjcmlwdGlv
biwgc2l6ZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCArPSBtZXNzYWdlICsgIlxu
IjsKK30KKworZnVuY3Rpb24gc2V0TG9jYXRpb25IYXNoKGhhc2gpIHsKKyAgICBsb2NhdGlvbi5o
YXNoID0gaGFzaDsKK30KKworZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0KCkKK3sKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlu
bmVyVGV4dCA9ICIiOworICAgIHJ1blRlc3QoKTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>