<?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>203905</bug_id>
          
          <creation_ts>2019-11-06 10:11:23 -0800</creation_ts>
          <short_desc>results.webkit.org: List failing tests for criteria</short_desc>
          <delta_ts>2019-11-08 17:17:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jlewis3</cc>
    
    <cc>kocsen_chung</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587827</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-06 10:11:23 -0800</bug_when>
    <thetext>We should be able to list tests which are failing given a revision, or revision range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587859</commentid>
    <comment_count>1</comment_count>
      <attachid>382945</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-06 12:03:20 -0800</bug_when>
    <thetext>Created attachment 382945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587860</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-06 12:04:03 -0800</bug_when>
    <thetext>Before I actually deploy this to a staging instance, is this the sort of thing we&apos;re looking for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587952</commentid>
    <comment_count>3</comment_count>
      <attachid>382945</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-11-06 15:44:01 -0800</bug_when>
    <thetext>Comment on attachment 382945
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=382945&amp;action=review

&gt; Tools/resultsdbpy/resultsdbpy/view/templates/documentation.html:368
&gt; +                    &apos;            &quot;suite.sub-2.test-1&quot;: &quot;PASS&quot;,\n&apos; +

Discussed with Jonathan personally, we should not provide unexpected pass results here, this make this API confused. And in the collapsed list, user cannot tell which one is a new pass and which one is the real failure, therefore, we should get rid of new pass results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587989</commentid>
    <comment_count>4</comment_count>
      <attachid>382981</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-06 16:38:22 -0800</bug_when>
    <thetext>Created attachment 382981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588104</commentid>
    <comment_count>5</comment_count>
      <attachid>383020</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-06 20:58:46 -0800</bug_when>
    <thetext>Created attachment 383020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588789</commentid>
    <comment_count>6</comment_count>
      <attachid>383020</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-08 13:13:00 -0800</bug_when>
    <thetext>Comment on attachment 383020
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=383020&amp;action=review

&gt; Tools/ChangeLog:49
&gt; +        For the /failure endpoint.

Nit &apos;For&apos; =&gt; &apos;for&apos;

&gt; Tools/resultsdbpy/resultsdbpy/view/templates/documentation.html:351
&gt; +                [&apos;Aggregation&apos;, &apos;Branch&apos;, &apos;Branch&apos;, &apos;Configuration&apos;, &apos;Limit&apos;, &apos;Repository&apos;, &apos;Time&apos;, &apos;UUID&apos;],

Is the &apos;Branch&apos; duplication intentional?

&gt; Tools/resultsdbpy/resultsdbpy/view/templates/documentation.html:353
&gt; +                    `Returns a list of tests which failed during test runs matching the specified criteria. When collapsed, these listed will be a sorted list looking like this:`,

Nit: &apos;these listed&apos; =&gt; &apos;these results&apos;

&gt; Tools/resultsdbpy/resultsdbpy/view/templates/documentation.html:379
&gt; +                    `where &amp;ltconfiguration-object-a&amp;gt and &amp;ltconfiguration-object-b&amp;gt are both ${localLink([&apos;Query Parameters&apos;, &apos;Configuration&apos;], &apos;configuration objects&apos;)}&apos;.`,

extra &apos; here after configuration objects.

&gt; Tools/resultsdbpy/resultsdbpy/view/templates/documentation.html:461
&gt; +            `Because the results database distinguishes between expected and unexpected failures, endpoints preforming aggregation will often filter out expected failures, and flag unexpected passes. To modify the behavior of these algorithms, these endpoints will support the unexpected flag:`,

typo: preforming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588820</commentid>
    <comment_count>7</comment_count>
      <attachid>383020</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-08 13:53:22 -0800</bug_when>
    <thetext>Comment on attachment 383020
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=383020&amp;action=review

&gt; Tools/resultsdbpy/resultsdbpy/controller/failure_controller.py:69
&gt; +            specified_commits = sum([1 if element else 0 for element in [begin, end]])

num_specified_commits or specified_commits_counts might be more descriptive name.

&gt; Tools/resultsdbpy/resultsdbpy/controller/failure_controller.py:70
&gt; +            specified_timestamps = sum([1 if element else 0 for element in [begin_query_time, end_query_time]])

Ditto. num_specified_timestamps or specified_timestamps_counts might be more descriptive name.

&gt; Tools/resultsdbpy/resultsdbpy/controller/failure_controller.py:77
&gt; +

Nit: is this newline required?

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:54
&gt; +    class TestFailuresByCommit(TestFailuresBase):

aren&apos;t we storing the revision id in these tables?

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:70
&gt; +        start_time = columns.DateTime(primary_key=True, required=True)

Nit: please maintain same order of variable declaration in all these 4 classes.

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:84
&gt; +            self.cassandra.create_table(self.UnexpectedTestFailuresByCommit)

What&apos;s the benefit of adding two additional tables for unexpectedTestFailures? Can&apos;t we store this information in TestFailuresByCommit, TestFailuresByStartTime.

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:88
&gt; +        timestamp = timestamp or time.time()

time.time() is not an instance of datetime (which is being verified in next line), why not just initialize with correct value.

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:97
&gt; +                timestamp = calendar.timegm(timestamp.timetuple())

why converting twice? why not just convert it above (in line 90) to required type?

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:160
&gt; +            raise TypeError(f&apos;Expected type {str}, got {type(suite)}&apos;)

This error message should specify which variable has incorrect type.

&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:162
&gt; +        def get_time(time):

This method should be in some common class (like Util), as it&apos;s used in multiple classes. But that can be done in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588841</commentid>
    <comment_count>8</comment_count>
      <attachid>383020</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-08 14:32:53 -0800</bug_when>
    <thetext>Comment on attachment 383020
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=383020&amp;action=review

&gt;&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:54
&gt;&gt; +    class TestFailuresByCommit(TestFailuresBase):
&gt; 
&gt; aren&apos;t we storing the revision id in these tables?

We are, but order maters here. It changes the way we search. See bellow comment about why we don&apos;t maintain the same order.

&gt;&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:70
&gt;&gt; +        start_time = columns.DateTime(primary_key=True, required=True)
&gt; 
&gt; Nit: please maintain same order of variable declaration in all these 4 classes.

The fact that the order is different is exactly why we have two tables.

The first table is defined UUID then time, the second by time then UUID. This allows us to support both queries like &apos;find me all tests which ran on commits from yesterday&apos; and &apos;find me all tests which ran yesterday&apos;

&gt;&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:84
&gt;&gt; +            self.cassandra.create_table(self.UnexpectedTestFailuresByCommit)
&gt; 
&gt; What&apos;s the benefit of adding two additional tables for unexpectedTestFailures? Can&apos;t we store this information in TestFailuresByCommit, TestFailuresByStartTime.

See above comment about why order is different.

&gt;&gt; Tools/resultsdbpy/resultsdbpy/model/failure_context.py:97
&gt;&gt; +                timestamp = calendar.timegm(timestamp.timetuple())
&gt; 
&gt; why converting twice? why not just convert it above (in line 90) to required type?

Because I wasn&apos;t paying attention. It&apos;s this line that&apos;s correct, the previous one is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588847</commentid>
    <comment_count>9</comment_count>
      <attachid>383020</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-08 14:40:04 -0800</bug_when>
    <thetext>Comment on attachment 383020
Patch

rs=me, with the fixes for the minor issues mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588850</commentid>
    <comment_count>10</comment_count>
      <attachid>383168</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-08 14:59:01 -0800</bug_when>
    <thetext>Created attachment 383168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588872</commentid>
    <comment_count>11</comment_count>
      <attachid>383168</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 16:04:03 -0800</bug_when>
    <thetext>Comment on attachment 383168
Patch

Clearing flags on attachment: 383168

Committed r252272: &lt;https://trac.webkit.org/changeset/252272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588873</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 16:04:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588910</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-08 17:17:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/57040603&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382945</attachid>
            <date>2019-11-06 12:03:20 -0800</date>
            <delta_ts>2019-11-06 16:38:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203905-20191106120319.patch</filename>
            <type>text/plain</type>
            <size>40874</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjE0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUzIEBACisyMDE5LTExLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IExpc3QgZmFpbGluZyB0ZXN0cyBmb3Ig
Y3JpdGVyaWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAg
ICAgICAoQVBJUm91dGVzLl9faW5pdF9fKTogQWRkIEZhaWx1cmVDb250cm9sbGVyIGFuZCAvZmFp
bHVyZXMgZW5kcG9pbnQuCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHk6IEFkZGVkLgorICAgICAgICAoRmFpbHVyZUNvbnRy
b2xsZXIpOiBBZGRlZCBGYWlsdXJlQ29udHJvbGxlciBvYmplY3QgdG8gZHJpdmUgL2ZhaWx1cmUg
ZW5kcG9pbnQuCisgICAgICAgIChGYWlsdXJlQ29udHJvbGxlci5fX2luaXRfXyk6CisgICAgICAg
IChGYWlsdXJlQ29udHJvbGxlci5mYWlsdXJlcyk6IFJldHVybiBhIGpzb24gbGlzdCBvZiBmYWls
dXJlcyBmb3IgYSByYW5nZS4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3QpOiBUZXN0IHRoZSAvZmFpbHVyZSBBUEkuCisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3Quc2V0dXBfd2Vic2VydmVyKToKKyAgICAgICAgKEZhaWx1cmVD
b250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAgICAgIChGYWlsdXJl
Q29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAg
ICAgIChGYWlsdXJlQ29udHJvbGxlclRlc3QudGVzdF9mYWlsdXJlcyk6CisgICAgICAgIChGYWls
dXJlQ29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKToKKyAgICAgICAgKEZh
aWx1cmVDb250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVfYnlfdGltZSk6CisgICAgICAgICogcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKEZhaWx1cmVDb250ZXh0KTogRGF0YWJhc2UgYWNjZXNzIHRvIHRhYmxlcyByZWNvcmRp
bmcgdGVzdCBmYWlsdXJlcy4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RGYWlsdXJlc0Jh
c2UpOgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQmFzZS51bnBhY2spOgor
ICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQnlDb21taXQpOiBTYXZlIHRlc3Qg
ZmFpbHVyZXMgc29ydGVkIGJ5IGNvbW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RG
YWlsdXJlc0J5U3RhcnRUaW1lKTogU2F2ZSB0ZXN0IGZhaWx1cmVzIHNvcnRlZCBieSBzdGFydCB0
aW1lLgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29t
bWl0KTogU2F2ZSB1bmV4cGVjdGVkIHRlc3QgZmFpbHVyZXMKKyAgICAgICAgc29ydGVkIGJ5IGNv
bW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0
YXJ0VGltZSk6IFNhdmUgdW5leHBlY3RlZCB0ZXN0IGZhaWx1cmVzCisgICAgICAgIHNvcnRlZCBi
eSBjb21taXQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dC5fX2luaXRfXyk6CisgICAgICAgIChG
YWlsdXJlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVyIHRlc3QgZmFpbHVyZXMgdG8gZWFjaCBv
ZiB0aGUgNCB0YWJsZXMgZm9yIGFuIHVwbG9hZC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0Ll9m
YWlsdXJlcyk6IFJldHVybiBhIGxpc3Qgb2YgdGVzdCBmYWlsdXJlcyBmcm9tIGEgdGFibGUuCisg
ICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9jb21taXQpOiBSZXR1cm4gYSBsaXN0
IG9mIHRlc3QgZmFpbHVyZXMgZnJvbSBhIHRhYmxlIHNvcnRlZAorICAgICAgICBieSBjb21taXQu
CisgICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9zdGFydF90aW1lKTogUmV0dXJu
IGEgbGlzdCBvZiB0ZXN0IGZhaWx1cmVzIGZyb20gYSB0YWJsZQorICAgICAgICBzb3J0ZWQgYnkg
Y29tbWl0LgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVf
Y29udGV4dF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dFRlc3Qp
OgorICAgICAgICAoRmFpbHVyZUNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOgorICAgICAgICAo
RmFpbHVyZUNvbnRleHRUZXN0LnRlc3RfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAgICAgICAgKEZh
aWx1cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAg
ICAgICAgKEZhaWx1cmVDb250ZXh0VGVzdC50ZXN0X2ZhaWx1cmVzKToKKyAgICAgICAgKEZhaWx1
cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMpOgorICAgICAgICAqIHJlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5OgorICAgICAgICAoTW9kZWwuX19pbml0
X18pOgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2Rv
Y3VtZW50YXRpb24uaHRtbDogQWRkIGRvY3VtZW50YXRpb24KKyAgICAgICAgRm9yIHRoZSAvZmFp
bHVyZSBlbmRwb2ludC4KKwogMjAxOS0xMS0wNiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHdhdGNobGlzdCBjYXRlZ29yeSBmb3IgQnVpbGRTbGF2
ZVN1cHBvcnQKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
YXBpX3JvdXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI1MTk5MykKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQCBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQog
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFyY2hpdmVfY29udHJvbGxlciBpbXBvcnQgQXJj
aGl2ZUNvbnRyb2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJv
bGxlciBpbXBvcnQgQ29tbWl0Q29udHJvbGxlcgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmNpX2NvbnRyb2xsZXIgaW1wb3J0IENJQ29udHJvbGxlcgorZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmZhaWx1cmVfY29udHJvbGxlciBpbXBvcnQgRmFpbHVyZUNvbnRyb2xsZXIKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCBTdWl0ZUNvbnRy
b2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci50ZXN0X2NvbnRyb2xsZXIgaW1wb3J0
IFRlc3RDb250cm9sbGVyCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIudXBsb2FkX2NvbnRy
b2xsZXIgaW1wb3J0IFVwbG9hZENvbnRyb2xsZXIKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgQVBJ
Um91dGVzKEF1dGhlZEJsdWVwcmludCk6CiAKICAgICAgICAgc2VsZi5zdWl0ZV9jb250cm9sbGVy
ID0gU3VpdGVDb250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9kZWwuc3VpdGVfY29udGV4dCkKICAg
ICAgICAgc2VsZi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9
bW9kZWwudGVzdF9jb250ZXh0KQorICAgICAgICBzZWxmLmZhaWx1cmVfY29udHJvbGxlciA9IEZh
aWx1cmVDb250cm9sbGVyKGZhaWx1cmVfY29udGV4dD1tb2RlbC5mYWlsdXJlX2NvbnRleHQpCiAK
ICAgICAgICAgc2VsZi5jaV9jb250cm9sbGVyID0gQ0lDb250cm9sbGVyKGNpX2NvbnRleHQ9bW9k
ZWwuY2lfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCiAgICAg
ICAgIHNlbGYuYXJjaGl2ZV9jb250cm9sbGVyID0gQXJjaGl2ZUNvbnRyb2xsZXIoY29tbWl0X2Nv
bnRyb2xsZXI9c2VsZi5jb21taXRfY29udHJvbGxlciwgYXJjaGl2ZV9jb250ZXh0PW1vZGVsLmFy
Y2hpdmVfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCkBAIC02
OCw2ICs3MCw4IEBAIGNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQpOgogICAgICAgICBz
ZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMn
LCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcs
KSkKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0
aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3Rf
cmVzdWx0LCBtZXRob2RzPSgnR0VUJywpKQogCisgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcv
ZmFpbHVyZXMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLWZhaWx1cmVzJywgc2VsZi5mYWlsdXJlX2Nv
bnRyb2xsZXIuZmFpbHVyZXMsIG1ldGhvZHM9KCdHRVQnLCkpCisKICAgICAgICAgc2VsZi5hZGRf
dXJsX3J1bGUoJy91cmxzL3F1ZXVlJywgJ3F1ZXVlLXVybHMnLCBzZWxmLmNpX2NvbnRyb2xsZXIu
dXJsc19mb3JfcXVldWVfZW5kcG9pbnQsIG1ldGhvZHM9KCdHRVQnLCkpCiAgICAgICAgIHNlbGYu
YWRkX3VybF9ydWxlKCcvdXJscycsICdidWlsZC11cmxzJywgc2VsZi5jaV9jb250cm9sbGVyLnVy
bHNfZm9yX2J1aWxkc19lbmRwb2ludCwgbWV0aG9kcz0oJ0dFVCcsKSkKIApJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9m
YWlsdXJlX2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnkKK2Zyb20gcmVzdWx0c2RicHkuY29u
dHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhh
c0NvbW1pdENvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9u
IGltcG9ydCBDb25maWd1cmF0aW9uCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmln
dXJhdGlvbl9jb250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQorZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2Vf
Zm9yX3F1ZXJ5Citmcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNz
ZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVl
cnkKKworCitjbGFzcyBGYWlsdXJlQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKKyAgICBE
RUZBVUxUX0xJTUlUID0gNTAwMAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVfY29u
dGV4dCk6CisgICAgICAgIHN1cGVyKEZhaWx1cmVDb250cm9sbGVyLCBzZWxmKS5fX2luaXRfXyhm
YWlsdXJlX2NvbnRleHQuY29tbWl0X2NvbnRleHQpCisgICAgICAgIHNlbGYuZmFpbHVyZV9jb250
ZXh0ID0gZmFpbHVyZV9jb250ZXh0CisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkKKyAgICBAdXVp
ZF9yYW5nZV9mb3JfcXVlcnkoKQorICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkK
KyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVy
eSgpCisgICAgZGVmIGZhaWx1cmVzKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLAorICAgICAg
ICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKKyAgICAgICAgYnJhbmNoPU5vbmUs
IGJlZ2luPU5vbmUsIGVuZD1Ob25lLAorICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVu
ZF9xdWVyeV90aW1lPU5vbmUsCisgICAgICAgIHVuZXhwZWN0ZWQ9Tm9uZSwgY29sbGFwc2VkPU5v
bmUsCisgICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0
UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dh
cmdzX2VtcHR5KCoqa3dhcmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJl
Y2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQorICAgICAgICB1bmV4cGVjdGVkID0gYm9vbGVh
bl9xdWVyeSgqdW5leHBlY3RlZClbMF0gaWYgdW5leHBlY3RlZCBlbHNlIFRydWUKKyAgICAgICAg
Y29sbGFwc2VkID0gYm9vbGVhbl9xdWVyeSgqY29sbGFwc2VkKVswXSBpZiBjb2xsYXBzZWQgZWxz
ZSBUcnVlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBk
ZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKworICAgICAgICB3aXRoIHNlbGYuZmFp
bHVyZV9jb250ZXh0OgorICAgICAgICAgICAgcXVlcnlfZGljdCA9IGRpY3QoCisgICAgICAgICAg
ICAgICAgc3VpdGU9c3VpdGUsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmln
dXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFsw
XSwgYmVnaW49YmVnaW4sIGVuZD1lbmQsCisgICAgICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGlt
ZT1iZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZT1lbmRfcXVlcnlfdGltZSwKKyAgICAg
ICAgICAgICAgICBsaW1pdD1saW1pdCwgdW5leHBlY3RlZD11bmV4cGVjdGVkLCBjb2xsYXBzZWQ9
Y29sbGFwc2VkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3BlY2lmaWVkX2NvbW1pdHMg
PSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkK
KyAgICAgICAgICAgIHNwZWNpZmllZF90aW1lc3RhbXBzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxz
ZSAwIGZvciBlbGVtZW50IGluIFtiZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZV1dKQor
CisgICAgICAgICAgICBpZiBzcGVjaWZpZWRfY29tbWl0cyA+PSBzcGVjaWZpZWRfdGltZXN0YW1w
czoKKyAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWlsdXJlX2NvbnRleHQu
ZmFpbHVyZXNfYnlfY29tbWl0CisKKyAgICAgICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihy
ZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KKworICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWls
dXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfc3RhcnRfdGltZQorCisgICAgICAgICAgICAgICAgZGVm
IHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dFsnc3RhcnRfdGltZSddCisKKyAgICAgICAgICAgIGlmIGNvbGxhcHNlZDoKKyAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IHNldCgpCisgICAgICAgICAgICAgICAgcmVzcG9uc2UudXBkYXRlKGZp
bmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4ganNvbmlm
eShzb3J0ZWQocmVzcG9uc2UpKQorCisgICAgICAgICAgICByZXNwb25zZSA9IFtdCisgICAgICAg
ICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIGZpbmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0KS5p
dGVtcygpOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChkaWN0KAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQo
Y29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5
PXNvcnRfZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICByZXR1cm4g
anNvbmlmeShyZXNwb25zZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2Nv
bnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVy
X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA5IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgdGltZQorCitmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlz
Citmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcworZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcworZnJvbSByZXN1bHRzZGJweS5mbGFza19z
dXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCitmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Citmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNz
YW5kcmFDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBp
bXBvcnQgTW9ja01vZGVsRmFjdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRl
eHQgaW1wb3J0IEV4cGVjdGF0aW9ucworZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9k
b2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKKworCitjbGFzcyBG
YWlsdXJlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNl
KToKKyAgICBLRVlTUEFDRSA9ICdmYWlsdXJlX2NvbnRyb2xsZXJfdGVzdF9rZXlzcGFjZScKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIGNhc3Nh
bmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgbW9kZWwg
PSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQorICAgICAg
ICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisKKyAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgK
KyAgICAgICAgICAgIGRldGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAg
ICBydW5fc3RhdHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgcmVzdWx0cz17
CisgICAgICAgICAgICAgICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAgICdlbmNvZGlu
Zyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGlj
dChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0n
RkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdjc3MtY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycs
IHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0
bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdQQVMnLCB0aW1lPTEuMiksCisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAg
ICAgICApKQorICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhtb2RlbCkK
KworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQor
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfZmFp
bHVyZXNfY29sbGFwc2VkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9mYWlsdXJlcy9sYXlvdXQtdGVzdHM/cGxh
dGZvcm09aU9TJnN0eWxlPURlYnVnJnVuZXhwZWN0ZWQ9RmFsc2UnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpLCBbJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsICdm
YXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnXSkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJl
c19jb2xsYXBzZWQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9y
bT1pT1Mmc3R5bGU9RGVidWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpz
b24oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpLCBbJ2Zh
c3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsICdmYXN0L2VuY29kaW5nL2Nzcy1jaGFy
c2V0Lmh0bWwnXSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAg
ZGVmIHRlc3RfZmFpbHVyZXMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3Bv
bnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9w
bGF0Zm9ybT1NYWMmc3R5bGU9RGVidWcmdW5leHBlY3RlZD1GYWxzZSZjb2xsYXBzZWQ9RmFsc2Un
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKVswXVsncmVzdWx0cyddKSwgNSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXVsw
XVsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ10sICdGQUlMJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXVswXVsnZmFzdC9l
bmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJ10sICdGQUlMJykKKworICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rl
c3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWls
dXJlcyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPU1hYyZz
dHlsZT1EZWJ1ZyZjb2xsYXBzZWQ9RmFsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJl
c3BvbnNlLmpzb24oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNl
Lmpzb24oKVswXVsncmVzdWx0cyddKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXVswXVsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJv
bS5odG1sJ10sICdGQUlMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29u
KClbMF1bJ3Jlc3VsdHMnXVswXVsnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sJ10sICdQ
QVNTJykKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRl
c3RfZmFpbHVyZV9ieV90aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoZid7c2VsZi5VUkx9L2FwaS9mYWlsdXJlcy9sYXlvdXQtdGVzdHM/
cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJnJlY2VudD1GYWxzZSZhZnRlcl90aW1lPXt0aW1lLnRp
bWUoKSAtIDYwICogNjB9JmNvbGxhcHNlZD1GYWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4ocmVzcG9uc2UuanNvbigpKSwgMikKKyAgICAgICAgcHJpbnQocmVzcG9uc2UuanNvbigpKQor
ICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHJlc3BvbnNlLmpzb24oKVtpXVsncmVzdWx0cyddKSwgNSkKKyAgICAgICAgICAgIGxhc3Rf
c3RhcnRfdGltZSA9IDAKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigp
W2ldWydyZXN1bHRzJ106CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwo
cmVzdWx0WydzdGFydF90aW1lJ10sIGxhc3Rfc3RhcnRfdGltZSkKKyAgICAgICAgICAgICAgICBs
YXN0X3N0YXJ0X3RpbWUgPSByZXN1bHRbJ3N0YXJ0X3RpbWUnXQpJbmRleDogVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dC5weQko
bm9uZXhpc3RlbnQpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9mYWls
dXJlX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTEgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGNv
bGxlY3Rpb25zCitpbXBvcnQganNvbgoraW1wb3J0IHRpbWUKKworZnJvbSBjYXNzYW5kcmEuY3Fs
ZW5naW5lIGltcG9ydCBjb2x1bW5zCitmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGlt
cG9ydCBNb2RlbAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAorZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlv
bgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC51cGxvYWRfY29udGV4dCBpbXBvcnQgVXBsb2FkQ2Fs
bGJhY2tDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQg
RXhwZWN0YXRpb25zCisKKworY2xhc3MgRmFpbHVyZUNvbnRleHQoVXBsb2FkQ2FsbGJhY2tDb250
ZXh0KToKKyAgICBERUZBVUxUX0xJTUlUID0gMTAwCisKKyAgICBjbGFzcyBUZXN0RmFpbHVyZXNC
YXNlKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIHN1aXRlID0gY29sdW1ucy5U
ZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgYnJhbmNoID0g
Y29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAg
dGVzdHMgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKKworICAgICAgICBkZWYgdW5wYWNr
KHNlbGYpOgorICAgICAgICAgICAgcmVzdWx0cyA9IGpzb24ubG9hZHMoc2VsZi50ZXN0cykgaWYg
c2VsZi50ZXN0cyBlbHNlIHt9CisgICAgICAgICAgICBmb3IgdGVzdCBpbiByZXN1bHRzLmtleXMo
KToKKyAgICAgICAgICAgICAgICByZXN1bHRzW3Rlc3RdID0gRXhwZWN0YXRpb25zLnN0YXRlX2lk
c190b19zdHJpbmcoW3Jlc3VsdHNbdGVzdF1dKQorICAgICAgICAgICAgcmVzdWx0c1sndXVpZCdd
ID0gc2VsZi51dWlkCisgICAgICAgICAgICByZXN1bHRzWydzdGFydF90aW1lJ10gPSBjYWxlbmRh
ci50aW1lZ20oc2VsZi5zdGFydF90aW1lLnRpbWV0dXBsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdHMKKworICAgIGNsYXNzIFRlc3RGYWlsdXJlc0J5Q29tbWl0KFRlc3RGYWlsdXJlc0Jh
c2UpOgorICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X2NvbW1pdCcK
KyAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1bW5zLlRl
eHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgc3RhcnRfdGltZSA9
IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKworICAg
IGNsYXNzIFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKFRlc3RGYWlsdXJlc0Jhc2UpOgorICAgICAg
ICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X3N0YXJ0X3RpbWUnCisgICAgICAg
IHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1bW5zLlRl
eHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVt
bnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisKKyAgICBjbGFzcyBV
bmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21taXQoVGVzdEZhaWx1cmVzQmFzZSk6CisgICAgICAg
IF9fdGFibGVfbmFtZV9fID0gJ3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJlc19ieV9jb21taXQnCisg
ICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKKyAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHN0YXJ0X3RpbWUgPSBj
b2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisKKyAgICBj
bGFzcyBVbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUoVGVzdEZhaWx1cmVzQmFzZSk6
CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJlc19ieV9z
dGFydF90aW1lJworICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmltYXJ5
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKKyAgICAg
ICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisg
ICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAg
IHN1cGVyKEZhaWx1cmVDb250ZXh0LCBzZWxmKS5fX2luaXRfXygndGVzdC1mYWlsdXJlcycsICph
cmdzLCAqKmt3YXJncykKKworICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5UZXN0RmFpbHVyZXNCeUNvbW1pdCkKKyAgICAgICAg
ICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlRlc3RGYWlsdXJlc0J5U3RhcnRU
aW1lKQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuVW5leHBl
Y3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0KQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3Jl
YXRlX3RhYmxlKHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKQorCisgICAg
ZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jl
c3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKKyAgICAgICAgdGltZXN0YW1wID0gdGltZXN0YW1wIG9y
IHRpbWUudGltZSgpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWVzdGFtcCwgZGF0ZXRp
bWUpOgorICAgICAgICAgICAgdGltZXN0YW1wID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChp
bnQodGltZXN0YW1wKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShzdWl0ZSwgc3RyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBl
Y3RlZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCisKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6CisgICAgICAgICAgICAgICAgdGltZXN0YW1w
ID0gY2FsZW5kYXIudGltZWdtKHRpbWVzdGFtcC50aW1ldHVwbGUoKSkKKworICAgICAgICAgICAg
d2l0aCBzZWxmOgorICAgICAgICAgICAgICAgIHV1aWQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnV1
aWRfZm9yX2NvbW1pdHMoY29tbWl0cykKKyAgICAgICAgICAgICAgICB0dGwgPSBpbnQoKHV1aWQg
Ly8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25k
cyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9uZQorCisgICAgICAg
ICAgICAgICAgZGVmIGNhbGxiYWNrKHRlc3QsIHJlc3VsdCwgZmFpbHVyZXMsIHVuZXhwZWN0ZWQp
OgorICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcmVzdWx0ID0gRXhwZWN0YXRpb25zLnN0cmlu
Z190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnYWN0dWFsJywgJycpKQorICAgICAgICAgICAgICAg
ICAgICB1bmV4cGVjdGVkX3Jlc3VsdCA9IHNldChmYWlsZWRfcmVzdWx0KSAtIHNldChFeHBlY3Rh
dGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQuZ2V0KCdleHBlY3RlZCcsICcnKSkpCisg
ICAgICAgICAgICAgICAgICAgIGlmIGZhaWxlZF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3b3JzdCA9IG1pbihmYWlsZWRfcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgd29yc3QgPCBFeHBlY3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5X
QVJOSU5HXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlc1t0ZXN0XSA9IG1p
bih3b3JzdCwgZmFpbHVyZXMuZ2V0KHRlc3QsIEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVf
SURbRXhwZWN0YXRpb25zLlBBU1NdKSkKKworICAgICAgICAgICAgICAgICAgICBpZiB1bmV4cGVj
dGVkX3Jlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcnN0ID0gbWluKHVuZXhwZWN0
ZWRfcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZFt0ZXN0XSA9IG1p
bih3b3JzdCwgdW5leHBlY3RlZC5nZXQodGVzdCwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFU
RV9JRFtFeHBlY3RhdGlvbnMuUEFTU10pKQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmNh
c3NhbmRyYS5iYXRjaF9xdWVyeV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgICAgIGZvciBi
cmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21t
aXRzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzID0ge30KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSB7fQorCisgICAgICAgICAgICAgICAgICAgICAgICBF
eHBlY3RhdGlvbnMuaXRlcmF0ZV90aHJvdWdoX25lc3RlZF9yZXN1bHRzKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cy5nZXQoJ3Jlc3VsdHMnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYW1iZGEgdGVzdCwgcmVzdWx0OiBjYWxsYmFjayh0ZXN0LCByZXN1
bHQsIGZhaWx1cmVzPWZhaWx1cmVzLCB1bmV4cGVjdGVkPXVuZXhwZWN0ZWQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4g
W3NlbGYuVGVzdEZhaWx1cmVzQnlDb21taXQsIHNlbGYuVGVzdEZhaWx1cmVzQnlTdGFydFRpbWVd
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0
Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0YWJsZS5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9u
LCBzdWl0ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJy
YW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZGs9Y29uZmlndXJhdGlvbi5zZGsgb3IgJz8nLCBzdGFydF90aW1lPXRpbWVzdGFtcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM9anNvbi5kdW1wcyhmYWlsdXJlcyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgdGFibGUgaW4gW3NlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0LCBzZWxm
LlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0YXJ0VGltZV06CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZp
Z3VyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVf
bmFtZV9fLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoLCB1dWlkPXV1aWQsIHR0bD10
dGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNk
ayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0cz1qc29uLmR1bXBzKHVuZXhwZWN0ZWQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5wYXJ0aWFsX3N0YXR1cyhlKQorICAgICAgICByZXR1cm4gc2VsZi5wYXJ0
aWFsX3N0YXR1cygpCisKKyAgICBkZWYgX2ZhaWx1cmVzKAorICAgICAgICAgICAgc2VsZiwgYWxs
X3RhYmxlLCB1bmV4cGVjdGVkX3RhYmxlLCBjb25maWd1cmF0aW9ucywgc3VpdGUsIHJlY2VudD1U
cnVlLAorICAgICAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAorICAg
ICAgICAgICAgYmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAorICAg
ICAgICAgICAgdW5leHBlY3RlZD1UcnVlLCBjb2xsYXBzZWQ9VHJ1ZSwgbGltaXQ9REVGQVVMVF9M
SU1JVCwKKyAgICApOgorICAgICAgICB0YWJsZSA9IHVuZXhwZWN0ZWRfdGFibGUgaWYgdW5leHBl
Y3RlZCBlbHNlIGFsbF90YWJsZQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWl0ZSwgc3Ry
KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0sIGdv
dCB7dHlwZShzdWl0ZSl9JykKKworICAgICAgICBkZWYgZ2V0X3RpbWUodGltZSk6CisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHRpbWUsIGRhdGV0aW1lKToKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGltZQorICAgICAgICAgICAgZWxpZiB0aW1lOgorICAgICAgICAgICAgICAgIHJldHVybiBk
YXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lKSkKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisKKyAgICAgICAgd2l0aCBzZWxmOgorICAgICAgICAgICAgaWYgY29sbGFwc2VkOgorICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHNldCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHt9CisKKyAgICAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGluIGNv
bmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgICAgIGZvciBjb25maWcsIHZhbHVlcyBpbiBzZWxm
LmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRp
b25zKAorICAgICAgICAgICAgICAgICAgICB0YWJsZS5fX3RhYmxlX25hbWVfXywgY29uZmlndXJh
dGlvbnM9W2NvbmZpZ3VyYXRpb25dLCByZWNlbnQ9cmVjZW50LAorICAgICAgICAgICAgICAgICAg
ICBzdWl0ZT1zdWl0ZSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrLCBicmFuY2g9YnJhbmNoIG9yIHNl
bGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLAorICAgICAgICAgICAgICAgICAg
ICB1dWlkX19ndGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoYmVnaW4pLAorICAgICAg
ICAgICAgICAgICAgICB1dWlkX19sdGU9Q29tbWl0Q29udGV4dC5jb252ZXJ0X3RvX3V1aWQoZW5k
LCBDb21taXRDb250ZXh0LnRpbWVzdGFtcF90b191dWlkKCkpLAorICAgICAgICAgICAgICAgICAg
ICBzdGFydF90aW1lX19ndGU9Z2V0X3RpbWUoYmVnaW5fcXVlcnlfdGltZSksIHN0YXJ0X3RpbWVf
X2x0ZT1nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCisgICAgICAgICAgICAgICAgICAgIGxpbWl0
PWxpbWl0LAorICAgICAgICAgICAgICAgICkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAg
aWYgY29sbGFwc2VkOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVl
czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB2YWx1ZS51bnBhY2so
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCBub3QgaW4gWyd1dWlk
JywgJ3N0YXJ0X3RpbWUnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQodGVzdCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC51cGRhdGUoe2NvbmZpZzogW3ZhbHVlLnVucGFjaygpIGZvciB2YWx1
ZSBpbiB2YWx1ZXNdfSkKKworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGZh
aWx1cmVzX2J5X2NvbW1pdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4g
c2VsZi5fZmFpbHVyZXMoc2VsZi5UZXN0RmFpbHVyZXNCeUNvbW1pdCwgc2VsZi5VbmV4cGVjdGVk
VGVzdEZhaWx1cmVzQnlDb21taXQsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBmYWlsdXJl
c19ieV9zdGFydF90aW1lKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9mYWlsdXJlcyhzZWxmLlRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lLCBzZWxmLlVuZXhwZWN0
ZWRUZXN0RmFpbHVyZXNCeVN0YXJ0VGltZSwgKmFyZ3MsICoqa3dhcmdzKQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1
cmVfY29udGV4dF91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9mYWlsdXJlX2NvbnRleHRfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCB0aW1lCisKK2Zyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVk
aXMKK2Zyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgorZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAorZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2Fu
ZHJhQ29udGV4dAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1w
b3J0IE1vY2tNb2RlbEZhY3RvcnkKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0
b3J5IGltcG9ydCBNb2NrU1ZOUmVwb3NpdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0
X2NvbnRleHQgaW1wb3J0IEV4cGVjdGF0aW9ucworZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0
X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKKworCitj
bGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKKyAgICBLRVlT
UEFDRSA9ICdmYWlsdXJlX2NvbnRleHRfdGVzdF9rZXlzcGFjZScKKworICAgIGRlZiBpbml0X2Rh
dGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6CisgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BB
Q0UpCisgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1y
ZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0
ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1
bHRzKHNlbGYubW9kZWwsIHRlc3RfcmVzdWx0cz1kaWN0KAorICAgICAgICAgICAgZGV0YWlscz1k
aWN0KGxpbms9J2R1bW15LWxpbmsnKSwKKyAgICAgICAgICAgIHJ1bl9zdGF0cz1kaWN0KHRlc3Rz
X3NraXBwZWQ9MCksCisgICAgICAgICAgICByZXN1bHRzPXsKKyAgICAgICAgICAgICAgICAnZmFz
dCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ2VuY29kaW5nJzogeworICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0
dWFsPSdGQUlMJywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFy
c2V0LWRlZmF1bHQueGh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdGQUlMJywg
dGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0Lmh0bWwnOiBk
aWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ2Nzcy1saW5rLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BB
U1MnLCBhY3R1YWw9J1BBUycsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICkpCisgICAgICAgIE1vY2tN
b2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKHNlbGYubW9kZWwpCisKKyAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9mYWls
dXJlc19jb2xsYXBzZWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKKyAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5mYWlsdXJlX2Nv
bnRleHQuZmFpbHVyZXNfYnlfY29tbWl0KAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0Nv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEn
KV0sCisgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsIHVuZXhw
ZWN0ZWQ9RmFsc2UsCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihy
ZXN1bHRzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBzZXQoWydmYXN0
L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnLCAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNl
dC1kZWZhdWx0LnhodG1sJ10pKQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlc19jb2xs
YXBzZWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKKyAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQorICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRleHQuZmFp
bHVyZXNfYnlfY29tbWl0KAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCisgICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsCisgICAgICAgICkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXN1bHRzLCBzZXQoWydmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0
bWwnLCAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sJ10pKQorCisgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRlc3RfZmFp
bHVyZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKKyAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQorICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRleHQuZmFp
bHVyZXNfYnlfY29tbWl0KAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCisgICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsIGNvbGxhcHNlZD1GYWxz
ZSwgdW5leHBlY3RlZD1GYWxzZSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKHJlc3VsdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KHJl
c3VsdHMudmFsdWVzKCkpWzBdKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJl
c3VsdHMudmFsdWVzKCkpWzBdWzBdLCB7CisgICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3Mt
Y2FjaGVkLWJvbS5odG1sJzogJ0ZBSUwnLAorICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3Nz
LWNoYXJzZXQtZGVmYXVsdC54aHRtbCc6ICdGQUlMJywKKyAgICAgICAgICAgICdzdGFydF90aW1l
JzogbGlzdChyZXN1bHRzLnZhbHVlcygpKVswXVswXVsnc3RhcnRfdGltZSddLAorICAgICAgICAg
ICAgJ3V1aWQnOiAxNTM4MDI5NDc5MDAKKyAgICAgICAgfSkKKworICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3VuZXhwZWN0
ZWRfZmFpbHVyZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKKyAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKQorICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRl
eHQuZmFpbHVyZXNfYnlfY29tbWl0KAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZp
Z3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0s
CisgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PVRydWUsIGNvbGxhcHNl
ZD1GYWxzZQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0
cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QocmVzdWx0cy52YWx1ZXMo
KSlbMF0pLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmVzdWx0cy52YWx1ZXMo
KSlbMF1bMF0sIHsKKyAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0
bWwnOiAnRkFJTCcsCisgICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1s
JzogJ1BBU1MnLAorICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBsaXN0KHJlc3VsdHMudmFsdWVz
KCkpWzBdWzBdWydzdGFydF90aW1lJ10sCisgICAgICAgICAgICAndXVpZCc6IDE1MzgwMjk0Nzkw
MAorICAgICAgICB9KQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
bW9kZWwucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvbW9kZWwucHkJKHJldmlzaW9uIDI1MTk5MykKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL21vZGVsLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb24KIGZyb20gcmVzdWx0c2RicHku
bW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9hZENvbnRleHQKIGZyb20gcmVzdWx0c2Ri
cHkubW9kZWwuc3VpdGVfY29udGV4dCBpbXBvcnQgU3VpdGVDb250ZXh0CiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgVGVzdENvbnRleHQKK2Zyb20gcmVzdWx0c2Ri
cHkubW9kZWwuZmFpbHVyZV9jb250ZXh0IGltcG9ydCBGYWlsdXJlQ29udGV4dAogCiAKIGNsYXNz
IE1vZGVsKG9iamVjdCk6CkBAIC02NiwxMyArNjcsMTggQEAgY2xhc3MgTW9kZWwob2JqZWN0KToK
ICAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCiAgICAgICAg
ICAgICB0dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCiAgICAgICAgICkKKyAg
ICAgICAgc2VsZi5mYWlsdXJlX2NvbnRleHQgPSBGYWlsdXJlQ29udGV4dCgKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb25fY29udGV4dD1zZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCwKKyAgICAg
ICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCisgICAgICAgICAgICB0
dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCisgICAgICAgICkKICAgICAgICAg
c2VsZi5jaV9jb250ZXh0ID0gQ0lDb250ZXh0KAogICAgICAgICAgICAgY29uZmlndXJhdGlvbl9j
b250ZXh0PXNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LAogICAgICAgICAgICAgY29tbWl0X2Nv
bnRleHQ9c2VsZi5jb21taXRfY29udGV4dCwKICAgICAgICAgICAgIHR0bF9zZWNvbmRzPXNlbGYu
ZGVmYXVsdF90dGxfc2Vjb25kcywKICAgICAgICAgKQogCi0gICAgICAgIGZvciBjb250ZXh0IGlu
IFtzZWxmLnN1aXRlX2NvbnRleHQsIHNlbGYudGVzdF9jb250ZXh0LCBzZWxmLmNpX2NvbnRleHRd
OgorICAgICAgICBmb3IgY29udGV4dCBpbiBbc2VsZi5zdWl0ZV9jb250ZXh0LCBzZWxmLnRlc3Rf
Y29udGV4dCwgc2VsZi5jaV9jb250ZXh0LCBzZWxmLmZhaWx1cmVfY29udGV4dF06CiAgICAgICAg
ICAgICBzZWxmLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjayhjb250ZXh0
Lm5hbWUsIGNvbnRleHQucmVnaXN0ZXIpCiAKICAgICAgICAgc2VsZi5hcmNoaXZlX2NvbnRleHQg
PSBBcmNoaXZlQ29udGV4dCgKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWwJKHJl
dmlzaW9uIDI1MTk5MykKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVt
cGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDcgKzM0Myw0
NCBAQCBjb25zdCBkb2N1bWVudGF0aW9uID0gewogICAgICAgICAgICAgICAgICAgICBgd2hlcmUg
Jmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYSZndCBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3Qt
YiZndCBhcmUgYm90aCAke2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJh
dGlvbiddLCAnY29uZmlndXJhdGlvbiBvYmplY3RzJyl9JyBhbmQgJmx0cnVuLWExJmd0LCAmbHRy
dW4tYTImZ3QsICZsdHJ1bi1iMSZndCBhbmQgJmx0cnVuLWIyJmd0IGFyZSBhbGwgdGhlIGFmZm9y
bWVudGlvbmVkIHNpbmdsZSB0ZXN0IHJlc3VsdCBkaWN0aW9uYXJ5LmAsCiAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICksCi0gICAgICAgIF0sICdDSSBMaW5rcyc6IFsKKyAgICAgICAg
XSwgJ0ZhaWx1cmUgQW5hbHlzaXMnOiBbCisgICAgICAgICAgICBgUmVzdWx0cyBkYXRhYmFzZXMg
cHJvdmlkZSBhIGZldyBBUElzIHRvIGFzc2lzdCBpbiB0aGUgaW52ZXN0aWdhdGlvbiBvZiB0ZXN0
IGZhaWx1cmVzLiBUaGVzZSBhbmFseXNpcyBlbmRwb2ludHMgYWdncmVnYXRlIGRhdGEgZnJvbSBt
dWx0aXBsZSB0ZXN0IHJ1bnMgZm9yIGNvbnN1bXB0aW9uIGJ5IGJvdGggaHVtYW5zIGFuZCBhdXRv
bWF0ZWQgc3lzdGVtcy5gLAorICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKKyAgICAgICAg
ICAgICAgICAnL2FwaS9mYWlsdXJlcy8mbHRzdWl0ZSZndCcsCisgICAgICAgICAgICAgICAgWydH
RVQnXSwKKyAgICAgICAgICAgICAgICBbJ0FnZ3JlZ2F0aW9uJywgJ0JyYW5jaCcsICdCcmFuY2gn
LCAnQ29uZmlndXJhdGlvbicsICdMaW1pdCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCdd
LAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgYFJldHVybnMgYSBsaXN0
IG9mIHRlc3RzIHdoaWNoIGZhaWxlZCBkdXJpbmcgdGVzdCBydW5zIG1hdGNoaW5nIHRoZSBzcGVj
aWZpZWQgY3JpdGVyaWEuIFdoZW4gY29sbGFwc2VkLCB0aGVzZSBsaXN0ZWQgd2lsbCBiZSBhIHNv
cnRlZCBsaXN0IGxvb2tpbmcgbGlrZSB0aGlzOmAsCisgICAgICAgICAgICAgICAgICAgIGNvZGVC
bG9jaygnW1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgInN1aXRlLnN1Yi0xLnRlc3Qt
MSIsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAic3VpdGUuc3ViLTEudGVzdC0yIixc
bicgKworICAgICAgICAgICAgICAgICAgICAnICAgICJzdWl0ZS5zdWItMi50ZXN0LTEiXG4nICsK
KyAgICAgICAgICAgICAgICAgICAgJ10nKSwKKyAgICAgICAgICAgICAgICAgICAgYFdoZW4gdW5j
b2xsYXBzZWQsIHRoZXNlIHJlc3VsdHMgd2lsbCBiZSBzZXBhcmF0ZWQgYnkgdGhlIHVwbG9hZCB0
aGF0IGdlbmVyYXRlZCB0aGVtLiBUaGVzZSByZXN1bHRzIGFyZSBsYWlkIG91dCBtdWNoIGxpa2Ug
dGhlICR7bG9jYWxMaW5rKFsnQVBJJywgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZndCddLCAnL2Fw
aS9yZXN1bHRzLyZsdHN1aXRlJmd0Jyl9IGFuZCAke2xvY2FsTGluayhbJ0FQSScsICcvYXBpL3Jl
c3VsdHMvJmx0c3VpdGUmZ3QvJmx0dGVzdCZndCddLCAnL2FwaS9yZXN1bHRzLyZsdHN1aXRlJmd0
LyZsdHRlc3QmZ3QnKX0gZW5kcG9pbnRzLmAsCisgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9j
aygnW1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgICJjb25maWd1cmF0aW9uIjogPGNvbmZpZ3VyYXRpb24tb2JqZWN0LWE+
LFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAgICJyZXN1bHRzIjoge1xuJyArCisg
ICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAic3RhcnRfdGltZSI6IDxVVEMgdGltZSB0
ZXN0IHJ1biBzdGFydGVkPixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAg
InV1aWQiOiA8VVVJRCBmb3IgdGVzdCBydW4+LFxuJyArCisgICAgICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICAic3VpdGUuc3ViLTEudGVzdC0xIjogIkZBSUwiLFxuJyArCisgICAgICAgICAg
ICAgICAgICAgICcgICAgICAgICAgICAic3VpdGUuc3ViLTEudGVzdC0yIjogIkZBSUwiLFxuJyAr
CisgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAic3VpdGUuc3ViLTIudGVzdC0xIjog
IlBBU1MiLFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH1cbicgKworICAgICAg
ICAgICAgICAgICAgICAnICAgIH0sIHtcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1iPixcbicgKworICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICAicmVzdWx0cyI6IHtcbicgKworICAgICAgICAgICAgICAg
ICAgICAnICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3RhcnRl
ZD4sXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJ1dWlkIjogPFVVSUQg
Zm9yIHRlc3QgcnVuPixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgInN1
aXRlLnN1Yi0xLnRlc3QtMSI6ICJGQUlMIixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAg
ICAgICAgICAgInN1aXRlLnN1Yi0yLnRlc3QtMSI6ICJQQVNTIixcbicgKworICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICB9XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICB9XG4nICsK
KyAgICAgICAgICAgICAgICAgICAgJ10nKSwKKyAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZs
dGNvbmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWIm
Z3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRp
b24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfScuYCwKKyAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgXSwnQ0kgTGlua3MnOiBbCiAgICAgICAgICAgICBgUmVz
dWx0cyBkYXRhYmFzZSBpbnN0YW5jZXMgYXJlIHVzdWFsbHkgc3RvcmluZyB0ZXN0IHJlc3VsdHMg
ZnJvbSBzb21lIHNvcnQgb2YgY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW0uIFdoaWxlIHRo
ZSByZXN1bHRzIGRhdGFiYXNlIGRvZXNuJ3QgYXNzdW1lIGFueSBwYXJ0aWN1bGFyIGNvbnRpbnVv
dXMgaW50ZWdyYXRpb24gc3lzdGVtLCBpdCBkb2VzIG1ha2Ugc29tZSBiYXNpYyBhc3N1bXB0aW9u
cy4gVGhlIHJlc3VsdHMgZGF0YWJhc2UgYXNzdW1lcyB0aGF0IGV2ZXJ5IHVwbG9hZCBoYXMgYSBV
UkwgYXNzb2NpYXRlZCB3aXRoIGl0IGFuZCB0aGF0IGV2ZXJ5IHVwbG9hZCB3YXMgcnVuIG9uIGEg
c3BlY2lmaWMgbWFjaGluZS4gQWRkaXRpb25hbGx5LCB0aGUgcmVzdWx0cyBkYXRhYmFzZSBhc3N1
bWVzIHRoYXQgZm9yIGEgZ2l2ZW4gY29uZmlndXJhdGlvbiwgdGhlcmUgaXMgYSBjb3JyZXNwb25k
aW5nICdxdWV1ZScgdGhhdCBhbGwgY29udGludW91cyBpbnRlZ3JhdGlvbiBydW5zIHdpdGggdGhh
dCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGFyZSBhc3NvY2lhdGVkIHdpdGhgLAogICAgICAgICAg
ICAgYElmIHRoZXNlIGFzc3VtcHRpb25zIGFyZW4ndCB0cnVlIGZvciBhIHBhcnRpY3VsYXIgaW5z
dGFuY2Ugb2YgdGhlIHJlc3VsdHMgZGF0YWJhc2UsIG9yIGlmIFVSTHMgYXJlIG5vdCBpbmNsdWRl
ZCBpbiB1cGxvYWQgZGF0YSwgdGhlIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gZW5kcG9pbnRzIG1h
eSBiZSBkZWFkIGxpbmtzLiBUaGF0IHNob3VsZCBub3QgZWZmZWN0IHRoZSBvcGVyYXRpb24gb3Ig
dXNhZ2Ugb2YgdGhlIHJlc3VsdHMgZGF0YWJhc2UuYCwKICAgICAgICAgICAgIGRvY3VtZW50RW5k
cG9pbnQoCkBAIC00MTgsNiArNDU1LDE0IEBAIGNvbnN0IGRvY3VtZW50YXRpb24gPSB7CiAgICAg
ICAgICAgICApLAogICAgICAgICBdLAogICAgIH0sICdRdWVyeSBQYXJhbWV0ZXJzJzogeworICAg
ICAgICAnQWdncmVnYXRpb24nOiBbCisgICAgICAgICAgICBgU29tZSBlbmRwb2ludHMgaW4gdGhl
IHJlc3VsdHMgZGF0YWJhc2UgYWdncmVnYXRlIGRhdGEgZnJvbSBtdWx0aXBsZSB0ZXN0IHJ1bnMu
IFN1Y2ggZW5kcG9pbnRzIGFjY2VwdCBxdWVyeSBwYXJhbWV0ZXJzIHRoYXQgY29udHJvbCBob3cg
dGhpcyBhZ2dyZWdhdGlvbiBpcyBwcmVmb3JtZWQuIFRoZSBmaXJzdCBvZiB0aGVzZSBpcyB0aGUg
Y29sbGFwc2VkIHBhcmFtZXRlciwgd2hpY2ggaXMgc2V0IHRvIFRydWUgYnkgZGVmYXVsdCBpbiBh
Z2dyZWdhdGlvbiBlbmRwb2ludHM6YCwKKyAgICAgICAgICAgIGNvZGVCbG9jaygnY29sbGFwc2Vk
PUZhbHNlJyksCisgICAgICAgICAgICBgVGhlIGNvbGxhcHNlZCBwYXJhbWV0ZXIgaW5kaWNhdGVz
IHRoYXQgYSBzaW5nbGUgcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWQgZm9yIGFsbCB1cGxvYWRzIHdo
aWNoIG1hdGNoIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuIElmIGZhbHNlLCBhZ2dyZWdhdGlvbiBl
bmRwb2ludHMgd2lsbCByZXR1cm4gdGhlIHJlc3VsdHMgd2hpY2ggd291bGQgaGF2ZSBvdGhlcndp
c2UgYmVlbiBhZ2dyZWdhdGVkLmAsCisgICAgICAgICAgICBgQmVjYXVzZSB0aGUgcmVzdWx0cyBk
YXRhYmFzZSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZXhwZWN0ZWQgYW5kIHVuZXhwZWN0ZWQgZmFp
bHVyZXMsIGVuZHBvaW50cyBwcmVmb3JtaW5nIGFnZ3JlZ2F0aW9uIHdpbGwgb2Z0ZW4gZmlsdGVy
IG91dCBleHBlY3RlZCBmYWlsdXJlcywgYW5kIGZsYWcgdW5leHBlY3RlZCBwYXNzZXMuIFRvIG1v
ZGlmeSB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgYWxnb3JpdGhtcywgdGhlc2UgZW5kcG9pbnRzIHdp
bGwgc3VwcG9ydCB0aGUgdW5leHBlY3RlZCBmbGFnOmAsCisgICAgICAgICAgICBjb2RlQmxvY2so
J3VuZXhwZWN0ZWQ9RmFsc2UnKSwKKyAgICAgICAgICAgIGBCeSBkZWZhdWx0LCB0aGlzIGZsYWcg
aXMgJ1RydWUnIGFuZCBlbmRwb2ludHMgd2lsbCBpZ25vcmUgdGVzdHMgd2hpY2ggbWF0Y2hlZCB0
aGVpciBleHBlY3RlZCBiZWhhdmlvci4gSWYgc2V0IHRvICdGYWxzZScsIGVuZHBvaW50cyB3aWxs
IGlnbm9yZSB0ZXN0cyB3aGljaCBhcmUgcGFzc2luZywgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZWly
IGV4cGVjdGF0aW9uIGlzLmAsCisgICAgICAgIF0sCiAgICAgICAgICdCcmFuY2gnOiBbCiAgICAg
ICAgICAgICBgTW9zdCBkYXRhIGluIHRoZSByZXN1bHRzIGRhdGFiYXNlIGlzIHBhcnRpdGlvbmVk
IGJ5IGJyYW5jaCwgYW5kIGl0IGlzIGdlbmVyYWxseSBleHBlY3RlZCB0aGF0IHJlc3VsdHMgb24g
c2VwZXJhdGUgYnJhbmNoZXMgYXJlIGluZGVwZW5kZW50IG9mIG9uZSBhbm90aGVyLiBCeSBkZWZh
dWx0LCBlbmRwb2ludHMgdGhhdCBzdXBwb3J0IHRoZSBicmFuY2ggcXVlcnkgd2lsbCBhc3N1bWUg
dGhhdCB0aGUgYnJhbmNoIGlzIG1hc3RlciBmb3IgZ2l0IHJlcG9zaXRvcmllcyBhbmQgdHJ1bmsg
Zm9yIFNWTiByZXBvc2l0b3JpZXMgaWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLiBJZiBtdWx0aXBs
ZSB2YWx1ZXMgZm9yIGJyYW5jaCBhcmUgc3BlY2lmaWVkLCBvbmx5IHRoZSBmaXJzdCB3aWxsIGJl
IHJlc3BlY3RlZC4gQSByZXF1ZXN0IHdoaWNoIGludGVuZGVkIHRvIHNlYXJjaCBmb3IgcmVzdWx0
cyBvbiBvbmx5IHJlc3VsdHMgb24gdGhlIHNhZmFyaS02MDcgYnJhbmNoIHdvdWxkIHVzZSBhIHF1
ZXJ5IGxpa2UgdGhpczpgLAogICAgICAgICAgICAgY29kZUJsb2NrKCdicmFuY2g9c2FmYXJpLTYw
NycpLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382981</attachid>
            <date>2019-11-06 16:38:22 -0800</date>
            <delta_ts>2019-11-06 20:58:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203905-20191106163819.patch</filename>
            <type>text/plain</type>
            <size>40683</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjE0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUzIEBACisyMDE5LTExLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IExpc3QgZmFpbGluZyB0ZXN0cyBmb3Ig
Y3JpdGVyaWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAg
ICAgICAoQVBJUm91dGVzLl9faW5pdF9fKTogQWRkIEZhaWx1cmVDb250cm9sbGVyIGFuZCAvZmFp
bHVyZXMgZW5kcG9pbnQuCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHk6IEFkZGVkLgorICAgICAgICAoRmFpbHVyZUNvbnRy
b2xsZXIpOiBBZGRlZCBGYWlsdXJlQ29udHJvbGxlciBvYmplY3QgdG8gZHJpdmUgL2ZhaWx1cmUg
ZW5kcG9pbnQuCisgICAgICAgIChGYWlsdXJlQ29udHJvbGxlci5fX2luaXRfXyk6CisgICAgICAg
IChGYWlsdXJlQ29udHJvbGxlci5mYWlsdXJlcyk6IFJldHVybiBhIGpzb24gbGlzdCBvZiBmYWls
dXJlcyBmb3IgYSByYW5nZS4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3QpOiBUZXN0IHRoZSAvZmFpbHVyZSBBUEkuCisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3Quc2V0dXBfd2Vic2VydmVyKToKKyAgICAgICAgKEZhaWx1cmVD
b250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAgICAgIChGYWlsdXJl
Q29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAg
ICAgIChGYWlsdXJlQ29udHJvbGxlclRlc3QudGVzdF9mYWlsdXJlcyk6CisgICAgICAgIChGYWls
dXJlQ29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKToKKyAgICAgICAgKEZh
aWx1cmVDb250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVfYnlfdGltZSk6CisgICAgICAgICogcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKEZhaWx1cmVDb250ZXh0KTogRGF0YWJhc2UgYWNjZXNzIHRvIHRhYmxlcyByZWNvcmRp
bmcgdGVzdCBmYWlsdXJlcy4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RGYWlsdXJlc0Jh
c2UpOgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQmFzZS51bnBhY2spOgor
ICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQnlDb21taXQpOiBTYXZlIHRlc3Qg
ZmFpbHVyZXMgc29ydGVkIGJ5IGNvbW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RG
YWlsdXJlc0J5U3RhcnRUaW1lKTogU2F2ZSB0ZXN0IGZhaWx1cmVzIHNvcnRlZCBieSBzdGFydCB0
aW1lLgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29t
bWl0KTogU2F2ZSB1bmV4cGVjdGVkIHRlc3QgZmFpbHVyZXMKKyAgICAgICAgc29ydGVkIGJ5IGNv
bW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0
YXJ0VGltZSk6IFNhdmUgdW5leHBlY3RlZCB0ZXN0IGZhaWx1cmVzCisgICAgICAgIHNvcnRlZCBi
eSBjb21taXQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dC5fX2luaXRfXyk6CisgICAgICAgIChG
YWlsdXJlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVyIHRlc3QgZmFpbHVyZXMgdG8gZWFjaCBv
ZiB0aGUgNCB0YWJsZXMgZm9yIGFuIHVwbG9hZC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0Ll9m
YWlsdXJlcyk6IFJldHVybiBhIGxpc3Qgb2YgdGVzdCBmYWlsdXJlcyBmcm9tIGEgdGFibGUuCisg
ICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9jb21taXQpOiBSZXR1cm4gYSBsaXN0
IG9mIHRlc3QgZmFpbHVyZXMgZnJvbSBhIHRhYmxlIHNvcnRlZAorICAgICAgICBieSBjb21taXQu
CisgICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9zdGFydF90aW1lKTogUmV0dXJu
IGEgbGlzdCBvZiB0ZXN0IGZhaWx1cmVzIGZyb20gYSB0YWJsZQorICAgICAgICBzb3J0ZWQgYnkg
Y29tbWl0LgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVf
Y29udGV4dF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dFRlc3Qp
OgorICAgICAgICAoRmFpbHVyZUNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOgorICAgICAgICAo
RmFpbHVyZUNvbnRleHRUZXN0LnRlc3RfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAgICAgICAgKEZh
aWx1cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAg
ICAgICAgKEZhaWx1cmVDb250ZXh0VGVzdC50ZXN0X2ZhaWx1cmVzKToKKyAgICAgICAgKEZhaWx1
cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMpOgorICAgICAgICAqIHJlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5OgorICAgICAgICAoTW9kZWwuX19pbml0
X18pOgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2Rv
Y3VtZW50YXRpb24uaHRtbDogQWRkIGRvY3VtZW50YXRpb24KKyAgICAgICAgRm9yIHRoZSAvZmFp
bHVyZSBlbmRwb2ludC4KKwogMjAxOS0xMS0wNiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHdhdGNobGlzdCBjYXRlZ29yeSBmb3IgQnVpbGRTbGF2
ZVN1cHBvcnQKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
YXBpX3JvdXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI1MTk5MykKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQCBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQog
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFyY2hpdmVfY29udHJvbGxlciBpbXBvcnQgQXJj
aGl2ZUNvbnRyb2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJv
bGxlciBpbXBvcnQgQ29tbWl0Q29udHJvbGxlcgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmNpX2NvbnRyb2xsZXIgaW1wb3J0IENJQ29udHJvbGxlcgorZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmZhaWx1cmVfY29udHJvbGxlciBpbXBvcnQgRmFpbHVyZUNvbnRyb2xsZXIKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCBTdWl0ZUNvbnRy
b2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci50ZXN0X2NvbnRyb2xsZXIgaW1wb3J0
IFRlc3RDb250cm9sbGVyCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIudXBsb2FkX2NvbnRy
b2xsZXIgaW1wb3J0IFVwbG9hZENvbnRyb2xsZXIKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgQVBJ
Um91dGVzKEF1dGhlZEJsdWVwcmludCk6CiAKICAgICAgICAgc2VsZi5zdWl0ZV9jb250cm9sbGVy
ID0gU3VpdGVDb250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9kZWwuc3VpdGVfY29udGV4dCkKICAg
ICAgICAgc2VsZi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9
bW9kZWwudGVzdF9jb250ZXh0KQorICAgICAgICBzZWxmLmZhaWx1cmVfY29udHJvbGxlciA9IEZh
aWx1cmVDb250cm9sbGVyKGZhaWx1cmVfY29udGV4dD1tb2RlbC5mYWlsdXJlX2NvbnRleHQpCiAK
ICAgICAgICAgc2VsZi5jaV9jb250cm9sbGVyID0gQ0lDb250cm9sbGVyKGNpX2NvbnRleHQ9bW9k
ZWwuY2lfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCiAgICAg
ICAgIHNlbGYuYXJjaGl2ZV9jb250cm9sbGVyID0gQXJjaGl2ZUNvbnRyb2xsZXIoY29tbWl0X2Nv
bnRyb2xsZXI9c2VsZi5jb21taXRfY29udHJvbGxlciwgYXJjaGl2ZV9jb250ZXh0PW1vZGVsLmFy
Y2hpdmVfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCkBAIC02
OCw2ICs3MCw4IEBAIGNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQpOgogICAgICAgICBz
ZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMn
LCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcs
KSkKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0
aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3Rf
cmVzdWx0LCBtZXRob2RzPSgnR0VUJywpKQogCisgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcv
ZmFpbHVyZXMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLWZhaWx1cmVzJywgc2VsZi5mYWlsdXJlX2Nv
bnRyb2xsZXIuZmFpbHVyZXMsIG1ldGhvZHM9KCdHRVQnLCkpCisKICAgICAgICAgc2VsZi5hZGRf
dXJsX3J1bGUoJy91cmxzL3F1ZXVlJywgJ3F1ZXVlLXVybHMnLCBzZWxmLmNpX2NvbnRyb2xsZXIu
dXJsc19mb3JfcXVldWVfZW5kcG9pbnQsIG1ldGhvZHM9KCdHRVQnLCkpCiAgICAgICAgIHNlbGYu
YWRkX3VybF9ydWxlKCcvdXJscycsICdidWlsZC11cmxzJywgc2VsZi5jaV9jb250cm9sbGVyLnVy
bHNfZm9yX2J1aWxkc19lbmRwb2ludCwgbWV0aG9kcz0oJ0dFVCcsKSkKIApJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9m
YWlsdXJlX2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnkKK2Zyb20gcmVzdWx0c2RicHkuY29u
dHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhh
c0NvbW1pdENvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9u
IGltcG9ydCBDb25maWd1cmF0aW9uCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmln
dXJhdGlvbl9jb250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQorZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2Vf
Zm9yX3F1ZXJ5Citmcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNz
ZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVl
cnkKKworCitjbGFzcyBGYWlsdXJlQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKKyAgICBE
RUZBVUxUX0xJTUlUID0gNTAwMAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVfY29u
dGV4dCk6CisgICAgICAgIHN1cGVyKEZhaWx1cmVDb250cm9sbGVyLCBzZWxmKS5fX2luaXRfXyhm
YWlsdXJlX2NvbnRleHQuY29tbWl0X2NvbnRleHQpCisgICAgICAgIHNlbGYuZmFpbHVyZV9jb250
ZXh0ID0gZmFpbHVyZV9jb250ZXh0CisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkKKyAgICBAdXVp
ZF9yYW5nZV9mb3JfcXVlcnkoKQorICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkK
KyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVy
eSgpCisgICAgZGVmIGZhaWx1cmVzKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLAorICAgICAg
ICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKKyAgICAgICAgYnJhbmNoPU5vbmUs
IGJlZ2luPU5vbmUsIGVuZD1Ob25lLAorICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVu
ZF9xdWVyeV90aW1lPU5vbmUsCisgICAgICAgIHVuZXhwZWN0ZWQ9Tm9uZSwgY29sbGFwc2VkPU5v
bmUsCisgICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0
UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dh
cmdzX2VtcHR5KCoqa3dhcmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJl
Y2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQorICAgICAgICB1bmV4cGVjdGVkID0gYm9vbGVh
bl9xdWVyeSgqdW5leHBlY3RlZClbMF0gaWYgdW5leHBlY3RlZCBlbHNlIFRydWUKKyAgICAgICAg
Y29sbGFwc2VkID0gYm9vbGVhbl9xdWVyeSgqY29sbGFwc2VkKVswXSBpZiBjb2xsYXBzZWQgZWxz
ZSBUcnVlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBk
ZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKworICAgICAgICB3aXRoIHNlbGYuZmFp
bHVyZV9jb250ZXh0OgorICAgICAgICAgICAgcXVlcnlfZGljdCA9IGRpY3QoCisgICAgICAgICAg
ICAgICAgc3VpdGU9c3VpdGUsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmln
dXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFsw
XSwgYmVnaW49YmVnaW4sIGVuZD1lbmQsCisgICAgICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGlt
ZT1iZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZT1lbmRfcXVlcnlfdGltZSwKKyAgICAg
ICAgICAgICAgICBsaW1pdD1saW1pdCwgdW5leHBlY3RlZD11bmV4cGVjdGVkLCBjb2xsYXBzZWQ9
Y29sbGFwc2VkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3BlY2lmaWVkX2NvbW1pdHMg
PSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkK
KyAgICAgICAgICAgIHNwZWNpZmllZF90aW1lc3RhbXBzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxz
ZSAwIGZvciBlbGVtZW50IGluIFtiZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZV1dKQor
CisgICAgICAgICAgICBpZiBzcGVjaWZpZWRfY29tbWl0cyA+PSBzcGVjaWZpZWRfdGltZXN0YW1w
czoKKyAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWlsdXJlX2NvbnRleHQu
ZmFpbHVyZXNfYnlfY29tbWl0CisKKyAgICAgICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihy
ZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KKworICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWls
dXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfc3RhcnRfdGltZQorCisgICAgICAgICAgICAgICAgZGVm
IHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dFsnc3RhcnRfdGltZSddCisKKyAgICAgICAgICAgIGlmIGNvbGxhcHNlZDoKKyAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IHNldCgpCisgICAgICAgICAgICAgICAgcmVzcG9uc2UudXBkYXRlKGZp
bmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4ganNvbmlm
eShzb3J0ZWQocmVzcG9uc2UpKQorCisgICAgICAgICAgICByZXNwb25zZSA9IFtdCisgICAgICAg
ICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIGZpbmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0KS5p
dGVtcygpOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChkaWN0KAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQo
Y29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5
PXNvcnRfZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICByZXR1cm4g
anNvbmlmeShyZXNwb25zZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2Nv
bnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVy
X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA4IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgdGltZQorCitmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlz
Citmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcworZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcworZnJvbSByZXN1bHRzZGJweS5mbGFza19z
dXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCitmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Citmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNz
YW5kcmFDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBp
bXBvcnQgTW9ja01vZGVsRmFjdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRl
eHQgaW1wb3J0IEV4cGVjdGF0aW9ucworZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9k
b2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKKworCitjbGFzcyBG
YWlsdXJlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNl
KToKKyAgICBLRVlTUEFDRSA9ICdmYWlsdXJlX2NvbnRyb2xsZXJfdGVzdF9rZXlzcGFjZScKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIGNhc3Nh
bmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgbW9kZWwg
PSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQorICAgICAg
ICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisKKyAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgK
KyAgICAgICAgICAgIGRldGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAg
ICBydW5fc3RhdHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgcmVzdWx0cz17
CisgICAgICAgICAgICAgICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAgICdlbmNvZGlu
Zyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGlj
dChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0n
RkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdjc3MtY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycs
IHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0
bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdQQVMnLCB0aW1lPTEuMiksCisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAg
ICAgICApKQorICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhtb2RlbCkK
KworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQor
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfZmFp
bHVyZXNfY29sbGFwc2VkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9mYWlsdXJlcy9sYXlvdXQtdGVzdHM/cGxh
dGZvcm09aU9TJnN0eWxlPURlYnVnJnVuZXhwZWN0ZWQ9RmFsc2UnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpLCBbJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsICdm
YXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnXSkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJl
c19jb2xsYXBzZWQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9y
bT1pT1Mmc3R5bGU9RGVidWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpz
b24oKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpLCBbJ2Zh
c3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCddKQorCisgICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKKyAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
ZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPU1hYyZzdHlsZT1EZWJ1ZyZ1bmV4cGVjdGVk
PUZhbHNlJmNvbGxhcHNlZD1GYWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9u
c2UuanNvbigpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNv
bigpWzBdWydyZXN1bHRzJ10pLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
Lmpzb24oKVswXVsncmVzdWx0cyddWzBdWydmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0
bWwnXSwgJ0ZBSUwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsw
XVsncmVzdWx0cyddWzBdWydmYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwn
XSwgJ0ZBSUwnKQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKKyAgICBk
ZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9mYWlsdXJlcy9sYXlv
dXQtdGVzdHM/cGxhdGZvcm09TWFjJnN0eWxlPURlYnVnJmNvbGxhcHNlZD1GYWxzZScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpWzBdWydyZXN1bHRzJ10pLCA1KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVswXVsncmVzdWx0cyddWzBdWydmYXN0
L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnXSwgJ0ZBSUwnKQorCisgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKKyAgICBkZWYgdGVzdF9mYWlsdXJlX2J5X3RpbWUoc2Vs
ZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChmJ3tz
ZWxmLlVSTH0vYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVi
dWcmcmVjZW50PUZhbHNlJmFmdGVyX3RpbWU9e3RpbWUudGltZSgpIC0gNjAgKiA2MH0mY29sbGFw
c2VkPUZhbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAy
KQorICAgICAgICBwcmludChyZXNwb25zZS5qc29uKCkpCisgICAgICAgIGZvciBpIGluIHJhbmdl
KDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpW2ld
WydyZXN1bHRzJ10pLCA1KQorICAgICAgICAgICAgbGFzdF9zdGFydF90aW1lID0gMAorICAgICAg
ICAgICAgZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXToKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbJ3N0YXJ0X3RpbWUnXSwg
bGFzdF9zdGFydF90aW1lKQorICAgICAgICAgICAgICAgIGxhc3Rfc3RhcnRfdGltZSA9IHJlc3Vs
dFsnc3RhcnRfdGltZSddCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9mYWlsdXJlX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE5MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IGNhbGVuZGFyCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBqc29u
CitpbXBvcnQgdGltZQorCitmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMK
K2Zyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBp
bXBvcnQgQ29tbWl0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9y
dCBDb21taXRDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29u
dGV4dCBpbXBvcnQgQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uCitmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLnVwbG9hZF9jb250ZXh0IGltcG9ydCBVcGxvYWRDYWxsYmFja0NvbnRleHQKK2Zyb20gcmVz
dWx0c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKKworCitjbGFz
cyBGYWlsdXJlQ29udGV4dChVcGxvYWRDYWxsYmFja0NvbnRleHQpOgorICAgIERFRkFVTFRfTElN
SVQgPSAxMDAKKworICAgIGNsYXNzIFRlc3RGYWlsdXJlc0Jhc2UoQ2x1c3RlcmVkQnlDb25maWd1
cmF0aW9uKToKKyAgICAgICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICB0ZXN0cyA9IGNvbHVtbnMuVGV4dChy
ZXF1aXJlZD1UcnVlKQorCisgICAgICAgIGRlZiB1bnBhY2soc2VsZik6CisgICAgICAgICAgICBy
ZXN1bHRzID0ganNvbi5sb2FkcyhzZWxmLnRlc3RzKSBpZiBzZWxmLnRlc3RzIGVsc2Uge30KKyAg
ICAgICAgICAgIGZvciB0ZXN0IGluIHJlc3VsdHMua2V5cygpOgorICAgICAgICAgICAgICAgIHJl
c3VsdHNbdGVzdF0gPSBFeHBlY3RhdGlvbnMuc3RhdGVfaWRzX3RvX3N0cmluZyhbcmVzdWx0c1t0
ZXN0XV0pCisgICAgICAgICAgICByZXN1bHRzWyd1dWlkJ10gPSBzZWxmLnV1aWQKKyAgICAgICAg
ICAgIHJlc3VsdHNbJ3N0YXJ0X3RpbWUnXSA9IGNhbGVuZGFyLnRpbWVnbShzZWxmLnN0YXJ0X3Rp
bWUudGltZXR1cGxlKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cworCisgICAgY2xhc3Mg
VGVzdEZhaWx1cmVzQnlDb21taXQoVGVzdEZhaWx1cmVzQmFzZSk6CisgICAgICAgIF9fdGFibGVf
bmFtZV9fID0gJ3Rlc3RfZmFpbHVyZXNfYnlfY29tbWl0JworICAgICAgICB1dWlkID0gY29sdW1u
cy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRl
cj0nREVTQycpCisgICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmlt
YXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorCisgICAgY2xhc3MgVGVzdEZhaWx1cmVzQnlT
dGFydFRpbWUoVGVzdEZhaWx1cmVzQmFzZSk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3Rl
c3RfZmFpbHVyZXNfYnlfc3RhcnRfdGltZScKKyAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMu
RGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRl
cj0nREVTQycpCisgICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKworICAgIGNsYXNzIFVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNC
eUNvbW1pdChUZXN0RmFpbHVyZXNCYXNlKToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAndW5l
eHBlY3RlZF90ZXN0X2ZhaWx1cmVzX2J5X2NvbW1pdCcKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMu
QmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9
J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKKyAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFy
eV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKworICAgIGNsYXNzIFVuZXhwZWN0ZWRUZXN0RmFp
bHVyZXNCeVN0YXJ0VGltZShUZXN0RmFpbHVyZXNCYXNlKToKKyAgICAgICAgX190YWJsZV9uYW1l
X18gPSAndW5leHBlY3RlZF90ZXN0X2ZhaWx1cmVzX2J5X3N0YXJ0X3RpbWUnCisgICAgICAgIHN0
YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMu
QmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRmFpbHVyZUNvbnRleHQs
IHNlbGYpLl9faW5pdF9fKCd0ZXN0LWZhaWx1cmVzJywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAg
ICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShz
ZWxmLlRlc3RGYWlsdXJlc0J5Q29tbWl0KQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3Jl
YXRlX3RhYmxlKHNlbGYuVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUpCisgICAgICAgICAgICBzZWxm
LmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21t
aXQpCisgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VbmV4cGVj
dGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUpCisKKyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29u
ZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5vbmUp
OgorICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3IgdGltZS50aW1lKCkKKyAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6CisgICAgICAgICAgICB0aW1l
c3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lc3RhbXApKQorCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0sIGdvdCB7
dHlwZShzdWl0ZSl9JykKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRh
dGV0aW1lKToKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20odGlt
ZXN0YW1wLnRpbWV0dXBsZSgpKQorCisgICAgICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAg
ICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhjb21taXRz
KQorICAgICAgICAgICAgICAgIHR0bCA9IGludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RP
X1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNl
bGYudHRsX3NlY29uZHMgZWxzZSBOb25lCisKKyAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2so
dGVzdCwgcmVzdWx0LCBmYWlsdXJlcywgdW5leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgICAg
IGZhaWxlZF9yZXN1bHQgPSBFeHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQu
Z2V0KCdhY3R1YWwnLCAnJykpCisgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0
ID0gc2V0KGZhaWxlZF9yZXN1bHQpIC0gc2V0KEV4cGVjdGF0aW9ucy5zdHJpbmdfdG9fc3RhdGVf
aWRzKHJlc3VsdC5nZXQoJ2V4cGVjdGVkJywgJycpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
ZmFpbGVkX3Jlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcnN0ID0gbWluKGZhaWxl
ZF9yZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB3b3JzdCA8IEV4cGVjdGF0aW9u
cy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLldBUk5JTkddOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhaWx1cmVzW3Rlc3RdID0gbWluKHdvcnN0LCBmYWlsdXJlcy5nZXQo
dGVzdCwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuUEFTU10p
KQorCisgICAgICAgICAgICAgICAgICAgIGlmIHVuZXhwZWN0ZWRfcmVzdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgd29yc3QgPSBtaW4odW5leHBlY3RlZF9yZXN1bHQpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiB3b3JzdCA8IEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURb
RXhwZWN0YXRpb25zLldBUk5JTkddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhw
ZWN0ZWRbdGVzdF0gPSBtaW4od29yc3QsIHVuZXhwZWN0ZWQuZ2V0KHRlc3QsIEV4cGVjdGF0aW9u
cy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLlBBU1NdKSkKKworICAgICAgICAgICAg
ICAgIHdpdGggc2VsZi5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgpOgorICAgICAgICAg
ICAgICAgICAgICBmb3IgYnJhbmNoIGluIHNlbGYuY29tbWl0X2NvbnRleHQuYnJhbmNoX2tleXNf
Zm9yX2NvbW1pdHMoY29tbWl0cyk6CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcyA9
IHt9CisgICAgICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkID0ge30KKworICAgICAgICAg
ICAgICAgICAgICAgICAgRXhwZWN0YXRpb25zLml0ZXJhdGVfdGhyb3VnaF9uZXN0ZWRfcmVzdWx0
cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHMuZ2V0KCdyZXN1bHRz
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHRlc3QsIHJlc3VsdDogY2Fs
bGJhY2sodGVzdCwgcmVzdWx0LCBmYWlsdXJlcz1mYWlsdXJlcywgdW5leHBlY3RlZD11bmV4cGVj
dGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIHRhYmxlIGluIFtzZWxmLlRlc3RGYWlsdXJlc0J5Q29tbWl0LCBzZWxmLlRlc3RGYWls
dXJlc0J5U3RhcnRUaW1lXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZp
Z3VyYXRpb25fY29udGV4dC5pbnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRp
b249Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyYW5jaD1icmFuY2gsIHV1aWQ9dXVpZCwgdHRsPXR0bCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGlt
ZT10aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzPWpzb24u
ZHVtcHMoZmFpbHVyZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIHRhYmxlIGluIFtzZWxmLlVuZXhwZWN0ZWRUZXN0RmFpbHVy
ZXNCeUNvbW1pdCwgc2VsZi5VbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWVdOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2Vy
dF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0YWJsZS5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0
ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwg
dXVpZD11dWlkLCB0dGw9dHRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZGs9
Y29uZmlndXJhdGlvbi5zZGsgb3IgJz8nLCBzdGFydF90aW1lPXRpbWVzdGFtcCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM9anNvbi5kdW1wcyh1bmV4cGVjdGVkKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoZSkKKyAgICAgICAg
cmV0dXJuIHNlbGYucGFydGlhbF9zdGF0dXMoKQorCisgICAgZGVmIF9mYWlsdXJlcygKKyAgICAg
ICAgICAgIHNlbGYsIGFsbF90YWJsZSwgdW5leHBlY3RlZF90YWJsZSwgY29uZmlndXJhdGlvbnMs
IHN1aXRlLCByZWNlbnQ9VHJ1ZSwKKyAgICAgICAgICAgIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25l
LCBlbmQ9Tm9uZSwKKyAgICAgICAgICAgIGJlZ2luX3F1ZXJ5X3RpbWU9Tm9uZSwgZW5kX3F1ZXJ5
X3RpbWU9Tm9uZSwKKyAgICAgICAgICAgIHVuZXhwZWN0ZWQ9VHJ1ZSwgY29sbGFwc2VkPVRydWUs
IGxpbWl0PURFRkFVTFRfTElNSVQsCisgICAgKToKKyAgICAgICAgdGFibGUgPSB1bmV4cGVjdGVk
X3RhYmxlIGlmIHVuZXhwZWN0ZWQgZWxzZSBhbGxfdGFibGUKKyAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2Uoc3VpdGUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3Rl
ZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCisKKyAgICAgICAgZGVmIGdldF90aW1l
KHRpbWUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lLCBkYXRldGltZSk6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRpbWUKKyAgICAgICAgICAgIGVsaWYgdGltZToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZSkpCisgICAg
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIGlm
IGNvbGxhcHNlZDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXQoKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB7fQorCisgICAgICAgICAgICBmb3IgY29u
ZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKKyAgICAgICAgICAgICAgICBmb3IgY29uZmln
LCB2YWx1ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVf
d2l0aF9jb25maWd1cmF0aW9ucygKKyAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9u
YW1lX18sIGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKKyAg
ICAgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJh
bmNoPWJyYW5jaCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKKyAg
ICAgICAgICAgICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlk
KGJlZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29u
dmVydF90b191dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZV9fZ3RlPWdldF90aW1lKGJlZ2luX3F1ZXJ5X3Rp
bWUpLCBzdGFydF90aW1lX19sdGU9Z2V0X3RpbWUoZW5kX3F1ZXJ5X3RpbWUpLAorICAgICAgICAg
ICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICApLml0ZW1zKCk6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGNvbGxhcHNlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3Qg
aW4gdmFsdWUudW5wYWNrKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRl
c3Qgbm90IGluIFsndXVpZCcsICdzdGFydF90aW1lJ106CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYWRkKHRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51
bnBhY2soKSBmb3IgdmFsdWUgaW4gdmFsdWVzXX0pCisKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQKKworICAgIGRlZiBmYWlsdXJlc19ieV9jb21taXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZhaWx1cmVzKHNlbGYuVGVzdEZhaWx1cmVzQnlDb21taXQs
IHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0LCAqYXJncywgKiprd2FyZ3MpCisK
KyAgICBkZWYgZmFpbHVyZXNfYnlfc3RhcnRfdGltZShzZWxmLCAqYXJncywgKiprd2FyZ3MpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fZmFpbHVyZXMoc2VsZi5UZXN0RmFpbHVyZXNCeVN0YXJ0VGlt
ZSwgc2VsZi5VbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUsICphcmdzLCAqKmt3YXJn
cykKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29u
dGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9mYWlsdXJlX2NvbnRleHRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisjIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdGltZQorCitmcm9tIGZha2VyZWRpcyBpbXBv
cnQgRmFrZVN0cmljdFJlZGlzCitmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcworZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24K
K2Zyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRy
YUNvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19t
b2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Citmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKK2Zyb20gcmVzdWx0
c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKK2Zyb20gcmVzdWx0
c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tl
clRlc3RDYXNlCisKKworY2xhc3MgRmFpbHVyZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZSk6CisgICAgS0VZU1BBQ0UgPSAnZmFpbHVyZV9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCisK
KyAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlz
cGFjZT1zZWxmLktFWVNQQUNFKQorICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9y
eS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCisgICAgICAgIE1vY2tNb2RlbEZhY3Rv
cnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgKKyAgICAg
ICAgICAgIGRldGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAgICBydW5f
c3RhdHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgcmVzdWx0cz17CisgICAg
ICAgICAgICAgICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAgICdlbmNvZGluZyc6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGljdChleHBl
Y3RlZD0nUEFTUycsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcs
IGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3Mt
Y2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycsIHRpbWU9
MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0bWwnOiBk
aWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg
KSkKKyAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkK
KworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQor
ICAgIGRlZiB0ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywg
Y2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2Uo
cmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgIHJlc3VsdHMgPSBzZWxm
Lm1vZGVsLmZhaWx1cmVfY29udGV4dC5mYWlsdXJlc19ieV9jb21taXQoCisgICAgICAgICAgICBj
b25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVh
c2UnLCBmbGF2b3I9J3drMScpXSwKKyAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCBy
ZWNlbnQ9VHJ1ZSwgdW5leHBlY3RlZD1GYWxzZSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdHMsIHNldChbJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsICdmYXN0L2Vu
Y29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnXSkpCisKKyAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF91bmV4cGVj
dGVkX2ZhaWx1cmVzX2NvbGxhcHNlZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVk
aXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLmZh
aWx1cmVfY29udGV4dC5mYWlsdXJlc19ieV9jb21taXQoCisgICAgICAgICAgICBjb25maWd1cmF0
aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2
b3I9J3drMScpXSwKKyAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1
ZSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAx
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIHNldChbJ2Zhc3QvZW5jb2Rpbmcv
Y3NzLWNhY2hlZC1ib20uaHRtbCddKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X2ZhaWx1cmVzKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAg
cmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAorICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsIHJlY2VudD1UcnVlLCBjb2xsYXBzZWQ9RmFsc2UsIHVuZXhwZWN0ZWQ9RmFs
c2UsCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwg
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChyZXN1bHRzLnZhbHVlcygpKVsw
XSksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXN1bHRzLnZhbHVlcygpKVsw
XVswXSwgeworICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCc6
ICdGQUlMJywKKyAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQu
eGh0bWwnOiAnRkFJTCcsCisgICAgICAgICAgICAnc3RhcnRfdGltZSc6IGxpc3QocmVzdWx0cy52
YWx1ZXMoKSlbMF1bMF1bJ3N0YXJ0X3RpbWUnXSwKKyAgICAgICAgICAgICd1dWlkJzogMTUzODAy
OTQ3OTAwCisgICAgICAgIH0pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAg
ICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2Nv
bW1pdCgKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3Jt
PSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAorICAgICAgICAgICAgc3Vp
dGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1UcnVlLCBjb2xsYXBzZWQ9RmFsc2UKKyAgICAgICAg
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdKSwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdWzBdLCB7CisgICAg
ICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJzogJ0ZBSUwnLAorICAg
ICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdWzBdWydzdGFy
dF90aW1lJ10sCisgICAgICAgICAgICAndXVpZCc6IDE1MzgwMjk0NzkwMAorICAgICAgICB9KQpJ
bmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkJKHJl
dmlzaW9uIDI1MTk5MykKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21v
ZGVsLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIGZyb20gcmVzdWx0c2RicHku
bW9kZWwuY29uZmlndXJhdGlvbl9jb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2Nv
bnRleHQgaW1wb3J0IFVwbG9hZENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuc3VpdGVf
Y29udGV4dCBpbXBvcnQgU3VpdGVDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3Rf
Y29udGV4dCBpbXBvcnQgVGVzdENvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuZmFpbHVy
ZV9jb250ZXh0IGltcG9ydCBGYWlsdXJlQ29udGV4dAogCiAKIGNsYXNzIE1vZGVsKG9iamVjdCk6
CkBAIC02NiwxMyArNjcsMTggQEAgY2xhc3MgTW9kZWwob2JqZWN0KToKICAgICAgICAgICAgIGNv
bW1pdF9jb250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCiAgICAgICAgICAgICB0dGxfc2Vjb25k
cz1zZWxmLmRlZmF1bHRfdHRsX3NlY29uZHMsCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5mYWls
dXJlX2NvbnRleHQgPSBGYWlsdXJlQ29udGV4dCgKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25f
Y29udGV4dD1zZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCwKKyAgICAgICAgICAgIGNvbW1pdF9j
b250ZXh0PXNlbGYuY29tbWl0X2NvbnRleHQsCisgICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxm
LmRlZmF1bHRfdHRsX3NlY29uZHMsCisgICAgICAgICkKICAgICAgICAgc2VsZi5jaV9jb250ZXh0
ID0gQ0lDb250ZXh0KAogICAgICAgICAgICAgY29uZmlndXJhdGlvbl9jb250ZXh0PXNlbGYuY29u
ZmlndXJhdGlvbl9jb250ZXh0LAogICAgICAgICAgICAgY29tbWl0X2NvbnRleHQ9c2VsZi5jb21t
aXRfY29udGV4dCwKICAgICAgICAgICAgIHR0bF9zZWNvbmRzPXNlbGYuZGVmYXVsdF90dGxfc2Vj
b25kcywKICAgICAgICAgKQogCi0gICAgICAgIGZvciBjb250ZXh0IGluIFtzZWxmLnN1aXRlX2Nv
bnRleHQsIHNlbGYudGVzdF9jb250ZXh0LCBzZWxmLmNpX2NvbnRleHRdOgorICAgICAgICBmb3Ig
Y29udGV4dCBpbiBbc2VsZi5zdWl0ZV9jb250ZXh0LCBzZWxmLnRlc3RfY29udGV4dCwgc2VsZi5j
aV9jb250ZXh0LCBzZWxmLmZhaWx1cmVfY29udGV4dF06CiAgICAgICAgICAgICBzZWxmLnVwbG9h
ZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjayhjb250ZXh0Lm5hbWUsIGNvbnRleHQu
cmVnaXN0ZXIpCiAKICAgICAgICAgc2VsZi5hcmNoaXZlX2NvbnRleHQgPSBBcmNoaXZlQ29udGV4
dCgKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2Rv
Y3VtZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDI1MTk5MykK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50
YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDcgKzM0Myw0MyBAQCBjb25zdCBkb2N1
bWVudGF0aW9uID0gewogICAgICAgICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29uZmlndXJhdGlv
bi1vYmplY3QtYSZndCBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYiZndCBhcmUgYm90aCAk
e2xvY2FsTGluayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmln
dXJhdGlvbiBvYmplY3RzJyl9JyBhbmQgJmx0cnVuLWExJmd0LCAmbHRydW4tYTImZ3QsICZsdHJ1
bi1iMSZndCBhbmQgJmx0cnVuLWIyJmd0IGFyZSBhbGwgdGhlIGFmZm9ybWVudGlvbmVkIHNpbmds
ZSB0ZXN0IHJlc3VsdCBkaWN0aW9uYXJ5LmAsCiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICksCi0gICAgICAgIF0sICdDSSBMaW5rcyc6IFsKKyAgICAgICAgXSwgJ0ZhaWx1cmUgQW5h
bHlzaXMnOiBbCisgICAgICAgICAgICBgUmVzdWx0cyBkYXRhYmFzZXMgcHJvdmlkZSBhIGZldyBB
UElzIHRvIGFzc2lzdCBpbiB0aGUgaW52ZXN0aWdhdGlvbiBvZiB0ZXN0IGZhaWx1cmVzLiBUaGVz
ZSBhbmFseXNpcyBlbmRwb2ludHMgYWdncmVnYXRlIGRhdGEgZnJvbSBtdWx0aXBsZSB0ZXN0IHJ1
bnMgZm9yIGNvbnN1bXB0aW9uIGJ5IGJvdGggaHVtYW5zIGFuZCBhdXRvbWF0ZWQgc3lzdGVtcy5g
LAorICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKKyAgICAgICAgICAgICAgICAnL2FwaS9m
YWlsdXJlcy8mbHRzdWl0ZSZndCcsCisgICAgICAgICAgICAgICAgWydHRVQnXSwKKyAgICAgICAg
ICAgICAgICBbJ0FnZ3JlZ2F0aW9uJywgJ0JyYW5jaCcsICdCcmFuY2gnLCAnQ29uZmlndXJhdGlv
bicsICdMaW1pdCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCddLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgYFJldHVybnMgYSBsaXN0IG9mIHRlc3RzIHdoaWNo
IGZhaWxlZCBkdXJpbmcgdGVzdCBydW5zIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEu
IFdoZW4gY29sbGFwc2VkLCB0aGVzZSBsaXN0ZWQgd2lsbCBiZSBhIHNvcnRlZCBsaXN0IGxvb2tp
bmcgbGlrZSB0aGlzOmAsCisgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygnW1xuJyArCisg
ICAgICAgICAgICAgICAgICAgICcgICAgInN1aXRlLnN1Yi0xLnRlc3QtMSIsXG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgJyAgICAic3VpdGUuc3ViLTEudGVzdC0yIixcbicgKworICAgICAgICAg
ICAgICAgICAgICAnICAgICJzdWl0ZS5zdWItMi50ZXN0LTEiXG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgJ10nKSwKKyAgICAgICAgICAgICAgICAgICAgYFdoZW4gdW5jb2xsYXBzZWQsIHRoZXNl
IHJlc3VsdHMgd2lsbCBiZSBzZXBhcmF0ZWQgYnkgdGhlIHVwbG9hZCB0aGF0IGdlbmVyYXRlZCB0
aGVtLiBUaGVzZSByZXN1bHRzIGFyZSBsYWlkIG91dCBtdWNoIGxpa2UgdGhlICR7bG9jYWxMaW5r
KFsnQVBJJywgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZndCddLCAnL2FwaS9yZXN1bHRzLyZsdHN1
aXRlJmd0Jyl9IGFuZCAke2xvY2FsTGluayhbJ0FQSScsICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUm
Z3QvJmx0dGVzdCZndCddLCAnL2FwaS9yZXN1bHRzLyZsdHN1aXRlJmd0LyZsdHRlc3QmZ3QnKX0g
ZW5kcG9pbnRzLmAsCisgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygnW1xuJyArCisgICAg
ICAgICAgICAgICAgICAgICcgICAge1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAg
ICJjb25maWd1cmF0aW9uIjogPGNvbmZpZ3VyYXRpb24tb2JqZWN0LWE+LFxuJyArCisgICAgICAg
ICAgICAgICAgICAgICcgICAgICAgICJyZXN1bHRzIjoge1xuJyArCisgICAgICAgICAgICAgICAg
ICAgICcgICAgICAgICAgICAic3RhcnRfdGltZSI6IDxVVEMgdGltZSB0ZXN0IHJ1biBzdGFydGVk
PixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgInV1aWQiOiA8VVVJRCBm
b3IgdGVzdCBydW4+LFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAic3Vp
dGUuc3ViLTEudGVzdC0xIjogIkZBSUwiLFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgICAgICAic3VpdGUuc3ViLTEudGVzdC0yIjogIkZBSUwiLFxuJyArCisgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIH1cbicgKworICAgICAgICAgICAgICAgICAgICAnICAgIH0sIHtcbicg
KworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1
cmF0aW9uLW9iamVjdC1iPixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAicmVz
dWx0cyI6IHtcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgInN0YXJ0X3Rp
bWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3RhcnRlZD4sXG4nICsKKyAgICAgICAgICAgICAgICAg
ICAgJyAgICAgICAgICAgICJ1dWlkIjogPFVVSUQgZm9yIHRlc3QgcnVuPixcbicgKworICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICAgICAgInN1aXRlLnN1Yi0xLnRlc3QtMSI6ICJGQUlMIixc
bicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgInN1aXRlLnN1Yi0yLnRlc3Qt
MSI6ICJDUkFTSCIsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfVxuJyArCisg
ICAgICAgICAgICAgICAgICAgICcgICAgfVxuJyArCisgICAgICAgICAgICAgICAgICAgICddJyks
CisgICAgICAgICAgICAgICAgICAgIGB3aGVyZSAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1hJmd0
IGFuZCAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1iJmd0IGFyZSBib3RoICR7bG9jYWxMaW5rKFsn
UXVlcnkgUGFyYW1ldGVycycsICdDb25maWd1cmF0aW9uJ10sICdjb25maWd1cmF0aW9uIG9iamVj
dHMnKX0nLmAsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0s
J0NJIExpbmtzJzogWwogICAgICAgICAgICAgYFJlc3VsdHMgZGF0YWJhc2UgaW5zdGFuY2VzIGFy
ZSB1c3VhbGx5IHN0b3JpbmcgdGVzdCByZXN1bHRzIGZyb20gc29tZSBzb3J0IG9mIGNvbnRpbnVv
dXMgaW50ZWdyYXRpb24gc3lzdGVtLiBXaGlsZSB0aGUgcmVzdWx0cyBkYXRhYmFzZSBkb2Vzbid0
IGFzc3VtZSBhbnkgcGFydGljdWxhciBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbSwgaXQg
ZG9lcyBtYWtlIHNvbWUgYmFzaWMgYXNzdW1wdGlvbnMuIFRoZSByZXN1bHRzIGRhdGFiYXNlIGFz
c3VtZXMgdGhhdCBldmVyeSB1cGxvYWQgaGFzIGEgVVJMIGFzc29jaWF0ZWQgd2l0aCBpdCBhbmQg
dGhhdCBldmVyeSB1cGxvYWQgd2FzIHJ1biBvbiBhIHNwZWNpZmljIG1hY2hpbmUuIEFkZGl0aW9u
YWxseSwgdGhlIHJlc3VsdHMgZGF0YWJhc2UgYXNzdW1lcyB0aGF0IGZvciBhIGdpdmVuIGNvbmZp
Z3VyYXRpb24sIHRoZXJlIGlzIGEgY29ycmVzcG9uZGluZyAncXVldWUnIHRoYXQgYWxsIGNvbnRp
bnVvdXMgaW50ZWdyYXRpb24gcnVucyB3aXRoIHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBh
cmUgYXNzb2NpYXRlZCB3aXRoYCwKICAgICAgICAgICAgIGBJZiB0aGVzZSBhc3N1bXB0aW9ucyBh
cmVuJ3QgdHJ1ZSBmb3IgYSBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIGRhdGFi
YXNlLCBvciBpZiBVUkxzIGFyZSBub3QgaW5jbHVkZWQgaW4gdXBsb2FkIGRhdGEsIHRoZSBjb250
aW51b3VzIGludGVncmF0aW9uIGVuZHBvaW50cyBtYXkgYmUgZGVhZCBsaW5rcy4gVGhhdCBzaG91
bGQgbm90IGVmZmVjdCB0aGUgb3BlcmF0aW9uIG9yIHVzYWdlIG9mIHRoZSByZXN1bHRzIGRhdGFi
YXNlLmAsCiAgICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KApAQCAtNDE4LDYgKzQ1NCwxNCBA
QCBjb25zdCBkb2N1bWVudGF0aW9uID0gewogICAgICAgICAgICAgKSwKICAgICAgICAgXSwKICAg
ICB9LCAnUXVlcnkgUGFyYW1ldGVycyc6IHsKKyAgICAgICAgJ0FnZ3JlZ2F0aW9uJzogWworICAg
ICAgICAgICAgYFNvbWUgZW5kcG9pbnRzIGluIHRoZSByZXN1bHRzIGRhdGFiYXNlIGFnZ3JlZ2F0
ZSBkYXRhIGZyb20gbXVsdGlwbGUgdGVzdCBydW5zLiBTdWNoIGVuZHBvaW50cyBhY2NlcHQgcXVl
cnkgcGFyYW1ldGVycyB0aGF0IGNvbnRyb2wgaG93IHRoaXMgYWdncmVnYXRpb24gaXMgcHJlZm9y
bWVkLiBUaGUgZmlyc3Qgb2YgdGhlc2UgaXMgdGhlIGNvbGxhcHNlZCBwYXJhbWV0ZXIsIHdoaWNo
IGlzIHNldCB0byBUcnVlIGJ5IGRlZmF1bHQgaW4gYWdncmVnYXRpb24gZW5kcG9pbnRzOmAsCisg
ICAgICAgICAgICBjb2RlQmxvY2soJ2NvbGxhcHNlZD1GYWxzZScpLAorICAgICAgICAgICAgYFRo
ZSBjb2xsYXBzZWQgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IGEgc2luZ2xlIHJlc3VsdCB3aWxs
IGJlIHJldHVybmVkIGZvciBhbGwgdXBsb2FkcyB3aGljaCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNy
aXRlcmlhLiBJZiBmYWxzZSwgYWdncmVnYXRpb24gZW5kcG9pbnRzIHdpbGwgcmV0dXJuIHRoZSBy
ZXN1bHRzIHdoaWNoIHdvdWxkIGhhdmUgb3RoZXJ3aXNlIGJlZW4gYWdncmVnYXRlZC5gLAorICAg
ICAgICAgICAgYEJlY2F1c2UgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZGlzdGluZ3Vpc2hlcyBiZXR3
ZWVuIGV4cGVjdGVkIGFuZCB1bmV4cGVjdGVkIGZhaWx1cmVzLCBlbmRwb2ludHMgcHJlZm9ybWlu
ZyBhZ2dyZWdhdGlvbiB3aWxsIG9mdGVuIGZpbHRlciBvdXQgZXhwZWN0ZWQgZmFpbHVyZXMsIGFu
ZCBmbGFnIHVuZXhwZWN0ZWQgcGFzc2VzLiBUbyBtb2RpZnkgdGhlIGJlaGF2aW9yIG9mIHRoZXNl
IGFsZ29yaXRobXMsIHRoZXNlIGVuZHBvaW50cyB3aWxsIHN1cHBvcnQgdGhlIHVuZXhwZWN0ZWQg
ZmxhZzpgLAorICAgICAgICAgICAgY29kZUJsb2NrKCd1bmV4cGVjdGVkPUZhbHNlJyksCisgICAg
ICAgICAgICBgQnkgZGVmYXVsdCwgdGhpcyBmbGFnIGlzICdUcnVlJyBhbmQgZW5kcG9pbnRzIHdp
bGwgaWdub3JlIHRlc3RzIHdoaWNoIG1hdGNoZWQgdGhlaXIgZXhwZWN0ZWQgYmVoYXZpb3IuIElm
IHNldCB0byAnRmFsc2UnLCBlbmRwb2ludHMgd2lsbCByZXR1cm4gcmVzdWx0cyBmb3IgYWxsIGZh
aWxpbmcgdGVzdHMsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGVpciBleHBlY3RhdGlvbiBpcy5gLAor
ICAgICAgICBdLAogICAgICAgICAnQnJhbmNoJzogWwogICAgICAgICAgICAgYE1vc3QgZGF0YSBp
biB0aGUgcmVzdWx0cyBkYXRhYmFzZSBpcyBwYXJ0aXRpb25lZCBieSBicmFuY2gsIGFuZCBpdCBp
cyBnZW5lcmFsbHkgZXhwZWN0ZWQgdGhhdCByZXN1bHRzIG9uIHNlcGVyYXRlIGJyYW5jaGVzIGFy
ZSBpbmRlcGVuZGVudCBvZiBvbmUgYW5vdGhlci4gQnkgZGVmYXVsdCwgZW5kcG9pbnRzIHRoYXQg
c3VwcG9ydCB0aGUgYnJhbmNoIHF1ZXJ5IHdpbGwgYXNzdW1lIHRoYXQgdGhlIGJyYW5jaCBpcyBt
YXN0ZXIgZm9yIGdpdCByZXBvc2l0b3JpZXMgYW5kIHRydW5rIGZvciBTVk4gcmVwb3NpdG9yaWVz
IGlmIG5vIHZhbHVlIGlzIHNwZWNpZmllZC4gSWYgbXVsdGlwbGUgdmFsdWVzIGZvciBicmFuY2gg
YXJlIHNwZWNpZmllZCwgb25seSB0aGUgZmlyc3Qgd2lsbCBiZSByZXNwZWN0ZWQuIEEgcmVxdWVz
dCB3aGljaCBpbnRlbmRlZCB0byBzZWFyY2ggZm9yIHJlc3VsdHMgb24gb25seSByZXN1bHRzIG9u
IHRoZSBzYWZhcmktNjA3IGJyYW5jaCB3b3VsZCB1c2UgYSBxdWVyeSBsaWtlIHRoaXM6YCwKICAg
ICAgICAgICAgIGNvZGVCbG9jaygnYnJhbmNoPXNhZmFyaS02MDcnKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383020</attachid>
            <date>2019-11-06 20:58:46 -0800</date>
            <delta_ts>2019-11-08 14:58:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203905-20191106205845.patch</filename>
            <type>text/plain</type>
            <size>41086</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjE0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUzIEBACisyMDE5LTExLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IExpc3QgZmFpbGluZyB0ZXN0cyBmb3Ig
Y3JpdGVyaWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAg
ICAgICAoQVBJUm91dGVzLl9faW5pdF9fKTogQWRkIEZhaWx1cmVDb250cm9sbGVyIGFuZCAvZmFp
bHVyZXMgZW5kcG9pbnQuCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHk6IEFkZGVkLgorICAgICAgICAoRmFpbHVyZUNvbnRy
b2xsZXIpOiBBZGRlZCBGYWlsdXJlQ29udHJvbGxlciBvYmplY3QgdG8gZHJpdmUgL2ZhaWx1cmUg
ZW5kcG9pbnQuCisgICAgICAgIChGYWlsdXJlQ29udHJvbGxlci5fX2luaXRfXyk6CisgICAgICAg
IChGYWlsdXJlQ29udHJvbGxlci5mYWlsdXJlcyk6IFJldHVybiBhIGpzb24gbGlzdCBvZiBmYWls
dXJlcyBmb3IgYSByYW5nZS4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3QpOiBUZXN0IHRoZSAvZmFpbHVyZSBBUEkuCisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3Quc2V0dXBfd2Vic2VydmVyKToKKyAgICAgICAgKEZhaWx1cmVD
b250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAgICAgIChGYWlsdXJl
Q29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAg
ICAgIChGYWlsdXJlQ29udHJvbGxlclRlc3QudGVzdF9mYWlsdXJlcyk6CisgICAgICAgIChGYWls
dXJlQ29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKToKKyAgICAgICAgKEZh
aWx1cmVDb250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVfYnlfdGltZSk6CisgICAgICAgICogcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKEZhaWx1cmVDb250ZXh0KTogRGF0YWJhc2UgYWNjZXNzIHRvIHRhYmxlcyByZWNvcmRp
bmcgdGVzdCBmYWlsdXJlcy4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RGYWlsdXJlc0Jh
c2UpOgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQmFzZS51bnBhY2spOgor
ICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQnlDb21taXQpOiBTYXZlIHRlc3Qg
ZmFpbHVyZXMgc29ydGVkIGJ5IGNvbW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RG
YWlsdXJlc0J5U3RhcnRUaW1lKTogU2F2ZSB0ZXN0IGZhaWx1cmVzIHNvcnRlZCBieSBzdGFydCB0
aW1lLgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29t
bWl0KTogU2F2ZSB1bmV4cGVjdGVkIHRlc3QgZmFpbHVyZXMKKyAgICAgICAgc29ydGVkIGJ5IGNv
bW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeVN0
YXJ0VGltZSk6IFNhdmUgdW5leHBlY3RlZCB0ZXN0IGZhaWx1cmVzCisgICAgICAgIHNvcnRlZCBi
eSBjb21taXQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dC5fX2luaXRfXyk6CisgICAgICAgIChG
YWlsdXJlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVyIHRlc3QgZmFpbHVyZXMgdG8gZWFjaCBv
ZiB0aGUgNCB0YWJsZXMgZm9yIGFuIHVwbG9hZC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0Ll9m
YWlsdXJlcyk6IFJldHVybiBhIGxpc3Qgb2YgdGVzdCBmYWlsdXJlcyBmcm9tIGEgdGFibGUuCisg
ICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9jb21taXQpOiBSZXR1cm4gYSBsaXN0
IG9mIHRlc3QgZmFpbHVyZXMgZnJvbSBhIHRhYmxlIHNvcnRlZAorICAgICAgICBieSBjb21taXQu
CisgICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9zdGFydF90aW1lKTogUmV0dXJu
IGEgbGlzdCBvZiB0ZXN0IGZhaWx1cmVzIGZyb20gYSB0YWJsZQorICAgICAgICBzb3J0ZWQgYnkg
Y29tbWl0LgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVf
Y29udGV4dF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dFRlc3Qp
OgorICAgICAgICAoRmFpbHVyZUNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOgorICAgICAgICAo
RmFpbHVyZUNvbnRleHRUZXN0LnRlc3RfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAgICAgICAgKEZh
aWx1cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAg
ICAgICAgKEZhaWx1cmVDb250ZXh0VGVzdC50ZXN0X2ZhaWx1cmVzKToKKyAgICAgICAgKEZhaWx1
cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMpOgorICAgICAgICAqIHJlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5OgorICAgICAgICAoTW9kZWwuX19pbml0
X18pOgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2Rv
Y3VtZW50YXRpb24uaHRtbDogQWRkIGRvY3VtZW50YXRpb24KKyAgICAgICAgRm9yIHRoZSAvZmFp
bHVyZSBlbmRwb2ludC4KKwogMjAxOS0xMS0wNiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHdhdGNobGlzdCBjYXRlZ29yeSBmb3IgQnVpbGRTbGF2
ZVN1cHBvcnQKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
YXBpX3JvdXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI1MTk5MykKKysrIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQCBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQog
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFyY2hpdmVfY29udHJvbGxlciBpbXBvcnQgQXJj
aGl2ZUNvbnRyb2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJv
bGxlciBpbXBvcnQgQ29tbWl0Q29udHJvbGxlcgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmNpX2NvbnRyb2xsZXIgaW1wb3J0IENJQ29udHJvbGxlcgorZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmZhaWx1cmVfY29udHJvbGxlciBpbXBvcnQgRmFpbHVyZUNvbnRyb2xsZXIKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCBTdWl0ZUNvbnRy
b2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci50ZXN0X2NvbnRyb2xsZXIgaW1wb3J0
IFRlc3RDb250cm9sbGVyCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIudXBsb2FkX2NvbnRy
b2xsZXIgaW1wb3J0IFVwbG9hZENvbnRyb2xsZXIKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgQVBJ
Um91dGVzKEF1dGhlZEJsdWVwcmludCk6CiAKICAgICAgICAgc2VsZi5zdWl0ZV9jb250cm9sbGVy
ID0gU3VpdGVDb250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9kZWwuc3VpdGVfY29udGV4dCkKICAg
ICAgICAgc2VsZi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9
bW9kZWwudGVzdF9jb250ZXh0KQorICAgICAgICBzZWxmLmZhaWx1cmVfY29udHJvbGxlciA9IEZh
aWx1cmVDb250cm9sbGVyKGZhaWx1cmVfY29udGV4dD1tb2RlbC5mYWlsdXJlX2NvbnRleHQpCiAK
ICAgICAgICAgc2VsZi5jaV9jb250cm9sbGVyID0gQ0lDb250cm9sbGVyKGNpX2NvbnRleHQ9bW9k
ZWwuY2lfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCiAgICAg
ICAgIHNlbGYuYXJjaGl2ZV9jb250cm9sbGVyID0gQXJjaGl2ZUNvbnRyb2xsZXIoY29tbWl0X2Nv
bnRyb2xsZXI9c2VsZi5jb21taXRfY29udHJvbGxlciwgYXJjaGl2ZV9jb250ZXh0PW1vZGVsLmFy
Y2hpdmVfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCkBAIC02
OCw2ICs3MCw4IEBAIGNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQpOgogICAgICAgICBz
ZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMn
LCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcs
KSkKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0
aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3Rf
cmVzdWx0LCBtZXRob2RzPSgnR0VUJywpKQogCisgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcv
ZmFpbHVyZXMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLWZhaWx1cmVzJywgc2VsZi5mYWlsdXJlX2Nv
bnRyb2xsZXIuZmFpbHVyZXMsIG1ldGhvZHM9KCdHRVQnLCkpCisKICAgICAgICAgc2VsZi5hZGRf
dXJsX3J1bGUoJy91cmxzL3F1ZXVlJywgJ3F1ZXVlLXVybHMnLCBzZWxmLmNpX2NvbnRyb2xsZXIu
dXJsc19mb3JfcXVldWVfZW5kcG9pbnQsIG1ldGhvZHM9KCdHRVQnLCkpCiAgICAgICAgIHNlbGYu
YWRkX3VybF9ydWxlKCcvdXJscycsICdidWlsZC11cmxzJywgc2VsZi5jaV9jb250cm9sbGVyLnVy
bHNfZm9yX2J1aWxkc19lbmRwb2ludCwgbWV0aG9kcz0oJ0dFVCcsKSkKIApJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9m
YWlsdXJlX2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnkKK2Zyb20gcmVzdWx0c2RicHkuY29u
dHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhh
c0NvbW1pdENvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9u
IGltcG9ydCBDb25maWd1cmF0aW9uCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmln
dXJhdGlvbl9jb250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQorZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2Vf
Zm9yX3F1ZXJ5Citmcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRpbCBpbXBvcnQgQXNz
ZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVl
cnkKKworCitjbGFzcyBGYWlsdXJlQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKKyAgICBE
RUZBVUxUX0xJTUlUID0gNTAwMAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVfY29u
dGV4dCk6CisgICAgICAgIHN1cGVyKEZhaWx1cmVDb250cm9sbGVyLCBzZWxmKS5fX2luaXRfXyhm
YWlsdXJlX2NvbnRleHQuY29tbWl0X2NvbnRleHQpCisgICAgICAgIHNlbGYuZmFpbHVyZV9jb250
ZXh0ID0gZmFpbHVyZV9jb250ZXh0CisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkKKyAgICBAdXVp
ZF9yYW5nZV9mb3JfcXVlcnkoKQorICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9MSU1JVCkK
KyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAgIEB0aW1lX3JhbmdlX2Zvcl9xdWVy
eSgpCisgICAgZGVmIGZhaWx1cmVzKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLAorICAgICAg
ICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKKyAgICAgICAgYnJhbmNoPU5vbmUs
IGJlZ2luPU5vbmUsIGVuZD1Ob25lLAorICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVu
ZF9xdWVyeV90aW1lPU5vbmUsCisgICAgICAgIHVuZXhwZWN0ZWQ9Tm9uZSwgY29sbGFwc2VkPU5v
bmUsCisgICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0
UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dh
cmdzX2VtcHR5KCoqa3dhcmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJl
Y2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQorICAgICAgICB1bmV4cGVjdGVkID0gYm9vbGVh
bl9xdWVyeSgqdW5leHBlY3RlZClbMF0gaWYgdW5leHBlY3RlZCBlbHNlIFRydWUKKyAgICAgICAg
Y29sbGFwc2VkID0gYm9vbGVhbl9xdWVyeSgqY29sbGFwc2VkKVswXSBpZiBjb2xsYXBzZWQgZWxz
ZSBUcnVlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBk
ZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKworICAgICAgICB3aXRoIHNlbGYuZmFp
bHVyZV9jb250ZXh0OgorICAgICAgICAgICAgcXVlcnlfZGljdCA9IGRpY3QoCisgICAgICAgICAg
ICAgICAgc3VpdGU9c3VpdGUsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmln
dXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFsw
XSwgYmVnaW49YmVnaW4sIGVuZD1lbmQsCisgICAgICAgICAgICAgICAgYmVnaW5fcXVlcnlfdGlt
ZT1iZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZT1lbmRfcXVlcnlfdGltZSwKKyAgICAg
ICAgICAgICAgICBsaW1pdD1saW1pdCwgdW5leHBlY3RlZD11bmV4cGVjdGVkLCBjb2xsYXBzZWQ9
Y29sbGFwc2VkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3BlY2lmaWVkX2NvbW1pdHMg
PSBzdW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luLCBlbmRdXSkK
KyAgICAgICAgICAgIHNwZWNpZmllZF90aW1lc3RhbXBzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxz
ZSAwIGZvciBlbGVtZW50IGluIFtiZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZV1dKQor
CisgICAgICAgICAgICBpZiBzcGVjaWZpZWRfY29tbWl0cyA+PSBzcGVjaWZpZWRfdGltZXN0YW1w
czoKKyAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWlsdXJlX2NvbnRleHQu
ZmFpbHVyZXNfYnlfY29tbWl0CisKKyAgICAgICAgICAgICAgICBkZWYgc29ydF9mdW5jdGlvbihy
ZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Wyd1dWlkJ10KKworICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi5mYWls
dXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfc3RhcnRfdGltZQorCisgICAgICAgICAgICAgICAgZGVm
IHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dFsnc3RhcnRfdGltZSddCisKKyAgICAgICAgICAgIGlmIGNvbGxhcHNlZDoKKyAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IHNldCgpCisgICAgICAgICAgICAgICAgcmVzcG9uc2UudXBkYXRlKGZp
bmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4ganNvbmlm
eShzb3J0ZWQocmVzcG9uc2UpKQorCisgICAgICAgICAgICByZXNwb25zZSA9IFtdCisgICAgICAg
ICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIGZpbmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0KS5p
dGVtcygpOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChkaWN0KAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQo
Y29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5
PXNvcnRfZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICByZXR1cm4g
anNvbmlmeShyZXNwb25zZSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2Nv
bnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVy
X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA4IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgdGltZQorCitmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlz
Citmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcworZnJvbSByZXN1bHRzZGJweS5jb250cm9s
bGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcworZnJvbSByZXN1bHRzZGJweS5mbGFza19z
dXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCitmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Citmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNz
YW5kcmFDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBp
bXBvcnQgTW9ja01vZGVsRmFjdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRl
eHQgaW1wb3J0IEV4cGVjdGF0aW9ucworZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9k
b2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKKworCitjbGFzcyBG
YWlsdXJlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNl
KToKKyAgICBLRVlTUEFDRSA9ICdmYWlsdXJlX2NvbnRyb2xsZXJfdGVzdF9rZXlzcGFjZScKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIGNhc3Nh
bmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgbW9kZWwg
PSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQorICAgICAg
ICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisKKyAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgK
KyAgICAgICAgICAgIGRldGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAg
ICBydW5fc3RhdHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgcmVzdWx0cz17
CisgICAgICAgICAgICAgICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAgICdlbmNvZGlu
Zyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGlj
dChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0n
RkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdjc3MtY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycs
IHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0
bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdQQVMnLCB0aW1lPTEuMiksCisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAg
ICAgICApKQorICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhtb2RlbCkK
KworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQor
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfZmFp
bHVyZXNfY29sbGFwc2VkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9mYWlsdXJlcy9sYXlvdXQtdGVzdHM/cGxh
dGZvcm09aU9TJnN0eWxlPURlYnVnJnVuZXhwZWN0ZWQ9RmFsc2UnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpLCBbJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsICdm
YXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnXSkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJl
c19jb2xsYXBzZWQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9y
bT1pT1Mmc3R5bGU9RGVidWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpz
b24oKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpLCBbJ2Zh
c3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCddKQorCisgICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKKyAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
ZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPU1hYyZzdHlsZT1EZWJ1ZyZ1bmV4cGVjdGVk
PUZhbHNlJmNvbGxhcHNlZD1GYWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9u
c2UuanNvbigpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNv
bigpWzBdWydyZXN1bHRzJ10pLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
Lmpzb24oKVswXVsncmVzdWx0cyddWzBdWydmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0
bWwnXSwgJ0ZBSUwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsw
XVsncmVzdWx0cyddWzBdWydmYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwn
XSwgJ0ZBSUwnKQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKKyAgICBk
ZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9mYWlsdXJlcy9sYXlv
dXQtdGVzdHM/cGxhdGZvcm09TWFjJnN0eWxlPURlYnVnJmNvbGxhcHNlZD1GYWxzZScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpWzBdWydyZXN1bHRzJ10pLCA1KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVswXVsncmVzdWx0cyddWzBdWydmYXN0
L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnXSwgJ0ZBSUwnKQorCisgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKKyAgICBkZWYgdGVzdF9mYWlsdXJlX2J5X3RpbWUoc2Vs
ZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChmJ3tz
ZWxmLlVSTH0vYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVi
dWcmcmVjZW50PUZhbHNlJmFmdGVyX3RpbWU9e3RpbWUudGltZSgpIC0gNjAgKiA2MH0mY29sbGFw
c2VkPUZhbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAy
KQorICAgICAgICBwcmludChyZXNwb25zZS5qc29uKCkpCisgICAgICAgIGZvciBpIGluIHJhbmdl
KDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpW2ld
WydyZXN1bHRzJ10pLCA1KQorICAgICAgICAgICAgbGFzdF9zdGFydF90aW1lID0gMAorICAgICAg
ICAgICAgZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKClbaV1bJ3Jlc3VsdHMnXToKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbJ3N0YXJ0X3RpbWUnXSwg
bGFzdF9zdGFydF90aW1lKQorICAgICAgICAgICAgICAgIGxhc3Rfc3RhcnRfdGltZSA9IHJlc3Vs
dFsnc3RhcnRfdGltZSddCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9mYWlsdXJlX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE5OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IGNhbGVuZGFyCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBqc29u
CitpbXBvcnQgdGltZQorCitmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMK
K2Zyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBp
bXBvcnQgQ29tbWl0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9y
dCBDb21taXRDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29u
dGV4dCBpbXBvcnQgQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uCitmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLnVwbG9hZF9jb250ZXh0IGltcG9ydCBVcGxvYWRDYWxsYmFja0NvbnRleHQKK2Zyb20gcmVz
dWx0c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKKworCitjbGFz
cyBGYWlsdXJlQ29udGV4dChVcGxvYWRDYWxsYmFja0NvbnRleHQpOgorICAgIERFRkFVTFRfTElN
SVQgPSAxMDAKKworICAgIGNsYXNzIFRlc3RGYWlsdXJlc0Jhc2UoQ2x1c3RlcmVkQnlDb25maWd1
cmF0aW9uKToKKyAgICAgICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICB0ZXN0cyA9IGNvbHVtbnMuVGV4dChy
ZXF1aXJlZD1UcnVlKQorCisgICAgICAgIGRlZiB1bnBhY2soc2VsZik6CisgICAgICAgICAgICBy
ZXN1bHRzID0ganNvbi5sb2FkcyhzZWxmLnRlc3RzKSBpZiBzZWxmLnRlc3RzIGVsc2Uge30KKyAg
ICAgICAgICAgIGZvciB0ZXN0IGluIHJlc3VsdHMua2V5cygpOgorICAgICAgICAgICAgICAgIHJl
c3VsdHNbdGVzdF0gPSBFeHBlY3RhdGlvbnMuc3RhdGVfaWRzX3RvX3N0cmluZyhbcmVzdWx0c1t0
ZXN0XV0pCisgICAgICAgICAgICByZXN1bHRzWyd1dWlkJ10gPSBzZWxmLnV1aWQKKyAgICAgICAg
ICAgIHJlc3VsdHNbJ3N0YXJ0X3RpbWUnXSA9IGNhbGVuZGFyLnRpbWVnbShzZWxmLnN0YXJ0X3Rp
bWUudGltZXR1cGxlKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cworCisgICAgY2xhc3Mg
VGVzdEZhaWx1cmVzQnlDb21taXQoVGVzdEZhaWx1cmVzQmFzZSk6CisgICAgICAgIF9fdGFibGVf
bmFtZV9fID0gJ3Rlc3RfZmFpbHVyZXNfYnlfY29tbWl0JworICAgICAgICB1dWlkID0gY29sdW1u
cy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRl
cj0nREVTQycpCisgICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShwcmlt
YXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorCisgICAgY2xhc3MgVGVzdEZhaWx1cmVzQnlT
dGFydFRpbWUoVGVzdEZhaWx1cmVzQmFzZSk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3Rl
c3RfZmFpbHVyZXNfYnlfc3RhcnRfdGltZScKKyAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMu
RGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRl
cj0nREVTQycpCisgICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKworICAgIGNsYXNzIFVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNC
eUNvbW1pdChUZXN0RmFpbHVyZXNCYXNlKToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAndW5l
eHBlY3RlZF90ZXN0X2ZhaWx1cmVzX2J5X2NvbW1pdCcKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMu
QmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9
J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKKyAgICAgICAgc3RhcnRfdGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFy
eV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKworICAgIGNsYXNzIFVuZXhwZWN0ZWRUZXN0RmFp
bHVyZXNCeVN0YXJ0VGltZShUZXN0RmFpbHVyZXNCYXNlKToKKyAgICAgICAgX190YWJsZV9uYW1l
X18gPSAndW5leHBlY3RlZF90ZXN0X2ZhaWx1cmVzX2J5X3N0YXJ0X3RpbWUnCisgICAgICAgIHN0
YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1bW5zLlRleHQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMu
QmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRmFpbHVyZUNvbnRleHQs
IHNlbGYpLl9faW5pdF9fKCd0ZXN0LWZhaWx1cmVzJywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAg
ICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShz
ZWxmLlRlc3RGYWlsdXJlc0J5Q29tbWl0KQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3Jl
YXRlX3RhYmxlKHNlbGYuVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUpCisgICAgICAgICAgICBzZWxm
LmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21t
aXQpCisgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5VbmV4cGVj
dGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUpCisKKyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29u
ZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5vbmUp
OgorICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3IgdGltZS50aW1lKCkKKyAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6CisgICAgICAgICAgICB0aW1l
c3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lc3RhbXApKQorCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0sIGdvdCB7
dHlwZShzdWl0ZSl9JykKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRh
dGV0aW1lKToKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20odGlt
ZXN0YW1wLnRpbWV0dXBsZSgpKQorCisgICAgICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAg
ICAgICAgdXVpZCA9IHNlbGYuY29tbWl0X2NvbnRleHQudXVpZF9mb3JfY29tbWl0cyhjb21taXRz
KQorICAgICAgICAgICAgICAgIHR0bCA9IGludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RP
X1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNl
bGYudHRsX3NlY29uZHMgZWxzZSBOb25lCisKKyAgICAgICAgICAgICAgICBkZWYgY2FsbGJhY2so
dGVzdCwgcmVzdWx0LCBmYWlsdXJlcywgdW5leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgICAg
IGZhaWxlZF9yZXN1bHQgPSBFeHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lkcyhyZXN1bHQu
Z2V0KCdhY3R1YWwnLCAnJykpCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gc2V0KEV4
cGVjdGF0aW9ucy5zdHJpbmdfdG9fc3RhdGVfaWRzKHJlc3VsdC5nZXQoJ2V4cGVjdGVkJywgJycp
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9J
RFtFeHBlY3RhdGlvbnMuRkFJTF0gaW4gZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZC5hZGQoRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlv
bnMuVEVYVF0pCisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5hZGQoRXhwZWN0YXRp
b25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuQVVESU9dKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURb
RXhwZWN0YXRpb25zLklNQUdFXSkKKworICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3Jl
c3VsdCA9IHNldChmYWlsZWRfcmVzdWx0KSAtIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAg
IGlmIGZhaWxlZF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICB3b3JzdCA9IG1pbihm
YWlsZWRfcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgd29yc3QgPCBFeHBlY3Rh
dGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5XQVJOSU5HXToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlc1t0ZXN0XSA9IG1pbih3b3JzdCwgZmFpbHVyZXMu
Z2V0KHRlc3QsIEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLlBB
U1NdKSkKKworICAgICAgICAgICAgICAgICAgICBpZiB1bmV4cGVjdGVkX3Jlc3VsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHdvcnN0ID0gbWluKHVuZXhwZWN0ZWRfcmVzdWx0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgd29yc3QgPCBFeHBlY3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRF
X0lEW0V4cGVjdGF0aW9ucy5XQVJOSU5HXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bmV4cGVjdGVkW3Rlc3RdID0gbWluKHdvcnN0LCB1bmV4cGVjdGVkLmdldCh0ZXN0LCBFeHBlY3Rh
dGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5QQVNTXSkpCisKKyAgICAgICAg
ICAgICAgICB3aXRoIHNlbGYuY2Fzc2FuZHJhLmJhdGNoX3F1ZXJ5X2NvbnRleHQoKToKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0LmJyYW5jaF9r
ZXlzX2Zvcl9jb21taXRzKGNvbW1pdHMpOgorICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZXMgPSB7fQorICAgICAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZCA9IHt9CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEV4cGVjdGF0aW9ucy5pdGVyYXRlX3Rocm91Z2hfbmVzdGVkX3Jl
c3VsdHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzLmdldCgncmVz
dWx0cycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSB0ZXN0LCByZXN1bHQ6
IGNhbGxiYWNrKHRlc3QsIHJlc3VsdCwgZmFpbHVyZXM9ZmFpbHVyZXMsIHVuZXhwZWN0ZWQ9dW5l
eHBlY3RlZCksCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5UZXN0RmFpbHVyZXNCeUNvbW1pdCwgc2VsZi5UZXN0
RmFpbHVyZXNCeVN0YXJ0VGltZV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j
b25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmFuY2g9YnJhbmNoLCB1dWlkPXV1aWQsIHR0bD10dGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0
X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cz1q
c29uLmR1bXBzKGZhaWx1cmVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5VbmV4cGVjdGVkVGVzdEZh
aWx1cmVzQnlDb21taXQsIHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lXToK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5p
bnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwg
c3VpdGU9c3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFu
Y2gsIHV1aWQ9dXVpZCwgdHRsPXR0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10aW1lc3RhbXAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzPWpzb24uZHVtcHModW5leHBlY3RlZCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnRpYWxfc3RhdHVzKGUpCisgICAg
ICAgIHJldHVybiBzZWxmLnBhcnRpYWxfc3RhdHVzKCkKKworICAgIGRlZiBfZmFpbHVyZXMoCisg
ICAgICAgICAgICBzZWxmLCBhbGxfdGFibGUsIHVuZXhwZWN0ZWRfdGFibGUsIGNvbmZpZ3VyYXRp
b25zLCBzdWl0ZSwgcmVjZW50PVRydWUsCisgICAgICAgICAgICBicmFuY2g9Tm9uZSwgYmVnaW49
Tm9uZSwgZW5kPU5vbmUsCisgICAgICAgICAgICBiZWdpbl9xdWVyeV90aW1lPU5vbmUsIGVuZF9x
dWVyeV90aW1lPU5vbmUsCisgICAgICAgICAgICB1bmV4cGVjdGVkPVRydWUsIGNvbGxhcHNlZD1U
cnVlLCBsaW1pdD1ERUZBVUxUX0xJTUlULAorICAgICk6CisgICAgICAgIHRhYmxlID0gdW5leHBl
Y3RlZF90YWJsZSBpZiB1bmV4cGVjdGVkIGVsc2UgYWxsX3RhYmxlCisgICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKHN1aXRlLCBzdHIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhw
ZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQorCisgICAgICAgIGRlZiBnZXRf
dGltZSh0aW1lKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGltZSwgZGF0ZXRpbWUpOgor
ICAgICAgICAgICAgICAgIHJldHVybiB0aW1lCisgICAgICAgICAgICBlbGlmIHRpbWU6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWUpKQor
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAg
ICBpZiBjb2xsYXBzZWQ6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0KCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0ge30KKworICAgICAgICAgICAgZm9y
IGNvbmZpZ3VyYXRpb24gaW4gY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgZm9yIGNv
bmZpZywgdmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnNlbGVjdF9mcm9tX3Rh
YmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCisgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFi
bGVfbmFtZV9fLCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQs
CisgICAgICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBzZGs9Y29uZmlndXJhdGlvbi5zZGss
IGJyYW5jaD1icmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVks
CisgICAgICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21taXRDb250ZXh0LmNvbnZlcnRfdG9f
dXVpZChiZWdpbiksCisgICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1Db21taXRDb250ZXh0
LmNvbnZlcnRfdG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQudGltZXN0YW1wX3RvX3V1aWQoKSks
CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0ZT1nZXRfdGltZShiZWdpbl9xdWVy
eV90aW1lKSwgc3RhcnRfdGltZV9fbHRlPWdldF90aW1lKGVuZF9xdWVyeV90aW1lKSwKKyAgICAg
ICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgKS5pdGVtcygpOgor
ICAgICAgICAgICAgICAgICAgICBpZiBjb2xsYXBzZWQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgdmFsdWUgaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0
ZXN0IGluIHZhbHVlLnVucGFjaygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB0ZXN0IG5vdCBpbiBbJ3V1aWQnLCAnc3RhcnRfdGltZSddOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZCh0ZXN0KQorICAgICAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29uZmlnOiBbdmFs
dWUudW5wYWNrKCkgZm9yIHZhbHVlIGluIHZhbHVlc119KQorCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0CisKKyAgICBkZWYgZmFpbHVyZXNfYnlfY29tbWl0KHNlbGYsICphcmdzLCAqKmt3YXJn
cyk6CisgICAgICAgIHJldHVybiBzZWxmLl9mYWlsdXJlcyhzZWxmLlRlc3RGYWlsdXJlc0J5Q29t
bWl0LCBzZWxmLlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNCeUNvbW1pdCwgKmFyZ3MsICoqa3dhcmdz
KQorCisgICAgZGVmIGZhaWx1cmVzX2J5X3N0YXJ0X3RpbWUoc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZhaWx1cmVzKHNlbGYuVGVzdEZhaWx1cmVzQnlTdGFy
dFRpbWUsIHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lLCAqYXJncywgKipr
d2FyZ3MpCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9mYWlsdXJl
X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHRpbWUKKworZnJvbSBmYWtlcmVkaXMg
aW1wb3J0IEZha2VTdHJpY3RSZWRpcworZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKK2Zy
b20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0
aW9uCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNz
YW5kcmFDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRl
eHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQorZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5Citmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCitmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZQorCisKK2NsYXNzIEZhaWx1cmVDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UpOgorICAgIEtFWVNQQUNFID0gJ2ZhaWx1cmVfY29udGV4dF90ZXN0X2tleXNwYWNl
JworCisgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uo
a2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZh
Y3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9
c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQorICAgICAgICBNb2NrTW9kZWxG
YWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCwgdGVzdF9yZXN1bHRzPWRpY3QoCisg
ICAgICAgICAgICBkZXRhaWxzPWRpY3QobGluaz0nZHVtbXktbGluaycpLAorICAgICAgICAgICAg
cnVuX3N0YXRzPWRpY3QodGVzdHNfc2tpcHBlZD0wKSwKKyAgICAgICAgICAgIHJlc3VsdHM9ewor
ICAgICAgICAgICAgICAgICdmYXN0JzogeworICAgICAgICAgICAgICAgICAgICAnZW5jb2Rpbmcn
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNhY2hlZC1ib20uaHRtbCc6IGRpY3Qo
ZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAnY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZB
SUwnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICAn
Y3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J1BBU1MnLCB0
aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWxpbmstY2hhcnNldC5odG1s
JzogZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nUEFTUycsIHRpbWU9MS4yKSwKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAg
ICAgICkpCisgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKHNlbGYubW9k
ZWwpCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKKyAgICBkZWYgdGVzdF9mYWlsdXJlc19jb2xsYXBzZWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICByZXN1bHRzID0g
c2VsZi5tb2RlbC5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfY29tbWl0KAorICAgICAgICAg
ICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdS
ZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCisgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3Rz
JywgcmVjZW50PVRydWUsIHVuZXhwZWN0ZWQ9RmFsc2UsCisgICAgICAgICkKKworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXN1bHRzLCBzZXQoWydmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnLCAnZmFz
dC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJ10pKQorCisgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRlc3RfdW5l
eHBlY3RlZF9mYWlsdXJlc19jb2xsYXBzZWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICByZXN1bHRzID0gc2VsZi5tb2Rl
bC5mYWlsdXJlX2NvbnRleHQuZmFpbHVyZXNfYnlfY29tbWl0KAorICAgICAgICAgICAgY29uZmln
dXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywg
Zmxhdm9yPSd3azEnKV0sCisgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50
PVRydWUsCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRz
KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBzZXQoWydmYXN0L2VuY29k
aW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnXSkpCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAg
ICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLmZhaWx1cmVfY29udGV4dC5mYWlsdXJlc19ieV9jb21t
aXQoCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0n
TWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKKyAgICAgICAgICAgIHN1aXRl
PSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSwgY29sbGFwc2VkPUZhbHNlLCB1bmV4cGVjdGVk
PUZhbHNlLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0
cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QocmVzdWx0cy52YWx1ZXMo
KSlbMF0pLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmVzdWx0cy52YWx1ZXMo
KSlbMF1bMF0sIHsKKyAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0
bWwnOiAnRkFJTCcsCisgICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZh
dWx0LnhodG1sJzogJ0ZBSUwnLAorICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBsaXN0KHJlc3Vs
dHMudmFsdWVzKCkpWzBdWzBdWydzdGFydF90aW1lJ10sCisgICAgICAgICAgICAndXVpZCc6IDE1
MzgwMjk0NzkwMAorICAgICAgICB9KQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlcyhz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEp
CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLmZhaWx1cmVfY29udGV4dC5mYWlsdXJlc19i
eV9jb21taXQoCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0
Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKKyAgICAgICAgICAg
IHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSwgY29sbGFwc2VkPUZhbHNlCisgICAg
ICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChyZXN1bHRzLnZhbHVlcygpKVswXSksIDUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXN1bHRzLnZhbHVlcygpKVswXVswXSwgewor
ICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCc6ICdGQUlMJywK
KyAgICAgICAgICAgICdzdGFydF90aW1lJzogbGlzdChyZXN1bHRzLnZhbHVlcygpKVswXVswXVsn
c3RhcnRfdGltZSddLAorICAgICAgICAgICAgJ3V1aWQnOiAxNTM4MDI5NDc5MDAKKyAgICAgICAg
fSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5
CShyZXZpc2lvbiAyNTE5OTMpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9tb2RlbC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29uCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnVwbG9h
ZF9jb250ZXh0IGltcG9ydCBVcGxvYWRDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnN1
aXRlX2NvbnRleHQgaW1wb3J0IFN1aXRlQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC50
ZXN0X2NvbnRleHQgaW1wb3J0IFRlc3RDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmZh
aWx1cmVfY29udGV4dCBpbXBvcnQgRmFpbHVyZUNvbnRleHQKIAogCiBjbGFzcyBNb2RlbChvYmpl
Y3QpOgpAQCAtNjYsMTMgKzY3LDE4IEBAIGNsYXNzIE1vZGVsKG9iamVjdCk6CiAgICAgICAgICAg
ICBjb21taXRfY29udGV4dD1zZWxmLmNvbW1pdF9jb250ZXh0LAogICAgICAgICAgICAgdHRsX3Nl
Y29uZHM9c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAogICAgICAgICApCisgICAgICAgIHNlbGYu
ZmFpbHVyZV9jb250ZXh0ID0gRmFpbHVyZUNvbnRleHQoCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uX2NvbnRleHQ9c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQsCisgICAgICAgICAgICBjb21t
aXRfY29udGV4dD1zZWxmLmNvbW1pdF9jb250ZXh0LAorICAgICAgICAgICAgdHRsX3NlY29uZHM9
c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAorICAgICAgICApCiAgICAgICAgIHNlbGYuY2lfY29u
dGV4dCA9IENJQ29udGV4dCgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fY29udGV4dD1zZWxm
LmNvbmZpZ3VyYXRpb25fY29udGV4dCwKICAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYu
Y29tbWl0X2NvbnRleHQsCiAgICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRs
X3NlY29uZHMsCiAgICAgICAgICkKIAotICAgICAgICBmb3IgY29udGV4dCBpbiBbc2VsZi5zdWl0
ZV9jb250ZXh0LCBzZWxmLnRlc3RfY29udGV4dCwgc2VsZi5jaV9jb250ZXh0XToKKyAgICAgICAg
Zm9yIGNvbnRleHQgaW4gW3NlbGYuc3VpdGVfY29udGV4dCwgc2VsZi50ZXN0X2NvbnRleHQsIHNl
bGYuY2lfY29udGV4dCwgc2VsZi5mYWlsdXJlX2NvbnRleHRdOgogICAgICAgICAgICAgc2VsZi51
cGxvYWRfY29udGV4dC5yZWdpc3Rlcl91cGxvYWRfY2FsbGJhY2soY29udGV4dC5uYW1lLCBjb250
ZXh0LnJlZ2lzdGVyKQogCiAgICAgICAgIHNlbGYuYXJjaGl2ZV9jb250ZXh0ID0gQXJjaGl2ZUNv
bnRleHQoCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRl
cy9kb2N1bWVudGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1sCShyZXZpc2lvbiAyNTE5
OTMpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1
bWVudGF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw3ICszNDMsNDMgQEAgY29uc3Qg
ZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZpZ3Vy
YXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJlIGJv
dGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2Nv
bmZpZ3VyYXRpb24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1hMSZndCwgJmx0cnVuLWEyJmd0LCAm
bHRydW4tYjEmZ3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxsIHRoZSBhZmZvcm1lbnRpb25lZCBz
aW5nbGUgdGVzdCByZXN1bHQgZGljdGlvbmFyeS5gLAogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICApLAotICAgICAgICBdLCAnQ0kgTGlua3MnOiBbCisgICAgICAgIF0sICdGYWlsdXJl
IEFuYWx5c2lzJzogWworICAgICAgICAgICAgYFJlc3VsdHMgZGF0YWJhc2VzIHByb3ZpZGUgYSBm
ZXcgQVBJcyB0byBhc3Npc3QgaW4gdGhlIGludmVzdGlnYXRpb24gb2YgdGVzdCBmYWlsdXJlcy4g
VGhlc2UgYW5hbHlzaXMgZW5kcG9pbnRzIGFnZ3JlZ2F0ZSBkYXRhIGZyb20gbXVsdGlwbGUgdGVz
dCBydW5zIGZvciBjb25zdW1wdGlvbiBieSBib3RoIGh1bWFucyBhbmQgYXV0b21hdGVkIHN5c3Rl
bXMuYCwKKyAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCisgICAgICAgICAgICAgICAgJy9h
cGkvZmFpbHVyZXMvJmx0c3VpdGUmZ3QnLAorICAgICAgICAgICAgICAgIFsnR0VUJ10sCisgICAg
ICAgICAgICAgICAgWydBZ2dyZWdhdGlvbicsICdCcmFuY2gnLCAnQnJhbmNoJywgJ0NvbmZpZ3Vy
YXRpb24nLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdUaW1lJywgJ1VVSUQnXSwKKyAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIGBSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0cyB3
aGljaCBmYWlsZWQgZHVyaW5nIHRlc3QgcnVucyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGNyaXRl
cmlhLiBXaGVuIGNvbGxhcHNlZCwgdGhlc2UgbGlzdGVkIHdpbGwgYmUgYSBzb3J0ZWQgbGlzdCBs
b29raW5nIGxpa2UgdGhpczpgLAorICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ1tcbicg
KworICAgICAgICAgICAgICAgICAgICAnICAgICJzdWl0ZS5zdWItMS50ZXN0LTEiLFxuJyArCisg
ICAgICAgICAgICAgICAgICAgICcgICAgInN1aXRlLnN1Yi0xLnRlc3QtMiIsXG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgJyAgICAic3VpdGUuc3ViLTIudGVzdC0xIlxuJyArCisgICAgICAgICAg
ICAgICAgICAgICddJyksCisgICAgICAgICAgICAgICAgICAgIGBXaGVuIHVuY29sbGFwc2VkLCB0
aGVzZSByZXN1bHRzIHdpbGwgYmUgc2VwYXJhdGVkIGJ5IHRoZSB1cGxvYWQgdGhhdCBnZW5lcmF0
ZWQgdGhlbS4gVGhlc2UgcmVzdWx0cyBhcmUgbGFpZCBvdXQgbXVjaCBsaWtlIHRoZSAke2xvY2Fs
TGluayhbJ0FQSScsICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUmZ3QnXSwgJy9hcGkvcmVzdWx0cy8m
bHRzdWl0ZSZndCcpfSBhbmQgJHtsb2NhbExpbmsoWydBUEknLCAnL2FwaS9yZXN1bHRzLyZsdHN1
aXRlJmd0LyZsdHRlc3QmZ3QnXSwgJy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZndC8mbHR0ZXN0Jmd0
Jyl9IGVuZHBvaW50cy5gLAorICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ1tcbicgKwor
ICAgICAgICAgICAgICAgICAgICAnICAgIHtcbicgKworICAgICAgICAgICAgICAgICAgICAnICAg
ICAgICAiY29uZmlndXJhdGlvbiI6IDxjb25maWd1cmF0aW9uLW9iamVjdC1hPixcbicgKworICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICAicmVzdWx0cyI6IHtcbicgKworICAgICAgICAgICAg
ICAgICAgICAnICAgICAgICAgICAgInN0YXJ0X3RpbWUiOiA8VVRDIHRpbWUgdGVzdCBydW4gc3Rh
cnRlZD4sXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJ1dWlkIjogPFVV
SUQgZm9yIHRlc3QgcnVuPixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAg
InN1aXRlLnN1Yi0xLnRlc3QtMSI6ICJGQUlMIixcbicgKworICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICAgICAgInN1aXRlLnN1Yi0xLnRlc3QtMiI6ICJGQUlMIixcbicgKworICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICB9XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICB9LCB7
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgImNvbmZpZ3VyYXRpb24iOiA8Y29u
ZmlndXJhdGlvbi1vYmplY3QtYj4sXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
InJlc3VsdHMiOiB7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJzdGFy
dF90aW1lIjogPFVUQyB0aW1lIHRlc3QgcnVuIHN0YXJ0ZWQ+LFxuJyArCisgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgICAgICAidXVpZCI6IDxVVUlEIGZvciB0ZXN0IHJ1bj4sXG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJzdWl0ZS5zdWItMS50ZXN0LTEiOiAiRkFJ
TCIsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJzdWl0ZS5zdWItMi50
ZXN0LTEiOiAiQ1JBU0giLFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH1cbicg
KworICAgICAgICAgICAgICAgICAgICAnICAgIH1cbicgKworICAgICAgICAgICAgICAgICAgICAn
XScpLAorICAgICAgICAgICAgICAgICAgICBgd2hlcmUgJmx0Y29uZmlndXJhdGlvbi1vYmplY3Qt
YSZndCBhbmQgJmx0Y29uZmlndXJhdGlvbi1vYmplY3QtYiZndCBhcmUgYm90aCAke2xvY2FsTGlu
ayhbJ1F1ZXJ5IFBhcmFtZXRlcnMnLCAnQ29uZmlndXJhdGlvbiddLCAnY29uZmlndXJhdGlvbiBv
YmplY3RzJyl9Jy5gLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAorICAgICAg
ICBdLCdDSSBMaW5rcyc6IFsKICAgICAgICAgICAgIGBSZXN1bHRzIGRhdGFiYXNlIGluc3RhbmNl
cyBhcmUgdXN1YWxseSBzdG9yaW5nIHRlc3QgcmVzdWx0cyBmcm9tIHNvbWUgc29ydCBvZiBjb250
aW51b3VzIGludGVncmF0aW9uIHN5c3RlbS4gV2hpbGUgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZG9l
c24ndCBhc3N1bWUgYW55IHBhcnRpY3VsYXIgY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW0s
IGl0IGRvZXMgbWFrZSBzb21lIGJhc2ljIGFzc3VtcHRpb25zLiBUaGUgcmVzdWx0cyBkYXRhYmFz
ZSBhc3N1bWVzIHRoYXQgZXZlcnkgdXBsb2FkIGhhcyBhIFVSTCBhc3NvY2lhdGVkIHdpdGggaXQg
YW5kIHRoYXQgZXZlcnkgdXBsb2FkIHdhcyBydW4gb24gYSBzcGVjaWZpYyBtYWNoaW5lLiBBZGRp
dGlvbmFsbHksIHRoZSByZXN1bHRzIGRhdGFiYXNlIGFzc3VtZXMgdGhhdCBmb3IgYSBnaXZlbiBj
b25maWd1cmF0aW9uLCB0aGVyZSBpcyBhIGNvcnJlc3BvbmRpbmcgJ3F1ZXVlJyB0aGF0IGFsbCBj
b250aW51b3VzIGludGVncmF0aW9uIHJ1bnMgd2l0aCB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRp
b24gYXJlIGFzc29jaWF0ZWQgd2l0aGAsCiAgICAgICAgICAgICBgSWYgdGhlc2UgYXNzdW1wdGlv
bnMgYXJlbid0IHRydWUgZm9yIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0cyBk
YXRhYmFzZSwgb3IgaWYgVVJMcyBhcmUgbm90IGluY2x1ZGVkIGluIHVwbG9hZCBkYXRhLCB0aGUg
Y29udGludW91cyBpbnRlZ3JhdGlvbiBlbmRwb2ludHMgbWF5IGJlIGRlYWQgbGlua3MuIFRoYXQg
c2hvdWxkIG5vdCBlZmZlY3QgdGhlIG9wZXJhdGlvbiBvciB1c2FnZSBvZiB0aGUgcmVzdWx0cyBk
YXRhYmFzZS5gLAogICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKQEAgLTQxOCw2ICs0NTQs
MTQgQEAgY29uc3QgZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAgICksCiAgICAgICAgIF0s
CiAgICAgfSwgJ1F1ZXJ5IFBhcmFtZXRlcnMnOiB7CisgICAgICAgICdBZ2dyZWdhdGlvbic6IFsK
KyAgICAgICAgICAgIGBTb21lIGVuZHBvaW50cyBpbiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBhZ2dy
ZWdhdGUgZGF0YSBmcm9tIG11bHRpcGxlIHRlc3QgcnVucy4gU3VjaCBlbmRwb2ludHMgYWNjZXB0
IHF1ZXJ5IHBhcmFtZXRlcnMgdGhhdCBjb250cm9sIGhvdyB0aGlzIGFnZ3JlZ2F0aW9uIGlzIHBy
ZWZvcm1lZC4gVGhlIGZpcnN0IG9mIHRoZXNlIGlzIHRoZSBjb2xsYXBzZWQgcGFyYW1ldGVyLCB3
aGljaCBpcyBzZXQgdG8gVHJ1ZSBieSBkZWZhdWx0IGluIGFnZ3JlZ2F0aW9uIGVuZHBvaW50czpg
LAorICAgICAgICAgICAgY29kZUJsb2NrKCdjb2xsYXBzZWQ9RmFsc2UnKSwKKyAgICAgICAgICAg
IGBUaGUgY29sbGFwc2VkIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCBhIHNpbmdsZSByZXN1bHQg
d2lsbCBiZSByZXR1cm5lZCBmb3IgYWxsIHVwbG9hZHMgd2hpY2ggbWF0Y2ggdGhlIHNwZWNpZmll
ZCBjcml0ZXJpYS4gSWYgZmFsc2UsIGFnZ3JlZ2F0aW9uIGVuZHBvaW50cyB3aWxsIHJldHVybiB0
aGUgcmVzdWx0cyB3aGljaCB3b3VsZCBoYXZlIG90aGVyd2lzZSBiZWVuIGFnZ3JlZ2F0ZWQuYCwK
KyAgICAgICAgICAgIGBCZWNhdXNlIHRoZSByZXN1bHRzIGRhdGFiYXNlIGRpc3Rpbmd1aXNoZXMg
YmV0d2VlbiBleHBlY3RlZCBhbmQgdW5leHBlY3RlZCBmYWlsdXJlcywgZW5kcG9pbnRzIHByZWZv
cm1pbmcgYWdncmVnYXRpb24gd2lsbCBvZnRlbiBmaWx0ZXIgb3V0IGV4cGVjdGVkIGZhaWx1cmVz
LCBhbmQgZmxhZyB1bmV4cGVjdGVkIHBhc3Nlcy4gVG8gbW9kaWZ5IHRoZSBiZWhhdmlvciBvZiB0
aGVzZSBhbGdvcml0aG1zLCB0aGVzZSBlbmRwb2ludHMgd2lsbCBzdXBwb3J0IHRoZSB1bmV4cGVj
dGVkIGZsYWc6YCwKKyAgICAgICAgICAgIGNvZGVCbG9jaygndW5leHBlY3RlZD1GYWxzZScpLAor
ICAgICAgICAgICAgYEJ5IGRlZmF1bHQsIHRoaXMgZmxhZyBpcyAnVHJ1ZScgYW5kIGVuZHBvaW50
cyB3aWxsIGlnbm9yZSB0ZXN0cyB3aGljaCBtYXRjaGVkIHRoZWlyIGV4cGVjdGVkIGJlaGF2aW9y
LiBJZiBzZXQgdG8gJ0ZhbHNlJywgZW5kcG9pbnRzIHdpbGwgcmV0dXJuIHJlc3VsdHMgZm9yIGFs
bCBmYWlsaW5nIHRlc3RzLCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlaXIgZXhwZWN0YXRpb24gaXMu
YCwKKyAgICAgICAgXSwKICAgICAgICAgJ0JyYW5jaCc6IFsKICAgICAgICAgICAgIGBNb3N0IGRh
dGEgaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2UgaXMgcGFydGl0aW9uZWQgYnkgYnJhbmNoLCBhbmQg
aXQgaXMgZ2VuZXJhbGx5IGV4cGVjdGVkIHRoYXQgcmVzdWx0cyBvbiBzZXBlcmF0ZSBicmFuY2hl
cyBhcmUgaW5kZXBlbmRlbnQgb2Ygb25lIGFub3RoZXIuIEJ5IGRlZmF1bHQsIGVuZHBvaW50cyB0
aGF0IHN1cHBvcnQgdGhlIGJyYW5jaCBxdWVyeSB3aWxsIGFzc3VtZSB0aGF0IHRoZSBicmFuY2gg
aXMgbWFzdGVyIGZvciBnaXQgcmVwb3NpdG9yaWVzIGFuZCB0cnVuayBmb3IgU1ZOIHJlcG9zaXRv
cmllcyBpZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQuIElmIG11bHRpcGxlIHZhbHVlcyBmb3IgYnJh
bmNoIGFyZSBzcGVjaWZpZWQsIG9ubHkgdGhlIGZpcnN0IHdpbGwgYmUgcmVzcGVjdGVkLiBBIHJl
cXVlc3Qgd2hpY2ggaW50ZW5kZWQgdG8gc2VhcmNoIGZvciByZXN1bHRzIG9uIG9ubHkgcmVzdWx0
cyBvbiB0aGUgc2FmYXJpLTYwNyBicmFuY2ggd291bGQgdXNlIGEgcXVlcnkgbGlrZSB0aGlzOmAs
CiAgICAgICAgICAgICBjb2RlQmxvY2soJ2JyYW5jaD1zYWZhcmktNjA3JyksCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383168</attachid>
            <date>2019-11-08 14:59:01 -0800</date>
            <delta_ts>2019-11-08 16:04:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203905-20191108145900.patch</filename>
            <type>text/plain</type>
            <size>41617</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjI2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUzIEBACisyMDE5LTExLTA4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IExpc3QgZmFpbGluZyB0ZXN0cyBmb3Ig
Y3JpdGVyaWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzkwNQorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFha2FzaCBKYWluLgorCisgICAg
ICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5Ogor
ICAgICAgICAoQVBJUm91dGVzLl9faW5pdF9fKTogQWRkIEZhaWx1cmVDb250cm9sbGVyIGFuZCAv
ZmFpbHVyZXMgZW5kcG9pbnQuCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHk6IEFkZGVkLgorICAgICAgICAoRmFpbHVyZUNv
bnRyb2xsZXIpOiBBZGRlZCBGYWlsdXJlQ29udHJvbGxlciBvYmplY3QgdG8gZHJpdmUgL2ZhaWx1
cmUgZW5kcG9pbnQuCisgICAgICAgIChGYWlsdXJlQ29udHJvbGxlci5fX2luaXRfXyk6CisgICAg
ICAgIChGYWlsdXJlQ29udHJvbGxlci5mYWlsdXJlcyk6IFJldHVybiBhIGpzb24gbGlzdCBvZiBm
YWlsdXJlcyBmb3IgYSByYW5nZS4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAg
IChGYWlsdXJlQ29udHJvbGxlclRlc3QpOiBUZXN0IHRoZSAvZmFpbHVyZSBBUEkuCisgICAgICAg
IChGYWlsdXJlQ29udHJvbGxlclRlc3Quc2V0dXBfd2Vic2VydmVyKToKKyAgICAgICAgKEZhaWx1
cmVDb250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZCk6CisgICAgICAgIChGYWls
dXJlQ29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX2NvbGxhcHNlZCk6Cisg
ICAgICAgIChGYWlsdXJlQ29udHJvbGxlclRlc3QudGVzdF9mYWlsdXJlcyk6CisgICAgICAgIChG
YWlsdXJlQ29udHJvbGxlclRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKToKKyAgICAgICAg
KEZhaWx1cmVDb250cm9sbGVyVGVzdC50ZXN0X2ZhaWx1cmVfYnlfdGltZSk6CisgICAgICAgICog
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5OiBBZGRlZC4K
KyAgICAgICAgKEZhaWx1cmVDb250ZXh0KTogRGF0YWJhc2UgYWNjZXNzIHRvIHRhYmxlcyByZWNv
cmRpbmcgdGVzdCBmYWlsdXJlcy4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRlc3RGYWlsdXJl
c0Jhc2UpOgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQmFzZS51bnBhY2sp
OgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVGVzdEZhaWx1cmVzQnlDb21taXQpOiBTYXZlIHRl
c3QgZmFpbHVyZXMgc29ydGVkIGJ5IGNvbW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlRl
c3RGYWlsdXJlc0J5U3RhcnRUaW1lKTogU2F2ZSB0ZXN0IGZhaWx1cmVzIHNvcnRlZCBieSBzdGFy
dCB0aW1lLgorICAgICAgICAoRmFpbHVyZUNvbnRleHQuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5
Q29tbWl0KTogU2F2ZSB1bmV4cGVjdGVkIHRlc3QgZmFpbHVyZXMKKyAgICAgICAgc29ydGVkIGJ5
IGNvbW1pdC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0LlVuZXhwZWN0ZWRUZXN0RmFpbHVyZXNC
eVN0YXJ0VGltZSk6IFNhdmUgdW5leHBlY3RlZCB0ZXN0IGZhaWx1cmVzCisgICAgICAgIHNvcnRl
ZCBieSBjb21taXQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dC5fX2luaXRfXyk6CisgICAgICAg
IChGYWlsdXJlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVyIHRlc3QgZmFpbHVyZXMgdG8gZWFj
aCBvZiB0aGUgNCB0YWJsZXMgZm9yIGFuIHVwbG9hZC4KKyAgICAgICAgKEZhaWx1cmVDb250ZXh0
Ll9mYWlsdXJlcyk6IFJldHVybiBhIGxpc3Qgb2YgdGVzdCBmYWlsdXJlcyBmcm9tIGEgdGFibGUu
CisgICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9jb21taXQpOiBSZXR1cm4gYSBs
aXN0IG9mIHRlc3QgZmFpbHVyZXMgZnJvbSBhIHRhYmxlIHNvcnRlZAorICAgICAgICBieSBjb21t
aXQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dC5mYWlsdXJlc19ieV9zdGFydF90aW1lKTogUmV0
dXJuIGEgbGlzdCBvZiB0ZXN0IGZhaWx1cmVzIGZyb20gYSB0YWJsZQorICAgICAgICBzb3J0ZWQg
YnkgY29tbWl0LgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1
cmVfY29udGV4dF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGYWlsdXJlQ29udGV4dFRl
c3QpOgorICAgICAgICAoRmFpbHVyZUNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOgorICAgICAg
ICAoRmFpbHVyZUNvbnRleHRUZXN0LnRlc3RfZmFpbHVyZXNfY29sbGFwc2VkKToKKyAgICAgICAg
KEZhaWx1cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfY29sbGFwc2VkKToK
KyAgICAgICAgKEZhaWx1cmVDb250ZXh0VGVzdC50ZXN0X2ZhaWx1cmVzKToKKyAgICAgICAgKEZh
aWx1cmVDb250ZXh0VGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMpOgorICAgICAgICAqIHJl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5OgorICAgICAgICAoTW9kZWwuX19p
bml0X18pOgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVz
L2RvY3VtZW50YXRpb24uaHRtbDogQWRkIGRvY3VtZW50YXRpb24KKyAgICAgICAgZm9yIHRoZSAv
ZmFpbHVyZSBlbmRwb2ludC4KKwogMjAxOS0xMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBmbGFreSB0ZXN0cyBpbiBodHRwL3Rl
c3RzL2NhY2hlL2Rpc2stY2FjaGUKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI1MjI2MSkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBmcm9tIGZsYXNrIGltcG9ydCBhYm9y
dCwganNvbmlmeQogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFyY2hpdmVfY29udHJvbGxl
ciBpbXBvcnQgQXJjaGl2ZUNvbnRyb2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5j
b21taXRfY29udHJvbGxlciBpbXBvcnQgQ29tbWl0Q29udHJvbGxlcgogZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLmNpX2NvbnRyb2xsZXIgaW1wb3J0IENJQ29udHJvbGxlcgorZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmZhaWx1cmVfY29udHJvbGxlciBpbXBvcnQgRmFpbHVyZUNvbnRy
b2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9y
dCBTdWl0ZUNvbnRyb2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci50ZXN0X2NvbnRy
b2xsZXIgaW1wb3J0IFRlc3RDb250cm9sbGVyCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIu
dXBsb2FkX2NvbnRyb2xsZXIgaW1wb3J0IFVwbG9hZENvbnRyb2xsZXIKQEAgLTQyLDYgKzQzLDcg
QEAgY2xhc3MgQVBJUm91dGVzKEF1dGhlZEJsdWVwcmludCk6CiAKICAgICAgICAgc2VsZi5zdWl0
ZV9jb250cm9sbGVyID0gU3VpdGVDb250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9kZWwuc3VpdGVf
Y29udGV4dCkKICAgICAgICAgc2VsZi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0
ZXN0X2NvbnRleHQ9bW9kZWwudGVzdF9jb250ZXh0KQorICAgICAgICBzZWxmLmZhaWx1cmVfY29u
dHJvbGxlciA9IEZhaWx1cmVDb250cm9sbGVyKGZhaWx1cmVfY29udGV4dD1tb2RlbC5mYWlsdXJl
X2NvbnRleHQpCiAKICAgICAgICAgc2VsZi5jaV9jb250cm9sbGVyID0gQ0lDb250cm9sbGVyKGNp
X2NvbnRleHQ9bW9kZWwuY2lfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2Nv
bnRleHQpCiAgICAgICAgIHNlbGYuYXJjaGl2ZV9jb250cm9sbGVyID0gQXJjaGl2ZUNvbnRyb2xs
ZXIoY29tbWl0X2NvbnRyb2xsZXI9c2VsZi5jb21taXRfY29udHJvbGxlciwgYXJjaGl2ZV9jb250
ZXh0PW1vZGVsLmFyY2hpdmVfY29udGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2Nv
bnRleHQpCkBAIC02OCw2ICs3MCw4IEBAIGNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQp
OgogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1
aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0
aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRo
OnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRlc3RfY29udHJvbGxl
ci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgnR0VUJywpKQogCisgICAgICAgIHNlbGYuYWRk
X3VybF9ydWxlKCcvZmFpbHVyZXMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLWZhaWx1cmVzJywgc2Vs
Zi5mYWlsdXJlX2NvbnRyb2xsZXIuZmFpbHVyZXMsIG1ldGhvZHM9KCdHRVQnLCkpCisKICAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy91cmxzL3F1ZXVlJywgJ3F1ZXVlLXVybHMnLCBzZWxmLmNp
X2NvbnRyb2xsZXIudXJsc19mb3JfcXVldWVfZW5kcG9pbnQsIG1ldGhvZHM9KCdHRVQnLCkpCiAg
ICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXJscycsICdidWlsZC11cmxzJywgc2VsZi5jaV9j
b250cm9sbGVyLnVybHNfZm9yX2J1aWxkc19lbmRwb2ludCwgbWV0aG9kcz0oJ0dFVCcsKSkKIApJ
bmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2Nv
bnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnkKK2Zyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9m
b3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5j
b25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuY29uZmlndXJhdGlvbl9jb250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9x
dWVyeQorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0
IHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5Citmcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQudXRp
bCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnks
IGJvb2xlYW5fcXVlcnkKKworCitjbGFzcyBGYWlsdXJlQ29udHJvbGxlcihIYXNDb21taXRDb250
ZXh0KToKKyAgICBERUZBVUxUX0xJTUlUID0gNTAwMAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZhaWx1cmVfY29udGV4dCk6CisgICAgICAgIHN1cGVyKEZhaWx1cmVDb250cm9sbGVyLCBzZWxm
KS5fX2luaXRfXyhmYWlsdXJlX2NvbnRleHQuY29tbWl0X2NvbnRleHQpCisgICAgICAgIHNlbGYu
ZmFpbHVyZV9jb250ZXh0ID0gZmFpbHVyZV9jb250ZXh0CisKKyAgICBAcXVlcnlfYXNfa3dhcmdz
KCkKKyAgICBAdXVpZF9yYW5nZV9mb3JfcXVlcnkoKQorICAgIEBsaW1pdF9mb3JfcXVlcnkoREVG
QVVMVF9MSU1JVCkKKyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAgIEB0aW1lX3Jh
bmdlX2Zvcl9xdWVyeSgpCisgICAgZGVmIGZhaWx1cmVzKAorICAgICAgICBzZWxmLCBzdWl0ZT1O
b25lLAorICAgICAgICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKKyAgICAgICAg
YnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAorICAgICAgICBiZWdpbl9xdWVyeV90
aW1lPU5vbmUsIGVuZF9xdWVyeV90aW1lPU5vbmUsCisgICAgICAgIHVuZXhwZWN0ZWQ9Tm9uZSwg
Y29sbGFwc2VkPU5vbmUsCisgICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAg
ICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVl
c3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xl
YW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQorICAgICAgICB1bmV4cGVj
dGVkID0gYm9vbGVhbl9xdWVyeSgqdW5leHBlY3RlZClbMF0gaWYgdW5leHBlY3RlZCBlbHNlIFRy
dWUKKyAgICAgICAgY29sbGFwc2VkID0gYm9vbGVhbl9xdWVyeSgqY29sbGFwc2VkKVswXSBpZiBj
b2xsYXBzZWQgZWxzZSBUcnVlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAg
YWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKworICAgICAgICB3
aXRoIHNlbGYuZmFpbHVyZV9jb250ZXh0OgorICAgICAgICAgICAgcXVlcnlfZGljdCA9IGRpY3Qo
CisgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsCisgICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAgYnJh
bmNoPWJyYW5jaFswXSwgYmVnaW49YmVnaW4sIGVuZD1lbmQsCisgICAgICAgICAgICAgICAgYmVn
aW5fcXVlcnlfdGltZT1iZWdpbl9xdWVyeV90aW1lLCBlbmRfcXVlcnlfdGltZT1lbmRfcXVlcnlf
dGltZSwKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgdW5leHBlY3RlZD11bmV4cGVjdGVk
LCBjb2xsYXBzZWQ9Y29sbGFwc2VkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgbnVtX3Nw
ZWNpZmllZF9jb21taXRzID0gc3VtKFsxIGlmIGVsZW1lbnQgZWxzZSAwIGZvciBlbGVtZW50IGlu
IFtiZWdpbiwgZW5kXV0pCisgICAgICAgICAgICBudW1fc3BlY2lmaWVkX3RpbWVzdGFtcHMgPSBz
dW0oWzEgaWYgZWxlbWVudCBlbHNlIDAgZm9yIGVsZW1lbnQgaW4gW2JlZ2luX3F1ZXJ5X3RpbWUs
IGVuZF9xdWVyeV90aW1lXV0pCisKKyAgICAgICAgICAgIGlmIG51bV9zcGVjaWZpZWRfY29tbWl0
cyA+PSBudW1fc3BlY2lmaWVkX3RpbWVzdGFtcHM6CisgICAgICAgICAgICAgICAgZmluZF9mdW5j
dGlvbiA9IHNlbGYuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdAorCisgICAgICAg
ICAgICAgICAgZGVmIHNvcnRfZnVuY3Rpb24ocmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdFsndXVpZCddCisKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgZmluZF9mdW5jdGlvbiA9IHNlbGYuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X3N0YXJ0
X3RpbWUKKworICAgICAgICAgICAgICAgIGRlZiBzb3J0X2Z1bmN0aW9uKHJlc3VsdCk6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbJ3N0YXJ0X3RpbWUnXQorCisgICAgICAgICAg
ICBpZiBjb2xsYXBzZWQ6CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZXQoKQorICAgICAg
ICAgICAgICAgIHJlc3BvbnNlLnVwZGF0ZShmaW5kX2Z1bmN0aW9uKCoqcXVlcnlfZGljdCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoc29ydGVkKHJlc3BvbnNlKSkKKworICAgICAg
ICAgICAgcmVzcG9uc2UgPSBbXQorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBm
aW5kX2Z1bmN0aW9uKCoqcXVlcnlfZGljdCkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICByZXNw
b25zZS5hcHBlbmQoZGljdCgKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25m
aWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KGNvbmZpZyksCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtleT1zb3J0X2Z1bmN0aW9uKSwKKyAgICAgICAgICAg
ICAgICApKQorICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkocmVzcG9uc2UpCkluZGV4OiBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlcl91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2ZhaWx1cmVfY29udHJvbGxlcl91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2ZhaWx1cmVfY29udHJv
bGxlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHRpbWUKKworZnJvbSBmYWtl
cmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcworZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVk
aXMKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5hcGlfcm91dGVzIGltcG9ydCBBUElSb3V0
ZXMKK2Zyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXN0Y2FzZSBpbXBvcnQg
Rmxhc2tUZXN0Q2FzZQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3Nh
bmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAorZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKK2Zyb20g
cmVzdWx0c2RicHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKK2Zyb20g
cmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZv
ckRvY2tlclRlc3RDYXNlCisKKworY2xhc3MgRmFpbHVyZUNvbnRyb2xsZXJUZXN0KEZsYXNrVGVz
dENhc2UsIFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CisgICAgS0VZU1BBQ0UgPSAnZmFpbHVyZV9j
b250cm9sbGVyX3Rlc3Rfa2V5c3BhY2UnCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0
dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgorICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1j
bHMuS0VZU1BBQ0UpCisgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVk
aXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNy
ZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElS
b3V0ZXMobW9kZWwpKQorCisgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0
cyhtb2RlbCwgdGVzdF9yZXN1bHRzPWRpY3QoCisgICAgICAgICAgICBkZXRhaWxzPWRpY3QobGlu
az0nZHVtbXktbGluaycpLAorICAgICAgICAgICAgcnVuX3N0YXRzPWRpY3QodGVzdHNfc2tpcHBl
ZD0wKSwKKyAgICAgICAgICAgIHJlc3VsdHM9eworICAgICAgICAgICAgICAgICdmYXN0Jzogewor
ICAgICAgICAgICAgICAgICAgICAnZW5jb2RpbmcnOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAnY3NzLWNhY2hlZC1ib20uaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZB
SUwnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQtZGVm
YXVsdC54aHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEu
MiksCisgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhw
ZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J1BBU1MnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAnY3NzLWxpbmstY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFj
dHVhbD0nUEFTJywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgKSkKKyAgICAgICAgTW9ja01vZGVsRmFj
dG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZChzZWxmLCBjbGllbnQs
ICoqa3dhcmdzKToKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9h
cGkvZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZ1bmV4cGVj
dGVkPUZhbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgWydmYXN0L2VuY29k
aW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnLCAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZh
dWx0LnhodG1sJ10pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKKyAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQorICAg
IGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfY29sbGFwc2VkKHNlbGYsIGNsaWVudCwgKipr
d2FyZ3MpOgorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9m
YWlsdXJlcy9sYXlvdXQtdGVzdHM/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAxKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgWydmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0
bWwnXSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRl
c3RfZmFpbHVyZXMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2ZhaWx1cmVzL2xheW91dC10ZXN0cz9wbGF0Zm9y
bT1NYWMmc3R5bGU9RGVidWcmdW5leHBlY3RlZD1GYWxzZSZjb2xsYXBzZWQ9RmFsc2UnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKVswXVsncmVzdWx0cyddKSwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXVswXVsnZmFz
dC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ10sICdGQUlMJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbMF1bJ3Jlc3VsdHMnXVswXVsnZmFzdC9lbmNvZGlu
Zy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJ10sICdGQUlMJykKKworICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNl
LnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlcyhz
ZWxmLCBjbGllbnQsICoqa3dhcmdzKToKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvZmFpbHVyZXMvbGF5b3V0LXRlc3RzP3BsYXRmb3JtPU1hYyZzdHlsZT1E
ZWJ1ZyZjb2xsYXBzZWQ9RmFsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
LnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNl
Lmpzb24oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24o
KVswXVsncmVzdWx0cyddKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5q
c29uKClbMF1bJ3Jlc3VsdHMnXVswXVsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1s
J10sICdGQUlMJykKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAg
ZGVmIHRlc3RfZmFpbHVyZV9ieV90aW1lKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAg
ICByZXNwb25zZSA9IGNsaWVudC5nZXQoZid7c2VsZi5VUkx9L2FwaS9mYWlsdXJlcy9sYXlvdXQt
dGVzdHM/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJnJlY2VudD1GYWxzZSZhZnRlcl90aW1lPXt0
aW1lLnRpbWUoKSAtIDYwICogNjB9JmNvbGxhcHNlZD1GYWxzZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKKyAgICAgICAgcHJpbnQocmVzcG9uc2UuanNv
bigpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKVtpXVsncmVzdWx0cyddKSwgNSkKKyAgICAgICAgICAg
IGxhc3Rfc3RhcnRfdGltZSA9IDAKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzcG9uc2Uu
anNvbigpW2ldWydyZXN1bHRzJ106CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVy
RXF1YWwocmVzdWx0WydzdGFydF90aW1lJ10sIGxhc3Rfc3RhcnRfdGltZSkKKyAgICAgICAgICAg
ICAgICBsYXN0X3N0YXJ0X3RpbWUgPSByZXN1bHRbJ3N0YXJ0X3RpbWUnXQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4
dC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9mYWlsdXJlX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTUgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBjYWxlbmRhcgoraW1w
b3J0IGNvbGxlY3Rpb25zCitpbXBvcnQganNvbgoraW1wb3J0IHRpbWUKKworZnJvbSBjYXNzYW5k
cmEuY3FsZW5naW5lIGltcG9ydCBjb2x1bW5zCitmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9k
ZWxzIGltcG9ydCBNb2RlbAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAorZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmln
dXJhdGlvbgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC51cGxvYWRfY29udGV4dCBpbXBvcnQgVXBs
b2FkQ2FsbGJhY2tDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBp
bXBvcnQgRXhwZWN0YXRpb25zCisKKworY2xhc3MgRmFpbHVyZUNvbnRleHQoVXBsb2FkQ2FsbGJh
Y2tDb250ZXh0KToKKyAgICBERUZBVUxUX0xJTUlUID0gMTAwCisKKyAgICBjbGFzcyBUZXN0RmFp
bHVyZXNCYXNlKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIHN1aXRlID0gY29s
dW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgYnJh
bmNoID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAg
ICAgICAgdGVzdHMgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKKworICAgICAgICBkZWYg
dW5wYWNrKHNlbGYpOgorICAgICAgICAgICAgcmVzdWx0cyA9IGpzb24ubG9hZHMoc2VsZi50ZXN0
cykgaWYgc2VsZi50ZXN0cyBlbHNlIHt9CisgICAgICAgICAgICBmb3IgdGVzdCBpbiByZXN1bHRz
LmtleXMoKToKKyAgICAgICAgICAgICAgICByZXN1bHRzW3Rlc3RdID0gRXhwZWN0YXRpb25zLnN0
YXRlX2lkc190b19zdHJpbmcoW3Jlc3VsdHNbdGVzdF1dKQorICAgICAgICAgICAgcmVzdWx0c1sn
dXVpZCddID0gc2VsZi51dWlkCisgICAgICAgICAgICByZXN1bHRzWydzdGFydF90aW1lJ10gPSBj
YWxlbmRhci50aW1lZ20oc2VsZi5zdGFydF90aW1lLnRpbWV0dXBsZSgpKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdHMKKworICAgIGNsYXNzIFRlc3RGYWlsdXJlc0J5Q29tbWl0KFRlc3RGYWls
dXJlc0Jhc2UpOgorICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X2Nv
bW1pdCcKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1
bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgc3RhcnRf
dGltZSA9IGNvbHVtbnMuRGF0ZVRpbWUocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
KworICAgIGNsYXNzIFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKFRlc3RGYWlsdXJlc0Jhc2UpOgor
ICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd0ZXN0X2ZhaWx1cmVzX2J5X3N0YXJ0X3RpbWUnCisg
ICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorICAgICAgICBzZGsgPSBjb2x1
bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9
IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisKKyAgICBj
bGFzcyBVbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlDb21taXQoVGVzdEZhaWx1cmVzQmFzZSk6Cisg
ICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJlc19ieV9jb21t
aXQnCisgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKKyAgICAgICAgc2RrID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHN0YXJ0X3Rp
bWUgPSBjb2x1bW5zLkRhdGVUaW1lKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisK
KyAgICBjbGFzcyBVbmV4cGVjdGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUoVGVzdEZhaWx1cmVz
QmFzZSk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3VuZXhwZWN0ZWRfdGVzdF9mYWlsdXJl
c19ieV9zdGFydF90aW1lJworICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5EYXRlVGltZShw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykK
KyAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUpCisgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Cisg
ICAgICAgIHN1cGVyKEZhaWx1cmVDb250ZXh0LCBzZWxmKS5fX2luaXRfXygndGVzdC1mYWlsdXJl
cycsICphcmdzLCAqKmt3YXJncykKKworICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5UZXN0RmFpbHVyZXNCeUNvbW1pdCkKKyAg
ICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlRlc3RGYWlsdXJlc0J5
U3RhcnRUaW1lKQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYu
VW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0KQorICAgICAgICAgICAgc2VsZi5jYXNzYW5k
cmEuY3JlYXRlX3RhYmxlKHNlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5U3RhcnRUaW1lKQor
CisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGNvbW1pdHMsIHN1aXRlLCB0
ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2Uoc3VpdGUsIHN0cik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQorCisgICAg
ICAgICAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgb3IgdGltZS50aW1lKCkKKyAgICAgICAgICAg
IGlmIGlzaW5zdGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6CisgICAgICAgICAgICAgICAgdGlt
ZXN0YW1wID0gY2FsZW5kYXIudGltZWdtKHRpbWVzdGFtcC50aW1ldHVwbGUoKSkKKworICAgICAg
ICAgICAgd2l0aCBzZWxmOgorICAgICAgICAgICAgICAgIHV1aWQgPSBzZWxmLmNvbW1pdF9jb250
ZXh0LnV1aWRfZm9yX2NvbW1pdHMoY29tbWl0cykKKyAgICAgICAgICAgICAgICB0dGwgPSBpbnQo
KHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxf
c2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9uZQorCisg
ICAgICAgICAgICAgICAgZGVmIGNhbGxiYWNrKHRlc3QsIHJlc3VsdCwgZmFpbHVyZXMsIHVuZXhw
ZWN0ZWQpOgorICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcmVzdWx0ID0gRXhwZWN0YXRpb25z
LnN0cmluZ190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnYWN0dWFsJywgJycpKQorICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZCA9IHNldChFeHBlY3RhdGlvbnMuc3RyaW5nX3RvX3N0YXRlX2lk
cyhyZXN1bHQuZ2V0KCdleHBlY3RlZCcsICcnKSkpCisgICAgICAgICAgICAgICAgICAgIGlmIEV4
cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLkZBSUxdIGluIGV4cGVj
dGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKEV4cGVjdGF0aW9ucy5T
VFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0YXRpb25zLlRFWFRdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWQuYWRkKEV4cGVjdGF0aW9ucy5TVFJJTkdfVE9fU1RBVEVfSURbRXhwZWN0
YXRpb25zLkFVRElPXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLmFkZChFeHBl
Y3RhdGlvbnMuU1RSSU5HX1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5JTUFHRV0pCisKKyAgICAg
ICAgICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHQgPSBzZXQoZmFpbGVkX3Jlc3VsdCkgLSBl
eHBlY3RlZAorICAgICAgICAgICAgICAgICAgICBpZiBmYWlsZWRfcmVzdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgd29yc3QgPSBtaW4oZmFpbGVkX3Jlc3VsdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHdvcnN0IDwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBl
Y3RhdGlvbnMuV0FSTklOR106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXNb
dGVzdF0gPSBtaW4od29yc3QsIGZhaWx1cmVzLmdldCh0ZXN0LCBFeHBlY3RhdGlvbnMuU1RSSU5H
X1RPX1NUQVRFX0lEW0V4cGVjdGF0aW9ucy5QQVNTXSkpCisKKyAgICAgICAgICAgICAgICAgICAg
aWYgdW5leHBlY3RlZF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICB3b3JzdCA9IG1p
bih1bmV4cGVjdGVkX3Jlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHdvcnN0IDwg
RXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBlY3RhdGlvbnMuV0FSTklOR106Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZFt0ZXN0XSA9IG1pbih3b3JzdCwg
dW5leHBlY3RlZC5nZXQodGVzdCwgRXhwZWN0YXRpb25zLlNUUklOR19UT19TVEFURV9JRFtFeHBl
Y3RhdGlvbnMuUEFTU10pKQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmNhc3NhbmRyYS5i
YXRjaF9xdWVyeV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4g
c2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzID0ge30KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVuZXhwZWN0ZWQgPSB7fQorCisgICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3RhdGlv
bnMuaXRlcmF0ZV90aHJvdWdoX25lc3RlZF9yZXN1bHRzKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfcmVzdWx0cy5nZXQoJ3Jlc3VsdHMnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsYW1iZGEgdGVzdCwgcmVzdWx0OiBjYWxsYmFjayh0ZXN0LCByZXN1bHQsIGZhaWx1
cmVzPWZhaWx1cmVzLCB1bmV4cGVjdGVkPXVuZXhwZWN0ZWQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYuVGVz
dEZhaWx1cmVzQnlDb21taXQsIHNlbGYuVGVzdEZhaWx1cmVzQnlTdGFydFRpbWVdOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9y
b3dfd2l0aF9jb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
YWJsZS5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0ZT1z
dWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVp
ZD11dWlkLCB0dGw9dHRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZGs9Y29u
ZmlndXJhdGlvbi5zZGsgb3IgJz8nLCBzdGFydF90aW1lPXRpbWVzdGFtcCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdHM9anNvbi5kdW1wcyhmYWlsdXJlcyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGFi
bGUgaW4gW3NlbGYuVW5leHBlY3RlZFRlc3RGYWlsdXJlc0J5Q29tbWl0LCBzZWxmLlVuZXhwZWN0
ZWRUZXN0RmFpbHVyZXNCeVN0YXJ0VGltZV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLCBj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoLCB1dWlkPXV1aWQsIHR0bD10dGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAnPycs
IHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0cz1qc29uLmR1bXBzKHVuZXhwZWN0ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5wYXJ0aWFsX3N0YXR1cyhlKQorICAgICAgICByZXR1cm4gc2VsZi5wYXJ0aWFsX3N0YXR1
cygpCisKKyAgICBkZWYgX2ZhaWx1cmVzKAorICAgICAgICAgICAgc2VsZiwgYWxsX3RhYmxlLCB1
bmV4cGVjdGVkX3RhYmxlLCBjb25maWd1cmF0aW9ucywgc3VpdGUsIHJlY2VudD1UcnVlLAorICAg
ICAgICAgICAgYnJhbmNoPU5vbmUsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLAorICAgICAgICAgICAg
YmVnaW5fcXVlcnlfdGltZT1Ob25lLCBlbmRfcXVlcnlfdGltZT1Ob25lLAorICAgICAgICAgICAg
dW5leHBlY3RlZD1UcnVlLCBjb2xsYXBzZWQ9VHJ1ZSwgbGltaXQ9REVGQVVMVF9MSU1JVCwKKyAg
ICApOgorICAgICAgICB0YWJsZSA9IHVuZXhwZWN0ZWRfdGFibGUgaWYgdW5leHBlY3RlZCBlbHNl
IGFsbF90YWJsZQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWl0ZSwgc3RyKToKKyAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge3N0cn0gZm9yIHN1aXRlLCBn
b3Qge3R5cGUoc3VpdGUpfScpCisKKyAgICAgICAgZGVmIGdldF90aW1lKHRpbWUpOgorICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lLCBkYXRldGltZSk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRpbWUKKyAgICAgICAgICAgIGVsaWYgdGltZToKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZSkpCisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIGlmIGNvbGxhcHNlZDoKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBzZXQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSB7fQorCisgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBj
b25maWd1cmF0aW9uczoKKyAgICAgICAgICAgICAgICBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2Vs
Zi5jb25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0
aW9ucygKKyAgICAgICAgICAgICAgICAgICAgdGFibGUuX190YWJsZV9uYW1lX18sIGNvbmZpZ3Vy
YXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKKyAgICAgICAgICAgICAgICAg
ICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5jaCBvciBz
ZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKKyAgICAgICAgICAgICAgICAg
ICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGJlZ2luKSwKKyAgICAg
ICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGVu
ZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhcnRfdGltZV9fZ3RlPWdldF90aW1lKGJlZ2luX3F1ZXJ5X3RpbWUpLCBzdGFydF90aW1l
X19sdGU9Z2V0X3RpbWUoZW5kX3F1ZXJ5X3RpbWUpLAorICAgICAgICAgICAgICAgICAgICBsaW1p
dD1saW1pdCwKKyAgICAgICAgICAgICAgICApLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAg
IGlmIGNvbGxhcHNlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1
ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gdmFsdWUudW5wYWNr
KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Qgbm90IGluIFsndXVp
ZCcsICdzdGFydF90aW1lJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKHRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBhY2soKSBmb3IgdmFs
dWUgaW4gdmFsdWVzXX0pCisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBm
YWlsdXJlc19ieV9jb21taXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2ZhaWx1cmVzKHNlbGYuVGVzdEZhaWx1cmVzQnlDb21taXQsIHNlbGYuVW5leHBlY3Rl
ZFRlc3RGYWlsdXJlc0J5Q29tbWl0LCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZmFpbHVy
ZXNfYnlfc3RhcnRfdGltZShzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4g
c2VsZi5fZmFpbHVyZXMoc2VsZi5UZXN0RmFpbHVyZXNCeVN0YXJ0VGltZSwgc2VsZi5VbmV4cGVj
dGVkVGVzdEZhaWx1cmVzQnlTdGFydFRpbWUsICphcmdzLCAqKmt3YXJncykKSW5kZXg6IFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9mYWls
dXJlX2NvbnRleHRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgdGltZQorCitmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJl
ZGlzCitmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcworZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KK2Zyb20gcmVzdWx0c2Ri
cHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKK2Zyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3Nh
bmRyYUNvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGlt
cG9ydCBNb2NrTW9kZWxGYWN0b3J5Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3Np
dG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwudGVz
dF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwud2Fp
dF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCisKKwor
Y2xhc3MgRmFpbHVyZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CisgICAgS0VZ
U1BBQ0UgPSAnZmFpbHVyZV9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCisKKyAgICBkZWYgaW5pdF9k
YXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgorICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQ
QUNFKQorICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9
cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVh
dGVfa2V5c3BhY2U9VHJ1ZSkpCisgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVz
dWx0cyhzZWxmLm1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgKKyAgICAgICAgICAgIGRldGFpbHM9
ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAgICBydW5fc3RhdHM9ZGljdCh0ZXN0
c19za2lwcGVkPTApLAorICAgICAgICAgICAgcmVzdWx0cz17CisgICAgICAgICAgICAgICAgJ2Zh
c3QnOiB7CisgICAgICAgICAgICAgICAgICAgICdlbmNvZGluZyc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFj
dHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hh
cnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nRkFJTCcs
IHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC5odG1sJzog
ZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycsIHRpbWU9MS4yKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdQ
QVNTJywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgKSkKKyAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X2Zh
aWx1cmVzX2NvbGxhcHNlZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgorICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLmZhaWx1cmVf
Y29udGV4dC5mYWlsdXJlc19ieV9jb21taXQoCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1b
Q29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3dr
MScpXSwKKyAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSwgdW5l
eHBlY3RlZD1GYWxzZSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHJlc3VsdHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIHNldChbJ2Zh
c3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCcsICdmYXN0L2VuY29kaW5nL2Nzcy1jaGFy
c2V0LWRlZmF1bHQueGh0bWwnXSkpCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX2Nv
bGxhcHNlZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgorICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLmZhaWx1cmVfY29udGV4dC5m
YWlsdXJlc19ieV9jb21taXQoCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJh
dGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKKyAg
ICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9VHJ1ZSwKKyAgICAgICAgKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3VsdHMsIHNldChbJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20u
aHRtbCddKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQorICAgIGRlZiB0ZXN0X2ZhaWx1cmVzKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYu
bW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFz
ZScsIGZsYXZvcj0nd2sxJyldLAorICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHJl
Y2VudD1UcnVlLCBjb2xsYXBzZWQ9RmFsc2UsIHVuZXhwZWN0ZWQ9RmFsc2UsCisgICAgICAgICkK
KworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4obGlzdChyZXN1bHRzLnZhbHVlcygpKVswXSksIDUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXN1bHRzLnZhbHVlcygpKVswXVswXSwgeworICAgICAg
ICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNhY2hlZC1ib20uaHRtbCc6ICdGQUlMJywKKyAgICAg
ICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiAnRkFJTCcs
CisgICAgICAgICAgICAnc3RhcnRfdGltZSc6IGxpc3QocmVzdWx0cy52YWx1ZXMoKSlbMF1bMF1b
J3N0YXJ0X3RpbWUnXSwKKyAgICAgICAgICAgICd1dWlkJzogMTUzODAyOTQ3OTAwCisgICAgICAg
IH0pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKKyAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHNlbGYuaW5pdF9kYXRh
YmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgcmVzdWx0cyA9
IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0n
UmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAorICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsIHJlY2VudD1UcnVlLCBjb2xsYXBzZWQ9RmFsc2UKKyAgICAgICAgKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdWzBdLCB7CisgICAgICAgICAgICAnZmFzdC9l
bmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJzogJ0ZBSUwnLAorICAgICAgICAgICAgJ3N0YXJ0
X3RpbWUnOiBsaXN0KHJlc3VsdHMudmFsdWVzKCkpWzBdWzBdWydzdGFydF90aW1lJ10sCisgICAg
ICAgICAgICAndXVpZCc6IDE1MzgwMjk0NzkwMAorICAgICAgICB9KQpJbmRleDogVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkJKHJldmlzaW9uIDI1MjI2MSkK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJh
dGlvbl9jb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVw
bG9hZENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuc3VpdGVfY29udGV4dCBpbXBvcnQg
U3VpdGVDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQg
VGVzdENvbnRleHQKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuZmFpbHVyZV9jb250ZXh0IGltcG9y
dCBGYWlsdXJlQ29udGV4dAogCiAKIGNsYXNzIE1vZGVsKG9iamVjdCk6CkBAIC02NiwxMyArNjcs
MTggQEAgY2xhc3MgTW9kZWwob2JqZWN0KToKICAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNl
bGYuY29tbWl0X2NvbnRleHQsCiAgICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRf
dHRsX3NlY29uZHMsCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5mYWlsdXJlX2NvbnRleHQgPSBG
YWlsdXJlQ29udGV4dCgKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fY29udGV4dD1zZWxmLmNv
bmZpZ3VyYXRpb25fY29udGV4dCwKKyAgICAgICAgICAgIGNvbW1pdF9jb250ZXh0PXNlbGYuY29t
bWl0X2NvbnRleHQsCisgICAgICAgICAgICB0dGxfc2Vjb25kcz1zZWxmLmRlZmF1bHRfdHRsX3Nl
Y29uZHMsCisgICAgICAgICkKICAgICAgICAgc2VsZi5jaV9jb250ZXh0ID0gQ0lDb250ZXh0KAog
ICAgICAgICAgICAgY29uZmlndXJhdGlvbl9jb250ZXh0PXNlbGYuY29uZmlndXJhdGlvbl9jb250
ZXh0LAogICAgICAgICAgICAgY29tbWl0X2NvbnRleHQ9c2VsZi5jb21taXRfY29udGV4dCwKICAg
ICAgICAgICAgIHR0bF9zZWNvbmRzPXNlbGYuZGVmYXVsdF90dGxfc2Vjb25kcywKICAgICAgICAg
KQogCi0gICAgICAgIGZvciBjb250ZXh0IGluIFtzZWxmLnN1aXRlX2NvbnRleHQsIHNlbGYudGVz
dF9jb250ZXh0LCBzZWxmLmNpX2NvbnRleHRdOgorICAgICAgICBmb3IgY29udGV4dCBpbiBbc2Vs
Zi5zdWl0ZV9jb250ZXh0LCBzZWxmLnRlc3RfY29udGV4dCwgc2VsZi5jaV9jb250ZXh0LCBzZWxm
LmZhaWx1cmVfY29udGV4dF06CiAgICAgICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0LnJlZ2lz
dGVyX3VwbG9hZF9jYWxsYmFjayhjb250ZXh0Lm5hbWUsIGNvbnRleHQucmVnaXN0ZXIpCiAKICAg
ICAgICAgc2VsZi5hcmNoaXZlX2NvbnRleHQgPSBBcmNoaXZlQ29udGV4dCgKSW5kZXg6IFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBs
YXRlcy9kb2N1bWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDI1MjI2MSkKKysrIFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIGNvbnN0IGRvY3VtZW50YXRpb24gPSB7CiAg
ICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KAogICAgICAgICAgICAgICAgICcvYXBpL3Jlc3Vs
dHMvJmx0c3VpdGUmZ3QvJmx0dGVzdCZndCcsCiAgICAgICAgICAgICAgICAgWydHRVQnXSwKLSAg
ICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdCcmFuY2gnLCAnQ29uZmlndXJhdGlvbicsICdMaW1p
dCcsICdSZXBvc2l0b3J5JywgJ1RpbWUnLCAnVVVJRCddLAorICAgICAgICAgICAgICAgIFsnQnJh
bmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdUaW1lJywgJ1VV
SUQnXSwKICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgIGBBY2Nlc3MgcmVz
dWx0cyBmb3IgYSBzcGVjaWZpYyB0ZXN0IG9uIGEgc3BlY2lmaWMgY29tbWl0IHdpdGggYSBzcGVj
aWZpYyBjb25maWd1cmF0aW9uLiBUaGlzIGVuZHBvaW50IG9ubHkgcmV0dXJucyByZXN1bHRzIGZv
ciBhIHNpbmdsZSB0ZXN0LiBFYWNoIHJlc3VsdCBpcyBzdG9yZWQgaW4gZGljdGlvbmFyeSBmb3Jt
YXR0ZWQgbGlrZSB0aGlzOmAsCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyAr
CkBAIC0zNDMsNyArMzQzLDQzIEBAIGNvbnN0IGRvY3VtZW50YXRpb24gPSB7CiAgICAgICAgICAg
ICAgICAgICAgIGB3aGVyZSAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1hJmd0IGFuZCAmbHRjb25m
aWd1cmF0aW9uLW9iamVjdC1iJmd0IGFyZSBib3RoICR7bG9jYWxMaW5rKFsnUXVlcnkgUGFyYW1l
dGVycycsICdDb25maWd1cmF0aW9uJ10sICdjb25maWd1cmF0aW9uIG9iamVjdHMnKX0nIGFuZCAm
bHRydW4tYTEmZ3QsICZsdHJ1bi1hMiZndCwgJmx0cnVuLWIxJmd0IGFuZCAmbHRydW4tYjImZ3Qg
YXJlIGFsbCB0aGUgYWZmb3JtZW50aW9uZWQgc2luZ2xlIHRlc3QgcmVzdWx0IGRpY3Rpb25hcnku
YCwKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgKSwKLSAgICAgICAgXSwgJ0NJIExp
bmtzJzogWworICAgICAgICBdLCAnRmFpbHVyZSBBbmFseXNpcyc6IFsKKyAgICAgICAgICAgIGBS
ZXN1bHRzIGRhdGFiYXNlcyBwcm92aWRlIGEgZmV3IEFQSXMgdG8gYXNzaXN0IGluIHRoZSBpbnZl
c3RpZ2F0aW9uIG9mIHRlc3QgZmFpbHVyZXMuIFRoZXNlIGFuYWx5c2lzIGVuZHBvaW50cyBhZ2dy
ZWdhdGUgZGF0YSBmcm9tIG11bHRpcGxlIHRlc3QgcnVucyBmb3IgY29uc3VtcHRpb24gYnkgYm90
aCBodW1hbnMgYW5kIGF1dG9tYXRlZCBzeXN0ZW1zLmAsCisgICAgICAgICAgICBkb2N1bWVudEVu
ZHBvaW50KAorICAgICAgICAgICAgICAgICcvYXBpL2ZhaWx1cmVzLyZsdHN1aXRlJmd0JywKKyAg
ICAgICAgICAgICAgICBbJ0dFVCddLAorICAgICAgICAgICAgICAgIFsnQWdncmVnYXRpb24nLCAn
QnJhbmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAnTGltaXQnLCAnUmVwb3NpdG9yeScsICdUaW1lJywg
J1VVSUQnXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIGBSZXR1cm5z
IGEgbGlzdCBvZiB0ZXN0cyB3aGljaCBmYWlsZWQgZHVyaW5nIHRlc3QgcnVucyBtYXRjaGluZyB0
aGUgc3BlY2lmaWVkIGNyaXRlcmlhLiBXaGVuIGNvbGxhcHNlZCwgdGhlc2UgcmVzdWx0cyB3aWxs
IGJlIGEgc29ydGVkIGxpc3QgbG9va2luZyBsaWtlIHRoaXM6YCwKKyAgICAgICAgICAgICAgICAg
ICAgY29kZUJsb2NrKCdbXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAic3VpdGUuc3Vi
LTEudGVzdC0xIixcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICJzdWl0ZS5zdWItMS50
ZXN0LTIiLFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgInN1aXRlLnN1Yi0yLnRlc3Qt
MSJcbicgKworICAgICAgICAgICAgICAgICAgICAnXScpLAorICAgICAgICAgICAgICAgICAgICBg
V2hlbiB1bmNvbGxhcHNlZCwgdGhlc2UgcmVzdWx0cyB3aWxsIGJlIHNlcGFyYXRlZCBieSB0aGUg
dXBsb2FkIHRoYXQgZ2VuZXJhdGVkIHRoZW0uIFRoZXNlIHJlc3VsdHMgYXJlIGxhaWQgb3V0IG11
Y2ggbGlrZSB0aGUgJHtsb2NhbExpbmsoWydBUEknLCAnL2FwaS9yZXN1bHRzLyZsdHN1aXRlJmd0
J10sICcvYXBpL3Jlc3VsdHMvJmx0c3VpdGUmZ3QnKX0gYW5kICR7bG9jYWxMaW5rKFsnQVBJJywg
Jy9hcGkvcmVzdWx0cy8mbHRzdWl0ZSZndC8mbHR0ZXN0Jmd0J10sICcvYXBpL3Jlc3VsdHMvJmx0
c3VpdGUmZ3QvJmx0dGVzdCZndCcpfSBlbmRwb2ludHMuYCwKKyAgICAgICAgICAgICAgICAgICAg
Y29kZUJsb2NrKCdbXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICB7XG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgImNvbmZpZ3VyYXRpb24iOiA8Y29uZmlndXJhdGlvbi1v
YmplY3QtYT4sXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgInJlc3VsdHMiOiB7
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJzdGFydF90aW1lIjogPFVU
QyB0aW1lIHRlc3QgcnVuIHN0YXJ0ZWQ+LFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgICAgICAidXVpZCI6IDxVVUlEIGZvciB0ZXN0IHJ1bj4sXG4nICsKKyAgICAgICAgICAgICAg
ICAgICAgJyAgICAgICAgICAgICJzdWl0ZS5zdWItMS50ZXN0LTEiOiAiRkFJTCIsXG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJzdWl0ZS5zdWItMS50ZXN0LTIiOiAiRkFJ
TCIsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfVxuJyArCisgICAgICAgICAg
ICAgICAgICAgICcgICAgfSwge1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAgICJj
b25maWd1cmF0aW9uIjogPGNvbmZpZ3VyYXRpb24tb2JqZWN0LWI+LFxuJyArCisgICAgICAgICAg
ICAgICAgICAgICcgICAgICAgICJyZXN1bHRzIjoge1xuJyArCisgICAgICAgICAgICAgICAgICAg
ICcgICAgICAgICAgICAic3RhcnRfdGltZSI6IDxVVEMgdGltZSB0ZXN0IHJ1biBzdGFydGVkPixc
bicgKworICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgInV1aWQiOiA8VVVJRCBmb3Ig
dGVzdCBydW4+LFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAic3VpdGUu
c3ViLTEudGVzdC0xIjogIkZBSUwiLFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgICAg
ICAgICAic3VpdGUuc3ViLTIudGVzdC0xIjogIkNSQVNIIixcbicgKworICAgICAgICAgICAgICAg
ICAgICAnICAgICAgICB9XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICB9XG4nICsKKyAg
ICAgICAgICAgICAgICAgICAgJ10nKSwKKyAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNv
bmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3Qg
YXJlIGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24n
XSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfS5gLAorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICApLAorICAgICAgICBdLCdDSSBMaW5rcyc6IFsKICAgICAgICAgICAgIGBSZXN1bHRz
IGRhdGFiYXNlIGluc3RhbmNlcyBhcmUgdXN1YWxseSBzdG9yaW5nIHRlc3QgcmVzdWx0cyBmcm9t
IHNvbWUgc29ydCBvZiBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbS4gV2hpbGUgdGhlIHJl
c3VsdHMgZGF0YWJhc2UgZG9lc24ndCBhc3N1bWUgYW55IHBhcnRpY3VsYXIgY29udGludW91cyBp
bnRlZ3JhdGlvbiBzeXN0ZW0sIGl0IGRvZXMgbWFrZSBzb21lIGJhc2ljIGFzc3VtcHRpb25zLiBU
aGUgcmVzdWx0cyBkYXRhYmFzZSBhc3N1bWVzIHRoYXQgZXZlcnkgdXBsb2FkIGhhcyBhIFVSTCBh
c3NvY2lhdGVkIHdpdGggaXQgYW5kIHRoYXQgZXZlcnkgdXBsb2FkIHdhcyBydW4gb24gYSBzcGVj
aWZpYyBtYWNoaW5lLiBBZGRpdGlvbmFsbHksIHRoZSByZXN1bHRzIGRhdGFiYXNlIGFzc3VtZXMg
dGhhdCBmb3IgYSBnaXZlbiBjb25maWd1cmF0aW9uLCB0aGVyZSBpcyBhIGNvcnJlc3BvbmRpbmcg
J3F1ZXVlJyB0aGF0IGFsbCBjb250aW51b3VzIGludGVncmF0aW9uIHJ1bnMgd2l0aCB0aGF0IHNw
ZWNpZmljIGNvbmZpZ3VyYXRpb24gYXJlIGFzc29jaWF0ZWQgd2l0aGAsCiAgICAgICAgICAgICBg
SWYgdGhlc2UgYXNzdW1wdGlvbnMgYXJlbid0IHRydWUgZm9yIGEgcGFydGljdWxhciBpbnN0YW5j
ZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSwgb3IgaWYgVVJMcyBhcmUgbm90IGluY2x1ZGVkIGlu
IHVwbG9hZCBkYXRhLCB0aGUgY29udGludW91cyBpbnRlZ3JhdGlvbiBlbmRwb2ludHMgbWF5IGJl
IGRlYWQgbGlua3MuIFRoYXQgc2hvdWxkIG5vdCBlZmZlY3QgdGhlIG9wZXJhdGlvbiBvciB1c2Fn
ZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZS5gLAogICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2lu
dCgKQEAgLTQxOCw2ICs0NTQsMTQgQEAgY29uc3QgZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAg
ICAgICksCiAgICAgICAgIF0sCiAgICAgfSwgJ1F1ZXJ5IFBhcmFtZXRlcnMnOiB7CisgICAgICAg
ICdBZ2dyZWdhdGlvbic6IFsKKyAgICAgICAgICAgIGBTb21lIGVuZHBvaW50cyBpbiB0aGUgcmVz
dWx0cyBkYXRhYmFzZSBhZ2dyZWdhdGUgZGF0YSBmcm9tIG11bHRpcGxlIHRlc3QgcnVucy4gU3Vj
aCBlbmRwb2ludHMgYWNjZXB0IHF1ZXJ5IHBhcmFtZXRlcnMgdGhhdCBjb250cm9sIGhvdyB0aGlz
IGFnZ3JlZ2F0aW9uIGlzIHByZWZvcm1lZC4gVGhlIGZpcnN0IG9mIHRoZXNlIGlzIHRoZSBjb2xs
YXBzZWQgcGFyYW1ldGVyLCB3aGljaCBpcyBzZXQgdG8gVHJ1ZSBieSBkZWZhdWx0IGluIGFnZ3Jl
Z2F0aW9uIGVuZHBvaW50czpgLAorICAgICAgICAgICAgY29kZUJsb2NrKCdjb2xsYXBzZWQ9RmFs
c2UnKSwKKyAgICAgICAgICAgIGBUaGUgY29sbGFwc2VkIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhh
dCBhIHNpbmdsZSByZXN1bHQgd2lsbCBiZSByZXR1cm5lZCBmb3IgYWxsIHVwbG9hZHMgd2hpY2gg
bWF0Y2ggdGhlIHNwZWNpZmllZCBjcml0ZXJpYS4gSWYgZmFsc2UsIGFnZ3JlZ2F0aW9uIGVuZHBv
aW50cyB3aWxsIHJldHVybiB0aGUgcmVzdWx0cyB3aGljaCB3b3VsZCBoYXZlIG90aGVyd2lzZSBi
ZWVuIGFnZ3JlZ2F0ZWQuYCwKKyAgICAgICAgICAgIGBCZWNhdXNlIHRoZSByZXN1bHRzIGRhdGFi
YXNlIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBleHBlY3RlZCBhbmQgdW5leHBlY3RlZCBmYWlsdXJl
cywgZW5kcG9pbnRzIHBlcmZvcm1pbmcgYWdncmVnYXRpb24gd2lsbCBvZnRlbiBmaWx0ZXIgb3V0
IGV4cGVjdGVkIGZhaWx1cmVzLCBhbmQgZmxhZyB1bmV4cGVjdGVkIHBhc3Nlcy4gVG8gbW9kaWZ5
IHRoZSBiZWhhdmlvciBvZiB0aGVzZSBhbGdvcml0aG1zLCB0aGVzZSBlbmRwb2ludHMgd2lsbCBz
dXBwb3J0IHRoZSB1bmV4cGVjdGVkIGZsYWc6YCwKKyAgICAgICAgICAgIGNvZGVCbG9jaygndW5l
eHBlY3RlZD1GYWxzZScpLAorICAgICAgICAgICAgYEJ5IGRlZmF1bHQsIHRoaXMgZmxhZyBpcyAn
VHJ1ZScgYW5kIGVuZHBvaW50cyB3aWxsIGlnbm9yZSB0ZXN0cyB3aGljaCBtYXRjaGVkIHRoZWly
IGV4cGVjdGVkIGJlaGF2aW9yLiBJZiBzZXQgdG8gJ0ZhbHNlJywgZW5kcG9pbnRzIHdpbGwgcmV0
dXJuIHJlc3VsdHMgZm9yIGFsbCBmYWlsaW5nIHRlc3RzLCByZWdhcmRsZXNzIG9mIHdoYXQgdGhl
aXIgZXhwZWN0YXRpb24gaXMuYCwKKyAgICAgICAgXSwKICAgICAgICAgJ0JyYW5jaCc6IFsKICAg
ICAgICAgICAgIGBNb3N0IGRhdGEgaW4gdGhlIHJlc3VsdHMgZGF0YWJhc2UgaXMgcGFydGl0aW9u
ZWQgYnkgYnJhbmNoLCBhbmQgaXQgaXMgZ2VuZXJhbGx5IGV4cGVjdGVkIHRoYXQgcmVzdWx0cyBv
biBzZXBlcmF0ZSBicmFuY2hlcyBhcmUgaW5kZXBlbmRlbnQgb2Ygb25lIGFub3RoZXIuIEJ5IGRl
ZmF1bHQsIGVuZHBvaW50cyB0aGF0IHN1cHBvcnQgdGhlIGJyYW5jaCBxdWVyeSB3aWxsIGFzc3Vt
ZSB0aGF0IHRoZSBicmFuY2ggaXMgbWFzdGVyIGZvciBnaXQgcmVwb3NpdG9yaWVzIGFuZCB0cnVu
ayBmb3IgU1ZOIHJlcG9zaXRvcmllcyBpZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQuIElmIG11bHRp
cGxlIHZhbHVlcyBmb3IgYnJhbmNoIGFyZSBzcGVjaWZpZWQsIG9ubHkgdGhlIGZpcnN0IHdpbGwg
YmUgcmVzcGVjdGVkLiBBIHJlcXVlc3Qgd2hpY2ggaW50ZW5kZWQgdG8gc2VhcmNoIGZvciByZXN1
bHRzIG9uIG9ubHkgcmVzdWx0cyBvbiB0aGUgc2FmYXJpLTYwNyBicmFuY2ggd291bGQgdXNlIGEg
cXVlcnkgbGlrZSB0aGlzOmAsCiAgICAgICAgICAgICBjb2RlQmxvY2soJ2JyYW5jaD1zYWZhcmkt
NjA3JyksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>