<?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>210975</bug_id>
          
          <creation_ts>2020-04-24 09:52:40 -0700</creation_ts>
          <short_desc>update-test-expectations-from-bugzilla tool not working with new EWS</short_desc>
          <delta_ts>2020-05-20 07:09:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Carlos Alberto Lopez Perez">clopez</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645229</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-04-24 09:52:40 -0700</bug_when>
    <thetext>Since the move to the move to the new EWS the tool update-test-expectations-from-bugzilla doesn&apos;t work anymore.
This is caused because the news EWS doesn&apos;t upload anymore the layout test results as attachments to bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651514</commentid>
    <comment_count>1</comment_count>
      <attachid>399067</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-11 16:25:23 -0700</bug_when>
    <thetext>Created attachment 399067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653065</commentid>
    <comment_count>2</comment_count>
      <attachid>399067</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-15 08:32:51 -0700</bug_when>
    <thetext>Comment on attachment 399067
Patch

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

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:91
&gt; +            attachment = [attachment for attachment in bug_info.attachments(include_obsolete=False) if attachment.is_patch()]

s/attachment/attachments/

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:120
&gt; +    def _get_layout_tests_run(self, bot_name, ews_build_url):

I am wondering whether other scripts might want to get the layout test results.
If so, maybe this should be added to some existing bot specific class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653158</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-15 13:35:23 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; Comment on attachment 399067 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399067&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:91
&gt; &gt; +            attachment = [attachment for attachment in bug_info.attachments(include_obsolete=False) if attachment.is_patch()]
&gt; 
&gt; s/attachment/attachments/
&gt; 

Ok

&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:120
&gt; &gt; +    def _get_layout_tests_run(self, bot_name, ews_build_url):
&gt; 
&gt; I am wondering whether other scripts might want to get the layout test
&gt; results.
&gt; If so, maybe this should be added to some existing bot specific class?

I&apos;m currently not aware of any other script wanting to get this results.
Do you know about anyone?

I have plans to keep improving this script and end re-using it in the bot that I proposed a while ago to help to automate updating WPT imports &lt;https://lists.webkit.org/pipermail/webkit-dev/2020-March/031121.html&gt;

For example, I would like that it can automatically update the TestExpectations files for tests failing with ImageOnlyFailure (or even with Crash).

But, it&apos;s something I plan to do iteratively. For now this patch only tries to make this script work back with the new EWS setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653161</commentid>
    <comment_count>4</comment_count>
      <attachid>399508</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-15 13:49:03 -0700</bug_when>
    <thetext>Created attachment 399508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653508</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-18 00:34:28 -0700</bug_when>
    <thetext>&gt; I&apos;m currently not aware of any other script wanting to get this results.
&gt; Do you know about anyone?

I am not aware of this.
Jonathan or Aakash might have some insights there.

&gt; I have plans to keep improving this script and end re-using it in the bot
&gt; that I proposed a while ago to help to automate updating WPT imports
&gt; &lt;https://lists.webkit.org/pipermail/webkit-dev/2020-March/031121.html&gt;
&gt; 
&gt; For example, I would like that it can automatically update the
&gt; TestExpectations files for tests failing with ImageOnlyFailure (or even with
&gt; Crash).
&gt; 
&gt; But, it&apos;s something I plan to do iteratively. For now this patch only tries
&gt; to make this script work back with the new EWS setup.

Sounds good.
I&apos;ll review it tomorrow if nobody reviews it by then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653587</commentid>
    <comment_count>6</comment_count>
      <attachid>399508</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-18 07:11:55 -0700</bug_when>
    <thetext>Comment on attachment 399508
Patch

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

Aakash definitely needs to lock at this before it lands, he is the EWS expert.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:43
&gt; +import requests

Lets use the auto-installed version of requests

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:82
&gt; +    def __init__(self, host, bugzilla_id, is_bug_id=True, bot_filter_name=None, attachment_fetcher=bugzilla.Bugzilla(), unzip=None, url_fetcher=requests):

Is there ever a world where we use a different url fetcher? Seems unlikely, requests is the blessed fetcher in Python 3

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:121
&gt; +        if not re.match(&quot;http.*webkit.org/#/builders/[0-9]+/builds/[0-9]+$&quot;, ews_build_url):

Seems like this would match build.webkit.org too, at least once we move to a newer buildbot. Is that desirable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653595</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-18 07:33:19 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #6)
&gt; Comment on attachment 399508 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399508&amp;action=review
&gt; 
&gt; Aakash definitely needs to lock at this before it lands, he is the EWS
&gt; expert.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:43
&gt; &gt; +import requests
&gt; 
&gt; Lets use the auto-installed version of requests
&gt; 

ok

&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:82
&gt; &gt; +    def __init__(self, host, bugzilla_id, is_bug_id=True, bot_filter_name=None, attachment_fetcher=bugzilla.Bugzilla(), unzip=None, url_fetcher=requests):
&gt; 
&gt; Is there ever a world where we use a different url fetcher? Seems unlikely,
&gt; requests is the blessed fetcher in Python 3
&gt; 

In the unit tests, I mock requests with a custom class to allow testing with a set of custom hand-made http requests-and-replies.

&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:121
&gt; &gt; +        if not re.match(&quot;http.*webkit.org/#/builders/[0-9]+/builds/[0-9]+$&quot;, ews_build_url):
&gt; 
&gt; Seems like this would match build.webkit.org too, at least once we move to a
&gt; newer buildbot. Is that desirable?

My first idea was not being too strict with that sanity check. Right now the EWS server its at ews-build.webkit.org, but I don&apos;t know if it will be ever moved to $anything.webkit.org So this only tries to validate that the domain is webkit.org and that the URI path its in the format expected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653597</commentid>
    <comment_count>8</comment_count>
      <attachid>399645</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-18 07:43:06 -0700</bug_when>
    <thetext>Created attachment 399645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653601</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-18 07:46:51 -0700</bug_when>
    <thetext>Updated patch to use auto-istalled requests module.

Note: the webkitpy failure on the EWS its unrelated to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653629</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-18 09:12:21 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #7)
&gt; (In reply to Jonathan Bedard from comment #6)
&gt; &gt; Comment on attachment 399508 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399508&amp;action=review
&gt; &gt; 
&gt; &gt; Aakash definitely needs to lock at this before it lands, he is the EWS
&gt; &gt; expert.
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:43
&gt; &gt; &gt; +import requests
&gt; &gt; 
&gt; &gt; Lets use the auto-installed version of requests
&gt; &gt; 
&gt; 
&gt; ok
&gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:82
&gt; &gt; &gt; +    def __init__(self, host, bugzilla_id, is_bug_id=True, bot_filter_name=None, attachment_fetcher=bugzilla.Bugzilla(), unzip=None, url_fetcher=requests):
&gt; &gt; 
&gt; &gt; Is there ever a world where we use a different url fetcher? Seems unlikely,
&gt; &gt; requests is the blessed fetcher in Python 3
&gt; &gt; 
&gt; 
&gt; In the unit tests, I mock requests with a custom class to allow testing with
&gt; a set of custom hand-made http requests-and-replies.
&gt; 

I won&apos;t block landing on this, but my preference is to use the mock module so that we keep production code clean of testing idioms.

webkitpy/results/upload_unittest.py has an example of this for requests.port, it looks something like this:

class MockResponse(object):
    def __init__(self, status_code=200, text=&apos;&apos;):
        self.status_code = status_code
         self.text = text

with mock.patch(&apos;requests.post&apos;, new=lambda url, headers={}, data={}: self.MockResponse(status_code=200, text=&apos;data)):
    # Testing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653875</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-18 20:01:22 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #10)
&gt; &gt; &gt; Is there ever a world where we use a different url fetcher? Seems unlikely,
&gt; &gt; &gt; requests is the blessed fetcher in Python 3
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; In the unit tests, I mock requests with a custom class to allow testing with
&gt; &gt; a set of custom hand-made http requests-and-replies.
&gt; &gt; 
&gt; 
&gt; I won&apos;t block landing on this, but my preference is to use the mock module
&gt; so that we keep production code clean of testing idioms.
&gt; 

Ok. I will change this to use the mock module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653877</commentid>
    <comment_count>12</comment_count>
      <attachid>399701</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-18 20:02:18 -0700</bug_when>
    <thetext>Created attachment 399701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654065</commentid>
    <comment_count>13</comment_count>
      <attachid>399701</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-19 10:48:40 -0700</bug_when>
    <thetext>Comment on attachment 399701
Patch

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

I had a quick look at the high-level logic, looks good to me.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:122
&gt; +        ews_buildbot_server, ews_buildbot_path = ews_build_url.split(&apos;#&apos;)

That&apos;s clever, getting the url from api data and modifying it appropriately. Also, if required, you can change the API output as well (at https://trac.webkit.org/browser/webkit/trunk/Tools/BuildSlaveSupport/ews-app/ews/views/status.py#L41)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654166</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-05-19 13:43:26 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #13)
&gt; Comment on attachment 399701 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399701&amp;action=review
&gt; 
&gt; I had a quick look at the high-level logic, looks good to me.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py:122
&gt; &gt; +        ews_buildbot_server, ews_buildbot_path = ews_build_url.split(&apos;#&apos;)
&gt; 
&gt; That&apos;s clever, getting the url from api data and modifying it appropriately.

Thanks!

&gt; Also, if required, you can change the API output as well (at
&gt; https://trac.webkit.org/browser/webkit/trunk/Tools/BuildSlaveSupport/ews-app/
&gt; ews/views/status.py#L41)

I see, good to know that.
The current schema for the API its ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654400</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-20 06:29:13 -0700</bug_when>
    <thetext>Committed r261914: &lt;https://trac.webkit.org/changeset/261914&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399701.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654402</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-20 06:30:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63444566&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399067</attachid>
            <date>2020-05-11 16:25:23 -0700</date>
            <delta_ts>2020-05-15 13:46:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210975-20200512012521.patch</filename>
            <type>text/plain</type>
            <size>32360</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjRjOWUyOWM1MWM2YzU4ZDk4Nzg2ZTZkYzQ4Njk1MGRh
NDE5MWQ3MC4uMjI1NzFmZjJiNmExNzE3MzEwZWUyZTQ1OWIwYWYzZWYzZWM1OGM0NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIwLTA1LTExICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIHVwZGF0ZS10ZXN0LWV4cGVjdGF0aW9ucy1mcm9tLWJ1Z3ppbGxh
IHRvb2wgbm90IHdvcmtpbmcgd2l0aCBuZXcgRVdTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoZSBuZXcgRVdTLCB0aGUgbGF5b3V0IHRlc3Qg
YXJjaGl2ZSByZXN1bHRzIGFyZSBub3QgbG9uZ2VyCisgICAgICAgIHBvc3RlZCB0byBidWd6aWxs
YSBhcyBhdHRhY2htZW50LiBOb3cgd2UgbmVlZCB0byBpbnNwZWN0IHRoZSBFV1MKKyAgICAgICAg
c2VydmVyIHRvIGdldCB0aGUgc3RhdHVzIG9mIHRoZSBydW5zIGZvciB0aGUgcGF0Y2ggaWQsIGFu
ZCB0aGVuCisgICAgICAgIHF1ZXJ5IHRoZSBFV1MgYnVpbGJvdCBzZXJ2ZXIgaW4gb3JkZXIgdG8g
Z2V0IHRoZSBkZXRhaWxzIG9mIGVhY2gKKyAgICAgICAgcnVuIHRvIGZpbmFsbHkgb2J0YWluIHRo
ZSBVUkwgd2l0aCB0aGUgemlwIGZpbGUgZm9yIHRoZSByZXN1bHRzLgorCisgICAgICAgIFRoZSB0
b29sIG5vdyBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgcGxhdGZvcm0tc3BlY2lmaWMgYW5kIGdlbmVy
aWMKKyAgICAgICAgcmVzdWx0cyBhdXRvbWF0aWNhbGx5IChpdHMgbm90IGxvbmdlciBuZWVkZWQg
dG8gc3BlY2lmeSB3aGV0aGVyCisgICAgICAgIHRoZSByZXN1bHQgaXRzIGdlbmVyaWMgb3Igbm90
KS4gSXQgdXNlcyBtYWMtd2syIHJlc3VsdHMgYXMgZ2VuZXJpYy4KKworICAgICAgICBBbHNvIG5v
dyBpdCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIHRlc3RzIHdoZXJlIHRoZSByZXN1bHQK
KyAgICAgICAgaXMgTUlTU0lORy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHk6CisgICAgICAgIChjb25m
aWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChhcmd1bWVudF9wYXJzZXIpOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uVXBkYXRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25V
cGRhdGVyLl9wbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fZ2V0X2xheW91dF90ZXN0c19ydW4p
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fbG9va3VwX2V3c19yZXN1bHRzKToK
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3Rlc3RzX3RvX3VwZGF0ZSk6CisgICAg
ICAgIChUZXN0RXhwZWN0YXRpb25VcGRhdGVyLl91cGRhdGVfZm9yX2dlbmVyaWNfYm90KToKKyAg
ICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3VwZGF0ZV9mb3JfcGxhdGZvcm1fc3BlY2lm
aWNfYm90KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuZG9fdXBkYXRlKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2Nr
QXR0YWNobWVudC5fX2luaXRfXyk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19wYXRjaCk6
CisgICAgICAgIChNb2NrQXR0YWNobWVudCk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19v
YnNvbGV0ZSk6CisgICAgICAgIChNb2NrQnVnemlsbGEpOgorICAgICAgICAoTW9ja0J1Z3ppbGxh
LmF0dGFjaG1lbnRzKToKKyAgICAgICAgKE1vY2tSZXF1ZXN0cyk6CisgICAgICAgIChNb2NrUmVx
dWVzdHMuX19pbml0X18pOgorICAgICAgICAoTW9ja1JlcXVlc3RzLmdldCk6CisgICAgICAgIChN
b2NrUmVxdWVzdHMuY29udGVudCk6CisgICAgICAgIChNb2NrUmVxdWVzdHMudGV4dCk6CisgICAg
ICAgIChNb2NrWmlwLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXJU
ZXN0LnRlc3RfdXBkYXRlX3Rlc3RfZXhwZWN0YXRpb25zKToKKwogMjAyMC0wNS0xMSAgQW5kcmVz
IEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1lY2hhbmlz
bSB0byB0dXJuIG9uIGFjY2Vzc2liaWxpdHkgaXNvbGF0ZWQgdHJlZSBtb2RlIGZyb20gV2ViS2l0
VGVzdFJ1bm5lci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9leHBlY3RhdGlvbl91cGRhdGVyLnB5Cmlu
ZGV4IGEzOWExNTcyN2NjODNhMzVjM2MyMDhjMzUyZGUzNmQ0MWYxYmUyMDcuLjRhYjFhNmVkMTBh
YmZkYmI1ODk1YzBiZDEzNWE3ODVmZjU5ZjU4NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhw
ZWN0YXRpb25fdXBkYXRlci5weQpAQCAtMSw2ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhv
bgogCiAjIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiwxNyArMzMsMjUgQEAgaW1wb3J0IGlvCiBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHppcGZpbGUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnVybHMgaW1wb3J0IGV3
c3NlcnZlcl9kZWZhdWx0X2hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhv
c3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgYnVnemlsbGEKIGZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVz
dFJlc3VsdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktp
dEZpbmRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMudGVzdF9yZXN1
bHRfd3JpdGVyIGltcG9ydCBUZXN0UmVzdWx0V3JpdGVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitpbXBvcnQgcmVxdWVzdHMKK2lt
cG9ydCBqc29uCitpbXBvcnQgcmUKKworIyBCdWlsZGJvdCBzdGF0dXMgY29kZXMgcmVmZXJlbmNl
ZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9idWlsZGJvdC9ibG9iL21hc3Rlci9t
YXN0ZXIvYnVpbGRib3QvcHJvY2Vzcy9yZXN1bHRzLnB5CitFV1NfU1RBVEVDT0RFUyA9IHsnU1VD
Q0VTUyc6IDAsICdXQVJOSU5HUyc6IDEsICdGQUlMVVJFJzogMiwgJ1NLSVBQRUQnOiAzLCAnRVhD
RVBUSU9OJzogNCwgJ1JFVFJZJzogNSwgJ0NBTkNFTExFRCc6IDZ9CisKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKLWRlZiBjb25maWd1cmVfbG9nZ2luZygpOgorZGVm
IGNvbmZpZ3VyZV9sb2dnaW5nKGRlYnVnPUZhbHNlKToKICAgICBjbGFzcyBMb2dIYW5kbGVyKGxv
Z2dpbmcuU3RyZWFtSGFuZGxlcik6CiAKICAgICAgICAgZGVmIGZvcm1hdChzZWxmLCByZWNvcmQp
OgpAQCAtNTAsMTAgKzU5LDExIEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAg
ICAgICAgIHJldHVybiAiJXM6ICVzIiAlIChyZWNvcmQubGV2ZWxuYW1lLCByZWNvcmQuZ2V0TWVz
c2FnZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAotICAgIGxv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5J
TkZPKQorICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgZGVidWcgZWxzZSBsb2dnaW5n
LklORk8KKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKyAgICBsb2dn
ZXIuc2V0TGV2ZWwobG9nX2xldmVsKQogICAgIGhhbmRsZXIgPSBMb2dIYW5kbGVyKCkKLSAgICBo
YW5kbGVyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKKyAgICBoYW5kbGVyLnNldExldmVsKGxvZ19s
ZXZlbCkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQogICAgIHJldHVybiBoYW5kbGVy
CiAKQEAgLTYxLDM1ICs3MSwzNiBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKIGRlZiBhcmd1
bWVudF9wYXJzZXIoKToKICAgICBkZXNjcmlwdGlvbiA9ICIiIlVwZGF0ZSBleHBlY3RlZC50eHQg
ZmlsZXMgZnJvbSBwYXRjaGVzIHN1Ym1pdHRlZCBieSBFV1MgYm90cyBvbiBidWd6aWxsYS4gR2l2
ZW4gaWQgcmVmZXJzIHRvIGEgYnVnIGlkIGJ5IGRlZmF1bHQuIiIiCiAgICAgcGFyc2VyID0gYXJn
cGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0naW1wb3J0dXBkYXRlLXRlc3QtZXhwZWN0YXRpb25z
LWZyb20tYnVnemlsbGEgYnVnemlsbGFfaWQnLCBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwgZm9y
bWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcikKLQogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0taXMtYXR0YWNobWVudC1pZCcsIGRlc3Q9J2lz
X2J1Z19pZCcsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZWZhdWx0PVRydWUsIGhlbHA9J1doZXRo
ZXIgdGhlIGdpdmVuIGlkIGlzIGEgYnVnemlsbGEgYXR0YWNobWVudCBhbmQgbm90IGEgYnVnIGlk
JykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLWlzLXBsYXRmb3JtLXNwZWNpZmlj
JywgZGVzdD0naXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVjaWZpYycsIGFjdGlvbj0nc3RvcmVf
dHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1doZXRoZXIgZ2VuZXJpYyBleHBlY3RlZCBmaWxl
cyBzaG91bGQgYmUgdXBkYXRlZCBvciBub3QnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1i
JywgJy0tYm90LWZpbHRlcicsIGRlc3Q9J2JvdF9maWx0ZXJfbmFtZScsIGFjdGlvbj0nc3RvcmUn
LCBkZWZhdWx0PU5vbmUsIGhlbHA9J09ubHkgcHJvY2VzcyBFV1MgcmVzdWx0cyBmb3IgYm90cyB3
aGVyZSBCT1RfRklMVEVSX05BTUUgaXRzIHBhcnQgb2YgdGhlIG5hbWUnKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBkZXN0PSdkZWJ1ZycsIGFjdGlvbj0nc3RvcmVf
dHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0xvZyBkZWJ1ZyBtZXNzYWdlcycpCiAgICAgcmV0
dXJuIHBhcnNlcgogCiAKIGNsYXNzIFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIob2JqZWN0KToKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBidWd6aWxsYV9pZCwgaXNfYnVnX2lkPVRydWUs
IGlzX2F0dGFjaG1lbnRfcGxhdGZvcm1fc3BlY2lmaWM9RmFsc2UsIGF0dGFjaG1lbnRfZmV0Y2hl
cj1idWd6aWxsYS5CdWd6aWxsYSgpLCB1bnppcD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaG9zdCwgYnVnemlsbGFfaWQsIGlzX2J1Z19pZD1UcnVlLCBib3RfZmlsdGVyX25hbWU9Tm9u
ZSwgYXR0YWNobWVudF9mZXRjaGVyPWJ1Z3ppbGxhLkJ1Z3ppbGxhKCksIHVuemlwPU5vbmUsIHVy
bF9mZXRjaGVyPXJlcXVlc3RzKToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBz
ZWxmLmZpbGVzeXN0ZW0gPSBzZWxmLmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLmJvdF9m
aWx0ZXJfbmFtZSA9IGJvdF9maWx0ZXJfbmFtZQogICAgICAgICBzZWxmLnVuemlwID0gdW56aXAg
aWYgdW56aXAgZWxzZSBsYW1iZGEgY29udGVudDogemlwZmlsZS5aaXBGaWxlKGlvLkJ5dGVzSU8o
Y29udGVudCkpCisgICAgICAgIHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSA9IFdlYktpdEZp
bmRlcihzZWxmLmZpbGVzeXN0ZW0pLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiTGF5b3V0VGVzdHMi
KQorICAgICAgICBzZWxmLnVybF9mZXRjaGVyID0gdXJsX2ZldGNoZXIKICAgICAgICAgaWYgaXNf
YnVnX2lkOgotICAgICAgICAgICAgc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50cyA9
IHt9Ci0gICAgICAgICAgICBmb3IgYXR0YWNobWVudCBpbiBhdHRhY2htZW50X2ZldGNoZXIuZmV0
Y2hfYnVnKGJ1Z3ppbGxhX2lkKS5hdHRhY2htZW50cygpOgotICAgICAgICAgICAgICAgIGJvdF90
eXBlID0gc2VsZi5fYm90X3R5cGUoYXR0YWNobWVudCkKLSAgICAgICAgICAgICAgICBpZiBib3Rf
dHlwZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2ht
ZW50c1tib3RfdHlwZV0gPSBhdHRhY2htZW50Ci0gICAgICAgICAgICBzZWxmLmdlbmVyaWNfYXR0
YWNobWVudCA9IHNlbGYucGxhdGZvcm1fc3BlY2lmaWNfYXR0YWNobWVudHMucG9wKCJtYWMtd2sy
IikgaWYgIm1hYy13azIiIGluIHNlbGYucGxhdGZvcm1fc3BlY2lmaWNfYXR0YWNobWVudHMgZWxz
ZSBOb25lCisgICAgICAgICAgICBidWdfaW5mbyA9IGF0dGFjaG1lbnRfZmV0Y2hlci5mZXRjaF9i
dWcoYnVnemlsbGFfaWQpCisgICAgICAgICAgICBhdHRhY2htZW50ID0gW2F0dGFjaG1lbnQgZm9y
IGF0dGFjaG1lbnQgaW4gYnVnX2luZm8uYXR0YWNobWVudHMoaW5jbHVkZV9vYnNvbGV0ZT1GYWxz
ZSkgaWYgYXR0YWNobWVudC5pc19wYXRjaCgpXQorICAgICAgICAgICAgaWYgbGVuKGF0dGFjaG1l
bnQpID4gMToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkZvdW5kIG1vcmUg
dGhhbiBvbmUgbm9uLW9ic29sZXRlIHBhdGNoIGluIGJ1ZyB7fS4gUGxlYXNlIHNwZWNpZnkgd2hp
Y2ggb25lIHRvIHByb2Nlc3MuIi5mb3JtYXQoYnVnemlsbGFfaWQpKQorICAgICAgICAgICAgaWYg
bGVuKGF0dGFjaG1lbnQpIDwgMToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io
IkNvdWxkbid0IGZpbmQgYW55IG5vbi1vYnNvbGV0ZSBwYXRjaCBpbiBidWcge30uIFBsZWFzZSBz
cGVjaWZ5IHdoaWNoIG9uZSB0byBwcm9jZXNzLiIuZm9ybWF0KGJ1Z3ppbGxhX2lkKSkKKyAgICAg
ICAgICAgIHNlbGYucGF0Y2ggPSBhdHRhY2htZW50WzBdCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBhdHRhY2htZW50ID0gYXR0YWNobWVudF9mZXRjaGVyLmZldGNoX2F0dGFjaG1lbnQoYnVn
emlsbGFfaWQpCi0gICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRz
ID0ge3NlbGYuX2JvdF90eXBlKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50fSBpZiBpc19hdHRhY2ht
ZW50X3BsYXRmb3JtX3NwZWNpZmljIGVsc2Uge30KLSAgICAgICAgICAgIHNlbGYuZ2VuZXJpY19h
dHRhY2htZW50ID0gYXR0YWNobWVudCBpZiBub3QgaXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVj
aWZpYyBlbHNlIE5vbmUKLQotICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNl
bGYuZmlsZXN5c3RlbSkKLSAgICAgICAgc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5ID0gd2Vi
a2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkxheW91dFRlc3RzIikKKyAgICAgICAg
ICAgIHNlbGYucGF0Y2ggPSBhdHRhY2htZW50X2ZldGNoZXIuZmV0Y2hfYXR0YWNobWVudChidWd6
aWxsYV9pZCkKKyAgICAgICAgaWYgbm90IHNlbGYucGF0Y2guaXNfcGF0Y2goKToKKyAgICAgICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQXR0YWNobWVudCB7fSBpdHMgbm90IGEgcGF0Y2guIENh
bid0IGNvbnRpbnVlLiIuZm9ybWF0KGJ1Z3ppbGxhX2lkKSkKIAotICAgIGRlZiBfYm90X3R5cGUo
c2VsZiwgYXR0YWNobWVudCk6Ci0gICAgICAgIG5hbWUgPSBhdHRhY2htZW50Lm5hbWUoKQorICAg
IGRlZiBfcGxhdGZvcm1fbmFtZShzZWxmLCBib3RfbmFtZSk6CisgICAgICAgIG5hbWUgPSBib3Rf
bmFtZQogICAgICAgICBpZiAibWFjIiBpbiBuYW1lIGFuZCBuYW1lLmVuZHN3aXRoKCItd2syIik6
CiAgICAgICAgICAgICByZXR1cm4gIm1hYy13azIiCiAgICAgICAgIGlmICJtYWMiIGluIG5hbWUg
YW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItd2syIik6CkBAIC05OCw0OCArMTA5LDExMiBAQCBjbGFz
cyBUZXN0RXhwZWN0YXRpb25VcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gImlv
cy13azIiCiAgICAgICAgIGlmICJ3aW4tZnV0dXJlIiBpbiBuYW1lOgogICAgICAgICAgICAgcmV0
dXJuICJ3aW4iCisgICAgICAgIGlmICJndGsiIGluIG5hbWU6CisgICAgICAgICAgICByZXR1cm4g
Imd0ayIKKyAgICAgICAgaWYgIndwZSIgaW4gbmFtZToKKyAgICAgICAgICAgIHJldHVybiAid3Bl
IgorICAgICAgICBpZiAiLWRlYnVnIiBpbiBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IG5hbWUu
cmVwbGFjZSgiLWRlYnVnIiwgIiIpCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBkZWYgX2dl
dF9sYXlvdXRfdGVzdHNfcnVuKHNlbGYsIGJvdF9uYW1lLCBld3NfYnVpbGRfdXJsKToKKyAgICAg
ICAgaWYgbm90IHJlLm1hdGNoKCJodHRwLip3ZWJraXQub3JnLyMvYnVpbGRlcnMvWzAtOV0rL2J1
aWxkcy9bMC05XSskIiwgZXdzX2J1aWxkX3VybCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJUaGUgVVJMIHt9IGZyb20gRVdTIGhhcyBhbiB1bmV4cGVjdGVkIGZvcm1hdCIuZm9ybWF0
KGV3c19idWlsZF91cmwpKQorICAgICAgICBld3NfYnVpbGRib3Rfc2VydmVyLCBld3NfYnVpbGRi
b3RfcGF0aCA9IGV3c19idWlsZF91cmwuc3BsaXQoJyMnKQorICAgICAgICBld3NfYnVpbGRib3Rf
c3RlcHNfdXJsID0gInt9YXBpL3Yye30vc3RlcHMiLmZvcm1hdChld3NfYnVpbGRib3Rfc2VydmVy
LCBld3NfYnVpbGRib3RfcGF0aCkKKyAgICAgICAgZXdzX2J1aWxkYm90X3N0ZXBzX3JlcXVlc3Qg
PSBzZWxmLnVybF9mZXRjaGVyLmdldChld3NfYnVpbGRib3Rfc3RlcHNfdXJsKQorICAgICAgICBl
d3NfYnVpbGRib3Rfc3RlcHMgPSBqc29uLmxvYWRzKGV3c19idWlsZGJvdF9zdGVwc19yZXF1ZXN0
LnRleHQpCisgICAgICAgIF9sb2cuZGVidWcoIlRyeWluZyB0byBmaW5kaW5nIGZhaWxlZCBsYXlv
dXQgdGVzdCBydW4gZm9yIGJvdCB7fSBhdCB1cmwge30iLmZvcm1hdChib3RfbmFtZSwgZXdzX2J1
aWxkYm90X3N0ZXBzX3VybCkpCisgICAgICAgIGZvciBzdGVwIGluIGV3c19idWlsZGJvdF9zdGVw
c1snc3RlcHMnXToKKyAgICAgICAgICAgICMgcGljayB0aGUgZmlyc3QgcnVuIGFzIHRoZSBvbmUg
Zm9yIHVwZGF0aW5nIHRoZSBsYXlvdXQgdGVzdHMuCisgICAgICAgICAgICBpZiBzdGVwWyduYW1l
J10gIT0gJ2xheW91dC10ZXN0cyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIGlmIG5vdCBzdGVwWydjb21wbGV0ZSddOgorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygi
U2tpcHBpbmcgdG8gcHJvY2VzcyB1bmZpbmlzaGVkIGxheW91dC10ZXN0cyBydW4gZm9yIGJvdCB7
fS4gUGxlYXNlIHJldHJ5IGxhdGVyIi5mb3JtYXQoYm90X25hbWUpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBmb3IgdXJsX2VudHJ5IGluIHN0ZXBbJ3VybHMnXToKKyAg
ICAgICAgICAgICAgICB1cmwgPSB1cmxfZW50cnlbJ3VybCddCisgICAgICAgICAgICAgICAgaWYg
dXJsLmVuZHN3aXRoKCcuemlwJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIHVybC5zdGFydHN3
aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAie317fSIuZm9ybWF0KGV3
c19idWlsZGJvdF9zZXJ2ZXIsIHVybC5sc3RyaXAoJy8nKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsibGF5b3V0LXRlc3RzLXJlc3VsdHMtc3RyaW5nIjogc3RlcFsnc3RhdGVfc3RyaW5n
J10sICJsYXlvdXQtdGVzdHMtYXJjaGl2ZS11cmwiOiB1cmx9CiAgICAgICAgIHJldHVybiBOb25l
CiAKLSAgICBkZWYgX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLCBhdHRhY2htZW50LCBib3RfdHlwZT1O
b25lKToKLSAgICAgICAgX2xvZy5pbmZvKCJQcm9jZXNzaW5nIGF0dGFjaG1lbnQgIiArIHN0cihh
dHRhY2htZW50LmlkKCkpKQotICAgICAgICB6aXBfZmlsZSA9IHNlbGYudW56aXAoYXR0YWNobWVu
dC5jb250ZW50cygpKQorICAgIGRlZiBfbG9va3VwX2V3c19yZXN1bHRzKHNlbGYpOgorICAgICAg
ICBfbG9nLmluZm8oIkxvb2tpbmcgZm9yIEVXUyByZXN1bHRzIGluIHBhdGNoIGF0dGFjaG1lbnQg
JXMgZnJvbSBidWcgJXMiICUgKHNlbGYucGF0Y2guaWQoKSwgc2VsZi5wYXRjaC5idWcoKS5pZCgp
KSkKKyAgICAgICAgZXdzX2J1YmJsZXNfdXJsID0gImh0dHBzOi8ve30vc3RhdHVzL3t9LyIuZm9y
bWF0KGV3c3NlcnZlcl9kZWZhdWx0X2hvc3QsIHNlbGYucGF0Y2guaWQoKSkKKyAgICAgICAgX2xv
Zy5kZWJ1ZygiUXVlcnlpbmcgYnViYmxlIHN0YXR1cyBhdCB7fSIuZm9ybWF0KGV3c19idWJibGVz
X3VybCkpCisgICAgICAgIGV3c19idWJibGVzX3N0YXR1c19yZXF1ZXN0ID0gc2VsZi51cmxfZmV0
Y2hlci5nZXQoZXdzX2J1YmJsZXNfdXJsKQorICAgICAgICBld3NfYnViYmxlc19zdGF0dXMgPSBq
c29uLmxvYWRzKGV3c19idWJibGVzX3N0YXR1c19yZXF1ZXN0LnRleHQpCisgICAgICAgIHNlbGYu
ZXdzX3Jlc3VsdHMgPSB7fQorICAgICAgICBmb3IgYm90IGluIGV3c19idWJibGVzX3N0YXR1czoK
KyAgICAgICAgICAgIGlmIGV3c19idWJibGVzX3N0YXR1c1tib3RdWydzdGF0ZSddIGlzIE5vbmU6
CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJFV1MgYm90IHt9IGhhcyBzdGlsbCBub3QgZmlu
aXNoZWQuIElnbm9yaW5nIi5mb3JtYXQoYm90KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygiRm91bmQgRVdTIHJ1biBhdCB7fSBmb3IgYm90IHt9IHdp
dGggc3RhdGUge30iLmZvcm1hdChld3NfYnViYmxlc19zdGF0dXNbYm90XVsndXJsJ10sIGJvdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgW1NUQVRFIGZvciBTVEFURSBpbiBFV1NfU1RBVEVDT0RF
Uy5rZXlzKCldW2V3c19idWJibGVzX3N0YXR1c1tib3RdWydzdGF0ZSddXSkpCisgICAgICAgICAg
ICBpZiBzZWxmLmJvdF9maWx0ZXJfbmFtZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJvdF9m
aWx0ZXJfbmFtZSBpbiBib3Q6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXdzX3Jlc3VsdHNb
Ym90XSA9IHNlbGYuX2dldF9sYXlvdXRfdGVzdHNfcnVuKGJvdCwgZXdzX2J1YmJsZXNfc3RhdHVz
W2JvdF1bJ3VybCddKQorICAgICAgICAgICAgZWxpZiBld3NfYnViYmxlc19zdGF0dXNbYm90XVsn
c3RhdGUnXSBpbiBbRVdTX1NUQVRFQ09ERVNbJ0ZBSUxVUkUnXSwgRVdTX1NUQVRFQ09ERVNbJ1dB
Uk5JTkdTJ11dOgorICAgICAgICAgICAgICAgIHNlbGYuZXdzX3Jlc3VsdHNbYm90XSA9IHNlbGYu
X2dldF9sYXlvdXRfdGVzdHNfcnVuKGJvdCwgZXdzX2J1YmJsZXNfc3RhdHVzW2JvdF1bJ3VybCdd
KQorCisgICAgICAgICMgRGVsZXRlIGVudHJpZXMgd2l0aCBudWxsIHZhbHVlIChpZiBhbnkpCisg
ICAgICAgIGZvciBib3QgaW4gc2VsZi5ld3NfcmVzdWx0cy5rZXlzKCk6CisgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5ld3NfcmVzdWx0c1tib3RdOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmV3
c19yZXN1bHRzW2JvdF0KKworICAgICAgICBpZiBsZW4oc2VsZi5ld3NfcmVzdWx0cykgPT0gMDoK
KyAgICAgICAgICAgIGlmIHNlbGYuYm90X2ZpbHRlcl9uYW1lOgorICAgICAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcigiQ291bGRuJ3QgZmluZCBhbnkgZmFpbGVkIEVXUyByZXN1bHQgaW4g
YXR0YWNobWVudC9wYXRjaCB7fSB0aGF0IG1hdGNoZXMgZmlsdGVyIG5hbWUuIi5mb3JtYXQoc2Vs
Zi5wYXRjaC5pZCgpLCBzZWxmLmJvdF9maWx0ZXJfbmFtZSkpCisgICAgICAgICAgICByYWlzZSBS
dW50aW1lRXJyb3IoIkNvdWxkbid0IGZpbmQgYW55IGZhaWxlZCBFV1MgcmVzdWx0IGZvciBhdHRh
Y2htZW50L3BhdGNoIHt9LiBUcnkgdG8gc3BlY2lmeSBhIGJvdCBmaWx0ZXIgbmFtZSBtYW51YWxs
eS4iLmZvcm1hdChzZWxmLnBhdGNoLmlkKCkpKQorCisgICAgZGVmIF90ZXN0c190b191cGRhdGUo
c2VsZiwgYm90X25hbWUpOgorICAgICAgICBfbG9nLmluZm8oInt9IGFyY2hpdmU6IHt9Ii5mb3Jt
YXQoYm90X25hbWUsIHNlbGYuZXdzX3Jlc3VsdHNbYm90X25hbWVdWydsYXlvdXQtdGVzdHMtYXJj
aGl2ZS11cmwnXSkpCisgICAgICAgIF9sb2cuaW5mbygie30gc3RhdHVzOiB7fSIuZm9ybWF0KGJv
dF9uYW1lLCBzZWxmLmV3c19yZXN1bHRzW2JvdF9uYW1lXVsnbGF5b3V0LXRlc3RzLXJlc3VsdHMt
c3RyaW5nJ10pKQorICAgICAgICBsYXlvdXRfdGVzdHNfYXJjaGl2ZV9yZXF1ZXN0ID0gc2VsZi51
cmxfZmV0Y2hlci5nZXQoc2VsZi5ld3NfcmVzdWx0c1tib3RfbmFtZV1bJ2xheW91dC10ZXN0cy1h
cmNoaXZlLXVybCddKQorICAgICAgICBsYXlvdXRfdGVzdHNfYXJjaGl2ZV9jb250ZW50ID0gbGF5
b3V0X3Rlc3RzX2FyY2hpdmVfcmVxdWVzdC5jb250ZW50CisgICAgICAgIHppcF9maWxlID0gc2Vs
Zi51bnppcChsYXlvdXRfdGVzdHNfYXJjaGl2ZV9jb250ZW50KQogICAgICAgICByZXN1bHRzID0g
TGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyh6aXBfZmlsZS5yZWFkKCJmdWxs
X3Jlc3VsdHMuanNvbiIpKQotICAgICAgICByZXN1bHRzX3RvX3VwZGF0ZSA9IFtyZXN1bHQudGVz
dF9uYW1lIGZvciByZXN1bHQgaW4gcmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpIGlmIHJl
c3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlRFWFRdCisgICAgICAgIHJlc3VsdHNfdG9f
dXBkYXRlID0gW3Jlc3VsdC50ZXN0X25hbWUgZm9yIHJlc3VsdCBpbiByZXN1bHRzLmZhaWxpbmdf
dGVzdF9yZXN1bHRzKCkgaWYgcmVzdWx0LnR5cGUgaW4gW3Rlc3RfZXhwZWN0YXRpb25zLlRFWFQs
IHRlc3RfZXhwZWN0YXRpb25zLk1JU1NJTkddXQogICAgICAgICByZXR1cm4ge3Jlc3VsdDogemlw
X2ZpbGUucmVhZChUZXN0UmVzdWx0V3JpdGVyLmFjdHVhbF9maWxlbmFtZShyZXN1bHQsIHNlbGYu
ZmlsZXN5c3RlbSkpIGZvciByZXN1bHQgaW4gcmVzdWx0c190b191cGRhdGV9CiAKICAgICBkZWYg
X2ZpbGVfY29udGVudF9pZl9leGlzdHMoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZXR1cm4g
c2VsZi5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGZpbGVuYW1lKSBpZiBzZWxmLmZpbGVzeXN0
ZW0uZXhpc3RzKGZpbGVuYW1lKSBlbHNlICIiCiAKLSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0
aGUgcG9zc2liaWxpdHkgdG8gYWxpZ24gd2hhdCBpcyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5n
bGVfdGVzdF9ydW5uZXIgaXMgZG9pbmcuCi0gICAgIyBJbiBwYXJ0aWN1bGFyIHRoZSBmYWN0IG9m
IG5vdCBvdmVyd3JpdGluZyB0aGUgZmlsZSBpZiBjb250ZW50IGlzIHRoZSBzYW1lLgotICAgIGRl
ZiBfdXBkYXRlX2Zyb21fZ2VuZXJpY19hdHRhY2htZW50KHNlbGYpOgotICAgICAgICBmb3IgdGVz
dF9uYW1lLCBleHBlY3RlZF9jb250ZW50IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLmdl
bmVyaWNfYXR0YWNobWVudCkuaXRlbXMoKToKKyAgICBkZWYgX3VwZGF0ZV9mb3JfZ2VuZXJpY19i
b3Qoc2VsZiwgYm90X25hbWUpOgorICAgICAgICBmb3IgdGVzdF9uYW1lLCBleHBlY3RlZF9jb250
ZW50IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShib3RfbmFtZSkuaXRlbXMoKToKICAgICAgICAg
ICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRf
dGVzdF9yZXBvc2l0b3J5LCBUZXN0UmVzdWx0V3JpdGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3Rf
bmFtZSwgc2VsZi5maWxlc3lzdGVtKSkKICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQg
IT0gc2VsZi5fZmlsZV9jb250ZW50X2lmX2V4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6Ci0gICAg
ICAgICAgICAgICAgX2xvZy5pbmZvKCJVcGRhdGluZyAiICsgdGVzdF9uYW1lICsgIiAoIiArIGV4
cGVjdGVkX2ZpbGVuYW1lICsgIikiKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRp
bmcgIiArIHRlc3RfbmFtZSArICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIgKyBleHBlY3RlZF9m
aWxlbmFtZSArICIpIikKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ubWF5YmVfbWFr
ZV9kaXJlY3Rvcnkoc2VsZi5maWxlc3lzdGVtLmRpcm5hbWUoZXhwZWN0ZWRfZmlsZW5hbWUpKQog
ICAgICAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0ZWRf
ZmlsZW5hbWUsIGV4cGVjdGVkX2NvbnRlbnQpCiAKLSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0
aGUgcG9zc2liaWxpdHkgdG8gYWxpZ24gd2hhdCBpcyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5n
bGVfdGVzdF9ydW5uZXIgaXMgZG9pbmcuCi0gICAgIyBJbiBwYXJ0aWN1bGFyIHRoZSBhYmlsaXR5
IHRvIHJlbW92ZSBhIG5ldyBzcGVjaWZpYyBleHBlY3RhdGlvbiBpZiBpdCBpcyB0aGUgc2FtZSBh
cyB0aGUgZ2VuZXJpYyBvbmUuCi0gICAgZGVmIF91cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZp
Y19hdHRhY2htZW50KHNlbGYsIGF0dGFjaG1lbnQsIGJvdF90eXBlKToKLSAgICAgICAgZm9yIHRl
c3RfbmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBzZWxmLl90ZXN0c190b191cGRhdGUoYXR0YWNo
bWVudCwgYm90X3R5cGUpLml0ZW1zKCk6Ci0gICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9
IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSwgVGVzdFJl
c3VsdFdyaXRlci5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNlbGYuZmlsZXN5c3RlbSwg
Ym90X3R5cGUpKQorICAgIGRlZiBfdXBkYXRlX2Zvcl9wbGF0Zm9ybV9zcGVjaWZpY19ib3Qoc2Vs
ZiwgYm90X25hbWUpOgorICAgICAgICBwbGF0Zm9ybV9uYW1lID0gc2VsZi5fcGxhdGZvcm1fbmFt
ZShib3RfbmFtZSkKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBz
ZWxmLl90ZXN0c190b191cGRhdGUoYm90X25hbWUpLml0ZW1zKCk6CisgICAgICAgICAgICBleHBl
Y3RlZF9maWxlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RfcmVw
b3NpdG9yeSwgVGVzdFJlc3VsdFdyaXRlci5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNl
bGYuZmlsZXN5c3RlbSwgcGxhdGZvcm1fbmFtZSkpCiAgICAgICAgICAgICBnZW5lcmljX2V4cGVj
dGVkX2ZpbGVuYW1lID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdF9yZXBv
c2l0b3J5LCBUZXN0UmVzdWx0V3JpdGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgc2Vs
Zi5maWxlc3lzdGVtKSkKICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5f
ZmlsZV9jb250ZW50X2lmX2V4aXN0cyhnZW5lcmljX2V4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oIlVwZGF0aW5nICIgKyB0ZXN0X25hbWUgKyAiIGZvciAiICsg
Ym90X3R5cGUgKyAiICgiICsgZXhwZWN0ZWRfZmlsZW5hbWUgKyAiKSIpCi0gICAgICAgICAgICAg
ICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5k
aXJuYW1lKGV4cGVjdGVkX2ZpbGVuYW1lKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0
ZW0ud3JpdGVfdGV4dF9maWxlKGV4cGVjdGVkX2ZpbGVuYW1lLCBleHBlY3RlZF9jb250ZW50KQor
ICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50
X2lmX2V4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIF9sb2cu
aW5mbygiVXBkYXRpbmcgIiArIHRlc3RfbmFtZSArICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIg
KyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxl
c3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKGV4cGVj
dGVkX2ZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZShleHBlY3RlZF9maWxlbmFtZSwgZXhwZWN0ZWRfY29udGVudCkKICAgICAgICAg
ICAgIGVsaWYgc2VsZi5maWxlc3lzdGVtLmV4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6CisgICAg
ICAgICAgICAgICAgX2xvZy5pbmZvKCJVcGRhdGluZyAiICsgdGVzdF9uYW1lICsgIiBmb3IgIiAr
IGJvdF9uYW1lICsgIiAoIFJFTU9WRUQ6ICIgKyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKICAg
ICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ucmVtb3ZlKGV4cGVjdGVkX2ZpbGVuYW1lKQog
CiAgICAgZGVmIGRvX3VwZGF0ZShzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuZ2VuZXJpY19h
dHRhY2htZW50IGFuZCBub3Qgc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50czoKLSAg
ICAgICAgICAgIF9sb2cuaW5mbygiTm8gYXR0YWNobWVudCB0byBwcm9jZXNzIikKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmdlbmVyaWNfYXR0YWNobWVudDoKLSAgICAgICAg
ICAgIHNlbGYuX3VwZGF0ZV9mcm9tX2dlbmVyaWNfYXR0YWNobWVudCgpCi0gICAgICAgIGZvciBi
b3RfdHlwZSwgYXR0YWNobWVudCBpbiBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRz
Lml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZp
Y19hdHRhY2htZW50KGF0dGFjaG1lbnQsIGJvdF90eXBlKQorICAgICAgICBzZWxmLl9sb29rdXBf
ZXdzX3Jlc3VsdHMoKQorICAgICAgICBnZW5lcmljX2JvdHMgPSBbYm90X25hbWUgZm9yIGJvdF9u
YW1lIGluIHNlbGYuZXdzX3Jlc3VsdHMua2V5cygpIGlmIHNlbGYuX3BsYXRmb3JtX25hbWUoYm90
X25hbWUpID09ICJtYWMtd2syIl0KKyAgICAgICAgcGxhdGZvcm1fYm90cyA9IFtib3RfbmFtZSBm
b3IgYm90X25hbWUgaW4gc2VsZi5ld3NfcmVzdWx0cy5rZXlzKCkgaWYgc2VsZi5fcGxhdGZvcm1f
bmFtZShib3RfbmFtZSkgIT0gIm1hYy13azIiXQorICAgICAgICAjIEZpcnN0IHVwZGF0ZSB0aGUg
Z2VuZXJpYyByZXN1bHRzLCBzbyB1cGRhdGVzIGZvciBwbGF0Zm9ybSBib3RzIGNhbiB1c2UgdGhp
cyBuZXcgZ2VuZXJpYyByZXN1bHQgYXMgYmFzZS4KKyAgICAgICAgZm9yIGJvdF9uYW1lIGluIGdl
bmVyaWNfYm90czoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9t
IGJvdCB7fSAoZ2VuZXJpYykiLmZvcm1hdChib3RfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl91
cGRhdGVfZm9yX2dlbmVyaWNfYm90KGJvdF9uYW1lKQorICAgICAgICBmb3IgYm90X25hbWUgaW4g
cGxhdGZvcm1fYm90czoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBm
cm9tIGJvdCB7fSAocGxhdGZvcm0pIi5mb3JtYXQoYm90X25hbWUpKQorICAgICAgICAgICAgc2Vs
Zi5fdXBkYXRlX2Zvcl9wbGF0Zm9ybV9zcGVjaWZpY19ib3QoYm90X25hbWUpCiAKIAogZGVmIG1h
aW4oX2FyZ3YsIF9zdGRvdXQsIF9zdGRlcnIpOgpAQCAtMTQ5LDggKzIyNCw4IEBAIGRlZiBtYWlu
KF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBpZiBub3QgYXJnczoKICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCJQbGVhc2UgcHJvdmlkZSBhIGJ1ZyBpZCBvciB1c2UgLWEgb3B0aW9uIikK
IAotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAgICBjb25maWd1cmVfbG9nZ2luZyhvcHRpb25z
LmRlYnVnKQogCiAgICAgYnVnemlsbGFfaWQgPSBhcmdzWzBdCi0gICAgdXBkYXRlciA9IFRlc3RF
eHBlY3RhdGlvblVwZGF0ZXIoSG9zdCgpLCBidWd6aWxsYV9pZCwgb3B0aW9ucy5pc19idWdfaWQs
IG9wdGlvbnMuaXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVjaWZpYykKKyAgICB1cGRhdGVyID0g
VGVzdEV4cGVjdGF0aW9uVXBkYXRlcihIb3N0KCksIGJ1Z3ppbGxhX2lkLCBvcHRpb25zLmlzX2J1
Z19pZCwgb3B0aW9ucy5ib3RfZmlsdGVyX25hbWUpCiAgICAgdXBkYXRlci5kb191cGRhdGUoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rl
c3RfZXhwZWN0YXRpb25fdXBkYXRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3Qu
cHkKaW5kZXggOTlkZjZhMzA3MTk3OTVkYWM0YzA1NGNkZTkyOTQ5MTM1NTBkMDQ4Ni4uMmQwODA1
MzY5MWQ4NWE5ODgxM2RkZDZmMjNkOWY4OTI4M2UzNzdiZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRl
cl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvdGVzdF9leHBlY3RhdGlvbl91cGRhdGVyX3VuaXR0ZXN0LnB5CkBAIC00MiwzNCArNDIs
NjYgQEAgRkFLRV9GSUxFUyA9IHsKIAogCiBjbGFzcyBNb2NrQXR0YWNobWVudChBdHRhY2htZW50
KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBjb250ZW50
cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dGFjaG1lbnRfZGljdGlvbmFyeSwgY29udGVu
dHMsIGlzX3BhdGNoLCBpc19vYnNvbGV0ZSk6CiAgICAgICAgIEF0dGFjaG1lbnQuX19pbml0X18o
c2VsZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBzZWxmKQogICAgICAgICBzZWxmLl9jb250ZW50
cyA9IGNvbnRlbnRzCisgICAgICAgIHNlbGYuX2lzX3BhdGNoID0gaXNfcGF0Y2gKIAogICAgIGRl
ZiBjb250ZW50cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRlbnRzCiAKKyAgICBk
ZWYgaXNfcGF0Y2goc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pc19wYXRjaAorCisgICAg
ZGVmIGlzX29ic29sZXRlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pc19vYnNvbGV0ZQog
Ci1jbGFzcyBNb2NrQnVnemlsbGEoKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVkZV93
azI9VHJ1ZSwgaW5jbHVkZV93aW5fZnV0dXJlPUZhbHNlKToKLSAgICAgICAgc2VsZi5faW5jbHVk
ZV93azIgPSBpbmNsdWRlX3drMgotICAgICAgICBzZWxmLl9pbmNsdWRlX3dpbl9mdXR1cmUgPSBp
bmNsdWRlX3dpbl9mdXR1cmUKIAorY2xhc3MgTW9ja0J1Z3ppbGxhKCk6CiAgICAgZGVmIGZldGNo
X2J1ZyhzZWxmLCBpZCk6CiAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgYXR0YWNobWVu
dHMoc2VsZik6CisgICAgZGVmIGF0dGFjaG1lbnRzKHNlbGYsIGluY2x1ZGVfb2Jzb2xldGU9RmFs
c2UpOgogICAgICAgICBhdHRhY2htZW50cyA9IFtdCi0gICAgICAgIGlmIHNlbGYuX2luY2x1ZGVf
d2syOgotICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQi
OiAxLCAibmFtZSI6ICJBcmNoaXZlIG9mIGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBld3MxMDMg
Zm9yIG1hYy1lbGNhcGl0YW4td2syIn0sICJtYWMtd2syIikpCi0gICAgICAgIGF0dGFjaG1lbnRz
LmFwcGVuZChNb2NrQXR0YWNobWVudCh7ImlkIjogMiwgIm5hbWUiOiAiQXJjaGl2ZSBvZiBsYXlv
dXQtdGVzdC1yZXN1bHRzIGZyb20gZXdzMTAzIGZvciBtYWMtZWxjYXBpdGFuIn0sICJtYWMtd2sx
YSIpKQotICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDMs
ICJuYW1lIjogIkFyY2hpdmUgb2YgbGF5b3V0LXRlc3QtcmVzdWx0cyBmcm9tIGV3czEwNCBmb3Ig
bWFjLWVsY2FwaXRhbiJ9LCAibWFjLXdrMWIiKSkKLSAgICAgICAgYXR0YWNobWVudHMuYXBwZW5k
KE1vY2tBdHRhY2htZW50KHsiaWQiOiA0LCAibmFtZSI6ICJBcmNoaXZlIG9mIGxheW91dC10ZXN0
LXJlc3VsdHMgZnJvbSBld3MxMjIgZm9yIGlvcy1zaW11bGF0b3Itd2syIn0sICJpb3Mtc2ltIikp
Ci0gICAgICAgIGlmIHNlbGYuX2luY2x1ZGVfd2luX2Z1dHVyZToKLSAgICAgICAgICAgIGF0dGFj
aG1lbnRzLmFwcGVuZChNb2NrQXR0YWNobWVudCh7ImlkIjogNSwgIm5hbWUiOiAiQXJjaGl2ZSBv
ZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZyb20gZXdzMTI0IGZvciB3aW4tZnV0dXJlIn0sICJ3aW4t
ZnV0dXJlIikpCisgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0YWNobWVudCh7Imlk
IjogMSwgIm5hbWUiOiAiVGVzdCBjYXNlIn0sICJIb3cgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSIs
IEZhbHNlLCBGYWxzZSkpCisgICAgICAgIGlmIGluY2x1ZGVfb2Jzb2xldGU6CisgICAgICAgICAg
ICBhdHRhY2htZW50cy5hcHBlbmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDIsICJuYW1lIjogIlBh
dGNoIn0sICJQYXRjaCB2MSIsIFRydWUsIFRydWUpKQorICAgICAgICAgICAgYXR0YWNobWVudHMu
YXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiAzLCAibmFtZSI6ICJQYXRjaCJ9LCAiUGF0Y2gg
djIiLCBUcnVlLCBUcnVlKSkKKyAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2ht
ZW50KHsiaWQiOiA0LCAibmFtZSI6ICJQYXRjaCJ9LCAiUGF0Y2ggdjMiLCBUcnVlLCBGYWxzZSkp
CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50cwogCiAKK2NsYXNzIE1vY2tSZXF1ZXN0cygpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdXJsc19kYXRhID0geworICAg
ICAgICAgICAgJ2h0dHBzOi8vZXdzLndlYmtpdC5vcmcvc3RhdHVzLzQvJzogJ3sibWFjLXdrMSI6
IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8xL2J1aWxk
cy85OSIsICJzdGF0ZSI6IDJ9LCAibWFjLXdrMiI6IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9LCAibWFjLWRl
YnVnLXdrMSI6IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVy
cy8zL2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9LCAiaW9zLXdrMiI6IHsidXJsIjogImh0dHBzOi8v
ZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy80L2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9
LCAid2luIjogeyJ1cmwiOiAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJz
LzUvYnVpbGRzLzk5IiwgInN0YXRlIjogMn19JywKKyAgICAgICAgICAgICdodHRwczovL2V3cy1i
dWlsZC53ZWJraXQub3JnL2FwaS92Mi9idWlsZGVycy8xL2J1aWxkcy85OS9zdGVwcyc6ICd7ICJz
dGVwcyI6IFsgeyAiY29tcGxldGUiOiB0cnVlLCAibmFtZSI6ICJsYXlvdXQtdGVzdHMiLCAic3Rh
dGVfc3RyaW5nIjogIlJhbiBsYXlvdXQgdGVzdHMiLCAgInVybHMiOiBbIHsgIm5hbWUiOiAiZG93
bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cyIsICJ1cmwiOiAiL3Jlc3VsdHMvbWFjLXdrMS9yMTIz
NDUuemlwIiB9IF0gfSBdIH0nLAorICAgICAgICAgICAgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtp
dC5vcmcvYXBpL3YyL2J1aWxkZXJzLzIvYnVpbGRzLzk5L3N0ZXBzJzogJ3sgInN0ZXBzIjogWyB7
ICJjb21wbGV0ZSI6IHRydWUsICJuYW1lIjogImxheW91dC10ZXN0cyIsICJzdGF0ZV9zdHJpbmci
OiAiUmFuIGxheW91dCB0ZXN0cyIsICAidXJscyI6IFsgeyAibmFtZSI6ICJkb3dubG9hZCBsYXlv
dXQgdGVzdCByZXN1bHRzIiwgInVybCI6ICIvcmVzdWx0cy9tYWMtd2syL3IxMjM0NS56aXAiIH0g
XSB9IF0gfScsCisgICAgICAgICAgICAnaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9hcGkv
djIvYnVpbGRlcnMvMy9idWlsZHMvOTkvc3RlcHMnOiAneyAic3RlcHMiOiBbIHsgImNvbXBsZXRl
IjogdHJ1ZSwgIm5hbWUiOiAibGF5b3V0LXRlc3RzIiwgInN0YXRlX3N0cmluZyI6ICJSYW4gbGF5
b3V0IHRlc3RzIiwgICJ1cmxzIjogWyB7ICJuYW1lIjogImRvd25sb2FkIGxheW91dCB0ZXN0IHJl
c3VsdHMiLCAidXJsIjogIi9yZXN1bHRzL21hYy1kZWJ1Zy13azEvcjEyMzQ1LnppcCIgfSBdIH0g
XSB9JywKKyAgICAgICAgICAgICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92Mi9i
dWlsZGVycy80L2J1aWxkcy85OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUiOiB0
cnVlLCAibmFtZSI6ICJsYXlvdXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlvdXQg
dGVzdHMiLCAgInVybHMiOiBbIHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0
cyIsICJ1cmwiOiAiL3Jlc3VsdHMvaW9zLXdrMi9yMTIzNDUuemlwIiB9ICBdIH0gXSB9JywKKyAg
ICAgICAgICAgICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92Mi9idWlsZGVycy81
L2J1aWxkcy85OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUiOiB0cnVlLCAibmFt
ZSI6ICJsYXlvdXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlvdXQgdGVzdHMiLCAg
InVybHMiOiBbIHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cyIsICJ1cmwi
OiAiL3Jlc3VsdHMvd2luL3IxMjM0NS56aXAiIH0gIF0gfSBdIH0nLAorICAgICAgICAgICAgImh0
dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9tYWMtd2sxL3IxMjM0NS56aXAiOiAi
bWFjLXdrMWEiLAorICAgICAgICAgICAgImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvcmVz
dWx0cy9tYWMtZGVidWctd2sxL3IxMjM0NS56aXAiOiAibWFjLXdrMWIiLAorICAgICAgICAgICAg
Imh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9tYWMtd2syL3IxMjM0NS56aXAi
OiAibWFjLXdrMiIsCisgICAgICAgICAgICAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9y
ZXN1bHRzL2lvcy13azIvcjEyMzQ1LnppcCI6ICJpb3Mtd2syIiwKKyAgICAgICAgICAgICJodHRw
czovL2V3cy1idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvd2luL3IxMjM0NS56aXAiOiAid2luIgor
ICAgICAgICB9CisKKyAgICBkZWYgZ2V0KHNlbGYsIHVybCk6CisgICAgICAgIGlmIHVybCBub3Qg
aW4gc2VsZi5fdXJsc19kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidXJsIHt9
IG5vdCBtb2NrZWQiLmZvcm1hdCh1cmwpKQorICAgICAgICBzZWxmLl91cmwgPSB1cmwKKyAgICAg
ICAgcmV0dXJuIHNlbGYKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fdXJsc19kYXRhW3NlbGYuX3VybF0KKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiB0ZXh0KHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuY29udGVudCkK
KworCiBjbGFzcyBNb2NrWmlwKCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBz
ZWxmLmNvbnRlbnQgPSBOb25lCkBAIC05NSwxNyArMTI3LDE3IEBAIGNsYXNzIE1vY2taaXAoKToK
ICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZWRpcmVjdC9yZWRpcmVjdC1sb2NhdGlvbi13b3JrZXItYWN0dWFsLnR4dCI6ICJkIiwKICAgICAg
ICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRpcmVj
dC9yZWRpcmVjdC1sb2NhdGlvbi1hY3R1YWwudHh0IjogImUiLAogICAgICAgICAgICAgImltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Jyb3dzaW5n
LWNvbnRleHQtYWN0dWFsLnR4dCI6ICJmLXdrMWIifQotICAgICAgICBpb3Nfc2ltX2ZpbGVzID0g
eyJmdWxsX3Jlc3VsdHMuanNvbiI6ICdBRERfUkVTVUxUUyh7InRlc3RzIjp7ImltcG9ydGVkIjp7
InczYyI6eyJ3ZWItcGxhdGZvcm0tdGVzdHMiOnsidXJsIjp7ImludGVyZmFjZXMuaHRtbCI6eyJy
ZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwi
aHRtbCI6eyJicm93c2VycyI6eyJ3aW5kb3dzIjp7ImJyb3dzaW5nLWNvbnRleHQuaHRtbCI6eyJy
ZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwi
dGhlLXdpbmRvdy1vYmplY3QiOnsiYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJv
d3NpbmctY29udGV4dHMtYnktbmFtZSI6eyJvcGVuLWZlYXR1cmVzLXRva2VuaXphdGlvbi0wMDEu
aHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoi
VEVYVCJ9fX19fSwiZG9tIjp7ImV2ZW50cyI6eyJFdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50Lmh0
bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRF
WFQifX19fX19LCJhbmltYXRpb25zIjp7InRyaWdnZXItY29udGFpbmVyLXNjcm9sbC1lbXB0eS5o
dG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCBQ
QVNTIn19fSwic2tpcHBlZCI6OTg4MSwibnVtX3JlZ3Jlc3Npb25zIjo0LCJvdGhlcl9jcmFzaGVz
Ijp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2Rp
ciI6Ii9Wb2x1bWVzL0RhdGEvRVdTL1dlYktpdC9MYXlvdXRUZXN0cyIsInZlcnNpb24iOjQsIm51
bV9wYXNzZXMiOjM4MjI1LCJwaXhlbF90ZXN0c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjA3OjMz
UE0gb24gQXByaWwgMDgsIDIwMTciLCJoYXNfcHJldHR5X3BhdGNoIjp0cnVlLCJmaXhhYmxlIjo0
ODExMCwibnVtX2ZsYWt5IjoxLCJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjp0cnVlfSk7JywKKyAg
ICAgICAgaW9zX2ZpbGVzID0geyJmdWxsX3Jlc3VsdHMuanNvbiI6ICdBRERfUkVTVUxUUyh7InRl
c3RzIjp7ImltcG9ydGVkIjp7InczYyI6eyJ3ZWItcGxhdGZvcm0tdGVzdHMiOnsidXJsIjp7Imlu
dGVyZmFjZXMuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwi
YWN0dWFsIjoiVEVYVCJ9fSwiaHRtbCI6eyJicm93c2VycyI6eyJ3aW5kb3dzIjp7ImJyb3dzaW5n
LWNvbnRleHQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwi
YWN0dWFsIjoiVEVYVCJ9fSwidGhlLXdpbmRvdy1vYmplY3QiOnsiYXBpcy1mb3ItY3JlYXRpbmct
YW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMtYnktbmFtZSI6eyJvcGVuLWZlYXR1cmVz
LXRva2VuaXphdGlvbi0wMDEuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQi
OiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fSwiZG9tIjp7ImV2ZW50cyI6eyJFdmVudFRhcmdl
dC1kaXNwYXRjaEV2ZW50Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoi
UEFTUyIsImFjdHVhbCI6IlRFWFQifX19fX19LCJhbmltYXRpb25zIjp7InRyaWdnZXItY29udGFp
bmVyLXNjcm9sbC1lbXB0eS5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNT
IiwiYWN0dWFsIjoiVEVYVCBQQVNTIn19fSwic2tpcHBlZCI6OTg4MSwibnVtX3JlZ3Jlc3Npb25z
Ijo0LCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6
MCwibGF5b3V0X3Rlc3RzX2RpciI6Ii9Wb2x1bWVzL0RhdGEvRVdTL1dlYktpdC9MYXlvdXRUZXN0
cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjM4MjI1LCJwaXhlbF90ZXN0c19lbmFibGVkIjpm
YWxzZSwiZGF0ZSI6IjA3OjMzUE0gb24gQXByaWwgMDgsIDIwMTciLCJoYXNfcHJldHR5X3BhdGNo
Ijp0cnVlLCJmaXhhYmxlIjo0ODExMCwibnVtX2ZsYWt5IjoxLCJ1c2VzX2V4cGVjdGF0aW9uc19m
aWxlIjp0cnVlfSk7JywKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS9ldmVudHMvRXZlbnRUYXJnZXQtZGlzcGF0Y2hFdmVudC1hY3R1YWwudHh0IjogImci
LAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy90aGUtd2luZG93LW9iamVjdC9hcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1i
cm93c2luZy1jb250ZXh0cy1ieS1uYW1lL29wZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAwMS1h
Y3R1YWwudHh0IjogImgiLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQtYWN0dWFsLnR4dCI6
ICJpIiwKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC9p
bnRlcmZhY2VzLWFjdHVhbC50eHQiOiAiaiJ9Ci0gICAgICAgIHdpbl9mdXR1cmVfZmlsZXMgPSB7
ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsiaW1wb3J0ZWQiOnsi
dzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJ1cmwiOnsiaW50ZXJmYWNlcy5odG1sIjp7InJl
cG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJo
dG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3MiOnsiYnJvd3NpbmctY29udGV4dC5odG1sIjp7InJl
cG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJ0
aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1icm93
c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9wZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAwMS5o
dG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJU
RVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7IkV2ZW50VGFyZ2V0LWRpc3BhdGNoRXZlbnQuaHRt
bCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVY
VCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5Lmh0
bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIFBB
U1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1fcmVncmVzc2lvbnMiOjQsIm90aGVyX2NyYXNoZXMi
Ont9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNfZGly
IjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0L0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwibnVt
X3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDc6MzNQ
TSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjQ4
MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsnLAorICAg
ICAgICB3aW5fZmlsZXMgPSB7ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9SRVNVTFRTKHsidGVz
dHMiOnsiaW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJ1cmwiOnsiaW50
ZXJmYWNlcy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJh
Y3R1YWwiOiJURVhUIn19LCJodG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3MiOnsiYnJvd3Npbmct
Y29udGV4dC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJh
Y3R1YWwiOiJURVhUIn19LCJ0aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZvci1jcmVhdGluZy1h
bmQtbmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9wZW4tZmVhdHVyZXMt
dG9rZW5pemF0aW9uLTAwMS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6
IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7IkV2ZW50VGFyZ2V0
LWRpc3BhdGNoRXZlbnQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQ
QVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJpZ2dlci1jb250YWlu
ZXItc2Nyb2xsLWVtcHR5Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIFBBU1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1fcmVncmVzc2lvbnMi
OjQsIm90aGVyX2NyYXNoZXMiOnt9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51bV9taXNzaW5nIjow
LCJsYXlvdXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0L0xheW91dFRlc3Rz
IiwidmVyc2lvbiI6NCwibnVtX3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZh
bHNlLCJkYXRlIjoiMDc6MzNQTSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19wcmV0dHlfcGF0Y2gi
OnRydWUsImZpeGFibGUiOjQ4MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhwZWN0YXRpb25zX2Zp
bGUiOnRydWV9KTsnLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL2V2ZW50cy9FdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50LWFjdHVhbC50eHQiOiAiZyIs
CiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL3RoZS13aW5kb3ctb2JqZWN0L2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJy
b3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUvb3Blbi1mZWF0dXJlcy10b2tlbml6YXRpb24tMDAxLWFj
dHVhbC50eHQiOiAiaCIsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYnJvd3NpbmctY29udGV4dC1hY3R1YWwudHh0Ijog
ImkiLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2lu
dGVyZmFjZXMtYWN0dWFsLnR4dCI6ICJqIn0KLSAgICAgICAgc2VsZi5maWxlcyA9IHsibWFjLXdr
MiI6IG1hY193azJfZmlsZXMsICJtYWMtd2sxYSI6IG1hY193azFhX2ZpbGVzLCAibWFjLXdrMWIi
OiBtYWNfd2sxYl9maWxlcywgImlvcy1zaW0iOiBpb3Nfc2ltX2ZpbGVzLCAid2luLWZ1dHVyZSI6
IHdpbl9mdXR1cmVfZmlsZXN9CisgICAgICAgIHNlbGYuZmlsZXMgPSB7Im1hYy13azIiOiBtYWNf
d2syX2ZpbGVzLCAibWFjLXdrMWEiOiBtYWNfd2sxYV9maWxlcywgIm1hYy13azFiIjogbWFjX3dr
MWJfZmlsZXMsICJpb3Mtd2syIjogaW9zX2ZpbGVzLCAid2luIjogd2luX2ZpbGVzfQogCiAgICAg
ZGVmIHVuemlwKHNlbGYsIGNvbnRlbnQpOgogICAgICAgICBzZWxmLmNvbnRlbnQgPSBjb250ZW50
CkBAIC0xMzMsNyArMTY1LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uVXBkYXRlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2ludGVyZmFjZXMtZXhwZWN0ZWQu
dHh0JzogImotbWFjLXdrMiJ9KQogCiAgICAgICAgIG1vY2tfemlwID0gTW9ja1ppcCgpCi0gICAg
ICAgIHVwZGF0ZXIgPSBUZXN0RXhwZWN0YXRpb25VcGRhdGVyKGhvc3QsICIxMjM0NTYiLCBUcnVl
LCBGYWxzZSwgTW9ja0J1Z3ppbGxhKCksIGxhbWJkYSBjb250ZW50OiBtb2NrX3ppcC51bnppcChj
b250ZW50KSkKKyAgICAgICAgdXBkYXRlciA9IFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIoaG9zdCwg
IjEyMzQ1NiIsIFRydWUsIEZhbHNlLCBNb2NrQnVnemlsbGEoKSwgbGFtYmRhIGNvbnRlbnQ6IG1v
Y2tfemlwLnVuemlwKGNvbnRlbnQpLCBNb2NrUmVxdWVzdHMoKSkKICAgICAgICAgdXBkYXRlci5k
b191cGRhdGUoKQogICAgICAgICAjIG1hYy13azIgZXhwZWN0YXRpb24KICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlbGYuX2lzX21hdGNoaW5nKGhvc3QsICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRpcmVjdC9yZWRpcmVjdC1jb3VudC1jcm9zcy1vcmlnaW4t
ZXhwZWN0ZWQudHh0IiwgImEiKSkKQEAgLTE0NCwxOCArMTc2LDcgQEAgY2xhc3MgVGVzdEV4cGVj
dGF0aW9uVXBkYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoc2VsZi5faXNfbWF0Y2hpbmcoaG9zdCwgInBsYXRmb3JtL2lvcy13azIvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIp
KQogICAgICAgICAjIHJlbW92YWwgb2YgbWFjLXdrMSBleHBlY3RhdGlvbiBzaW5jZSBubyBsb25n
ZXIgZGlmZmVyZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5fZXhpc3RzKGhvc3Qs
ICJwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL3JlZGlyZWN0L3JlZGlyZWN0LWxvY2F0aW9uLWV4cGVjdGVkLnR4dCIpKQorICAgICAgICAj
IHdpbmRvd3Mgc3BlY2lmaWMgZXhwZWN0YXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNl
bGYuX2lzX21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS93aW4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIpKQogCi0gICAgZGVm
IHRlc3RfdXBkYXRlX3dpbl9mdXR1cmVfdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6Ci0gICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZTIoZXhjZXB0aW9uPU9TRXJyb3IoKSkKLSAgICAgICAgaG9zdC5maWxlc3lzdGVtID0gTW9ja0Zp
bGVTeXN0ZW0oZmlsZXM9ewotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvcmVkaXJlY3QvcmVkaXJlY3QtbG9jYXRpb24tZXhwZWN0ZWQudHh0JzogJ2Utd2sxJywKLSAg
ICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnRUYXJnZXQtZGlzcGF0Y2hFdmVudC1leHBlY3Rl
ZC50eHQnOiAiZyIsCi0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2Jq
ZWN0L2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5nLWNvbnRleHRzLWJ5
LW5hbWUvb3Blbi1mZWF0dXJlcy10b2tlbml6YXRpb24tMDAxLWV4cGVjdGVkLnR4dCc6ICJoIiwK
LSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9icm93c2luZy1jb250ZXh0LWV4
cGVjdGVkLnR4dCc6ICJpIiwKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC9pbnRlcmZhY2VzLWV4cGVjdGVk
LnR4dCc6ICJqLW1hYy13azIifSkKIAotICAgICAgICBtb2NrX3ppcCA9IE1vY2taaXAoKQotICAg
ICAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0aW9uVXBkYXRlcihob3N0LCAiMTIzNDU2IiwgVHJ1
ZSwgRmFsc2UsIE1vY2tCdWd6aWxsYShpbmNsdWRlX3drMj1GYWxzZSwgaW5jbHVkZV93aW5fZnV0
dXJlPVRydWUpLCBsYW1iZGEgY29udGVudDogbW9ja196aXAudW56aXAoY29udGVudCkpCi0gICAg
ICAgIHVwZGF0ZXIuZG9fdXBkYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lz
X21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS93aW4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399508</attachid>
            <date>2020-05-15 13:49:03 -0700</date>
            <delta_ts>2020-05-18 07:42:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210975-20200515224902.patch</filename>
            <type>text/plain</type>
            <size>32399</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWY2ZTU2N2I4MGYzMmM5Yzk5ZTAyNDk4Nzc5MzMwOTA3
M2Q2OTVhOC4uMWRmMGU5N2Y2NzU1ZTM1MzEzNzAzMjU3ZjhjNjcwY2IzODhkMGNjNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIwLTA1LTExICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIHVwZGF0ZS10ZXN0LWV4cGVjdGF0aW9ucy1mcm9tLWJ1Z3ppbGxh
IHRvb2wgbm90IHdvcmtpbmcgd2l0aCBuZXcgRVdTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoZSBuZXcgRVdTLCB0aGUgbGF5b3V0IHRlc3Qg
YXJjaGl2ZSByZXN1bHRzIGFyZSBub3QgbG9uZ2VyCisgICAgICAgIHBvc3RlZCB0byBidWd6aWxs
YSBhcyBhdHRhY2htZW50LiBOb3cgd2UgbmVlZCB0byBpbnNwZWN0IHRoZSBFV1MKKyAgICAgICAg
c2VydmVyIHRvIGdldCB0aGUgc3RhdHVzIG9mIHRoZSBydW5zIGZvciB0aGUgcGF0Y2ggaWQsIGFu
ZCB0aGVuCisgICAgICAgIHF1ZXJ5IHRoZSBFV1MgYnVpbGJvdCBzZXJ2ZXIgaW4gb3JkZXIgdG8g
Z2V0IHRoZSBkZXRhaWxzIG9mIGVhY2gKKyAgICAgICAgcnVuIHRvIGZpbmFsbHkgb2J0YWluIHRo
ZSBVUkwgd2l0aCB0aGUgemlwIGZpbGUgZm9yIHRoZSByZXN1bHRzLgorCisgICAgICAgIFRoZSB0
b29sIG5vdyBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgcGxhdGZvcm0tc3BlY2lmaWMgYW5kIGdlbmVy
aWMKKyAgICAgICAgcmVzdWx0cyBhdXRvbWF0aWNhbGx5IChpdHMgbm90IGxvbmdlciBuZWVkZWQg
dG8gc3BlY2lmeSB3aGV0aGVyCisgICAgICAgIHRoZSByZXN1bHQgaXRzIGdlbmVyaWMgb3Igbm90
KS4gSXQgdXNlcyBtYWMtd2syIHJlc3VsdHMgYXMgZ2VuZXJpYy4KKworICAgICAgICBBbHNvIG5v
dyBpdCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIHRlc3RzIHdoZXJlIHRoZSByZXN1bHQK
KyAgICAgICAgaXMgTUlTU0lORy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHk6CisgICAgICAgIChjb25m
aWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChhcmd1bWVudF9wYXJzZXIpOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uVXBkYXRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25V
cGRhdGVyLl9wbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fZ2V0X2xheW91dF90ZXN0c19ydW4p
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fbG9va3VwX2V3c19yZXN1bHRzKToK
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3Rlc3RzX3RvX3VwZGF0ZSk6CisgICAg
ICAgIChUZXN0RXhwZWN0YXRpb25VcGRhdGVyLl91cGRhdGVfZm9yX2dlbmVyaWNfYm90KToKKyAg
ICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3VwZGF0ZV9mb3JfcGxhdGZvcm1fc3BlY2lm
aWNfYm90KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuZG9fdXBkYXRlKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2Nr
QXR0YWNobWVudC5fX2luaXRfXyk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19wYXRjaCk6
CisgICAgICAgIChNb2NrQXR0YWNobWVudCk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19v
YnNvbGV0ZSk6CisgICAgICAgIChNb2NrQnVnemlsbGEpOgorICAgICAgICAoTW9ja0J1Z3ppbGxh
LmF0dGFjaG1lbnRzKToKKyAgICAgICAgKE1vY2tSZXF1ZXN0cyk6CisgICAgICAgIChNb2NrUmVx
dWVzdHMuX19pbml0X18pOgorICAgICAgICAoTW9ja1JlcXVlc3RzLmdldCk6CisgICAgICAgIChN
b2NrUmVxdWVzdHMuY29udGVudCk6CisgICAgICAgIChNb2NrUmVxdWVzdHMudGV4dCk6CisgICAg
ICAgIChNb2NrWmlwLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXJU
ZXN0LnRlc3RfdXBkYXRlX3Rlc3RfZXhwZWN0YXRpb25zKToKKwogMjAyMC0wNS0xNSAgRGllZ28g
UGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtidWlsZGJvdF0gSW5j
cmVhc2UgYmxvY2tzaXplIG9mIGZpbGUgdHJhbnNmZXIgaW4gVXBsb2FkVGVzdFJlc3VsdHMgc3Rl
cApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHkKaW5kZXggYTM5YTE1
NzI3Y2M4M2EzNWMzYzIwOGMzNTJkZTM2ZDQxZjFiZTIwNy4uNGE4NjZjMDI5MDQyNzdjMTNhNGRl
NTg1NjFmYjYxZTliYTVlOGY4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9leHBlY3RhdGlvbl91
cGRhdGVyLnB5CkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAKICMgQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDE3ICszMywyNSBAQCBpbXBvcnQgaW8KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgemlwZmls
ZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBvcnQgZXdzc2VydmVyX2Rl
ZmF1bHRfaG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBidWd6aWxsYQogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cwog
ZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0X3Jlc3VsdF93cml0ZXIg
aW1wb3J0IFRlc3RSZXN1bHRXcml0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2ltcG9ydCByZXF1ZXN0cworaW1wb3J0IGpzb24K
K2ltcG9ydCByZQorCisjIEJ1aWxkYm90IHN0YXR1cyBjb2RlcyByZWZlcmVuY2VkIGZyb20gaHR0
cHM6Ly9naXRodWIuY29tL2J1aWxkYm90L2J1aWxkYm90L2Jsb2IvbWFzdGVyL21hc3Rlci9idWls
ZGJvdC9wcm9jZXNzL3Jlc3VsdHMucHkKK0VXU19TVEFURUNPREVTID0geydTVUNDRVNTJzogMCwg
J1dBUk5JTkdTJzogMSwgJ0ZBSUxVUkUnOiAyLCAnU0tJUFBFRCc6IDMsICdFWENFUFRJT04nOiA0
LCAnUkVUUlknOiA1LCAnQ0FOQ0VMTEVEJzogNn0KKwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKIAotZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CitkZWYgY29uZmlndXJl
X2xvZ2dpbmcoZGVidWc9RmFsc2UpOgogICAgIGNsYXNzIExvZ0hhbmRsZXIobG9nZ2luZy5TdHJl
YW1IYW5kbGVyKToKIAogICAgICAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZCk6CkBAIC01MCwx
MCArNTksMTEgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgICAgICAgICAgICAgcmV0
dXJuICIlczogJXMiICUgKHJlY29yZC5sZXZlbG5hbWUsIHJlY29yZC5nZXRNZXNzYWdlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcmVjb3JkLmdldE1lc3NhZ2UoKQogCi0gICAgbG9nZ2VyID0gbG9n
Z2luZy5nZXRMb2dnZXIoKQotICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAg
bG9nX2xldmVsID0gbG9nZ2luZy5ERUJVRyBpZiBkZWJ1ZyBlbHNlIGxvZ2dpbmcuSU5GTworICAg
IGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorICAgIGxvZ2dlci5zZXRMZXZl
bChsb2dfbGV2ZWwpCiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQotICAgIGhhbmRsZXIuc2V0
TGV2ZWwobG9nZ2luZy5JTkZPKQorICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nX2xldmVsKQogICAg
IGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCiAgICAgcmV0dXJuIGhhbmRsZXIKIApAQCAtNjEs
MzUgKzcxLDM2IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogZGVmIGFyZ3VtZW50X3BhcnNl
cigpOgogICAgIGRlc2NyaXB0aW9uID0gIiIiVXBkYXRlIGV4cGVjdGVkLnR4dCBmaWxlcyBmcm9t
IHBhdGNoZXMgc3VibWl0dGVkIGJ5IEVXUyBib3RzIG9uIGJ1Z3ppbGxhLiBHaXZlbiBpZCByZWZl
cnMgdG8gYSBidWcgaWQgYnkgZGVmYXVsdC4iIiIKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcihwcm9nPSdpbXBvcnR1cGRhdGUtdGVzdC1leHBlY3RhdGlvbnMtZnJvbS1idWd6
aWxsYSBidWd6aWxsYV9pZCcsIGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLCBmb3JtYXR0ZXJfY2xh
c3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKQotCiAgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLWEnLCAnLS1pcy1hdHRhY2htZW50LWlkJywgZGVzdD0naXNfYnVnX2lkJywg
YWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0nV2hldGhlciB0aGUgZ2l2
ZW4gaWQgaXMgYSBidWd6aWxsYSBhdHRhY2htZW50IGFuZCBub3QgYSBidWcgaWQnKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0taXMtcGxhdGZvcm0tc3BlY2lmaWMnLCBkZXN0PSdp
c19hdHRhY2htZW50X3BsYXRmb3JtX3NwZWNpZmljJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVm
YXVsdD1GYWxzZSwgaGVscD0nV2hldGhlciBnZW5lcmljIGV4cGVjdGVkIGZpbGVzIHNob3VsZCBi
ZSB1cGRhdGVkIG9yIG5vdCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1ib3Qt
ZmlsdGVyJywgZGVzdD0nYm90X2ZpbHRlcl9uYW1lJywgYWN0aW9uPSdzdG9yZScsIGRlZmF1bHQ9
Tm9uZSwgaGVscD0nT25seSBwcm9jZXNzIEVXUyByZXN1bHRzIGZvciBib3RzIHdoZXJlIEJPVF9G
SUxURVJfTkFNRSBpdHMgcGFydCBvZiB0aGUgbmFtZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLWQnLCAnLS1kZWJ1ZycsIGRlc3Q9J2RlYnVnJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVm
YXVsdD1GYWxzZSwgaGVscD0nTG9nIGRlYnVnIG1lc3NhZ2VzJykKICAgICByZXR1cm4gcGFyc2Vy
CiAKIAogY2xhc3MgVGVzdEV4cGVjdGF0aW9uVXBkYXRlcihvYmplY3QpOgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGhvc3QsIGJ1Z3ppbGxhX2lkLCBpc19idWdfaWQ9VHJ1ZSwgaXNfYXR0YWNo
bWVudF9wbGF0Zm9ybV9zcGVjaWZpYz1GYWxzZSwgYXR0YWNobWVudF9mZXRjaGVyPWJ1Z3ppbGxh
LkJ1Z3ppbGxhKCksIHVuemlwPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBi
dWd6aWxsYV9pZCwgaXNfYnVnX2lkPVRydWUsIGJvdF9maWx0ZXJfbmFtZT1Ob25lLCBhdHRhY2ht
ZW50X2ZldGNoZXI9YnVnemlsbGEuQnVnemlsbGEoKSwgdW56aXA9Tm9uZSwgdXJsX2ZldGNoZXI9
cmVxdWVzdHMpOgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuZmlsZXN5
c3RlbSA9IHNlbGYuaG9zdC5maWxlc3lzdGVtCisgICAgICAgIHNlbGYuYm90X2ZpbHRlcl9uYW1l
ID0gYm90X2ZpbHRlcl9uYW1lCiAgICAgICAgIHNlbGYudW56aXAgPSB1bnppcCBpZiB1bnppcCBl
bHNlIGxhbWJkYSBjb250ZW50OiB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyhjb250ZW50KSkK
KyAgICAgICAgc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5ID0gV2ViS2l0RmluZGVyKHNlbGYu
ZmlsZXN5c3RlbSkucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCJMYXlvdXRUZXN0cyIpCisgICAgICAg
IHNlbGYudXJsX2ZldGNoZXIgPSB1cmxfZmV0Y2hlcgogICAgICAgICBpZiBpc19idWdfaWQ6Ci0g
ICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzID0ge30KLSAgICAg
ICAgICAgIGZvciBhdHRhY2htZW50IGluIGF0dGFjaG1lbnRfZmV0Y2hlci5mZXRjaF9idWcoYnVn
emlsbGFfaWQpLmF0dGFjaG1lbnRzKCk6Ci0gICAgICAgICAgICAgICAgYm90X3R5cGUgPSBzZWxm
Ll9ib3RfdHlwZShhdHRhY2htZW50KQotICAgICAgICAgICAgICAgIGlmIGJvdF90eXBlOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzW2JvdF90
eXBlXSA9IGF0dGFjaG1lbnQKLSAgICAgICAgICAgIHNlbGYuZ2VuZXJpY19hdHRhY2htZW50ID0g
c2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50cy5wb3AoIm1hYy13azIiKSBpZiAibWFj
LXdrMiIgaW4gc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50cyBlbHNlIE5vbmUKKyAg
ICAgICAgICAgIGJ1Z19pbmZvID0gYXR0YWNobWVudF9mZXRjaGVyLmZldGNoX2J1ZyhidWd6aWxs
YV9pZCkKKyAgICAgICAgICAgIGF0dGFjaG1lbnRzID0gW2F0dGFjaG1lbnRzIGZvciBhdHRhY2ht
ZW50cyBpbiBidWdfaW5mby5hdHRhY2htZW50cyhpbmNsdWRlX29ic29sZXRlPUZhbHNlKSBpZiBh
dHRhY2htZW50cy5pc19wYXRjaCgpXQorICAgICAgICAgICAgaWYgbGVuKGF0dGFjaG1lbnRzKSA+
IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGb3VuZCBtb3JlIHRoYW4g
b25lIG5vbi1vYnNvbGV0ZSBwYXRjaCBpbiBidWcge30uIFBsZWFzZSBzcGVjaWZ5IHdoaWNoIG9u
ZSB0byBwcm9jZXNzLiIuZm9ybWF0KGJ1Z3ppbGxhX2lkKSkKKyAgICAgICAgICAgIGlmIGxlbihh
dHRhY2htZW50cykgPCAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ291
bGRuJ3QgZmluZCBhbnkgbm9uLW9ic29sZXRlIHBhdGNoIGluIGJ1ZyB7fS4gUGxlYXNlIHNwZWNp
Znkgd2hpY2ggb25lIHRvIHByb2Nlc3MuIi5mb3JtYXQoYnVnemlsbGFfaWQpKQorICAgICAgICAg
ICAgc2VsZi5wYXRjaCA9IGF0dGFjaG1lbnRzWzBdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBhdHRhY2htZW50ID0gYXR0YWNobWVudF9mZXRjaGVyLmZldGNoX2F0dGFjaG1lbnQoYnVnemls
bGFfaWQpCi0gICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzID0g
e3NlbGYuX2JvdF90eXBlKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50fSBpZiBpc19hdHRhY2htZW50
X3BsYXRmb3JtX3NwZWNpZmljIGVsc2Uge30KLSAgICAgICAgICAgIHNlbGYuZ2VuZXJpY19hdHRh
Y2htZW50ID0gYXR0YWNobWVudCBpZiBub3QgaXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVjaWZp
YyBlbHNlIE5vbmUKLQotICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNlbGYu
ZmlsZXN5c3RlbSkKLSAgICAgICAgc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5ID0gd2Via2l0
X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkxheW91dFRlc3RzIikKKyAgICAgICAgICAg
IHNlbGYucGF0Y2ggPSBhdHRhY2htZW50X2ZldGNoZXIuZmV0Y2hfYXR0YWNobWVudChidWd6aWxs
YV9pZCkKKyAgICAgICAgaWYgbm90IHNlbGYucGF0Y2guaXNfcGF0Y2goKToKKyAgICAgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcigiQXR0YWNobWVudCB7fSBpdHMgbm90IGEgcGF0Y2guIENhbid0
IGNvbnRpbnVlLiIuZm9ybWF0KGJ1Z3ppbGxhX2lkKSkKIAotICAgIGRlZiBfYm90X3R5cGUoc2Vs
ZiwgYXR0YWNobWVudCk6Ci0gICAgICAgIG5hbWUgPSBhdHRhY2htZW50Lm5hbWUoKQorICAgIGRl
ZiBfcGxhdGZvcm1fbmFtZShzZWxmLCBib3RfbmFtZSk6CisgICAgICAgIG5hbWUgPSBib3RfbmFt
ZQogICAgICAgICBpZiAibWFjIiBpbiBuYW1lIGFuZCBuYW1lLmVuZHN3aXRoKCItd2syIik6CiAg
ICAgICAgICAgICByZXR1cm4gIm1hYy13azIiCiAgICAgICAgIGlmICJtYWMiIGluIG5hbWUgYW5k
IG5vdCBuYW1lLmVuZHN3aXRoKCItd2syIik6CkBAIC05OCw0OCArMTA5LDExMiBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25VcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gImlvcy13
azIiCiAgICAgICAgIGlmICJ3aW4tZnV0dXJlIiBpbiBuYW1lOgogICAgICAgICAgICAgcmV0dXJu
ICJ3aW4iCisgICAgICAgIGlmICJndGsiIGluIG5hbWU6CisgICAgICAgICAgICByZXR1cm4gImd0
ayIKKyAgICAgICAgaWYgIndwZSIgaW4gbmFtZToKKyAgICAgICAgICAgIHJldHVybiAid3BlIgor
ICAgICAgICBpZiAiLWRlYnVnIiBpbiBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVw
bGFjZSgiLWRlYnVnIiwgIiIpCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBkZWYgX2dldF9s
YXlvdXRfdGVzdHNfcnVuKHNlbGYsIGJvdF9uYW1lLCBld3NfYnVpbGRfdXJsKToKKyAgICAgICAg
aWYgbm90IHJlLm1hdGNoKCJodHRwLip3ZWJraXQub3JnLyMvYnVpbGRlcnMvWzAtOV0rL2J1aWxk
cy9bMC05XSskIiwgZXdzX2J1aWxkX3VybCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJUaGUgVVJMIHt9IGZyb20gRVdTIGhhcyBhbiB1bmV4cGVjdGVkIGZvcm1hdCIuZm9ybWF0KGV3
c19idWlsZF91cmwpKQorICAgICAgICBld3NfYnVpbGRib3Rfc2VydmVyLCBld3NfYnVpbGRib3Rf
cGF0aCA9IGV3c19idWlsZF91cmwuc3BsaXQoJyMnKQorICAgICAgICBld3NfYnVpbGRib3Rfc3Rl
cHNfdXJsID0gInt9YXBpL3Yye30vc3RlcHMiLmZvcm1hdChld3NfYnVpbGRib3Rfc2VydmVyLCBl
d3NfYnVpbGRib3RfcGF0aCkKKyAgICAgICAgZXdzX2J1aWxkYm90X3N0ZXBzX3JlcXVlc3QgPSBz
ZWxmLnVybF9mZXRjaGVyLmdldChld3NfYnVpbGRib3Rfc3RlcHNfdXJsKQorICAgICAgICBld3Nf
YnVpbGRib3Rfc3RlcHMgPSBqc29uLmxvYWRzKGV3c19idWlsZGJvdF9zdGVwc19yZXF1ZXN0LnRl
eHQpCisgICAgICAgIF9sb2cuZGVidWcoIlRyeWluZyB0byBmaW5kaW5nIGZhaWxlZCBsYXlvdXQg
dGVzdCBydW4gZm9yIGJvdCB7fSBhdCB1cmwge30iLmZvcm1hdChib3RfbmFtZSwgZXdzX2J1aWxk
Ym90X3N0ZXBzX3VybCkpCisgICAgICAgIGZvciBzdGVwIGluIGV3c19idWlsZGJvdF9zdGVwc1sn
c3RlcHMnXToKKyAgICAgICAgICAgICMgcGljayB0aGUgZmlyc3QgcnVuIGFzIHRoZSBvbmUgZm9y
IHVwZGF0aW5nIHRoZSBsYXlvdXQgdGVzdHMuCisgICAgICAgICAgICBpZiBzdGVwWyduYW1lJ10g
IT0gJ2xheW91dC10ZXN0cyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGlmIG5vdCBzdGVwWydjb21wbGV0ZSddOgorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiU2tp
cHBpbmcgdG8gcHJvY2VzcyB1bmZpbmlzaGVkIGxheW91dC10ZXN0cyBydW4gZm9yIGJvdCB7fS4g
UGxlYXNlIHJldHJ5IGxhdGVyIi5mb3JtYXQoYm90X25hbWUpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICBmb3IgdXJsX2VudHJ5IGluIHN0ZXBbJ3VybHMnXToKKyAgICAg
ICAgICAgICAgICB1cmwgPSB1cmxfZW50cnlbJ3VybCddCisgICAgICAgICAgICAgICAgaWYgdXJs
LmVuZHN3aXRoKCcuemlwJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIHVybC5zdGFydHN3aXRo
KCcvJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAie317fSIuZm9ybWF0KGV3c19i
dWlsZGJvdF9zZXJ2ZXIsIHVybC5sc3RyaXAoJy8nKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsibGF5b3V0LXRlc3RzLXJlc3VsdHMtc3RyaW5nIjogc3RlcFsnc3RhdGVfc3RyaW5nJ10s
ICJsYXlvdXQtdGVzdHMtYXJjaGl2ZS11cmwiOiB1cmx9CiAgICAgICAgIHJldHVybiBOb25lCiAK
LSAgICBkZWYgX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLCBhdHRhY2htZW50LCBib3RfdHlwZT1Ob25l
KToKLSAgICAgICAgX2xvZy5pbmZvKCJQcm9jZXNzaW5nIGF0dGFjaG1lbnQgIiArIHN0cihhdHRh
Y2htZW50LmlkKCkpKQotICAgICAgICB6aXBfZmlsZSA9IHNlbGYudW56aXAoYXR0YWNobWVudC5j
b250ZW50cygpKQorICAgIGRlZiBfbG9va3VwX2V3c19yZXN1bHRzKHNlbGYpOgorICAgICAgICBf
bG9nLmluZm8oIkxvb2tpbmcgZm9yIEVXUyByZXN1bHRzIGluIHBhdGNoIGF0dGFjaG1lbnQgJXMg
ZnJvbSBidWcgJXMiICUgKHNlbGYucGF0Y2guaWQoKSwgc2VsZi5wYXRjaC5idWcoKS5pZCgpKSkK
KyAgICAgICAgZXdzX2J1YmJsZXNfdXJsID0gImh0dHBzOi8ve30vc3RhdHVzL3t9LyIuZm9ybWF0
KGV3c3NlcnZlcl9kZWZhdWx0X2hvc3QsIHNlbGYucGF0Y2guaWQoKSkKKyAgICAgICAgX2xvZy5k
ZWJ1ZygiUXVlcnlpbmcgYnViYmxlIHN0YXR1cyBhdCB7fSIuZm9ybWF0KGV3c19idWJibGVzX3Vy
bCkpCisgICAgICAgIGV3c19idWJibGVzX3N0YXR1c19yZXF1ZXN0ID0gc2VsZi51cmxfZmV0Y2hl
ci5nZXQoZXdzX2J1YmJsZXNfdXJsKQorICAgICAgICBld3NfYnViYmxlc19zdGF0dXMgPSBqc29u
LmxvYWRzKGV3c19idWJibGVzX3N0YXR1c19yZXF1ZXN0LnRleHQpCisgICAgICAgIHNlbGYuZXdz
X3Jlc3VsdHMgPSB7fQorICAgICAgICBmb3IgYm90IGluIGV3c19idWJibGVzX3N0YXR1czoKKyAg
ICAgICAgICAgIGlmIGV3c19idWJibGVzX3N0YXR1c1tib3RdWydzdGF0ZSddIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJFV1MgYm90IHt9IGhhcyBzdGlsbCBub3QgZmluaXNo
ZWQuIElnbm9yaW5nIi5mb3JtYXQoYm90KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgX2xvZy5kZWJ1ZygiRm91bmQgRVdTIHJ1biBhdCB7fSBmb3IgYm90IHt9IHdpdGgg
c3RhdGUge30iLmZvcm1hdChld3NfYnViYmxlc19zdGF0dXNbYm90XVsndXJsJ10sIGJvdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgW1NUQVRFIGZvciBTVEFURSBpbiBFV1NfU1RBVEVDT0RFUy5r
ZXlzKCldW2V3c19idWJibGVzX3N0YXR1c1tib3RdWydzdGF0ZSddXSkpCisgICAgICAgICAgICBp
ZiBzZWxmLmJvdF9maWx0ZXJfbmFtZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJvdF9maWx0
ZXJfbmFtZSBpbiBib3Q6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXdzX3Jlc3VsdHNbYm90
XSA9IHNlbGYuX2dldF9sYXlvdXRfdGVzdHNfcnVuKGJvdCwgZXdzX2J1YmJsZXNfc3RhdHVzW2Jv
dF1bJ3VybCddKQorICAgICAgICAgICAgZWxpZiBld3NfYnViYmxlc19zdGF0dXNbYm90XVsnc3Rh
dGUnXSBpbiBbRVdTX1NUQVRFQ09ERVNbJ0ZBSUxVUkUnXSwgRVdTX1NUQVRFQ09ERVNbJ1dBUk5J
TkdTJ11dOgorICAgICAgICAgICAgICAgIHNlbGYuZXdzX3Jlc3VsdHNbYm90XSA9IHNlbGYuX2dl
dF9sYXlvdXRfdGVzdHNfcnVuKGJvdCwgZXdzX2J1YmJsZXNfc3RhdHVzW2JvdF1bJ3VybCddKQor
CisgICAgICAgICMgRGVsZXRlIGVudHJpZXMgd2l0aCBudWxsIHZhbHVlIChpZiBhbnkpCisgICAg
ICAgIGZvciBib3QgaW4gc2VsZi5ld3NfcmVzdWx0cy5rZXlzKCk6CisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5ld3NfcmVzdWx0c1tib3RdOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmV3c19y
ZXN1bHRzW2JvdF0KKworICAgICAgICBpZiBsZW4oc2VsZi5ld3NfcmVzdWx0cykgPT0gMDoKKyAg
ICAgICAgICAgIGlmIHNlbGYuYm90X2ZpbHRlcl9uYW1lOgorICAgICAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcigiQ291bGRuJ3QgZmluZCBhbnkgZmFpbGVkIEVXUyByZXN1bHQgaW4gYXR0
YWNobWVudC9wYXRjaCB7fSB0aGF0IG1hdGNoZXMgZmlsdGVyIG5hbWUuIi5mb3JtYXQoc2VsZi5w
YXRjaC5pZCgpLCBzZWxmLmJvdF9maWx0ZXJfbmFtZSkpCisgICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoIkNvdWxkbid0IGZpbmQgYW55IGZhaWxlZCBFV1MgcmVzdWx0IGZvciBhdHRhY2ht
ZW50L3BhdGNoIHt9LiBUcnkgdG8gc3BlY2lmeSBhIGJvdCBmaWx0ZXIgbmFtZSBtYW51YWxseS4i
LmZvcm1hdChzZWxmLnBhdGNoLmlkKCkpKQorCisgICAgZGVmIF90ZXN0c190b191cGRhdGUoc2Vs
ZiwgYm90X25hbWUpOgorICAgICAgICBfbG9nLmluZm8oInt9IGFyY2hpdmU6IHt9Ii5mb3JtYXQo
Ym90X25hbWUsIHNlbGYuZXdzX3Jlc3VsdHNbYm90X25hbWVdWydsYXlvdXQtdGVzdHMtYXJjaGl2
ZS11cmwnXSkpCisgICAgICAgIF9sb2cuaW5mbygie30gc3RhdHVzOiB7fSIuZm9ybWF0KGJvdF9u
YW1lLCBzZWxmLmV3c19yZXN1bHRzW2JvdF9uYW1lXVsnbGF5b3V0LXRlc3RzLXJlc3VsdHMtc3Ry
aW5nJ10pKQorICAgICAgICBsYXlvdXRfdGVzdHNfYXJjaGl2ZV9yZXF1ZXN0ID0gc2VsZi51cmxf
ZmV0Y2hlci5nZXQoc2VsZi5ld3NfcmVzdWx0c1tib3RfbmFtZV1bJ2xheW91dC10ZXN0cy1hcmNo
aXZlLXVybCddKQorICAgICAgICBsYXlvdXRfdGVzdHNfYXJjaGl2ZV9jb250ZW50ID0gbGF5b3V0
X3Rlc3RzX2FyY2hpdmVfcmVxdWVzdC5jb250ZW50CisgICAgICAgIHppcF9maWxlID0gc2VsZi51
bnppcChsYXlvdXRfdGVzdHNfYXJjaGl2ZV9jb250ZW50KQogICAgICAgICByZXN1bHRzID0gTGF5
b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyh6aXBfZmlsZS5yZWFkKCJmdWxsX3Jl
c3VsdHMuanNvbiIpKQotICAgICAgICByZXN1bHRzX3RvX3VwZGF0ZSA9IFtyZXN1bHQudGVzdF9u
YW1lIGZvciByZXN1bHQgaW4gcmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpIGlmIHJlc3Vs
dC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlRFWFRdCisgICAgICAgIHJlc3VsdHNfdG9fdXBk
YXRlID0gW3Jlc3VsdC50ZXN0X25hbWUgZm9yIHJlc3VsdCBpbiByZXN1bHRzLmZhaWxpbmdfdGVz
dF9yZXN1bHRzKCkgaWYgcmVzdWx0LnR5cGUgaW4gW3Rlc3RfZXhwZWN0YXRpb25zLlRFWFQsIHRl
c3RfZXhwZWN0YXRpb25zLk1JU1NJTkddXQogICAgICAgICByZXR1cm4ge3Jlc3VsdDogemlwX2Zp
bGUucmVhZChUZXN0UmVzdWx0V3JpdGVyLmFjdHVhbF9maWxlbmFtZShyZXN1bHQsIHNlbGYuZmls
ZXN5c3RlbSkpIGZvciByZXN1bHQgaW4gcmVzdWx0c190b191cGRhdGV9CiAKICAgICBkZWYgX2Zp
bGVfY29udGVudF9pZl9leGlzdHMoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGZpbGVuYW1lKSBpZiBzZWxmLmZpbGVzeXN0ZW0u
ZXhpc3RzKGZpbGVuYW1lKSBlbHNlICIiCiAKLSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0aGUg
cG9zc2liaWxpdHkgdG8gYWxpZ24gd2hhdCBpcyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5nbGVf
dGVzdF9ydW5uZXIgaXMgZG9pbmcuCi0gICAgIyBJbiBwYXJ0aWN1bGFyIHRoZSBmYWN0IG9mIG5v
dCBvdmVyd3JpdGluZyB0aGUgZmlsZSBpZiBjb250ZW50IGlzIHRoZSBzYW1lLgotICAgIGRlZiBf
dXBkYXRlX2Zyb21fZ2VuZXJpY19hdHRhY2htZW50KHNlbGYpOgotICAgICAgICBmb3IgdGVzdF9u
YW1lLCBleHBlY3RlZF9jb250ZW50IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLmdlbmVy
aWNfYXR0YWNobWVudCkuaXRlbXMoKToKKyAgICBkZWYgX3VwZGF0ZV9mb3JfZ2VuZXJpY19ib3Qo
c2VsZiwgYm90X25hbWUpOgorICAgICAgICBmb3IgdGVzdF9uYW1lLCBleHBlY3RlZF9jb250ZW50
IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShib3RfbmFtZSkuaXRlbXMoKToKICAgICAgICAgICAg
IGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVz
dF9yZXBvc2l0b3J5LCBUZXN0UmVzdWx0V3JpdGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFt
ZSwgc2VsZi5maWxlc3lzdGVtKSkKICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0g
c2VsZi5fZmlsZV9jb250ZW50X2lmX2V4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6Ci0gICAgICAg
ICAgICAgICAgX2xvZy5pbmZvKCJVcGRhdGluZyAiICsgdGVzdF9uYW1lICsgIiAoIiArIGV4cGVj
dGVkX2ZpbGVuYW1lICsgIikiKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcg
IiArIHRlc3RfbmFtZSArICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIgKyBleHBlY3RlZF9maWxl
bmFtZSArICIpIikKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9k
aXJlY3Rvcnkoc2VsZi5maWxlc3lzdGVtLmRpcm5hbWUoZXhwZWN0ZWRfZmlsZW5hbWUpKQogICAg
ICAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0ZWRfZmls
ZW5hbWUsIGV4cGVjdGVkX2NvbnRlbnQpCiAKLSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0aGUg
cG9zc2liaWxpdHkgdG8gYWxpZ24gd2hhdCBpcyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5nbGVf
dGVzdF9ydW5uZXIgaXMgZG9pbmcuCi0gICAgIyBJbiBwYXJ0aWN1bGFyIHRoZSBhYmlsaXR5IHRv
IHJlbW92ZSBhIG5ldyBzcGVjaWZpYyBleHBlY3RhdGlvbiBpZiBpdCBpcyB0aGUgc2FtZSBhcyB0
aGUgZ2VuZXJpYyBvbmUuCi0gICAgZGVmIF91cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZpY19h
dHRhY2htZW50KHNlbGYsIGF0dGFjaG1lbnQsIGJvdF90eXBlKToKLSAgICAgICAgZm9yIHRlc3Rf
bmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBzZWxmLl90ZXN0c190b191cGRhdGUoYXR0YWNobWVu
dCwgYm90X3R5cGUpLml0ZW1zKCk6Ci0gICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNl
bGYuZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSwgVGVzdFJlc3Vs
dFdyaXRlci5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNlbGYuZmlsZXN5c3RlbSwgYm90
X3R5cGUpKQorICAgIGRlZiBfdXBkYXRlX2Zvcl9wbGF0Zm9ybV9zcGVjaWZpY19ib3Qoc2VsZiwg
Ym90X25hbWUpOgorICAgICAgICBwbGF0Zm9ybV9uYW1lID0gc2VsZi5fcGxhdGZvcm1fbmFtZShi
b3RfbmFtZSkKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBzZWxm
Ll90ZXN0c190b191cGRhdGUoYm90X25hbWUpLml0ZW1zKCk6CisgICAgICAgICAgICBleHBlY3Rl
ZF9maWxlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RfcmVwb3Np
dG9yeSwgVGVzdFJlc3VsdFdyaXRlci5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNlbGYu
ZmlsZXN5c3RlbSwgcGxhdGZvcm1fbmFtZSkpCiAgICAgICAgICAgICBnZW5lcmljX2V4cGVjdGVk
X2ZpbGVuYW1lID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0
b3J5LCBUZXN0UmVzdWx0V3JpdGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgc2VsZi5m
aWxlc3lzdGVtKSkKICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmls
ZV9jb250ZW50X2lmX2V4aXN0cyhnZW5lcmljX2V4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAgICAg
ICAgICAgICBfbG9nLmluZm8oIlVwZGF0aW5nICIgKyB0ZXN0X25hbWUgKyAiIGZvciAiICsgYm90
X3R5cGUgKyAiICgiICsgZXhwZWN0ZWRfZmlsZW5hbWUgKyAiKSIpCi0gICAgICAgICAgICAgICAg
c2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5kaXJu
YW1lKGV4cGVjdGVkX2ZpbGVuYW1lKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0u
d3JpdGVfdGV4dF9maWxlKGV4cGVjdGVkX2ZpbGVuYW1lLCBleHBlY3RlZF9jb250ZW50KQorICAg
ICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50X2lm
X2V4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuaW5m
bygiVXBkYXRpbmcgIiArIHRlc3RfbmFtZSArICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIgKyBl
eHBlY3RlZF9maWxlbmFtZSArICIpIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lz
dGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKGV4cGVjdGVk
X2ZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLndyaXRlX3Rl
eHRfZmlsZShleHBlY3RlZF9maWxlbmFtZSwgZXhwZWN0ZWRfY29udGVudCkKICAgICAgICAgICAg
IGVsaWYgc2VsZi5maWxlc3lzdGVtLmV4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6CisgICAgICAg
ICAgICAgICAgX2xvZy5pbmZvKCJVcGRhdGluZyAiICsgdGVzdF9uYW1lICsgIiBmb3IgIiArIGJv
dF9uYW1lICsgIiAoIFJFTU9WRUQ6ICIgKyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKICAgICAg
ICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ucmVtb3ZlKGV4cGVjdGVkX2ZpbGVuYW1lKQogCiAg
ICAgZGVmIGRvX3VwZGF0ZShzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuZ2VuZXJpY19hdHRh
Y2htZW50IGFuZCBub3Qgc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50czoKLSAgICAg
ICAgICAgIF9sb2cuaW5mbygiTm8gYXR0YWNobWVudCB0byBwcm9jZXNzIikKLSAgICAgICAgICAg
IHJldHVybgotICAgICAgICBpZiBzZWxmLmdlbmVyaWNfYXR0YWNobWVudDoKLSAgICAgICAgICAg
IHNlbGYuX3VwZGF0ZV9mcm9tX2dlbmVyaWNfYXR0YWNobWVudCgpCi0gICAgICAgIGZvciBib3Rf
dHlwZSwgYXR0YWNobWVudCBpbiBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzLml0
ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZpY19h
dHRhY2htZW50KGF0dGFjaG1lbnQsIGJvdF90eXBlKQorICAgICAgICBzZWxmLl9sb29rdXBfZXdz
X3Jlc3VsdHMoKQorICAgICAgICBnZW5lcmljX2JvdHMgPSBbYm90X25hbWUgZm9yIGJvdF9uYW1l
IGluIHNlbGYuZXdzX3Jlc3VsdHMua2V5cygpIGlmIHNlbGYuX3BsYXRmb3JtX25hbWUoYm90X25h
bWUpID09ICJtYWMtd2syIl0KKyAgICAgICAgcGxhdGZvcm1fYm90cyA9IFtib3RfbmFtZSBmb3Ig
Ym90X25hbWUgaW4gc2VsZi5ld3NfcmVzdWx0cy5rZXlzKCkgaWYgc2VsZi5fcGxhdGZvcm1fbmFt
ZShib3RfbmFtZSkgIT0gIm1hYy13azIiXQorICAgICAgICAjIEZpcnN0IHVwZGF0ZSB0aGUgZ2Vu
ZXJpYyByZXN1bHRzLCBzbyB1cGRhdGVzIGZvciBwbGF0Zm9ybSBib3RzIGNhbiB1c2UgdGhpcyBu
ZXcgZ2VuZXJpYyByZXN1bHQgYXMgYmFzZS4KKyAgICAgICAgZm9yIGJvdF9uYW1lIGluIGdlbmVy
aWNfYm90czoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9tIGJv
dCB7fSAoZ2VuZXJpYykiLmZvcm1hdChib3RfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl91cGRh
dGVfZm9yX2dlbmVyaWNfYm90KGJvdF9uYW1lKQorICAgICAgICBmb3IgYm90X25hbWUgaW4gcGxh
dGZvcm1fYm90czoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9t
IGJvdCB7fSAocGxhdGZvcm0pIi5mb3JtYXQoYm90X25hbWUpKQorICAgICAgICAgICAgc2VsZi5f
dXBkYXRlX2Zvcl9wbGF0Zm9ybV9zcGVjaWZpY19ib3QoYm90X25hbWUpCiAKIAogZGVmIG1haW4o
X2FyZ3YsIF9zdGRvdXQsIF9zdGRlcnIpOgpAQCAtMTQ5LDggKzIyNCw4IEBAIGRlZiBtYWluKF9h
cmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBpZiBub3QgYXJnczoKICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCJQbGVhc2UgcHJvdmlkZSBhIGJ1ZyBpZCBvciB1c2UgLWEgb3B0aW9uIikKIAot
ICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAgICBjb25maWd1cmVfbG9nZ2luZyhvcHRpb25zLmRl
YnVnKQogCiAgICAgYnVnemlsbGFfaWQgPSBhcmdzWzBdCi0gICAgdXBkYXRlciA9IFRlc3RFeHBl
Y3RhdGlvblVwZGF0ZXIoSG9zdCgpLCBidWd6aWxsYV9pZCwgb3B0aW9ucy5pc19idWdfaWQsIG9w
dGlvbnMuaXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVjaWZpYykKKyAgICB1cGRhdGVyID0gVGVz
dEV4cGVjdGF0aW9uVXBkYXRlcihIb3N0KCksIGJ1Z3ppbGxhX2lkLCBvcHRpb25zLmlzX2J1Z19p
ZCwgb3B0aW9ucy5ib3RfZmlsdGVyX25hbWUpCiAgICAgdXBkYXRlci5kb191cGRhdGUoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3Rf
ZXhwZWN0YXRpb25fdXBkYXRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHkK
aW5kZXggOTlkZjZhMzA3MTk3OTVkYWM0YzA1NGNkZTkyOTQ5MTM1NTBkMDQ4Ni4uZTg2MjA4YWVl
Y2M1ZDkyYjBmOGRjYzhhZWJlMjc4MDRkNDQ1N2FkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlcl91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemls
bGEvdGVzdF9leHBlY3RhdGlvbl91cGRhdGVyX3VuaXR0ZXN0LnB5CkBAIC00MiwzNCArNDIsNjcg
QEAgRkFLRV9GSUxFUyA9IHsKIAogCiBjbGFzcyBNb2NrQXR0YWNobWVudChBdHRhY2htZW50KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBjb250ZW50cyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dGFjaG1lbnRfZGljdGlvbmFyeSwgY29udGVudHMs
IGlzX3BhdGNoLCBpc19vYnNvbGV0ZSk6CiAgICAgICAgIEF0dGFjaG1lbnQuX19pbml0X18oc2Vs
ZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBzZWxmKQogICAgICAgICBzZWxmLl9jb250ZW50cyA9
IGNvbnRlbnRzCisgICAgICAgIHNlbGYuX2lzX3BhdGNoID0gaXNfcGF0Y2gKKyAgICAgICAgc2Vs
Zi5faXNfb2Jzb2xldGUgPSBpc19vYnNvbGV0ZQogCiAgICAgZGVmIGNvbnRlbnRzKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudHMKIAorICAgIGRlZiBpc19wYXRjaChzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3BhdGNoCisKKyAgICBkZWYgaXNfb2Jzb2xldGUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9pc19vYnNvbGV0ZQogCi1jbGFzcyBNb2NrQnVnemls
bGEoKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVkZV93azI9VHJ1ZSwgaW5jbHVkZV93
aW5fZnV0dXJlPUZhbHNlKToKLSAgICAgICAgc2VsZi5faW5jbHVkZV93azIgPSBpbmNsdWRlX3dr
MgotICAgICAgICBzZWxmLl9pbmNsdWRlX3dpbl9mdXR1cmUgPSBpbmNsdWRlX3dpbl9mdXR1cmUK
IAorY2xhc3MgTW9ja0J1Z3ppbGxhKCk6CiAgICAgZGVmIGZldGNoX2J1ZyhzZWxmLCBpZCk6CiAg
ICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgYXR0YWNobWVudHMoc2VsZik6CisgICAgZGVm
IGF0dGFjaG1lbnRzKHNlbGYsIGluY2x1ZGVfb2Jzb2xldGU9RmFsc2UpOgogICAgICAgICBhdHRh
Y2htZW50cyA9IFtdCi0gICAgICAgIGlmIHNlbGYuX2luY2x1ZGVfd2syOgotICAgICAgICAgICAg
YXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiAxLCAibmFtZSI6ICJBcmNo
aXZlIG9mIGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBld3MxMDMgZm9yIG1hYy1lbGNhcGl0YW4t
d2syIn0sICJtYWMtd2syIikpCi0gICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0YWNo
bWVudCh7ImlkIjogMiwgIm5hbWUiOiAiQXJjaGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZy
b20gZXdzMTAzIGZvciBtYWMtZWxjYXBpdGFuIn0sICJtYWMtd2sxYSIpKQotICAgICAgICBhdHRh
Y2htZW50cy5hcHBlbmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDMsICJuYW1lIjogIkFyY2hpdmUg
b2YgbGF5b3V0LXRlc3QtcmVzdWx0cyBmcm9tIGV3czEwNCBmb3IgbWFjLWVsY2FwaXRhbiJ9LCAi
bWFjLXdrMWIiKSkKLSAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsi
aWQiOiA0LCAibmFtZSI6ICJBcmNoaXZlIG9mIGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBld3Mx
MjIgZm9yIGlvcy1zaW11bGF0b3Itd2syIn0sICJpb3Mtc2ltIikpCi0gICAgICAgIGlmIHNlbGYu
X2luY2x1ZGVfd2luX2Z1dHVyZToKLSAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2Nr
QXR0YWNobWVudCh7ImlkIjogNSwgIm5hbWUiOiAiQXJjaGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1
bHRzIGZyb20gZXdzMTI0IGZvciB3aW4tZnV0dXJlIn0sICJ3aW4tZnV0dXJlIikpCisgICAgICAg
IGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0YWNobWVudCh7ImlkIjogMSwgIm5hbWUiOiAiVGVz
dCBjYXNlIn0sICJIb3cgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSIsIEZhbHNlLCBGYWxzZSkpCisg
ICAgICAgIGlmIGluY2x1ZGVfb2Jzb2xldGU6CisgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBl
bmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDIsICJuYW1lIjogIlBhdGNoIn0sICJQYXRjaCB2MSIs
IFRydWUsIFRydWUpKQorICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2ht
ZW50KHsiaWQiOiAzLCAibmFtZSI6ICJQYXRjaCJ9LCAiUGF0Y2ggdjIiLCBUcnVlLCBUcnVlKSkK
KyAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiA0LCAibmFt
ZSI6ICJQYXRjaCJ9LCAiUGF0Y2ggdjMiLCBUcnVlLCBGYWxzZSkpCiAgICAgICAgIHJldHVybiBh
dHRhY2htZW50cwogCiAKK2NsYXNzIE1vY2tSZXF1ZXN0cygpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKKyAgICAgICAgc2VsZi5fdXJsc19kYXRhID0geworICAgICAgICAgICAgJ2h0dHBzOi8v
ZXdzLndlYmtpdC5vcmcvc3RhdHVzLzQvJzogJ3sibWFjLXdrMSI6IHsidXJsIjogImh0dHBzOi8v
ZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8xL2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9
LCAibWFjLXdrMiI6IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy8yL2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9LCAibWFjLWRlYnVnLXdrMSI6IHsidXJsIjog
Imh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8zL2J1aWxkcy85OSIsICJz
dGF0ZSI6IDJ9LCAiaW9zLXdrMiI6IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy80L2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9LCAid2luIjogeyJ1cmwiOiAi
aHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzUvYnVpbGRzLzk5IiwgInN0
YXRlIjogMn19JywKKyAgICAgICAgICAgICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2Fw
aS92Mi9idWlsZGVycy8xL2J1aWxkcy85OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxl
dGUiOiB0cnVlLCAibmFtZSI6ICJsYXlvdXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBs
YXlvdXQgdGVzdHMiLCAgInVybHMiOiBbIHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3Qg
cmVzdWx0cyIsICJ1cmwiOiAiL3Jlc3VsdHMvbWFjLXdrMS9yMTIzNDUuemlwIiB9IF0gfSBdIH0n
LAorICAgICAgICAgICAgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvYXBpL3YyL2J1aWxk
ZXJzLzIvYnVpbGRzLzk5L3N0ZXBzJzogJ3sgInN0ZXBzIjogWyB7ICJjb21wbGV0ZSI6IHRydWUs
ICJuYW1lIjogImxheW91dC10ZXN0cyIsICJzdGF0ZV9zdHJpbmciOiAiUmFuIGxheW91dCB0ZXN0
cyIsICAidXJscyI6IFsgeyAibmFtZSI6ICJkb3dubG9hZCBsYXlvdXQgdGVzdCByZXN1bHRzIiwg
InVybCI6ICIvcmVzdWx0cy9tYWMtd2syL3IxMjM0NS56aXAiIH0gXSB9IF0gfScsCisgICAgICAg
ICAgICAnaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9hcGkvdjIvYnVpbGRlcnMvMy9idWls
ZHMvOTkvc3RlcHMnOiAneyAic3RlcHMiOiBbIHsgImNvbXBsZXRlIjogdHJ1ZSwgIm5hbWUiOiAi
bGF5b3V0LXRlc3RzIiwgInN0YXRlX3N0cmluZyI6ICJSYW4gbGF5b3V0IHRlc3RzIiwgICJ1cmxz
IjogWyB7ICJuYW1lIjogImRvd25sb2FkIGxheW91dCB0ZXN0IHJlc3VsdHMiLCAidXJsIjogIi9y
ZXN1bHRzL21hYy1kZWJ1Zy13azEvcjEyMzQ1LnppcCIgfSBdIH0gXSB9JywKKyAgICAgICAgICAg
ICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92Mi9idWlsZGVycy80L2J1aWxkcy85
OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUiOiB0cnVlLCAibmFtZSI6ICJsYXlv
dXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlvdXQgdGVzdHMiLCAgInVybHMiOiBb
IHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cyIsICJ1cmwiOiAiL3Jlc3Vs
dHMvaW9zLXdrMi9yMTIzNDUuemlwIiB9ICBdIH0gXSB9JywKKyAgICAgICAgICAgICdodHRwczov
L2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92Mi9idWlsZGVycy81L2J1aWxkcy85OS9zdGVwcyc6
ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUiOiB0cnVlLCAibmFtZSI6ICJsYXlvdXQtdGVzdHMi
LCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlvdXQgdGVzdHMiLCAgInVybHMiOiBbIHsgIm5hbWUi
OiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cyIsICJ1cmwiOiAiL3Jlc3VsdHMvd2luL3Ix
MjM0NS56aXAiIH0gIF0gfSBdIH0nLAorICAgICAgICAgICAgImh0dHBzOi8vZXdzLWJ1aWxkLndl
YmtpdC5vcmcvcmVzdWx0cy9tYWMtd2sxL3IxMjM0NS56aXAiOiAibWFjLXdrMWEiLAorICAgICAg
ICAgICAgImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9tYWMtZGVidWctd2sx
L3IxMjM0NS56aXAiOiAibWFjLXdrMWIiLAorICAgICAgICAgICAgImh0dHBzOi8vZXdzLWJ1aWxk
LndlYmtpdC5vcmcvcmVzdWx0cy9tYWMtd2syL3IxMjM0NS56aXAiOiAibWFjLXdrMiIsCisgICAg
ICAgICAgICAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL2lvcy13azIvcjEy
MzQ1LnppcCI6ICJpb3Mtd2syIiwKKyAgICAgICAgICAgICJodHRwczovL2V3cy1idWlsZC53ZWJr
aXQub3JnL3Jlc3VsdHMvd2luL3IxMjM0NS56aXAiOiAid2luIgorICAgICAgICB9CisKKyAgICBk
ZWYgZ2V0KHNlbGYsIHVybCk6CisgICAgICAgIGlmIHVybCBub3QgaW4gc2VsZi5fdXJsc19kYXRh
OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidXJsIHt9IG5vdCBtb2NrZWQiLmZvcm1h
dCh1cmwpKQorICAgICAgICBzZWxmLl91cmwgPSB1cmwKKyAgICAgICAgcmV0dXJuIHNlbGYKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fdXJsc19kYXRhW3NlbGYuX3VybF0KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0ZXh0KHNl
bGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuY29udGVudCkKKworCiBjbGFzcyBNb2NrWmlw
KCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNvbnRlbnQgPSBOb25l
CkBAIC05NSwxNyArMTI4LDE3IEBAIGNsYXNzIE1vY2taaXAoKToKICAgICAgICAgICAgICJpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRpcmVjdC9yZWRpcmVjdC1s
b2NhdGlvbi13b3JrZXItYWN0dWFsLnR4dCI6ICJkIiwKICAgICAgICAgICAgICJpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRpcmVjdC9yZWRpcmVjdC1sb2NhdGlv
bi1hY3R1YWwudHh0IjogImUiLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQtYWN0dWFsLnR4
dCI6ICJmLXdrMWIifQotICAgICAgICBpb3Nfc2ltX2ZpbGVzID0geyJmdWxsX3Jlc3VsdHMuanNv
biI6ICdBRERfUkVTVUxUUyh7InRlc3RzIjp7ImltcG9ydGVkIjp7InczYyI6eyJ3ZWItcGxhdGZv
cm0tdGVzdHMiOnsidXJsIjp7ImludGVyZmFjZXMuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9O
IiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwiaHRtbCI6eyJicm93c2VycyI6
eyJ3aW5kb3dzIjp7ImJyb3dzaW5nLWNvbnRleHQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9O
IiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwidGhlLXdpbmRvdy1vYmplY3Qi
OnsiYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMtYnkt
bmFtZSI6eyJvcGVuLWZlYXR1cmVzLXRva2VuaXphdGlvbi0wMDEuaHRtbCI6eyJyZXBvcnQiOiJS
RUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fSwiZG9tIjp7
ImV2ZW50cyI6eyJFdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50Lmh0bWwiOnsicmVwb3J0IjoiUkVH
UkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifX19fX19LCJhbmltYXRp
b25zIjp7InRyaWdnZXItY29udGFpbmVyLXNjcm9sbC1lbXB0eS5odG1sIjp7InJlcG9ydCI6IkZM
QUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCBQQVNTIn19fSwic2tpcHBlZCI6
OTg4MSwibnVtX3JlZ3Jlc3Npb25zIjo0LCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0ZWQi
OmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2RpciI6Ii9Wb2x1bWVzL0RhdGEv
RVdTL1dlYktpdC9MYXlvdXRUZXN0cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjM4MjI1LCJw
aXhlbF90ZXN0c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjA3OjMzUE0gb24gQXByaWwgMDgsIDIw
MTciLCJoYXNfcHJldHR5X3BhdGNoIjp0cnVlLCJmaXhhYmxlIjo0ODExMCwibnVtX2ZsYWt5Ijox
LCJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjp0cnVlfSk7JywKKyAgICAgICAgaW9zX2ZpbGVzID0g
eyJmdWxsX3Jlc3VsdHMuanNvbiI6ICdBRERfUkVTVUxUUyh7InRlc3RzIjp7ImltcG9ydGVkIjp7
InczYyI6eyJ3ZWItcGxhdGZvcm0tdGVzdHMiOnsidXJsIjp7ImludGVyZmFjZXMuaHRtbCI6eyJy
ZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwi
aHRtbCI6eyJicm93c2VycyI6eyJ3aW5kb3dzIjp7ImJyb3dzaW5nLWNvbnRleHQuaHRtbCI6eyJy
ZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwi
dGhlLXdpbmRvdy1vYmplY3QiOnsiYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJv
d3NpbmctY29udGV4dHMtYnktbmFtZSI6eyJvcGVuLWZlYXR1cmVzLXRva2VuaXphdGlvbi0wMDEu
aHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoi
VEVYVCJ9fX19fSwiZG9tIjp7ImV2ZW50cyI6eyJFdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50Lmh0
bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRF
WFQifX19fX19LCJhbmltYXRpb25zIjp7InRyaWdnZXItY29udGFpbmVyLXNjcm9sbC1lbXB0eS5o
dG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCBQ
QVNTIn19fSwic2tpcHBlZCI6OTg4MSwibnVtX3JlZ3Jlc3Npb25zIjo0LCJvdGhlcl9jcmFzaGVz
Ijp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2Rp
ciI6Ii9Wb2x1bWVzL0RhdGEvRVdTL1dlYktpdC9MYXlvdXRUZXN0cyIsInZlcnNpb24iOjQsIm51
bV9wYXNzZXMiOjM4MjI1LCJwaXhlbF90ZXN0c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjA3OjMz
UE0gb24gQXByaWwgMDgsIDIwMTciLCJoYXNfcHJldHR5X3BhdGNoIjp0cnVlLCJmaXhhYmxlIjo0
ODExMCwibnVtX2ZsYWt5IjoxLCJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjp0cnVlfSk7JywKICAg
ICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZl
bnRUYXJnZXQtZGlzcGF0Y2hFdmVudC1hY3R1YWwudHh0IjogImciLAogICAgICAgICAgICAgImlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy90aGUtd2luZG93LW9i
amVjdC9hcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1i
eS1uYW1lL29wZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAwMS1hY3R1YWwudHh0IjogImgiLAog
ICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQtYWN0dWFsLnR4dCI6ICJpIiwKICAgICAgICAgICAg
ICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC9pbnRlcmZhY2VzLWFjdHVhbC50
eHQiOiAiaiJ9Ci0gICAgICAgIHdpbl9mdXR1cmVfZmlsZXMgPSB7ImZ1bGxfcmVzdWx0cy5qc29u
IjogJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsiaW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9y
bS10ZXN0cyI6eyJ1cmwiOnsiaW50ZXJmYWNlcy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04i
LCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJodG1sIjp7ImJyb3dzZXJzIjp7
IndpbmRvd3MiOnsiYnJvd3NpbmctY29udGV4dC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04i
LCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJ0aGUtd2luZG93LW9iamVjdCI6
eyJhcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1u
YW1lIjp7Im9wZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAwMS5odG1sIjp7InJlcG9ydCI6IlJF
R1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19LCJkb20iOnsi
ZXZlbnRzIjp7IkV2ZW50VGFyZ2V0LWRpc3BhdGNoRXZlbnQuaHRtbCI6eyJyZXBvcnQiOiJSRUdS
RVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fX0sImFuaW1hdGlv
bnMiOnsidHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5Lmh0bWwiOnsicmVwb3J0IjoiRkxB
S1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIFBBU1MifX19LCJza2lwcGVkIjo5
ODgxLCJudW1fcmVncmVzc2lvbnMiOjQsIm90aGVyX2NyYXNoZXMiOnt9LCJpbnRlcnJ1cHRlZCI6
ZmFsc2UsIm51bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS9F
V1MvV2ViS2l0L0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwibnVtX3Bhc3NlcyI6MzgyMjUsInBp
eGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDc6MzNQTSBvbiBBcHJpbCAwOCwgMjAx
NyIsImhhc19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjQ4MTEwLCJudW1fZmxha3kiOjEs
InVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsnLAorICAgICAgICB3aW5fZmlsZXMgPSB7
ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsiaW1wb3J0ZWQiOnsi
dzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJ1cmwiOnsiaW50ZXJmYWNlcy5odG1sIjp7InJl
cG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJo
dG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3MiOnsiYnJvd3NpbmctY29udGV4dC5odG1sIjp7InJl
cG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJ0
aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1icm93
c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9wZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAwMS5o
dG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJU
RVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7IkV2ZW50VGFyZ2V0LWRpc3BhdGNoRXZlbnQuaHRt
bCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVY
VCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5Lmh0
bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIFBB
U1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1fcmVncmVzc2lvbnMiOjQsIm90aGVyX2NyYXNoZXMi
Ont9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNfZGly
IjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0L0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwibnVt
X3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDc6MzNQ
TSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjQ4
MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsnLAogICAg
ICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVu
dFRhcmdldC1kaXNwYXRjaEV2ZW50LWFjdHVhbC50eHQiOiAiZyIsCiAgICAgICAgICAgICAiaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2Jq
ZWN0L2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5nLWNvbnRleHRzLWJ5
LW5hbWUvb3Blbi1mZWF0dXJlcy10b2tlbml6YXRpb24tMDAxLWFjdHVhbC50eHQiOiAiaCIsCiAg
ICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L3dpbmRvd3MvYnJvd3NpbmctY29udGV4dC1hY3R1YWwudHh0IjogImkiLAogICAgICAgICAgICAg
ImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2ludGVyZmFjZXMtYWN0dWFsLnR4
dCI6ICJqIn0KLSAgICAgICAgc2VsZi5maWxlcyA9IHsibWFjLXdrMiI6IG1hY193azJfZmlsZXMs
ICJtYWMtd2sxYSI6IG1hY193azFhX2ZpbGVzLCAibWFjLXdrMWIiOiBtYWNfd2sxYl9maWxlcywg
Imlvcy1zaW0iOiBpb3Nfc2ltX2ZpbGVzLCAid2luLWZ1dHVyZSI6IHdpbl9mdXR1cmVfZmlsZXN9
CisgICAgICAgIHNlbGYuZmlsZXMgPSB7Im1hYy13azIiOiBtYWNfd2syX2ZpbGVzLCAibWFjLXdr
MWEiOiBtYWNfd2sxYV9maWxlcywgIm1hYy13azFiIjogbWFjX3drMWJfZmlsZXMsICJpb3Mtd2sy
IjogaW9zX2ZpbGVzLCAid2luIjogd2luX2ZpbGVzfQogCiAgICAgZGVmIHVuemlwKHNlbGYsIGNv
bnRlbnQpOgogICAgICAgICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CkBAIC0xMzMsNyArMTY2LDcg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uVXBkYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdXJsL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0JzogImotbWFjLXdrMiJ9
KQogCiAgICAgICAgIG1vY2tfemlwID0gTW9ja1ppcCgpCi0gICAgICAgIHVwZGF0ZXIgPSBUZXN0
RXhwZWN0YXRpb25VcGRhdGVyKGhvc3QsICIxMjM0NTYiLCBUcnVlLCBGYWxzZSwgTW9ja0J1Z3pp
bGxhKCksIGxhbWJkYSBjb250ZW50OiBtb2NrX3ppcC51bnppcChjb250ZW50KSkKKyAgICAgICAg
dXBkYXRlciA9IFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIoaG9zdCwgIjEyMzQ1NiIsIFRydWUsIEZh
bHNlLCBNb2NrQnVnemlsbGEoKSwgbGFtYmRhIGNvbnRlbnQ6IG1vY2tfemlwLnVuemlwKGNvbnRl
bnQpLCBNb2NrUmVxdWVzdHMoKSkKICAgICAgICAgdXBkYXRlci5kb191cGRhdGUoKQogICAgICAg
ICAjIG1hYy13azIgZXhwZWN0YXRpb24KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lz
X21hdGNoaW5nKGhvc3QsICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZWRpcmVjdC9yZWRpcmVjdC1jb3VudC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IiwgImEi
KSkKQEAgLTE0NCwxOCArMTc3LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uVXBkYXRlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5faXNfbWF0
Y2hpbmcoaG9zdCwgInBsYXRmb3JtL2lvcy13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIpKQogICAgICAgICAjIHJlbW92
YWwgb2YgbWFjLXdrMSBleHBlY3RhdGlvbiBzaW5jZSBubyBsb25nZXIgZGlmZmVyZW50CiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5fZXhpc3RzKGhvc3QsICJwbGF0Zm9ybS9tYWMtd2sx
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlZGlyZWN0L3JlZGly
ZWN0LWxvY2F0aW9uLWV4cGVjdGVkLnR4dCIpKQorICAgICAgICAjIHdpbmRvd3Mgc3BlY2lmaWMg
ZXhwZWN0YXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lzX21hdGNoaW5nKGhv
c3QsICJwbGF0Zm9ybS93aW4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50
ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIpKQogCi0gICAgZGVmIHRlc3RfdXBkYXRlX3dpbl9m
dXR1cmVfdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
Ci0gICAgICAgIGhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIoZXhjZXB0aW9uPU9TRXJy
b3IoKSkKLSAgICAgICAgaG9zdC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXM9ewot
ICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVkaXJlY3QvcmVkaXJl
Y3QtbG9jYXRpb24tZXhwZWN0ZWQudHh0JzogJ2Utd2sxJywKLSAgICAgICAgICAgICcvbW9jay1j
aGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9l
dmVudHMvRXZlbnRUYXJnZXQtZGlzcGF0Y2hFdmVudC1leHBlY3RlZC50eHQnOiAiZyIsCi0gICAg
ICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L2FwaXMtZm9yLWNyZWF0
aW5nLWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUvb3Blbi1mZWF0dXJl
cy10b2tlbml6YXRpb24tMDAxLWV4cGVjdGVkLnR4dCc6ICJoIiwKLSAgICAgICAgICAgICcvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvd2luZG93cy9icm93c2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dCc6ICJpIiwK
LSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3VybC9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dCc6ICJqLW1hYy13azIi
fSkKIAotICAgICAgICBtb2NrX3ppcCA9IE1vY2taaXAoKQotICAgICAgICB1cGRhdGVyID0gVGVz
dEV4cGVjdGF0aW9uVXBkYXRlcihob3N0LCAiMTIzNDU2IiwgVHJ1ZSwgRmFsc2UsIE1vY2tCdWd6
aWxsYShpbmNsdWRlX3drMj1GYWxzZSwgaW5jbHVkZV93aW5fZnV0dXJlPVRydWUpLCBsYW1iZGEg
Y29udGVudDogbW9ja196aXAudW56aXAoY29udGVudCkpCi0gICAgICAgIHVwZGF0ZXIuZG9fdXBk
YXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lzX21hdGNoaW5nKGhvc3QsICJw
bGF0Zm9ybS93aW4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNl
cy1leHBlY3RlZC50eHQiLCAiaiIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399645</attachid>
            <date>2020-05-18 07:43:06 -0700</date>
            <delta_ts>2020-05-18 20:02:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210975-20200518164304.patch</filename>
            <type>text/plain</type>
            <size>32429</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxODEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTc0MDFiN2U2OTRkMGEzZTI5OWExMjQ5NDUxOGFhZjRm
N2U1Nzk1OC4uYjI1OGU0MDgzNzVhNjM5MDAzYmUxYWNkYjNlNmE3NjMyODgwODUyNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIwLTA1LTExICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIHVwZGF0ZS10ZXN0LWV4cGVjdGF0aW9ucy1mcm9tLWJ1Z3ppbGxh
IHRvb2wgbm90IHdvcmtpbmcgd2l0aCBuZXcgRVdTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoZSBuZXcgRVdTLCB0aGUgbGF5b3V0IHRlc3Qg
YXJjaGl2ZSByZXN1bHRzIGFyZSBub3QgbG9uZ2VyCisgICAgICAgIHBvc3RlZCB0byBidWd6aWxs
YSBhcyBhdHRhY2htZW50LiBOb3cgd2UgbmVlZCB0byBpbnNwZWN0IHRoZSBFV1MKKyAgICAgICAg
c2VydmVyIHRvIGdldCB0aGUgc3RhdHVzIG9mIHRoZSBydW5zIGZvciB0aGUgcGF0Y2ggaWQsIGFu
ZCB0aGVuCisgICAgICAgIHF1ZXJ5IHRoZSBFV1MgYnVpbGJvdCBzZXJ2ZXIgaW4gb3JkZXIgdG8g
Z2V0IHRoZSBkZXRhaWxzIG9mIGVhY2gKKyAgICAgICAgcnVuIHRvIGZpbmFsbHkgb2J0YWluIHRo
ZSBVUkwgd2l0aCB0aGUgemlwIGZpbGUgZm9yIHRoZSByZXN1bHRzLgorCisgICAgICAgIFRoZSB0
b29sIG5vdyBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgcGxhdGZvcm0tc3BlY2lmaWMgYW5kIGdlbmVy
aWMKKyAgICAgICAgcmVzdWx0cyBhdXRvbWF0aWNhbGx5IChpdHMgbm90IGxvbmdlciBuZWVkZWQg
dG8gc3BlY2lmeSB3aGV0aGVyCisgICAgICAgIHRoZSByZXN1bHQgaXRzIGdlbmVyaWMgb3Igbm90
KS4gSXQgdXNlcyBtYWMtd2syIHJlc3VsdHMgYXMgZ2VuZXJpYy4KKworICAgICAgICBBbHNvIG5v
dyBpdCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIHRlc3RzIHdoZXJlIHRoZSByZXN1bHQK
KyAgICAgICAgaXMgTUlTU0lORy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHk6CisgICAgICAgIChjb25m
aWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChhcmd1bWVudF9wYXJzZXIpOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uVXBkYXRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25V
cGRhdGVyLl9wbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fZ2V0X2xheW91dF90ZXN0c19ydW4p
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fbG9va3VwX2V3c19yZXN1bHRzKToK
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3Rlc3RzX3RvX3VwZGF0ZSk6CisgICAg
ICAgIChUZXN0RXhwZWN0YXRpb25VcGRhdGVyLl91cGRhdGVfZm9yX2dlbmVyaWNfYm90KToKKyAg
ICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3VwZGF0ZV9mb3JfcGxhdGZvcm1fc3BlY2lm
aWNfYm90KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuZG9fdXBkYXRlKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2Nr
QXR0YWNobWVudC5fX2luaXRfXyk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19wYXRjaCk6
CisgICAgICAgIChNb2NrQXR0YWNobWVudCk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19v
YnNvbGV0ZSk6CisgICAgICAgIChNb2NrQnVnemlsbGEpOgorICAgICAgICAoTW9ja0J1Z3ppbGxh
LmF0dGFjaG1lbnRzKToKKyAgICAgICAgKE1vY2tSZXF1ZXN0cyk6CisgICAgICAgIChNb2NrUmVx
dWVzdHMuX19pbml0X18pOgorICAgICAgICAoTW9ja1JlcXVlc3RzLmdldCk6CisgICAgICAgIChN
b2NrUmVxdWVzdHMuY29udGVudCk6CisgICAgICAgIChNb2NrUmVxdWVzdHMudGV4dCk6CisgICAg
ICAgIChNb2NrWmlwLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXJU
ZXN0LnRlc3RfdXBkYXRlX3Rlc3RfZXhwZWN0YXRpb25zKToKKwogMjAyMC0wNS0xOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IFdlYktpdENvbnRleHRNZW51SXRlbVR5cGUgZm9yIHBhc3RlIGFzIHBsYWludGV4dApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhw
ZWN0YXRpb25fdXBkYXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHkKaW5kZXggYTM5YTE1NzI3Y2M4M2Ez
NWMzYzIwOGMzNTJkZTM2ZDQxZjFiZTIwNy4uMDI4M2RkZDUyMDI5YTRkYzMwODM1MTJmZDA1OTJi
YThiYmQwYjNjNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9leHBlY3RhdGlvbl91cGRhdGVyLnB5
CkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAKICMgQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE3ICsz
MywyNSBAQCBpbXBvcnQgaW8KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgemlwZmlsZQogCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBvcnQgZXdzc2VydmVyX2RlZmF1bHRfaG9z
dAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBidWd6aWxsYQogZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJr
aXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0X3Jlc3VsdF93cml0ZXIgaW1wb3J0IFRl
c3RSZXN1bHRXcml0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9leHBlY3RhdGlvbnMKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVk
IGltcG9ydCByZXF1ZXN0cworaW1wb3J0IGpzb24KK2ltcG9ydCByZQorCisjIEJ1aWxkYm90IHN0
YXR1cyBjb2RlcyByZWZlcmVuY2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2J1aWxkYm90L2J1
aWxkYm90L2Jsb2IvbWFzdGVyL21hc3Rlci9idWlsZGJvdC9wcm9jZXNzL3Jlc3VsdHMucHkKK0VX
U19TVEFURUNPREVTID0geydTVUNDRVNTJzogMCwgJ1dBUk5JTkdTJzogMSwgJ0ZBSUxVUkUnOiAy
LCAnU0tJUFBFRCc6IDMsICdFWENFUFRJT04nOiA0LCAnUkVUUlknOiA1LCAnQ0FOQ0VMTEVEJzog
Nn0KKwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAotZGVmIGNvbmZp
Z3VyZV9sb2dnaW5nKCk6CitkZWYgY29uZmlndXJlX2xvZ2dpbmcoZGVidWc9RmFsc2UpOgogICAg
IGNsYXNzIExvZ0hhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKToKIAogICAgICAgICBkZWYg
Zm9ybWF0KHNlbGYsIHJlY29yZCk6CkBAIC01MCwxMCArNTksMTEgQEAgZGVmIGNvbmZpZ3VyZV9s
b2dnaW5nKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMiICUgKHJlY29yZC5sZXZl
bG5hbWUsIHJlY29yZC5nZXRNZXNzYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmdl
dE1lc3NhZ2UoKQogCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgIGxvZ2dl
ci5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAgbG9nX2xldmVsID0gbG9nZ2luZy5ERUJVRyBp
ZiBkZWJ1ZyBlbHNlIGxvZ2dpbmcuSU5GTworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQorICAgIGxvZ2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpCiAgICAgaGFuZGxlciA9
IExvZ0hhbmRsZXIoKQotICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQorICAgIGhh
bmRsZXIuc2V0TGV2ZWwobG9nX2xldmVsKQogICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIp
CiAgICAgcmV0dXJuIGhhbmRsZXIKIApAQCAtNjEsMzUgKzcxLDM2IEBAIGRlZiBjb25maWd1cmVf
bG9nZ2luZygpOgogZGVmIGFyZ3VtZW50X3BhcnNlcigpOgogICAgIGRlc2NyaXB0aW9uID0gIiIi
VXBkYXRlIGV4cGVjdGVkLnR4dCBmaWxlcyBmcm9tIHBhdGNoZXMgc3VibWl0dGVkIGJ5IEVXUyBi
b3RzIG9uIGJ1Z3ppbGxhLiBHaXZlbiBpZCByZWZlcnMgdG8gYSBidWcgaWQgYnkgZGVmYXVsdC4i
IiIKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdpbXBvcnR1cGRh
dGUtdGVzdC1leHBlY3RhdGlvbnMtZnJvbS1idWd6aWxsYSBidWd6aWxsYV9pZCcsIGRlc2NyaXB0
aW9uPWRlc2NyaXB0aW9uLCBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25I
ZWxwRm9ybWF0dGVyKQotCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1pcy1hdHRh
Y2htZW50LWlkJywgZGVzdD0naXNfYnVnX2lkJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1
bHQ9VHJ1ZSwgaGVscD0nV2hldGhlciB0aGUgZ2l2ZW4gaWQgaXMgYSBidWd6aWxsYSBhdHRhY2ht
ZW50IGFuZCBub3QgYSBidWcgaWQnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0t
aXMtcGxhdGZvcm0tc3BlY2lmaWMnLCBkZXN0PSdpc19hdHRhY2htZW50X3BsYXRmb3JtX3NwZWNp
ZmljJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0nV2hldGhlciBn
ZW5lcmljIGV4cGVjdGVkIGZpbGVzIHNob3VsZCBiZSB1cGRhdGVkIG9yIG5vdCcpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1ib3QtZmlsdGVyJywgZGVzdD0nYm90X2ZpbHRlcl9u
YW1lJywgYWN0aW9uPSdzdG9yZScsIGRlZmF1bHQ9Tm9uZSwgaGVscD0nT25seSBwcm9jZXNzIEVX
UyByZXN1bHRzIGZvciBib3RzIHdoZXJlIEJPVF9GSUxURVJfTkFNRSBpdHMgcGFydCBvZiB0aGUg
bmFtZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnLCAnLS1kZWJ1ZycsIGRlc3Q9J2Rl
YnVnJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0nTG9nIGRlYnVn
IG1lc3NhZ2VzJykKICAgICByZXR1cm4gcGFyc2VyCiAKIAogY2xhc3MgVGVzdEV4cGVjdGF0aW9u
VXBkYXRlcihvYmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGJ1Z3ppbGxh
X2lkLCBpc19idWdfaWQ9VHJ1ZSwgaXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVjaWZpYz1GYWxz
ZSwgYXR0YWNobWVudF9mZXRjaGVyPWJ1Z3ppbGxhLkJ1Z3ppbGxhKCksIHVuemlwPU5vbmUpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBidWd6aWxsYV9pZCwgaXNfYnVnX2lkPVRydWUs
IGJvdF9maWx0ZXJfbmFtZT1Ob25lLCBhdHRhY2htZW50X2ZldGNoZXI9YnVnemlsbGEuQnVnemls
bGEoKSwgdW56aXA9Tm9uZSwgdXJsX2ZldGNoZXI9cmVxdWVzdHMpOgogICAgICAgICBzZWxmLmhv
c3QgPSBob3N0CiAgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IHNlbGYuaG9zdC5maWxlc3lzdGVt
CisgICAgICAgIHNlbGYuYm90X2ZpbHRlcl9uYW1lID0gYm90X2ZpbHRlcl9uYW1lCiAgICAgICAg
IHNlbGYudW56aXAgPSB1bnppcCBpZiB1bnppcCBlbHNlIGxhbWJkYSBjb250ZW50OiB6aXBmaWxl
LlppcEZpbGUoaW8uQnl0ZXNJTyhjb250ZW50KSkKKyAgICAgICAgc2VsZi5sYXlvdXRfdGVzdF9y
ZXBvc2l0b3J5ID0gV2ViS2l0RmluZGVyKHNlbGYuZmlsZXN5c3RlbSkucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCJMYXlvdXRUZXN0cyIpCisgICAgICAgIHNlbGYudXJsX2ZldGNoZXIgPSB1cmxfZmV0
Y2hlcgogICAgICAgICBpZiBpc19idWdfaWQ6Ci0gICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3Nw
ZWNpZmljX2F0dGFjaG1lbnRzID0ge30KLSAgICAgICAgICAgIGZvciBhdHRhY2htZW50IGluIGF0
dGFjaG1lbnRfZmV0Y2hlci5mZXRjaF9idWcoYnVnemlsbGFfaWQpLmF0dGFjaG1lbnRzKCk6Ci0g
ICAgICAgICAgICAgICAgYm90X3R5cGUgPSBzZWxmLl9ib3RfdHlwZShhdHRhY2htZW50KQotICAg
ICAgICAgICAgICAgIGlmIGJvdF90eXBlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnBsYXRm
b3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzW2JvdF90eXBlXSA9IGF0dGFjaG1lbnQKLSAgICAgICAg
ICAgIHNlbGYuZ2VuZXJpY19hdHRhY2htZW50ID0gc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRh
Y2htZW50cy5wb3AoIm1hYy13azIiKSBpZiAibWFjLXdrMiIgaW4gc2VsZi5wbGF0Zm9ybV9zcGVj
aWZpY19hdHRhY2htZW50cyBlbHNlIE5vbmUKKyAgICAgICAgICAgIGJ1Z19pbmZvID0gYXR0YWNo
bWVudF9mZXRjaGVyLmZldGNoX2J1ZyhidWd6aWxsYV9pZCkKKyAgICAgICAgICAgIGF0dGFjaG1l
bnRzID0gW2F0dGFjaG1lbnRzIGZvciBhdHRhY2htZW50cyBpbiBidWdfaW5mby5hdHRhY2htZW50
cyhpbmNsdWRlX29ic29sZXRlPUZhbHNlKSBpZiBhdHRhY2htZW50cy5pc19wYXRjaCgpXQorICAg
ICAgICAgICAgaWYgbGVuKGF0dGFjaG1lbnRzKSA+IDE6CisgICAgICAgICAgICAgICAgcmFpc2Ug
UnVudGltZUVycm9yKCJGb3VuZCBtb3JlIHRoYW4gb25lIG5vbi1vYnNvbGV0ZSBwYXRjaCBpbiBi
dWcge30uIFBsZWFzZSBzcGVjaWZ5IHdoaWNoIG9uZSB0byBwcm9jZXNzLiIuZm9ybWF0KGJ1Z3pp
bGxhX2lkKSkKKyAgICAgICAgICAgIGlmIGxlbihhdHRhY2htZW50cykgPCAxOgorICAgICAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ291bGRuJ3QgZmluZCBhbnkgbm9uLW9ic29sZXRl
IHBhdGNoIGluIGJ1ZyB7fS4gUGxlYXNlIHNwZWNpZnkgd2hpY2ggb25lIHRvIHByb2Nlc3MuIi5m
b3JtYXQoYnVnemlsbGFfaWQpKQorICAgICAgICAgICAgc2VsZi5wYXRjaCA9IGF0dGFjaG1lbnRz
WzBdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhdHRhY2htZW50ID0gYXR0YWNobWVudF9m
ZXRjaGVyLmZldGNoX2F0dGFjaG1lbnQoYnVnemlsbGFfaWQpCi0gICAgICAgICAgICBzZWxmLnBs
YXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzID0ge3NlbGYuX2JvdF90eXBlKGF0dGFjaG1lbnQp
OiBhdHRhY2htZW50fSBpZiBpc19hdHRhY2htZW50X3BsYXRmb3JtX3NwZWNpZmljIGVsc2Uge30K
LSAgICAgICAgICAgIHNlbGYuZ2VuZXJpY19hdHRhY2htZW50ID0gYXR0YWNobWVudCBpZiBub3Qg
aXNfYXR0YWNobWVudF9wbGF0Zm9ybV9zcGVjaWZpYyBlbHNlIE5vbmUKLQotICAgICAgICB3ZWJr
aXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNlbGYuZmlsZXN5c3RlbSkKLSAgICAgICAgc2VsZi5s
YXlvdXRfdGVzdF9yZXBvc2l0b3J5ID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jh
c2UoIkxheW91dFRlc3RzIikKKyAgICAgICAgICAgIHNlbGYucGF0Y2ggPSBhdHRhY2htZW50X2Zl
dGNoZXIuZmV0Y2hfYXR0YWNobWVudChidWd6aWxsYV9pZCkKKyAgICAgICAgaWYgbm90IHNlbGYu
cGF0Y2guaXNfcGF0Y2goKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQXR0YWNo
bWVudCB7fSBpdHMgbm90IGEgcGF0Y2guIENhbid0IGNvbnRpbnVlLiIuZm9ybWF0KGJ1Z3ppbGxh
X2lkKSkKIAotICAgIGRlZiBfYm90X3R5cGUoc2VsZiwgYXR0YWNobWVudCk6Ci0gICAgICAgIG5h
bWUgPSBhdHRhY2htZW50Lm5hbWUoKQorICAgIGRlZiBfcGxhdGZvcm1fbmFtZShzZWxmLCBib3Rf
bmFtZSk6CisgICAgICAgIG5hbWUgPSBib3RfbmFtZQogICAgICAgICBpZiAibWFjIiBpbiBuYW1l
IGFuZCBuYW1lLmVuZHN3aXRoKCItd2syIik6CiAgICAgICAgICAgICByZXR1cm4gIm1hYy13azIi
CiAgICAgICAgIGlmICJtYWMiIGluIG5hbWUgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItd2syIik6
CkBAIC05OCw0OCArMTA5LDExMiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25VcGRhdGVyKG9iamVj
dCk6CiAgICAgICAgICAgICByZXR1cm4gImlvcy13azIiCiAgICAgICAgIGlmICJ3aW4tZnV0dXJl
IiBpbiBuYW1lOgogICAgICAgICAgICAgcmV0dXJuICJ3aW4iCisgICAgICAgIGlmICJndGsiIGlu
IG5hbWU6CisgICAgICAgICAgICByZXR1cm4gImd0ayIKKyAgICAgICAgaWYgIndwZSIgaW4gbmFt
ZToKKyAgICAgICAgICAgIHJldHVybiAid3BlIgorICAgICAgICBpZiAiLWRlYnVnIiBpbiBuYW1l
OgorICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgiLWRlYnVnIiwgIiIpCisgICAgICAg
IHJldHVybiBuYW1lCisKKyAgICBkZWYgX2dldF9sYXlvdXRfdGVzdHNfcnVuKHNlbGYsIGJvdF9u
YW1lLCBld3NfYnVpbGRfdXJsKToKKyAgICAgICAgaWYgbm90IHJlLm1hdGNoKCJodHRwLip3ZWJr
aXQub3JnLyMvYnVpbGRlcnMvWzAtOV0rL2J1aWxkcy9bMC05XSskIiwgZXdzX2J1aWxkX3VybCk6
CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgVVJMIHt9IGZyb20gRVdTIGhhcyBh
biB1bmV4cGVjdGVkIGZvcm1hdCIuZm9ybWF0KGV3c19idWlsZF91cmwpKQorICAgICAgICBld3Nf
YnVpbGRib3Rfc2VydmVyLCBld3NfYnVpbGRib3RfcGF0aCA9IGV3c19idWlsZF91cmwuc3BsaXQo
JyMnKQorICAgICAgICBld3NfYnVpbGRib3Rfc3RlcHNfdXJsID0gInt9YXBpL3Yye30vc3RlcHMi
LmZvcm1hdChld3NfYnVpbGRib3Rfc2VydmVyLCBld3NfYnVpbGRib3RfcGF0aCkKKyAgICAgICAg
ZXdzX2J1aWxkYm90X3N0ZXBzX3JlcXVlc3QgPSBzZWxmLnVybF9mZXRjaGVyLmdldChld3NfYnVp
bGRib3Rfc3RlcHNfdXJsKQorICAgICAgICBld3NfYnVpbGRib3Rfc3RlcHMgPSBqc29uLmxvYWRz
KGV3c19idWlsZGJvdF9zdGVwc19yZXF1ZXN0LnRleHQpCisgICAgICAgIF9sb2cuZGVidWcoIlRy
eWluZyB0byBmaW5kaW5nIGZhaWxlZCBsYXlvdXQgdGVzdCBydW4gZm9yIGJvdCB7fSBhdCB1cmwg
e30iLmZvcm1hdChib3RfbmFtZSwgZXdzX2J1aWxkYm90X3N0ZXBzX3VybCkpCisgICAgICAgIGZv
ciBzdGVwIGluIGV3c19idWlsZGJvdF9zdGVwc1snc3RlcHMnXToKKyAgICAgICAgICAgICMgcGlj
ayB0aGUgZmlyc3QgcnVuIGFzIHRoZSBvbmUgZm9yIHVwZGF0aW5nIHRoZSBsYXlvdXQgdGVzdHMu
CisgICAgICAgICAgICBpZiBzdGVwWyduYW1lJ10gIT0gJ2xheW91dC10ZXN0cyc6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBzdGVwWydjb21wbGV0ZSddOgor
ICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgdG8gcHJvY2VzcyB1bmZpbmlzaGVk
IGxheW91dC10ZXN0cyBydW4gZm9yIGJvdCB7fS4gUGxlYXNlIHJldHJ5IGxhdGVyIi5mb3JtYXQo
Ym90X25hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3IgdXJs
X2VudHJ5IGluIHN0ZXBbJ3VybHMnXToKKyAgICAgICAgICAgICAgICB1cmwgPSB1cmxfZW50cnlb
J3VybCddCisgICAgICAgICAgICAgICAgaWYgdXJsLmVuZHN3aXRoKCcuemlwJyk6CisgICAgICAg
ICAgICAgICAgICAgIGlmIHVybC5zdGFydHN3aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgICAg
ICAgICB1cmwgPSAie317fSIuZm9ybWF0KGV3c19idWlsZGJvdF9zZXJ2ZXIsIHVybC5sc3RyaXAo
Jy8nKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsibGF5b3V0LXRlc3RzLXJlc3VsdHMt
c3RyaW5nIjogc3RlcFsnc3RhdGVfc3RyaW5nJ10sICJsYXlvdXQtdGVzdHMtYXJjaGl2ZS11cmwi
OiB1cmx9CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgX3Rlc3RzX3RvX3VwZGF0ZShz
ZWxmLCBhdHRhY2htZW50LCBib3RfdHlwZT1Ob25lKToKLSAgICAgICAgX2xvZy5pbmZvKCJQcm9j
ZXNzaW5nIGF0dGFjaG1lbnQgIiArIHN0cihhdHRhY2htZW50LmlkKCkpKQotICAgICAgICB6aXBf
ZmlsZSA9IHNlbGYudW56aXAoYXR0YWNobWVudC5jb250ZW50cygpKQorICAgIGRlZiBfbG9va3Vw
X2V3c19yZXN1bHRzKHNlbGYpOgorICAgICAgICBfbG9nLmluZm8oIkxvb2tpbmcgZm9yIEVXUyBy
ZXN1bHRzIGluIHBhdGNoIGF0dGFjaG1lbnQgJXMgZnJvbSBidWcgJXMiICUgKHNlbGYucGF0Y2gu
aWQoKSwgc2VsZi5wYXRjaC5idWcoKS5pZCgpKSkKKyAgICAgICAgZXdzX2J1YmJsZXNfdXJsID0g
Imh0dHBzOi8ve30vc3RhdHVzL3t9LyIuZm9ybWF0KGV3c3NlcnZlcl9kZWZhdWx0X2hvc3QsIHNl
bGYucGF0Y2guaWQoKSkKKyAgICAgICAgX2xvZy5kZWJ1ZygiUXVlcnlpbmcgYnViYmxlIHN0YXR1
cyBhdCB7fSIuZm9ybWF0KGV3c19idWJibGVzX3VybCkpCisgICAgICAgIGV3c19idWJibGVzX3N0
YXR1c19yZXF1ZXN0ID0gc2VsZi51cmxfZmV0Y2hlci5nZXQoZXdzX2J1YmJsZXNfdXJsKQorICAg
ICAgICBld3NfYnViYmxlc19zdGF0dXMgPSBqc29uLmxvYWRzKGV3c19idWJibGVzX3N0YXR1c19y
ZXF1ZXN0LnRleHQpCisgICAgICAgIHNlbGYuZXdzX3Jlc3VsdHMgPSB7fQorICAgICAgICBmb3Ig
Ym90IGluIGV3c19idWJibGVzX3N0YXR1czoKKyAgICAgICAgICAgIGlmIGV3c19idWJibGVzX3N0
YXR1c1tib3RdWydzdGF0ZSddIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJF
V1MgYm90IHt9IGhhcyBzdGlsbCBub3QgZmluaXNoZWQuIElnbm9yaW5nIi5mb3JtYXQoYm90KSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiRm91bmQg
RVdTIHJ1biBhdCB7fSBmb3IgYm90IHt9IHdpdGggc3RhdGUge30iLmZvcm1hdChld3NfYnViYmxl
c19zdGF0dXNbYm90XVsndXJsJ10sIGJvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgW1NUQVRF
IGZvciBTVEFURSBpbiBFV1NfU1RBVEVDT0RFUy5rZXlzKCldW2V3c19idWJibGVzX3N0YXR1c1ti
b3RdWydzdGF0ZSddXSkpCisgICAgICAgICAgICBpZiBzZWxmLmJvdF9maWx0ZXJfbmFtZToKKyAg
ICAgICAgICAgICAgICBpZiBzZWxmLmJvdF9maWx0ZXJfbmFtZSBpbiBib3Q6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuZXdzX3Jlc3VsdHNbYm90XSA9IHNlbGYuX2dldF9sYXlvdXRfdGVzdHNf
cnVuKGJvdCwgZXdzX2J1YmJsZXNfc3RhdHVzW2JvdF1bJ3VybCddKQorICAgICAgICAgICAgZWxp
ZiBld3NfYnViYmxlc19zdGF0dXNbYm90XVsnc3RhdGUnXSBpbiBbRVdTX1NUQVRFQ09ERVNbJ0ZB
SUxVUkUnXSwgRVdTX1NUQVRFQ09ERVNbJ1dBUk5JTkdTJ11dOgorICAgICAgICAgICAgICAgIHNl
bGYuZXdzX3Jlc3VsdHNbYm90XSA9IHNlbGYuX2dldF9sYXlvdXRfdGVzdHNfcnVuKGJvdCwgZXdz
X2J1YmJsZXNfc3RhdHVzW2JvdF1bJ3VybCddKQorCisgICAgICAgICMgRGVsZXRlIGVudHJpZXMg
d2l0aCBudWxsIHZhbHVlIChpZiBhbnkpCisgICAgICAgIGZvciBib3QgaW4gc2VsZi5ld3NfcmVz
dWx0cy5rZXlzKCk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5ld3NfcmVzdWx0c1tib3RdOgor
ICAgICAgICAgICAgICAgIGRlbCBzZWxmLmV3c19yZXN1bHRzW2JvdF0KKworICAgICAgICBpZiBs
ZW4oc2VsZi5ld3NfcmVzdWx0cykgPT0gMDoKKyAgICAgICAgICAgIGlmIHNlbGYuYm90X2ZpbHRl
cl9uYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ291bGRuJ3QgZmlu
ZCBhbnkgZmFpbGVkIEVXUyByZXN1bHQgaW4gYXR0YWNobWVudC9wYXRjaCB7fSB0aGF0IG1hdGNo
ZXMgZmlsdGVyIG5hbWUuIi5mb3JtYXQoc2VsZi5wYXRjaC5pZCgpLCBzZWxmLmJvdF9maWx0ZXJf
bmFtZSkpCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNvdWxkbid0IGZpbmQgYW55
IGZhaWxlZCBFV1MgcmVzdWx0IGZvciBhdHRhY2htZW50L3BhdGNoIHt9LiBUcnkgdG8gc3BlY2lm
eSBhIGJvdCBmaWx0ZXIgbmFtZSBtYW51YWxseS4iLmZvcm1hdChzZWxmLnBhdGNoLmlkKCkpKQor
CisgICAgZGVmIF90ZXN0c190b191cGRhdGUoc2VsZiwgYm90X25hbWUpOgorICAgICAgICBfbG9n
LmluZm8oInt9IGFyY2hpdmU6IHt9Ii5mb3JtYXQoYm90X25hbWUsIHNlbGYuZXdzX3Jlc3VsdHNb
Ym90X25hbWVdWydsYXlvdXQtdGVzdHMtYXJjaGl2ZS11cmwnXSkpCisgICAgICAgIF9sb2cuaW5m
bygie30gc3RhdHVzOiB7fSIuZm9ybWF0KGJvdF9uYW1lLCBzZWxmLmV3c19yZXN1bHRzW2JvdF9u
YW1lXVsnbGF5b3V0LXRlc3RzLXJlc3VsdHMtc3RyaW5nJ10pKQorICAgICAgICBsYXlvdXRfdGVz
dHNfYXJjaGl2ZV9yZXF1ZXN0ID0gc2VsZi51cmxfZmV0Y2hlci5nZXQoc2VsZi5ld3NfcmVzdWx0
c1tib3RfbmFtZV1bJ2xheW91dC10ZXN0cy1hcmNoaXZlLXVybCddKQorICAgICAgICBsYXlvdXRf
dGVzdHNfYXJjaGl2ZV9jb250ZW50ID0gbGF5b3V0X3Rlc3RzX2FyY2hpdmVfcmVxdWVzdC5jb250
ZW50CisgICAgICAgIHppcF9maWxlID0gc2VsZi51bnppcChsYXlvdXRfdGVzdHNfYXJjaGl2ZV9j
b250ZW50KQogICAgICAgICByZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9t
X3N0cmluZyh6aXBfZmlsZS5yZWFkKCJmdWxsX3Jlc3VsdHMuanNvbiIpKQotICAgICAgICByZXN1
bHRzX3RvX3VwZGF0ZSA9IFtyZXN1bHQudGVzdF9uYW1lIGZvciByZXN1bHQgaW4gcmVzdWx0cy5m
YWlsaW5nX3Rlc3RfcmVzdWx0cygpIGlmIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25z
LlRFWFRdCisgICAgICAgIHJlc3VsdHNfdG9fdXBkYXRlID0gW3Jlc3VsdC50ZXN0X25hbWUgZm9y
IHJlc3VsdCBpbiByZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCkgaWYgcmVzdWx0LnR5cGUg
aW4gW3Rlc3RfZXhwZWN0YXRpb25zLlRFWFQsIHRlc3RfZXhwZWN0YXRpb25zLk1JU1NJTkddXQog
ICAgICAgICByZXR1cm4ge3Jlc3VsdDogemlwX2ZpbGUucmVhZChUZXN0UmVzdWx0V3JpdGVyLmFj
dHVhbF9maWxlbmFtZShyZXN1bHQsIHNlbGYuZmlsZXN5c3RlbSkpIGZvciByZXN1bHQgaW4gcmVz
dWx0c190b191cGRhdGV9CiAKICAgICBkZWYgX2ZpbGVfY29udGVudF9pZl9leGlzdHMoc2VsZiwg
ZmlsZW5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxl
KGZpbGVuYW1lKSBpZiBzZWxmLmZpbGVzeXN0ZW0uZXhpc3RzKGZpbGVuYW1lKSBlbHNlICIiCiAK
LSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgdG8gYWxpZ24gd2hhdCBp
cyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5nbGVfdGVzdF9ydW5uZXIgaXMgZG9pbmcuCi0gICAg
IyBJbiBwYXJ0aWN1bGFyIHRoZSBmYWN0IG9mIG5vdCBvdmVyd3JpdGluZyB0aGUgZmlsZSBpZiBj
b250ZW50IGlzIHRoZSBzYW1lLgotICAgIGRlZiBfdXBkYXRlX2Zyb21fZ2VuZXJpY19hdHRhY2ht
ZW50KHNlbGYpOgotICAgICAgICBmb3IgdGVzdF9uYW1lLCBleHBlY3RlZF9jb250ZW50IGluIHNl
bGYuX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLmdlbmVyaWNfYXR0YWNobWVudCkuaXRlbXMoKToKKyAg
ICBkZWYgX3VwZGF0ZV9mb3JfZ2VuZXJpY19ib3Qoc2VsZiwgYm90X25hbWUpOgorICAgICAgICBm
b3IgdGVzdF9uYW1lLCBleHBlY3RlZF9jb250ZW50IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShi
b3RfbmFtZSkuaXRlbXMoKToKICAgICAgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5m
aWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5LCBUZXN0UmVzdWx0V3Jp
dGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgc2VsZi5maWxlc3lzdGVtKSkKICAgICAg
ICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50X2lmX2V4aXN0
cyhleHBlY3RlZF9maWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJVcGRhdGlu
ZyAiICsgdGVzdF9uYW1lICsgIiAoIiArIGV4cGVjdGVkX2ZpbGVuYW1lICsgIikiKQorICAgICAg
ICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgIiArIHRlc3RfbmFtZSArICIgZm9yICIgKyBi
b3RfbmFtZSArICIgKCIgKyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKKyAgICAgICAgICAgICAg
ICBzZWxmLmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5maWxlc3lzdGVtLmRp
cm5hbWUoZXhwZWN0ZWRfZmlsZW5hbWUpKQogICAgICAgICAgICAgICAgIHNlbGYuZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0ZWRfZmlsZW5hbWUsIGV4cGVjdGVkX2NvbnRlbnQpCiAK
LSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgdG8gYWxpZ24gd2hhdCBp
cyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5nbGVfdGVzdF9ydW5uZXIgaXMgZG9pbmcuCi0gICAg
IyBJbiBwYXJ0aWN1bGFyIHRoZSBhYmlsaXR5IHRvIHJlbW92ZSBhIG5ldyBzcGVjaWZpYyBleHBl
Y3RhdGlvbiBpZiBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgZ2VuZXJpYyBvbmUuCi0gICAgZGVmIF91
cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50KHNlbGYsIGF0dGFjaG1lbnQs
IGJvdF90eXBlKToKLSAgICAgICAgZm9yIHRlc3RfbmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBz
ZWxmLl90ZXN0c190b191cGRhdGUoYXR0YWNobWVudCwgYm90X3R5cGUpLml0ZW1zKCk6Ci0gICAg
ICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5
b3V0X3Rlc3RfcmVwb3NpdG9yeSwgVGVzdFJlc3VsdFdyaXRlci5leHBlY3RlZF9maWxlbmFtZSh0
ZXN0X25hbWUsIHNlbGYuZmlsZXN5c3RlbSwgYm90X3R5cGUpKQorICAgIGRlZiBfdXBkYXRlX2Zv
cl9wbGF0Zm9ybV9zcGVjaWZpY19ib3Qoc2VsZiwgYm90X25hbWUpOgorICAgICAgICBwbGF0Zm9y
bV9uYW1lID0gc2VsZi5fcGxhdGZvcm1fbmFtZShib3RfbmFtZSkKKyAgICAgICAgZm9yIHRlc3Rf
bmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBzZWxmLl90ZXN0c190b191cGRhdGUoYm90X25hbWUp
Lml0ZW1zKCk6CisgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuZmlsZXN5c3Rl
bS5qb2luKHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSwgVGVzdFJlc3VsdFdyaXRlci5leHBl
Y3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNlbGYuZmlsZXN5c3RlbSwgcGxhdGZvcm1fbmFtZSkp
CiAgICAgICAgICAgICBnZW5lcmljX2V4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5maWxlc3lzdGVt
LmpvaW4oc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5LCBUZXN0UmVzdWx0V3JpdGVyLmV4cGVj
dGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgc2VsZi5maWxlc3lzdGVtKSkKICAgICAgICAgICAgIGlm
IGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50X2lmX2V4aXN0cyhnZW5lcmlj
X2V4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIlVwZGF0aW5n
ICIgKyB0ZXN0X25hbWUgKyAiIGZvciAiICsgYm90X3R5cGUgKyAiICgiICsgZXhwZWN0ZWRfZmls
ZW5hbWUgKyAiKSIpCi0gICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKGV4cGVjdGVkX2ZpbGVuYW1lKSkKLSAg
ICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGV4cGVjdGVkX2Zp
bGVuYW1lLCBleHBlY3RlZF9jb250ZW50KQorICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2Nv
bnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50X2lmX2V4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6
CisgICAgICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgIiArIHRlc3RfbmFtZSAr
ICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIgKyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNl
bGYuZmlsZXN5c3RlbS5kaXJuYW1lKGV4cGVjdGVkX2ZpbGVuYW1lKSkKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShleHBlY3RlZF9maWxlbmFtZSwg
ZXhwZWN0ZWRfY29udGVudCkKICAgICAgICAgICAgIGVsaWYgc2VsZi5maWxlc3lzdGVtLmV4aXN0
cyhleHBlY3RlZF9maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJVcGRhdGlu
ZyAiICsgdGVzdF9uYW1lICsgIiBmb3IgIiArIGJvdF9uYW1lICsgIiAoIFJFTU9WRUQ6ICIgKyBl
eHBlY3RlZF9maWxlbmFtZSArICIpIikKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0u
cmVtb3ZlKGV4cGVjdGVkX2ZpbGVuYW1lKQogCiAgICAgZGVmIGRvX3VwZGF0ZShzZWxmKToKLSAg
ICAgICAgaWYgbm90IHNlbGYuZ2VuZXJpY19hdHRhY2htZW50IGFuZCBub3Qgc2VsZi5wbGF0Zm9y
bV9zcGVjaWZpY19hdHRhY2htZW50czoKLSAgICAgICAgICAgIF9sb2cuaW5mbygiTm8gYXR0YWNo
bWVudCB0byBwcm9jZXNzIikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmdl
bmVyaWNfYXR0YWNobWVudDoKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9mcm9tX2dlbmVyaWNf
YXR0YWNobWVudCgpCi0gICAgICAgIGZvciBib3RfdHlwZSwgYXR0YWNobWVudCBpbiBzZWxmLnBs
YXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl91
cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50KGF0dGFjaG1lbnQsIGJvdF90
eXBlKQorICAgICAgICBzZWxmLl9sb29rdXBfZXdzX3Jlc3VsdHMoKQorICAgICAgICBnZW5lcmlj
X2JvdHMgPSBbYm90X25hbWUgZm9yIGJvdF9uYW1lIGluIHNlbGYuZXdzX3Jlc3VsdHMua2V5cygp
IGlmIHNlbGYuX3BsYXRmb3JtX25hbWUoYm90X25hbWUpID09ICJtYWMtd2syIl0KKyAgICAgICAg
cGxhdGZvcm1fYm90cyA9IFtib3RfbmFtZSBmb3IgYm90X25hbWUgaW4gc2VsZi5ld3NfcmVzdWx0
cy5rZXlzKCkgaWYgc2VsZi5fcGxhdGZvcm1fbmFtZShib3RfbmFtZSkgIT0gIm1hYy13azIiXQor
ICAgICAgICAjIEZpcnN0IHVwZGF0ZSB0aGUgZ2VuZXJpYyByZXN1bHRzLCBzbyB1cGRhdGVzIGZv
ciBwbGF0Zm9ybSBib3RzIGNhbiB1c2UgdGhpcyBuZXcgZ2VuZXJpYyByZXN1bHQgYXMgYmFzZS4K
KyAgICAgICAgZm9yIGJvdF9uYW1lIGluIGdlbmVyaWNfYm90czoKKyAgICAgICAgICAgIF9sb2cu
aW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9tIGJvdCB7fSAoZ2VuZXJpYykiLmZvcm1hdChib3Rf
bmFtZSkpCisgICAgICAgICAgICBzZWxmLl91cGRhdGVfZm9yX2dlbmVyaWNfYm90KGJvdF9uYW1l
KQorICAgICAgICBmb3IgYm90X25hbWUgaW4gcGxhdGZvcm1fYm90czoKKyAgICAgICAgICAgIF9s
b2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9tIGJvdCB7fSAocGxhdGZvcm0pIi5mb3JtYXQo
Ym90X25hbWUpKQorICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2Zvcl9wbGF0Zm9ybV9zcGVjaWZp
Y19ib3QoYm90X25hbWUpCiAKIAogZGVmIG1haW4oX2FyZ3YsIF9zdGRvdXQsIF9zdGRlcnIpOgpA
QCAtMTQ5LDggKzIyNCw4IEBAIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAg
ICBpZiBub3QgYXJnczoKICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJQbGVhc2UgcHJvdmlkZSBh
IGJ1ZyBpZCBvciB1c2UgLWEgb3B0aW9uIikKIAotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAg
ICBjb25maWd1cmVfbG9nZ2luZyhvcHRpb25zLmRlYnVnKQogCiAgICAgYnVnemlsbGFfaWQgPSBh
cmdzWzBdCi0gICAgdXBkYXRlciA9IFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIoSG9zdCgpLCBidWd6
aWxsYV9pZCwgb3B0aW9ucy5pc19idWdfaWQsIG9wdGlvbnMuaXNfYXR0YWNobWVudF9wbGF0Zm9y
bV9zcGVjaWZpYykKKyAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0aW9uVXBkYXRlcihIb3N0KCks
IGJ1Z3ppbGxhX2lkLCBvcHRpb25zLmlzX2J1Z19pZCwgb3B0aW9ucy5ib3RfZmlsdGVyX25hbWUp
CiAgICAgdXBkYXRlci5kb191cGRhdGUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlcl91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS90ZXN0X2V4
cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHkKaW5kZXggOTlkZjZhMzA3MTk3OTVkYWM0YzA1
NGNkZTkyOTQ5MTM1NTBkMDQ4Ni4uZTg2MjA4YWVlY2M1ZDkyYjBmOGRjYzhhZWJlMjc4MDRkNDQ1
N2FkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9leHBlY3RhdGlvbl91cGRhdGVy
X3VuaXR0ZXN0LnB5CkBAIC00MiwzNCArNDIsNjcgQEAgRkFLRV9GSUxFUyA9IHsKIAogCiBjbGFz
cyBNb2NrQXR0YWNobWVudChBdHRhY2htZW50KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0
YWNobWVudF9kaWN0aW9uYXJ5LCBjb250ZW50cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0
dGFjaG1lbnRfZGljdGlvbmFyeSwgY29udGVudHMsIGlzX3BhdGNoLCBpc19vYnNvbGV0ZSk6CiAg
ICAgICAgIEF0dGFjaG1lbnQuX19pbml0X18oc2VsZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBz
ZWxmKQogICAgICAgICBzZWxmLl9jb250ZW50cyA9IGNvbnRlbnRzCisgICAgICAgIHNlbGYuX2lz
X3BhdGNoID0gaXNfcGF0Y2gKKyAgICAgICAgc2VsZi5faXNfb2Jzb2xldGUgPSBpc19vYnNvbGV0
ZQogCiAgICAgZGVmIGNvbnRlbnRzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY29udGVu
dHMKIAorICAgIGRlZiBpc19wYXRjaChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3Bh
dGNoCisKKyAgICBkZWYgaXNfb2Jzb2xldGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9p
c19vYnNvbGV0ZQogCi1jbGFzcyBNb2NrQnVnemlsbGEoKToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaW5jbHVkZV93azI9VHJ1ZSwgaW5jbHVkZV93aW5fZnV0dXJlPUZhbHNlKToKLSAgICAgICAg
c2VsZi5faW5jbHVkZV93azIgPSBpbmNsdWRlX3drMgotICAgICAgICBzZWxmLl9pbmNsdWRlX3dp
bl9mdXR1cmUgPSBpbmNsdWRlX3dpbl9mdXR1cmUKIAorY2xhc3MgTW9ja0J1Z3ppbGxhKCk6CiAg
ICAgZGVmIGZldGNoX2J1ZyhzZWxmLCBpZCk6CiAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBk
ZWYgYXR0YWNobWVudHMoc2VsZik6CisgICAgZGVmIGF0dGFjaG1lbnRzKHNlbGYsIGluY2x1ZGVf
b2Jzb2xldGU9RmFsc2UpOgogICAgICAgICBhdHRhY2htZW50cyA9IFtdCi0gICAgICAgIGlmIHNl
bGYuX2luY2x1ZGVfd2syOgotICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRh
Y2htZW50KHsiaWQiOiAxLCAibmFtZSI6ICJBcmNoaXZlIG9mIGxheW91dC10ZXN0LXJlc3VsdHMg
ZnJvbSBld3MxMDMgZm9yIG1hYy1lbGNhcGl0YW4td2syIn0sICJtYWMtd2syIikpCi0gICAgICAg
IGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0YWNobWVudCh7ImlkIjogMiwgIm5hbWUiOiAiQXJj
aGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZyb20gZXdzMTAzIGZvciBtYWMtZWxjYXBpdGFu
In0sICJtYWMtd2sxYSIpKQotICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoTW9ja0F0dGFjaG1l
bnQoeyJpZCI6IDMsICJuYW1lIjogIkFyY2hpdmUgb2YgbGF5b3V0LXRlc3QtcmVzdWx0cyBmcm9t
IGV3czEwNCBmb3IgbWFjLWVsY2FwaXRhbiJ9LCAibWFjLXdrMWIiKSkKLSAgICAgICAgYXR0YWNo
bWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiA0LCAibmFtZSI6ICJBcmNoaXZlIG9m
IGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBld3MxMjIgZm9yIGlvcy1zaW11bGF0b3Itd2syIn0s
ICJpb3Mtc2ltIikpCi0gICAgICAgIGlmIHNlbGYuX2luY2x1ZGVfd2luX2Z1dHVyZToKLSAgICAg
ICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0YWNobWVudCh7ImlkIjogNSwgIm5hbWUi
OiAiQXJjaGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZyb20gZXdzMTI0IGZvciB3aW4tZnV0
dXJlIn0sICJ3aW4tZnV0dXJlIikpCisgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0
YWNobWVudCh7ImlkIjogMSwgIm5hbWUiOiAiVGVzdCBjYXNlIn0sICJIb3cgdG8gcmVwcm9kdWNl
IHRoZSBpc3N1ZSIsIEZhbHNlLCBGYWxzZSkpCisgICAgICAgIGlmIGluY2x1ZGVfb2Jzb2xldGU6
CisgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDIs
ICJuYW1lIjogIlBhdGNoIn0sICJQYXRjaCB2MSIsIFRydWUsIFRydWUpKQorICAgICAgICAgICAg
YXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiAzLCAibmFtZSI6ICJQYXRj
aCJ9LCAiUGF0Y2ggdjIiLCBUcnVlLCBUcnVlKSkKKyAgICAgICAgYXR0YWNobWVudHMuYXBwZW5k
KE1vY2tBdHRhY2htZW50KHsiaWQiOiA0LCAibmFtZSI6ICJQYXRjaCJ9LCAiUGF0Y2ggdjMiLCBU
cnVlLCBGYWxzZSkpCiAgICAgICAgIHJldHVybiBhdHRhY2htZW50cwogCiAKK2NsYXNzIE1vY2tS
ZXF1ZXN0cygpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdXJsc19k
YXRhID0geworICAgICAgICAgICAgJ2h0dHBzOi8vZXdzLndlYmtpdC5vcmcvc3RhdHVzLzQvJzog
J3sibWFjLXdrMSI6IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy8xL2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9LCAibWFjLXdrMiI6IHsidXJsIjogImh0dHBz
Oi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy85OSIsICJzdGF0ZSI6
IDJ9LCAibWFjLWRlYnVnLXdrMSI6IHsidXJsIjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8zL2J1aWxkcy85OSIsICJzdGF0ZSI6IDJ9LCAiaW9zLXdrMiI6IHsidXJs
IjogImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy80L2J1aWxkcy85OSIs
ICJzdGF0ZSI6IDJ9LCAid2luIjogeyJ1cmwiOiAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9y
Zy8jL2J1aWxkZXJzLzUvYnVpbGRzLzk5IiwgInN0YXRlIjogMn19JywKKyAgICAgICAgICAgICdo
dHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92Mi9idWlsZGVycy8xL2J1aWxkcy85OS9z
dGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUiOiB0cnVlLCAibmFtZSI6ICJsYXlvdXQt
dGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlvdXQgdGVzdHMiLCAgInVybHMiOiBbIHsg
Im5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cyIsICJ1cmwiOiAiL3Jlc3VsdHMv
bWFjLXdrMS9yMTIzNDUuemlwIiB9IF0gfSBdIH0nLAorICAgICAgICAgICAgJ2h0dHBzOi8vZXdz
LWJ1aWxkLndlYmtpdC5vcmcvYXBpL3YyL2J1aWxkZXJzLzIvYnVpbGRzLzk5L3N0ZXBzJzogJ3sg
InN0ZXBzIjogWyB7ICJjb21wbGV0ZSI6IHRydWUsICJuYW1lIjogImxheW91dC10ZXN0cyIsICJz
dGF0ZV9zdHJpbmciOiAiUmFuIGxheW91dCB0ZXN0cyIsICAidXJscyI6IFsgeyAibmFtZSI6ICJk
b3dubG9hZCBsYXlvdXQgdGVzdCByZXN1bHRzIiwgInVybCI6ICIvcmVzdWx0cy9tYWMtd2syL3Ix
MjM0NS56aXAiIH0gXSB9IF0gfScsCisgICAgICAgICAgICAnaHR0cHM6Ly9ld3MtYnVpbGQud2Vi
a2l0Lm9yZy9hcGkvdjIvYnVpbGRlcnMvMy9idWlsZHMvOTkvc3RlcHMnOiAneyAic3RlcHMiOiBb
IHsgImNvbXBsZXRlIjogdHJ1ZSwgIm5hbWUiOiAibGF5b3V0LXRlc3RzIiwgInN0YXRlX3N0cmlu
ZyI6ICJSYW4gbGF5b3V0IHRlc3RzIiwgICJ1cmxzIjogWyB7ICJuYW1lIjogImRvd25sb2FkIGxh
eW91dCB0ZXN0IHJlc3VsdHMiLCAidXJsIjogIi9yZXN1bHRzL21hYy1kZWJ1Zy13azEvcjEyMzQ1
LnppcCIgfSBdIH0gXSB9JywKKyAgICAgICAgICAgICdodHRwczovL2V3cy1idWlsZC53ZWJraXQu
b3JnL2FwaS92Mi9idWlsZGVycy80L2J1aWxkcy85OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAi
Y29tcGxldGUiOiB0cnVlLCAibmFtZSI6ICJsYXlvdXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjog
IlJhbiBsYXlvdXQgdGVzdHMiLCAgInVybHMiOiBbIHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0
IHRlc3QgcmVzdWx0cyIsICJ1cmwiOiAiL3Jlc3VsdHMvaW9zLXdrMi9yMTIzNDUuemlwIiB9ICBd
IH0gXSB9JywKKyAgICAgICAgICAgICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92
Mi9idWlsZGVycy81L2J1aWxkcy85OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUi
OiB0cnVlLCAibmFtZSI6ICJsYXlvdXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlv
dXQgdGVzdHMiLCAgInVybHMiOiBbIHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVz
dWx0cyIsICJ1cmwiOiAiL3Jlc3VsdHMvd2luL3IxMjM0NS56aXAiIH0gIF0gfSBdIH0nLAorICAg
ICAgICAgICAgImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9tYWMtd2sxL3Ix
MjM0NS56aXAiOiAibWFjLXdrMWEiLAorICAgICAgICAgICAgImh0dHBzOi8vZXdzLWJ1aWxkLndl
YmtpdC5vcmcvcmVzdWx0cy9tYWMtZGVidWctd2sxL3IxMjM0NS56aXAiOiAibWFjLXdrMWIiLAor
ICAgICAgICAgICAgImh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9tYWMtd2sy
L3IxMjM0NS56aXAiOiAibWFjLXdrMiIsCisgICAgICAgICAgICAiaHR0cHM6Ly9ld3MtYnVpbGQu
d2Via2l0Lm9yZy9yZXN1bHRzL2lvcy13azIvcjEyMzQ1LnppcCI6ICJpb3Mtd2syIiwKKyAgICAg
ICAgICAgICJodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvd2luL3IxMjM0NS56
aXAiOiAid2luIgorICAgICAgICB9CisKKyAgICBkZWYgZ2V0KHNlbGYsIHVybCk6CisgICAgICAg
IGlmIHVybCBub3QgaW4gc2VsZi5fdXJsc19kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigidXJsIHt9IG5vdCBtb2NrZWQiLmZvcm1hdCh1cmwpKQorICAgICAgICBzZWxmLl91cmwg
PSB1cmwKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250
ZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdXJsc19kYXRhW3NlbGYuX3VybF0KKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0ZXh0KHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNl
bGYuY29udGVudCkKKworCiBjbGFzcyBNb2NrWmlwKCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgogICAgICAgICBzZWxmLmNvbnRlbnQgPSBOb25lCkBAIC05NSwxNyArMTI4LDE3IEBAIGNsYXNz
IE1vY2taaXAoKToKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZWRpcmVjdC9yZWRpcmVjdC1sb2NhdGlvbi13b3JrZXItYWN0dWFsLnR4dCI6
ICJkIiwKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9yZWRpcmVjdC9yZWRpcmVjdC1sb2NhdGlvbi1hY3R1YWwudHh0IjogImUiLAogICAgICAg
ICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5k
b3dzL2Jyb3dzaW5nLWNvbnRleHQtYWN0dWFsLnR4dCI6ICJmLXdrMWIifQotICAgICAgICBpb3Nf
c2ltX2ZpbGVzID0geyJmdWxsX3Jlc3VsdHMuanNvbiI6ICdBRERfUkVTVUxUUyh7InRlc3RzIjp7
ImltcG9ydGVkIjp7InczYyI6eyJ3ZWItcGxhdGZvcm0tdGVzdHMiOnsidXJsIjp7ImludGVyZmFj
ZXMuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFs
IjoiVEVYVCJ9fSwiaHRtbCI6eyJicm93c2VycyI6eyJ3aW5kb3dzIjp7ImJyb3dzaW5nLWNvbnRl
eHQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFs
IjoiVEVYVCJ9fSwidGhlLXdpbmRvdy1vYmplY3QiOnsiYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5h
dmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMtYnktbmFtZSI6eyJvcGVuLWZlYXR1cmVzLXRva2Vu
aXphdGlvbi0wMDEuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNT
IiwiYWN0dWFsIjoiVEVYVCJ9fX19fSwiZG9tIjp7ImV2ZW50cyI6eyJFdmVudFRhcmdldC1kaXNw
YXRjaEV2ZW50Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIs
ImFjdHVhbCI6IlRFWFQifX19fX19LCJhbmltYXRpb25zIjp7InRyaWdnZXItY29udGFpbmVyLXNj
cm9sbC1lbXB0eS5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0
dWFsIjoiVEVYVCBQQVNTIn19fSwic2tpcHBlZCI6OTg4MSwibnVtX3JlZ3Jlc3Npb25zIjo0LCJv
dGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5
b3V0X3Rlc3RzX2RpciI6Ii9Wb2x1bWVzL0RhdGEvRVdTL1dlYktpdC9MYXlvdXRUZXN0cyIsInZl
cnNpb24iOjQsIm51bV9wYXNzZXMiOjM4MjI1LCJwaXhlbF90ZXN0c19lbmFibGVkIjpmYWxzZSwi
ZGF0ZSI6IjA3OjMzUE0gb24gQXByaWwgMDgsIDIwMTciLCJoYXNfcHJldHR5X3BhdGNoIjp0cnVl
LCJmaXhhYmxlIjo0ODExMCwibnVtX2ZsYWt5IjoxLCJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjp0
cnVlfSk7JywKKyAgICAgICAgaW9zX2ZpbGVzID0geyJmdWxsX3Jlc3VsdHMuanNvbiI6ICdBRERf
UkVTVUxUUyh7InRlc3RzIjp7ImltcG9ydGVkIjp7InczYyI6eyJ3ZWItcGxhdGZvcm0tdGVzdHMi
OnsidXJsIjp7ImludGVyZmFjZXMuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0
ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwiaHRtbCI6eyJicm93c2VycyI6eyJ3aW5kb3dz
Ijp7ImJyb3dzaW5nLWNvbnRleHQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0
ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwidGhlLXdpbmRvdy1vYmplY3QiOnsiYXBpcy1m
b3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMtYnktbmFtZSI6eyJv
cGVuLWZlYXR1cmVzLXRva2VuaXphdGlvbi0wMDEuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9O
IiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fSwiZG9tIjp7ImV2ZW50cyI6
eyJFdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIs
ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifX19fX19LCJhbmltYXRpb25zIjp7InRy
aWdnZXItY29udGFpbmVyLXNjcm9sbC1lbXB0eS5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhw
ZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCBQQVNTIn19fSwic2tpcHBlZCI6OTg4MSwibnVt
X3JlZ3Jlc3Npb25zIjo0LCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJu
dW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2RpciI6Ii9Wb2x1bWVzL0RhdGEvRVdTL1dlYktp
dC9MYXlvdXRUZXN0cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjM4MjI1LCJwaXhlbF90ZXN0
c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjA3OjMzUE0gb24gQXByaWwgMDgsIDIwMTciLCJoYXNf
cHJldHR5X3BhdGNoIjp0cnVlLCJmaXhhYmxlIjo0ODExMCwibnVtX2ZsYWt5IjoxLCJ1c2VzX2V4
cGVjdGF0aW9uc19maWxlIjp0cnVlfSk7JywKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnRUYXJnZXQtZGlzcGF0Y2hFdmVudC1hY3R1
YWwudHh0IjogImciLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy90aGUtd2luZG93LW9iamVjdC9hcGlzLWZvci1jcmVhdGluZy1hbmQt
bmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1uYW1lL29wZW4tZmVhdHVyZXMtdG9rZW5p
emF0aW9uLTAwMS1hY3R1YWwudHh0IjogImgiLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQt
YWN0dWFsLnR4dCI6ICJpIiwKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3VybC9pbnRlcmZhY2VzLWFjdHVhbC50eHQiOiAiaiJ9Ci0gICAgICAgIHdpbl9mdXR1
cmVfZmlsZXMgPSB7ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsi
aW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJ1cmwiOnsiaW50ZXJmYWNl
cy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwi
OiJURVhUIn19LCJodG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3MiOnsiYnJvd3NpbmctY29udGV4
dC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwi
OiJURVhUIn19LCJ0aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2
aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9wZW4tZmVhdHVyZXMtdG9rZW5p
emF0aW9uLTAwMS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7IkV2ZW50VGFyZ2V0LWRpc3Bh
dGNoRXZlbnQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwi
YWN0dWFsIjoiVEVYVCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJpZ2dlci1jb250YWluZXItc2Ny
b2xsLWVtcHR5Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1
YWwiOiJURVhUIFBBU1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1fcmVncmVzc2lvbnMiOjQsIm90
aGVyX2NyYXNoZXMiOnt9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51bV9taXNzaW5nIjowLCJsYXlv
dXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0L0xheW91dFRlc3RzIiwidmVy
c2lvbiI6NCwibnVtX3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJk
YXRlIjoiMDc6MzNQTSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19wcmV0dHlfcGF0Y2giOnRydWUs
ImZpeGFibGUiOjQ4MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRy
dWV9KTsnLAorICAgICAgICB3aW5fZmlsZXMgPSB7ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9S
RVNVTFRTKHsidGVzdHMiOnsiaW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6
eyJ1cmwiOnsiaW50ZXJmYWNlcy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3Rl
ZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJodG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3Mi
OnsiYnJvd3NpbmctY29udGV4dC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3Rl
ZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJ0aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZv
ci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9w
ZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAwMS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04i
LCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7
IkV2ZW50VGFyZ2V0LWRpc3BhdGNoRXZlbnQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwi
ZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJp
Z2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBl
Y3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIFBBU1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1f
cmVncmVzc2lvbnMiOjQsIm90aGVyX2NyYXNoZXMiOnt9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51
bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0
L0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwibnVtX3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3Rz
X2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDc6MzNQTSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19w
cmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjQ4MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhw
ZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsnLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50LWFjdHVh
bC50eHQiOiAiZyIsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1u
YXZpZ2F0aW5nLWJyb3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUvb3Blbi1mZWF0dXJlcy10b2tlbml6
YXRpb24tMDAxLWFjdHVhbC50eHQiOiAiaCIsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYnJvd3NpbmctY29udGV4dC1h
Y3R1YWwudHh0IjogImkiLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdXJsL2ludGVyZmFjZXMtYWN0dWFsLnR4dCI6ICJqIn0KLSAgICAgICAgc2VsZi5maWxl
cyA9IHsibWFjLXdrMiI6IG1hY193azJfZmlsZXMsICJtYWMtd2sxYSI6IG1hY193azFhX2ZpbGVz
LCAibWFjLXdrMWIiOiBtYWNfd2sxYl9maWxlcywgImlvcy1zaW0iOiBpb3Nfc2ltX2ZpbGVzLCAi
d2luLWZ1dHVyZSI6IHdpbl9mdXR1cmVfZmlsZXN9CisgICAgICAgIHNlbGYuZmlsZXMgPSB7Im1h
Yy13azIiOiBtYWNfd2syX2ZpbGVzLCAibWFjLXdrMWEiOiBtYWNfd2sxYV9maWxlcywgIm1hYy13
azFiIjogbWFjX3drMWJfZmlsZXMsICJpb3Mtd2syIjogaW9zX2ZpbGVzLCAid2luIjogd2luX2Zp
bGVzfQogCiAgICAgZGVmIHVuemlwKHNlbGYsIGNvbnRlbnQpOgogICAgICAgICBzZWxmLmNvbnRl
bnQgPSBjb250ZW50CkBAIC0xMzMsNyArMTY2LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uVXBk
YXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2ludGVyZmFj
ZXMtZXhwZWN0ZWQudHh0JzogImotbWFjLXdrMiJ9KQogCiAgICAgICAgIG1vY2tfemlwID0gTW9j
a1ppcCgpCi0gICAgICAgIHVwZGF0ZXIgPSBUZXN0RXhwZWN0YXRpb25VcGRhdGVyKGhvc3QsICIx
MjM0NTYiLCBUcnVlLCBGYWxzZSwgTW9ja0J1Z3ppbGxhKCksIGxhbWJkYSBjb250ZW50OiBtb2Nr
X3ppcC51bnppcChjb250ZW50KSkKKyAgICAgICAgdXBkYXRlciA9IFRlc3RFeHBlY3RhdGlvblVw
ZGF0ZXIoaG9zdCwgIjEyMzQ1NiIsIFRydWUsIEZhbHNlLCBNb2NrQnVnemlsbGEoKSwgbGFtYmRh
IGNvbnRlbnQ6IG1vY2tfemlwLnVuemlwKGNvbnRlbnQpLCBNb2NrUmVxdWVzdHMoKSkKICAgICAg
ICAgdXBkYXRlci5kb191cGRhdGUoKQogICAgICAgICAjIG1hYy13azIgZXhwZWN0YXRpb24KICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lzX21hdGNoaW5nKGhvc3QsICJpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRpcmVjdC9yZWRpcmVjdC1jb3VudC1j
cm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IiwgImEiKSkKQEAgLTE0NCwxOCArMTc3LDcgQEAgY2xh
c3MgVGVzdEV4cGVjdGF0aW9uVXBkYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydFRydWUoc2VsZi5faXNfbWF0Y2hpbmcoaG9zdCwgInBsYXRmb3JtL2lvcy13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3Rl
ZC50eHQiLCAiaiIpKQogICAgICAgICAjIHJlbW92YWwgb2YgbWFjLXdrMSBleHBlY3RhdGlvbiBz
aW5jZSBubyBsb25nZXIgZGlmZmVyZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5f
ZXhpc3RzKGhvc3QsICJwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlZGlyZWN0L3JlZGlyZWN0LWxvY2F0aW9uLWV4cGVjdGVkLnR4dCIp
KQorICAgICAgICAjIHdpbmRvd3Mgc3BlY2lmaWMgZXhwZWN0YXRpb24KKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlbGYuX2lzX21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS93aW4vaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIp
KQogCi0gICAgZGVmIHRlc3RfdXBkYXRlX3dpbl9mdXR1cmVfdGVzdF9leHBlY3RhdGlvbnMoc2Vs
Zik6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3QuZXhlY3V0aXZlID0g
TW9ja0V4ZWN1dGl2ZTIoZXhjZXB0aW9uPU9TRXJyb3IoKSkKLSAgICAgICAgaG9zdC5maWxlc3lz
dGVtID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXM9ewotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVkaXJlY3QvcmVkaXJlY3QtbG9jYXRpb24tZXhwZWN0ZWQudHh0Jzog
J2Utd2sxJywKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnRUYXJnZXQtZGlzcGF0Y2hF
dmVudC1leHBlY3RlZC50eHQnOiAiZyIsCi0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3Ro
ZS13aW5kb3ctb2JqZWN0L2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5n
LWNvbnRleHRzLWJ5LW5hbWUvb3Blbi1mZWF0dXJlcy10b2tlbml6YXRpb24tMDAxLWV4cGVjdGVk
LnR4dCc6ICJoIiwKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9icm93c2lu
Zy1jb250ZXh0LWV4cGVjdGVkLnR4dCc6ICJpIiwKLSAgICAgICAgICAgICcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC9pbnRlcmZh
Y2VzLWV4cGVjdGVkLnR4dCc6ICJqLW1hYy13azIifSkKIAotICAgICAgICBtb2NrX3ppcCA9IE1v
Y2taaXAoKQotICAgICAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0aW9uVXBkYXRlcihob3N0LCAi
MTIzNDU2IiwgVHJ1ZSwgRmFsc2UsIE1vY2tCdWd6aWxsYShpbmNsdWRlX3drMj1GYWxzZSwgaW5j
bHVkZV93aW5fZnV0dXJlPVRydWUpLCBsYW1iZGEgY29udGVudDogbW9ja196aXAudW56aXAoY29u
dGVudCkpCi0gICAgICAgIHVwZGF0ZXIuZG9fdXBkYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHNlbGYuX2lzX21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS93aW4vaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQiLCAiaiIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399701</attachid>
            <date>2020-05-18 20:02:18 -0700</date>
            <delta_ts>2020-05-20 07:09:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210975-20200519050216.patch</filename>
            <type>text/plain</type>
            <size>34214</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxODMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzBkY2ExYmJjZTQyYjQxNjI3YWFkZmY0MGM0ZTEwNzE5
ZGNhNzllZC4uYTJiYzgwZTJiYzIyYTY0NWFjN2ViMWQ4YzUxY2U1MjMwOWYzM2E3ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIwLTA1LTExICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIHVwZGF0ZS10ZXN0LWV4cGVjdGF0aW9ucy1mcm9tLWJ1Z3ppbGxh
IHRvb2wgbm90IHdvcmtpbmcgd2l0aCBuZXcgRVdTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoZSBuZXcgRVdTLCB0aGUgbGF5b3V0IHRlc3Qg
YXJjaGl2ZSByZXN1bHRzIGFyZSBub3QgbG9uZ2VyCisgICAgICAgIHBvc3RlZCB0byBidWd6aWxs
YSBhcyBhdHRhY2htZW50LiBOb3cgd2UgbmVlZCB0byBpbnNwZWN0IHRoZSBFV1MKKyAgICAgICAg
c2VydmVyIHRvIGdldCB0aGUgc3RhdHVzIG9mIHRoZSBydW5zIGZvciB0aGUgcGF0Y2ggaWQsIGFu
ZCB0aGVuCisgICAgICAgIHF1ZXJ5IHRoZSBFV1MgYnVpbGJvdCBzZXJ2ZXIgaW4gb3JkZXIgdG8g
Z2V0IHRoZSBkZXRhaWxzIG9mIGVhY2gKKyAgICAgICAgcnVuIHRvIGZpbmFsbHkgb2J0YWluIHRo
ZSBVUkwgd2l0aCB0aGUgemlwIGZpbGUgZm9yIHRoZSByZXN1bHRzLgorCisgICAgICAgIFRoZSB0
b29sIG5vdyBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgcGxhdGZvcm0tc3BlY2lmaWMgYW5kIGdlbmVy
aWMKKyAgICAgICAgcmVzdWx0cyBhdXRvbWF0aWNhbGx5IChpdHMgbm90IGxvbmdlciBuZWVkZWQg
dG8gc3BlY2lmeSB3aGV0aGVyCisgICAgICAgIHRoZSByZXN1bHQgaXRzIGdlbmVyaWMgb3Igbm90
KS4gSXQgdXNlcyBtYWMtd2syIHJlc3VsdHMgYXMgZ2VuZXJpYy4KKworICAgICAgICBBbHNvIG5v
dyBpdCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIHRlc3RzIHdoZXJlIHRoZSByZXN1bHQK
KyAgICAgICAgaXMgTUlTU0lORy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHk6CisgICAgICAgIChjb25m
aWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChhcmd1bWVudF9wYXJzZXIpOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uVXBkYXRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25V
cGRhdGVyLl9wbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fZ2V0X2xheW91dF90ZXN0c19ydW4p
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uVXBkYXRlci5fbG9va3VwX2V3c19yZXN1bHRzKToK
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3Rlc3RzX3RvX3VwZGF0ZSk6CisgICAg
ICAgIChUZXN0RXhwZWN0YXRpb25VcGRhdGVyLl91cGRhdGVfZm9yX2dlbmVyaWNfYm90KToKKyAg
ICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuX3VwZGF0ZV9mb3JfcGxhdGZvcm1fc3BlY2lm
aWNfYm90KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIuZG9fdXBkYXRlKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2Nr
QXR0YWNobWVudC5fX2luaXRfXyk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19wYXRjaCk6
CisgICAgICAgIChNb2NrQXR0YWNobWVudCk6CisgICAgICAgIChNb2NrQXR0YWNobWVudC5pc19v
YnNvbGV0ZSk6CisgICAgICAgIChNb2NrQnVnemlsbGEpOgorICAgICAgICAoTW9ja0J1Z3ppbGxh
LmF0dGFjaG1lbnRzKToKKyAgICAgICAgKE1vY2tSZXF1ZXN0cyk6CisgICAgICAgIChNb2NrUmVx
dWVzdHMuX19pbml0X18pOgorICAgICAgICAoTW9ja1JlcXVlc3RzLmdldCk6CisgICAgICAgIChN
b2NrUmVxdWVzdHMuY29udGVudCk6CisgICAgICAgIChNb2NrUmVxdWVzdHMudGV4dCk6CisgICAg
ICAgIChNb2NrWmlwLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblVwZGF0ZXJU
ZXN0LnRlc3RfdXBkYXRlX3Rlc3RfZXhwZWN0YXRpb25zKToKKwogMjAyMC0wNS0xOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgY29u
dmVyc2lvbiBiZXR3ZWVuIFAzIGFuZCBzUkdCIGNvbG9yCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9leHBlY3RhdGlvbl91cGRhdGVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhw
ZWN0YXRpb25fdXBkYXRlci5weQppbmRleCBhMzlhMTU3MjdjYzgzYTM1YzNjMjA4YzM1MmRlMzZk
NDFmMWJlMjA3Li5hMzFkNDU4MTVkMzdjZDJkMmNlMjAyYWQyODUwNzE4Nzk5YmJhMjZmIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9l
eHBlY3RhdGlvbl91cGRhdGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXIucHkKQEAgLTEsNiArMSw3IEBA
CiAjIS91c3IvYmluL2VudiBweXRob24KIAogIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTcgKzMzLDI1IEBAIGltcG9ydCBp
bwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB6aXBmaWxlCiAKK2Zyb20gd2Via2l0cHkuY29tbW9u
LmNvbmZpZy51cmxzIGltcG9ydCBld3NzZXJ2ZXJfZGVmYXVsdF9ob3N0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemls
bGEgaW1wb3J0IGJ1Z3ppbGxhCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJl
c3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJr
aXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmNvbnRyb2xsZXJzLnRlc3RfcmVzdWx0X3dyaXRlciBpbXBvcnQgVGVzdFJlc3VsdFdyaXRlcgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQgaW1wb3J0IHJlcXVlc3Rz
CitpbXBvcnQganNvbgoraW1wb3J0IHJlCisKKyMgQnVpbGRib3Qgc3RhdHVzIGNvZGVzIHJlZmVy
ZW5jZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnVpbGRib3QvYnVpbGRib3QvYmxvYi9tYXN0
ZXIvbWFzdGVyL2J1aWxkYm90L3Byb2Nlc3MvcmVzdWx0cy5weQorRVdTX1NUQVRFQ09ERVMgPSB7
J1NVQ0NFU1MnOiAwLCAnV0FSTklOR1MnOiAxLCAnRkFJTFVSRSc6IDIsICdTS0lQUEVEJzogMywg
J0VYQ0VQVElPTic6IDQsICdSRVRSWSc6IDUsICdDQU5DRUxMRUQnOiA2fQorCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi1kZWYgY29uZmlndXJlX2xvZ2dpbmcoKToK
K2RlZiBjb25maWd1cmVfbG9nZ2luZyhkZWJ1Zz1GYWxzZSk6CiAgICAgY2xhc3MgTG9nSGFuZGxl
cihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgogCiAgICAgICAgIGRlZiBmb3JtYXQoc2VsZiwgcmVj
b3JkKToKQEAgLTUwLDEwICs1OSwxMSBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gIiVzOiAlcyIgJSAocmVjb3JkLmxldmVsbmFtZSwgcmVjb3JkLmdl
dE1lc3NhZ2UoKSkKICAgICAgICAgICAgIHJldHVybiByZWNvcmQuZ2V0TWVzc2FnZSgpCiAKLSAg
ICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dp
bmcuSU5GTykKKyAgICBsb2dfbGV2ZWwgPSBsb2dnaW5nLkRFQlVHIGlmIGRlYnVnIGVsc2UgbG9n
Z2luZy5JTkZPCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisgICAg
bG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKICAgICBoYW5kbGVyID0gTG9nSGFuZGxlcigpCi0g
ICAgaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAgaGFuZGxlci5zZXRMZXZlbChs
b2dfbGV2ZWwpCiAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKICAgICByZXR1cm4gaGFu
ZGxlcgogCkBAIC02MSwzNSArNzEsMzUgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiBkZWYg
YXJndW1lbnRfcGFyc2VyKCk6CiAgICAgZGVzY3JpcHRpb24gPSAiIiJVcGRhdGUgZXhwZWN0ZWQu
dHh0IGZpbGVzIGZyb20gcGF0Y2hlcyBzdWJtaXR0ZWQgYnkgRVdTIGJvdHMgb24gYnVnemlsbGEu
IEdpdmVuIGlkIHJlZmVycyB0byBhIGJ1ZyBpZCBieSBkZWZhdWx0LiIiIgogICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J2ltcG9ydHVwZGF0ZS10ZXN0LWV4cGVjdGF0
aW9ucy1mcm9tLWJ1Z3ppbGxhIGJ1Z3ppbGxhX2lkJywgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24s
IGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCi0K
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWlzLWF0dGFjaG1lbnQtaWQnLCBkZXN0
PSdpc19idWdfaWQnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVmYXVsdD1UcnVlLCBoZWxwPSdX
aGV0aGVyIHRoZSBnaXZlbiBpZCBpcyBhIGJ1Z3ppbGxhIGF0dGFjaG1lbnQgYW5kIG5vdCBhIGJ1
ZyBpZCcpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1pcy1wbGF0Zm9ybS1zcGVj
aWZpYycsIGRlc3Q9J2lzX2F0dGFjaG1lbnRfcGxhdGZvcm1fc3BlY2lmaWMnLCBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdXaGV0aGVyIGdlbmVyaWMgZXhwZWN0ZWQg
ZmlsZXMgc2hvdWxkIGJlIHVwZGF0ZWQgb3Igbm90JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctYicsICctLWJvdC1maWx0ZXInLCBkZXN0PSdib3RfZmlsdGVyX25hbWUnLCBhY3Rpb249J3N0
b3JlJywgZGVmYXVsdD1Ob25lLCBoZWxwPSdPbmx5IHByb2Nlc3MgRVdTIHJlc3VsdHMgZm9yIGJv
dHMgd2hlcmUgQk9UX0ZJTFRFUl9OQU1FIGl0cyBwYXJ0IG9mIHRoZSBuYW1lJykKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLWRlYnVnJywgZGVzdD0nZGVidWcnLCBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdMb2cgZGVidWcgbWVzc2FnZXMnKQogICAg
IHJldHVybiBwYXJzZXIKIAogCiBjbGFzcyBUZXN0RXhwZWN0YXRpb25VcGRhdGVyKG9iamVjdCk6
CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgYnVnemlsbGFfaWQsIGlzX2J1Z19pZD1U
cnVlLCBpc19hdHRhY2htZW50X3BsYXRmb3JtX3NwZWNpZmljPUZhbHNlLCBhdHRhY2htZW50X2Zl
dGNoZXI9YnVnemlsbGEuQnVnemlsbGEoKSwgdW56aXA9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGhvc3QsIGJ1Z3ppbGxhX2lkLCBpc19idWdfaWQ9VHJ1ZSwgYm90X2ZpbHRlcl9uYW1l
PU5vbmUsIGF0dGFjaG1lbnRfZmV0Y2hlcj1idWd6aWxsYS5CdWd6aWxsYSgpLCB1bnppcD1Ob25l
KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBz
ZWxmLmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLmJvdF9maWx0ZXJfbmFtZSA9IGJvdF9m
aWx0ZXJfbmFtZQogICAgICAgICBzZWxmLnVuemlwID0gdW56aXAgaWYgdW56aXAgZWxzZSBsYW1i
ZGEgY29udGVudDogemlwZmlsZS5aaXBGaWxlKGlvLkJ5dGVzSU8oY29udGVudCkpCisgICAgICAg
IHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSA9IFdlYktpdEZpbmRlcihzZWxmLmZpbGVzeXN0
ZW0pLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiTGF5b3V0VGVzdHMiKQogICAgICAgICBpZiBpc19i
dWdfaWQ6Ci0gICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzID0g
e30KLSAgICAgICAgICAgIGZvciBhdHRhY2htZW50IGluIGF0dGFjaG1lbnRfZmV0Y2hlci5mZXRj
aF9idWcoYnVnemlsbGFfaWQpLmF0dGFjaG1lbnRzKCk6Ci0gICAgICAgICAgICAgICAgYm90X3R5
cGUgPSBzZWxmLl9ib3RfdHlwZShhdHRhY2htZW50KQotICAgICAgICAgICAgICAgIGlmIGJvdF90
eXBlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1l
bnRzW2JvdF90eXBlXSA9IGF0dGFjaG1lbnQKLSAgICAgICAgICAgIHNlbGYuZ2VuZXJpY19hdHRh
Y2htZW50ID0gc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50cy5wb3AoIm1hYy13azIi
KSBpZiAibWFjLXdrMiIgaW4gc2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50cyBlbHNl
IE5vbmUKKyAgICAgICAgICAgIGJ1Z19pbmZvID0gYXR0YWNobWVudF9mZXRjaGVyLmZldGNoX2J1
ZyhidWd6aWxsYV9pZCkKKyAgICAgICAgICAgIGF0dGFjaG1lbnRzID0gW2F0dGFjaG1lbnRzIGZv
ciBhdHRhY2htZW50cyBpbiBidWdfaW5mby5hdHRhY2htZW50cyhpbmNsdWRlX29ic29sZXRlPUZh
bHNlKSBpZiBhdHRhY2htZW50cy5pc19wYXRjaCgpXQorICAgICAgICAgICAgaWYgbGVuKGF0dGFj
aG1lbnRzKSA+IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGb3VuZCBt
b3JlIHRoYW4gb25lIG5vbi1vYnNvbGV0ZSBwYXRjaCBpbiBidWcge30uIFBsZWFzZSBzcGVjaWZ5
IHdoaWNoIG9uZSB0byBwcm9jZXNzLiIuZm9ybWF0KGJ1Z3ppbGxhX2lkKSkKKyAgICAgICAgICAg
IGlmIGxlbihhdHRhY2htZW50cykgPCAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcigiQ291bGRuJ3QgZmluZCBhbnkgbm9uLW9ic29sZXRlIHBhdGNoIGluIGJ1ZyB7fS4gUGxl
YXNlIHNwZWNpZnkgd2hpY2ggb25lIHRvIHByb2Nlc3MuIi5mb3JtYXQoYnVnemlsbGFfaWQpKQor
ICAgICAgICAgICAgc2VsZi5wYXRjaCA9IGF0dGFjaG1lbnRzWzBdCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBhdHRhY2htZW50ID0gYXR0YWNobWVudF9mZXRjaGVyLmZldGNoX2F0dGFjaG1l
bnQoYnVnemlsbGFfaWQpCi0gICAgICAgICAgICBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFj
aG1lbnRzID0ge3NlbGYuX2JvdF90eXBlKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50fSBpZiBpc19h
dHRhY2htZW50X3BsYXRmb3JtX3NwZWNpZmljIGVsc2Uge30KLSAgICAgICAgICAgIHNlbGYuZ2Vu
ZXJpY19hdHRhY2htZW50ID0gYXR0YWNobWVudCBpZiBub3QgaXNfYXR0YWNobWVudF9wbGF0Zm9y
bV9zcGVjaWZpYyBlbHNlIE5vbmUKLQotICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0Rmlu
ZGVyKHNlbGYuZmlsZXN5c3RlbSkKLSAgICAgICAgc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5
ID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkxheW91dFRlc3RzIikKKyAg
ICAgICAgICAgIHNlbGYucGF0Y2ggPSBhdHRhY2htZW50X2ZldGNoZXIuZmV0Y2hfYXR0YWNobWVu
dChidWd6aWxsYV9pZCkKKyAgICAgICAgaWYgbm90IHNlbGYucGF0Y2guaXNfcGF0Y2goKToKKyAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQXR0YWNobWVudCB7fSBpdHMgbm90IGEgcGF0
Y2guIENhbid0IGNvbnRpbnVlLiIuZm9ybWF0KGJ1Z3ppbGxhX2lkKSkKIAotICAgIGRlZiBfYm90
X3R5cGUoc2VsZiwgYXR0YWNobWVudCk6Ci0gICAgICAgIG5hbWUgPSBhdHRhY2htZW50Lm5hbWUo
KQorICAgIGRlZiBfcGxhdGZvcm1fbmFtZShzZWxmLCBib3RfbmFtZSk6CisgICAgICAgIG5hbWUg
PSBib3RfbmFtZQogICAgICAgICBpZiAibWFjIiBpbiBuYW1lIGFuZCBuYW1lLmVuZHN3aXRoKCIt
d2syIik6CiAgICAgICAgICAgICByZXR1cm4gIm1hYy13azIiCiAgICAgICAgIGlmICJtYWMiIGlu
IG5hbWUgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItd2syIik6CkBAIC05OCw0OCArMTA4LDExMiBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25VcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gImlvcy13azIiCiAgICAgICAgIGlmICJ3aW4tZnV0dXJlIiBpbiBuYW1lOgogICAgICAgICAg
ICAgcmV0dXJuICJ3aW4iCisgICAgICAgIGlmICJndGsiIGluIG5hbWU6CisgICAgICAgICAgICBy
ZXR1cm4gImd0ayIKKyAgICAgICAgaWYgIndwZSIgaW4gbmFtZToKKyAgICAgICAgICAgIHJldHVy
biAid3BlIgorICAgICAgICBpZiAiLWRlYnVnIiBpbiBuYW1lOgorICAgICAgICAgICAgbmFtZSA9
IG5hbWUucmVwbGFjZSgiLWRlYnVnIiwgIiIpCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBk
ZWYgX2dldF9sYXlvdXRfdGVzdHNfcnVuKHNlbGYsIGJvdF9uYW1lLCBld3NfYnVpbGRfdXJsKToK
KyAgICAgICAgaWYgbm90IHJlLm1hdGNoKCJodHRwLip3ZWJraXQub3JnLyMvYnVpbGRlcnMvWzAt
OV0rL2J1aWxkcy9bMC05XSskIiwgZXdzX2J1aWxkX3VybCk6CisgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCJUaGUgVVJMIHt9IGZyb20gRVdTIGhhcyBhbiB1bmV4cGVjdGVkIGZvcm1hdCIu
Zm9ybWF0KGV3c19idWlsZF91cmwpKQorICAgICAgICBld3NfYnVpbGRib3Rfc2VydmVyLCBld3Nf
YnVpbGRib3RfcGF0aCA9IGV3c19idWlsZF91cmwuc3BsaXQoJyMnKQorICAgICAgICBld3NfYnVp
bGRib3Rfc3RlcHNfdXJsID0gInt9YXBpL3Yye30vc3RlcHMiLmZvcm1hdChld3NfYnVpbGRib3Rf
c2VydmVyLCBld3NfYnVpbGRib3RfcGF0aCkKKyAgICAgICAgZXdzX2J1aWxkYm90X3N0ZXBzX3Jl
cXVlc3QgPSByZXF1ZXN0cy5nZXQoZXdzX2J1aWxkYm90X3N0ZXBzX3VybCkKKyAgICAgICAgZXdz
X2J1aWxkYm90X3N0ZXBzID0ganNvbi5sb2Fkcyhld3NfYnVpbGRib3Rfc3RlcHNfcmVxdWVzdC50
ZXh0KQorICAgICAgICBfbG9nLmRlYnVnKCJUcnlpbmcgdG8gZmluZGluZyBmYWlsZWQgbGF5b3V0
IHRlc3QgcnVuIGZvciBib3Qge30gYXQgdXJsIHt9Ii5mb3JtYXQoYm90X25hbWUsIGV3c19idWls
ZGJvdF9zdGVwc191cmwpKQorICAgICAgICBmb3Igc3RlcCBpbiBld3NfYnVpbGRib3Rfc3RlcHNb
J3N0ZXBzJ106CisgICAgICAgICAgICAjIHBpY2sgdGhlIGZpcnN0IHJ1biBhcyB0aGUgb25lIGZv
ciB1cGRhdGluZyB0aGUgbGF5b3V0IHRlc3RzLgorICAgICAgICAgICAgaWYgc3RlcFsnbmFtZSdd
ICE9ICdsYXlvdXQtdGVzdHMnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICBpZiBub3Qgc3RlcFsnY29tcGxldGUnXToKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oIlNr
aXBwaW5nIHRvIHByb2Nlc3MgdW5maW5pc2hlZCBsYXlvdXQtdGVzdHMgcnVuIGZvciBib3Qge30u
IFBsZWFzZSByZXRyeSBsYXRlciIuZm9ybWF0KGJvdF9uYW1lKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgZm9yIHVybF9lbnRyeSBpbiBzdGVwWyd1cmxzJ106CisgICAg
ICAgICAgICAgICAgdXJsID0gdXJsX2VudHJ5Wyd1cmwnXQorICAgICAgICAgICAgICAgIGlmIHVy
bC5lbmRzd2l0aCgnLnppcCcpOgorICAgICAgICAgICAgICAgICAgICBpZiB1cmwuc3RhcnRzd2l0
aCgnLycpOgorICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gInt9e30iLmZvcm1hdChld3Nf
YnVpbGRib3Rfc2VydmVyLCB1cmwubHN0cmlwKCcvJykpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB7ImxheW91dC10ZXN0cy1yZXN1bHRzLXN0cmluZyI6IHN0ZXBbJ3N0YXRlX3N0cmluZydd
LCAibGF5b3V0LXRlc3RzLWFyY2hpdmUtdXJsIjogdXJsfQogICAgICAgICByZXR1cm4gTm9uZQog
Ci0gICAgZGVmIF90ZXN0c190b191cGRhdGUoc2VsZiwgYXR0YWNobWVudCwgYm90X3R5cGU9Tm9u
ZSk6Ci0gICAgICAgIF9sb2cuaW5mbygiUHJvY2Vzc2luZyBhdHRhY2htZW50ICIgKyBzdHIoYXR0
YWNobWVudC5pZCgpKSkKLSAgICAgICAgemlwX2ZpbGUgPSBzZWxmLnVuemlwKGF0dGFjaG1lbnQu
Y29udGVudHMoKSkKKyAgICBkZWYgX2xvb2t1cF9ld3NfcmVzdWx0cyhzZWxmKToKKyAgICAgICAg
X2xvZy5pbmZvKCJMb29raW5nIGZvciBFV1MgcmVzdWx0cyBpbiBwYXRjaCBhdHRhY2htZW50ICVz
IGZyb20gYnVnICVzIiAlIChzZWxmLnBhdGNoLmlkKCksIHNlbGYucGF0Y2guYnVnKCkuaWQoKSkp
CisgICAgICAgIGV3c19idWJibGVzX3VybCA9ICJodHRwczovL3t9L3N0YXR1cy97fS8iLmZvcm1h
dChld3NzZXJ2ZXJfZGVmYXVsdF9ob3N0LCBzZWxmLnBhdGNoLmlkKCkpCisgICAgICAgIF9sb2cu
ZGVidWcoIlF1ZXJ5aW5nIGJ1YmJsZSBzdGF0dXMgYXQge30iLmZvcm1hdChld3NfYnViYmxlc191
cmwpKQorICAgICAgICBld3NfYnViYmxlc19zdGF0dXNfcmVxdWVzdCA9IHJlcXVlc3RzLmdldChl
d3NfYnViYmxlc191cmwpCisgICAgICAgIGV3c19idWJibGVzX3N0YXR1cyA9IGpzb24ubG9hZHMo
ZXdzX2J1YmJsZXNfc3RhdHVzX3JlcXVlc3QudGV4dCkKKyAgICAgICAgc2VsZi5ld3NfcmVzdWx0
cyA9IHt9CisgICAgICAgIGZvciBib3QgaW4gZXdzX2J1YmJsZXNfc3RhdHVzOgorICAgICAgICAg
ICAgaWYgZXdzX2J1YmJsZXNfc3RhdHVzW2JvdF1bJ3N0YXRlJ10gaXMgTm9uZToKKyAgICAgICAg
ICAgICAgICBfbG9nLmluZm8oIkVXUyBib3Qge30gaGFzIHN0aWxsIG5vdCBmaW5pc2hlZC4gSWdu
b3JpbmciLmZvcm1hdChib3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICBfbG9nLmRlYnVnKCJGb3VuZCBFV1MgcnVuIGF0IHt9IGZvciBib3Qge30gd2l0aCBzdGF0ZSB7
fSIuZm9ybWF0KGV3c19idWJibGVzX3N0YXR1c1tib3RdWyd1cmwnXSwgYm90LAorICAgICAgICAg
ICAgICAgICAgICAgICBbU1RBVEUgZm9yIFNUQVRFIGluIEVXU19TVEFURUNPREVTLmtleXMoKV1b
ZXdzX2J1YmJsZXNfc3RhdHVzW2JvdF1bJ3N0YXRlJ11dKSkKKyAgICAgICAgICAgIGlmIHNlbGYu
Ym90X2ZpbHRlcl9uYW1lOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuYm90X2ZpbHRlcl9uYW1l
IGluIGJvdDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ld3NfcmVzdWx0c1tib3RdID0gc2Vs
Zi5fZ2V0X2xheW91dF90ZXN0c19ydW4oYm90LCBld3NfYnViYmxlc19zdGF0dXNbYm90XVsndXJs
J10pCisgICAgICAgICAgICBlbGlmIGV3c19idWJibGVzX3N0YXR1c1tib3RdWydzdGF0ZSddIGlu
IFtFV1NfU1RBVEVDT0RFU1snRkFJTFVSRSddLCBFV1NfU1RBVEVDT0RFU1snV0FSTklOR1MnXV06
CisgICAgICAgICAgICAgICAgc2VsZi5ld3NfcmVzdWx0c1tib3RdID0gc2VsZi5fZ2V0X2xheW91
dF90ZXN0c19ydW4oYm90LCBld3NfYnViYmxlc19zdGF0dXNbYm90XVsndXJsJ10pCisKKyAgICAg
ICAgIyBEZWxldGUgZW50cmllcyB3aXRoIG51bGwgdmFsdWUgKGlmIGFueSkKKyAgICAgICAgZm9y
IGJvdCBpbiBzZWxmLmV3c19yZXN1bHRzLmtleXMoKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LmV3c19yZXN1bHRzW2JvdF06CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuZXdzX3Jlc3VsdHNb
Ym90XQorCisgICAgICAgIGlmIGxlbihzZWxmLmV3c19yZXN1bHRzKSA9PSAwOgorICAgICAgICAg
ICAgaWYgc2VsZi5ib3RfZmlsdGVyX25hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCJDb3VsZG4ndCBmaW5kIGFueSBmYWlsZWQgRVdTIHJlc3VsdCBpbiBhdHRhY2htZW50
L3BhdGNoIHt9IHRoYXQgbWF0Y2hlcyBmaWx0ZXIgbmFtZS4iLmZvcm1hdChzZWxmLnBhdGNoLmlk
KCksIHNlbGYuYm90X2ZpbHRlcl9uYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cigiQ291bGRuJ3QgZmluZCBhbnkgZmFpbGVkIEVXUyByZXN1bHQgZm9yIGF0dGFjaG1lbnQvcGF0
Y2gge30uIFRyeSB0byBzcGVjaWZ5IGEgYm90IGZpbHRlciBuYW1lIG1hbnVhbGx5LiIuZm9ybWF0
KHNlbGYucGF0Y2guaWQoKSkpCisKKyAgICBkZWYgX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLCBib3Rf
bmFtZSk6CisgICAgICAgIF9sb2cuaW5mbygie30gYXJjaGl2ZToge30iLmZvcm1hdChib3RfbmFt
ZSwgc2VsZi5ld3NfcmVzdWx0c1tib3RfbmFtZV1bJ2xheW91dC10ZXN0cy1hcmNoaXZlLXVybCdd
KSkKKyAgICAgICAgX2xvZy5pbmZvKCJ7fSBzdGF0dXM6IHt9Ii5mb3JtYXQoYm90X25hbWUsIHNl
bGYuZXdzX3Jlc3VsdHNbYm90X25hbWVdWydsYXlvdXQtdGVzdHMtcmVzdWx0cy1zdHJpbmcnXSkp
CisgICAgICAgIGxheW91dF90ZXN0c19hcmNoaXZlX3JlcXVlc3QgPSByZXF1ZXN0cy5nZXQoc2Vs
Zi5ld3NfcmVzdWx0c1tib3RfbmFtZV1bJ2xheW91dC10ZXN0cy1hcmNoaXZlLXVybCddKQorICAg
ICAgICBsYXlvdXRfdGVzdHNfYXJjaGl2ZV9jb250ZW50ID0gbGF5b3V0X3Rlc3RzX2FyY2hpdmVf
cmVxdWVzdC5jb250ZW50CisgICAgICAgIHppcF9maWxlID0gc2VsZi51bnppcChsYXlvdXRfdGVz
dHNfYXJjaGl2ZV9jb250ZW50KQogICAgICAgICByZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMu
cmVzdWx0c19mcm9tX3N0cmluZyh6aXBfZmlsZS5yZWFkKCJmdWxsX3Jlc3VsdHMuanNvbiIpKQot
ICAgICAgICByZXN1bHRzX3RvX3VwZGF0ZSA9IFtyZXN1bHQudGVzdF9uYW1lIGZvciByZXN1bHQg
aW4gcmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpIGlmIHJlc3VsdC50eXBlID09IHRlc3Rf
ZXhwZWN0YXRpb25zLlRFWFRdCisgICAgICAgIHJlc3VsdHNfdG9fdXBkYXRlID0gW3Jlc3VsdC50
ZXN0X25hbWUgZm9yIHJlc3VsdCBpbiByZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCkgaWYg
cmVzdWx0LnR5cGUgaW4gW3Rlc3RfZXhwZWN0YXRpb25zLlRFWFQsIHRlc3RfZXhwZWN0YXRpb25z
Lk1JU1NJTkddXQogICAgICAgICByZXR1cm4ge3Jlc3VsdDogemlwX2ZpbGUucmVhZChUZXN0UmVz
dWx0V3JpdGVyLmFjdHVhbF9maWxlbmFtZShyZXN1bHQsIHNlbGYuZmlsZXN5c3RlbSkpIGZvciBy
ZXN1bHQgaW4gcmVzdWx0c190b191cGRhdGV9CiAKICAgICBkZWYgX2ZpbGVfY29udGVudF9pZl9l
eGlzdHMoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLnJl
YWRfdGV4dF9maWxlKGZpbGVuYW1lKSBpZiBzZWxmLmZpbGVzeXN0ZW0uZXhpc3RzKGZpbGVuYW1l
KSBlbHNlICIiCiAKLSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgdG8g
YWxpZ24gd2hhdCBpcyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5nbGVfdGVzdF9ydW5uZXIgaXMg
ZG9pbmcuCi0gICAgIyBJbiBwYXJ0aWN1bGFyIHRoZSBmYWN0IG9mIG5vdCBvdmVyd3JpdGluZyB0
aGUgZmlsZSBpZiBjb250ZW50IGlzIHRoZSBzYW1lLgotICAgIGRlZiBfdXBkYXRlX2Zyb21fZ2Vu
ZXJpY19hdHRhY2htZW50KHNlbGYpOgotICAgICAgICBmb3IgdGVzdF9uYW1lLCBleHBlY3RlZF9j
b250ZW50IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLmdlbmVyaWNfYXR0YWNobWVudCku
aXRlbXMoKToKKyAgICBkZWYgX3VwZGF0ZV9mb3JfZ2VuZXJpY19ib3Qoc2VsZiwgYm90X25hbWUp
OgorICAgICAgICBmb3IgdGVzdF9uYW1lLCBleHBlY3RlZF9jb250ZW50IGluIHNlbGYuX3Rlc3Rz
X3RvX3VwZGF0ZShib3RfbmFtZSkuaXRlbXMoKToKICAgICAgICAgICAgIGV4cGVjdGVkX2ZpbGVu
YW1lID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5LCBU
ZXN0UmVzdWx0V3JpdGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgc2VsZi5maWxlc3lz
dGVtKSkKICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250
ZW50X2lmX2V4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5p
bmZvKCJVcGRhdGluZyAiICsgdGVzdF9uYW1lICsgIiAoIiArIGV4cGVjdGVkX2ZpbGVuYW1lICsg
IikiKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgIiArIHRlc3RfbmFtZSAr
ICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIgKyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKKyAg
ICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5m
aWxlc3lzdGVtLmRpcm5hbWUoZXhwZWN0ZWRfZmlsZW5hbWUpKQogICAgICAgICAgICAgICAgIHNl
bGYuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0ZWRfZmlsZW5hbWUsIGV4cGVjdGVk
X2NvbnRlbnQpCiAKLSAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgdG8g
YWxpZ24gd2hhdCBpcyBkb25lIHRoZXJlIHdpdGggd2hhdCBzaW5nbGVfdGVzdF9ydW5uZXIgaXMg
ZG9pbmcuCi0gICAgIyBJbiBwYXJ0aWN1bGFyIHRoZSBhYmlsaXR5IHRvIHJlbW92ZSBhIG5ldyBz
cGVjaWZpYyBleHBlY3RhdGlvbiBpZiBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgZ2VuZXJpYyBvbmUu
Ci0gICAgZGVmIF91cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50KHNlbGYs
IGF0dGFjaG1lbnQsIGJvdF90eXBlKToKLSAgICAgICAgZm9yIHRlc3RfbmFtZSwgZXhwZWN0ZWRf
Y29udGVudCBpbiBzZWxmLl90ZXN0c190b191cGRhdGUoYXR0YWNobWVudCwgYm90X3R5cGUpLml0
ZW1zKCk6Ci0gICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5q
b2luKHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSwgVGVzdFJlc3VsdFdyaXRlci5leHBlY3Rl
ZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNlbGYuZmlsZXN5c3RlbSwgYm90X3R5cGUpKQorICAgIGRl
ZiBfdXBkYXRlX2Zvcl9wbGF0Zm9ybV9zcGVjaWZpY19ib3Qoc2VsZiwgYm90X25hbWUpOgorICAg
ICAgICBwbGF0Zm9ybV9uYW1lID0gc2VsZi5fcGxhdGZvcm1fbmFtZShib3RfbmFtZSkKKyAgICAg
ICAgZm9yIHRlc3RfbmFtZSwgZXhwZWN0ZWRfY29udGVudCBpbiBzZWxmLl90ZXN0c190b191cGRh
dGUoYm90X25hbWUpLml0ZW1zKCk6CisgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNl
bGYuZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RfcmVwb3NpdG9yeSwgVGVzdFJlc3Vs
dFdyaXRlci5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsIHNlbGYuZmlsZXN5c3RlbSwgcGxh
dGZvcm1fbmFtZSkpCiAgICAgICAgICAgICBnZW5lcmljX2V4cGVjdGVkX2ZpbGVuYW1lID0gc2Vs
Zi5maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdF9yZXBvc2l0b3J5LCBUZXN0UmVzdWx0
V3JpdGVyLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgc2VsZi5maWxlc3lzdGVtKSkKICAg
ICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50X2lmX2V4
aXN0cyhnZW5lcmljX2V4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oIlVwZGF0aW5nICIgKyB0ZXN0X25hbWUgKyAiIGZvciAiICsgYm90X3R5cGUgKyAiICgiICsg
ZXhwZWN0ZWRfZmlsZW5hbWUgKyAiKSIpCi0gICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVt
Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKGV4cGVjdGVkX2Zp
bGVuYW1lKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KGV4cGVjdGVkX2ZpbGVuYW1lLCBleHBlY3RlZF9jb250ZW50KQorICAgICAgICAgICAgICAgIGlm
IGV4cGVjdGVkX2NvbnRlbnQgIT0gc2VsZi5fZmlsZV9jb250ZW50X2lmX2V4aXN0cyhleHBlY3Rl
ZF9maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgIiAr
IHRlc3RfbmFtZSArICIgZm9yICIgKyBib3RfbmFtZSArICIgKCIgKyBleHBlY3RlZF9maWxlbmFt
ZSArICIpIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKGV4cGVjdGVkX2ZpbGVuYW1lKSkKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShleHBlY3Rl
ZF9maWxlbmFtZSwgZXhwZWN0ZWRfY29udGVudCkKICAgICAgICAgICAgIGVsaWYgc2VsZi5maWxl
c3lzdGVtLmV4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgX2xvZy5p
bmZvKCJVcGRhdGluZyAiICsgdGVzdF9uYW1lICsgIiBmb3IgIiArIGJvdF9uYW1lICsgIiAoIFJF
TU9WRUQ6ICIgKyBleHBlY3RlZF9maWxlbmFtZSArICIpIikKICAgICAgICAgICAgICAgICBzZWxm
LmZpbGVzeXN0ZW0ucmVtb3ZlKGV4cGVjdGVkX2ZpbGVuYW1lKQogCiAgICAgZGVmIGRvX3VwZGF0
ZShzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuZ2VuZXJpY19hdHRhY2htZW50IGFuZCBub3Qg
c2VsZi5wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50czoKLSAgICAgICAgICAgIF9sb2cuaW5m
bygiTm8gYXR0YWNobWVudCB0byBwcm9jZXNzIikKLSAgICAgICAgICAgIHJldHVybgotICAgICAg
ICBpZiBzZWxmLmdlbmVyaWNfYXR0YWNobWVudDoKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9m
cm9tX2dlbmVyaWNfYXR0YWNobWVudCgpCi0gICAgICAgIGZvciBib3RfdHlwZSwgYXR0YWNobWVu
dCBpbiBzZWxmLnBsYXRmb3JtX3NwZWNpZmljX2F0dGFjaG1lbnRzLml0ZW1zKCk6Ci0gICAgICAg
ICAgICBzZWxmLl91cGRhdGVfZnJvbV9wbGF0Zm9ybV9zcGVjaWZpY19hdHRhY2htZW50KGF0dGFj
aG1lbnQsIGJvdF90eXBlKQorICAgICAgICBzZWxmLl9sb29rdXBfZXdzX3Jlc3VsdHMoKQorICAg
ICAgICBnZW5lcmljX2JvdHMgPSBbYm90X25hbWUgZm9yIGJvdF9uYW1lIGluIHNlbGYuZXdzX3Jl
c3VsdHMua2V5cygpIGlmIHNlbGYuX3BsYXRmb3JtX25hbWUoYm90X25hbWUpID09ICJtYWMtd2sy
Il0KKyAgICAgICAgcGxhdGZvcm1fYm90cyA9IFtib3RfbmFtZSBmb3IgYm90X25hbWUgaW4gc2Vs
Zi5ld3NfcmVzdWx0cy5rZXlzKCkgaWYgc2VsZi5fcGxhdGZvcm1fbmFtZShib3RfbmFtZSkgIT0g
Im1hYy13azIiXQorICAgICAgICAjIEZpcnN0IHVwZGF0ZSB0aGUgZ2VuZXJpYyByZXN1bHRzLCBz
byB1cGRhdGVzIGZvciBwbGF0Zm9ybSBib3RzIGNhbiB1c2UgdGhpcyBuZXcgZ2VuZXJpYyByZXN1
bHQgYXMgYmFzZS4KKyAgICAgICAgZm9yIGJvdF9uYW1lIGluIGdlbmVyaWNfYm90czoKKyAgICAg
ICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9tIGJvdCB7fSAoZ2VuZXJpYyki
LmZvcm1hdChib3RfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl91cGRhdGVfZm9yX2dlbmVyaWNf
Ym90KGJvdF9uYW1lKQorICAgICAgICBmb3IgYm90X25hbWUgaW4gcGxhdGZvcm1fYm90czoKKyAg
ICAgICAgICAgIF9sb2cuaW5mbygiVXBkYXRpbmcgcmVzdWx0cyBmcm9tIGJvdCB7fSAocGxhdGZv
cm0pIi5mb3JtYXQoYm90X25hbWUpKQorICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2Zvcl9wbGF0
Zm9ybV9zcGVjaWZpY19ib3QoYm90X25hbWUpCiAKIAogZGVmIG1haW4oX2FyZ3YsIF9zdGRvdXQs
IF9zdGRlcnIpOgpAQCAtMTQ5LDggKzIyMyw4IEBAIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBf
c3RkZXJyKToKICAgICBpZiBub3QgYXJnczoKICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJQbGVh
c2UgcHJvdmlkZSBhIGJ1ZyBpZCBvciB1c2UgLWEgb3B0aW9uIikKIAotICAgIGNvbmZpZ3VyZV9s
b2dnaW5nKCkKKyAgICBjb25maWd1cmVfbG9nZ2luZyhvcHRpb25zLmRlYnVnKQogCiAgICAgYnVn
emlsbGFfaWQgPSBhcmdzWzBdCi0gICAgdXBkYXRlciA9IFRlc3RFeHBlY3RhdGlvblVwZGF0ZXIo
SG9zdCgpLCBidWd6aWxsYV9pZCwgb3B0aW9ucy5pc19idWdfaWQsIG9wdGlvbnMuaXNfYXR0YWNo
bWVudF9wbGF0Zm9ybV9zcGVjaWZpYykKKyAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0aW9uVXBk
YXRlcihIb3N0KCksIGJ1Z3ppbGxhX2lkLCBvcHRpb25zLmlzX2J1Z19pZCwgb3B0aW9ucy5ib3Rf
ZmlsdGVyX25hbWUpCiAgICAgdXBkYXRlci5kb191cGRhdGUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBk
YXRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS90ZXN0X2V4cGVjdGF0aW9uX3VwZGF0ZXJfdW5pdHRlc3QucHkKaW5kZXggOTlkZjZhMzA3
MTk3OTVkYWM0YzA1NGNkZTkyOTQ5MTM1NTBkMDQ4Ni4uNWJkNjRiOTdlOWQ5MjlkMDhiOGVhMTk2
NzBiMGMyNzNjMjQ2NGY0MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL3Rlc3RfZXhwZWN0YXRpb25fdXBkYXRlcl91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvdGVzdF9leHBlY3Rh
dGlvbl91cGRhdGVyX3VuaXR0ZXN0LnB5CkBAIC0zNCw2ICszNCw3IEBAIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRp
dmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEudGVzdF9leHBlY3RhdGlvbl91
cGRhdGVyIGltcG9ydCBUZXN0RXhwZWN0YXRpb25VcGRhdGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuYnVnemlsbGEuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5IGltcG9ydCBtb2NrCiAKIEZBS0VfRklMRVMgPSB7CiAgICAgJy90ZXN0cy9j
c3N3Zy9jc3MtZmFrZS0xL2VtcHR5X2Rpci9SRUFETUUudHh0JzogJycsCkBAIC00MiwzNCArNDMs
NjQgQEAgRkFLRV9GSUxFUyA9IHsKIAogCiBjbGFzcyBNb2NrQXR0YWNobWVudChBdHRhY2htZW50
KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBjb250ZW50
cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dGFjaG1lbnRfZGljdGlvbmFyeSwgY29udGVu
dHMsIGlzX3BhdGNoLCBpc19vYnNvbGV0ZSk6CiAgICAgICAgIEF0dGFjaG1lbnQuX19pbml0X18o
c2VsZiwgYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBzZWxmKQogICAgICAgICBzZWxmLl9jb250ZW50
cyA9IGNvbnRlbnRzCisgICAgICAgIHNlbGYuX2lzX3BhdGNoID0gaXNfcGF0Y2gKKyAgICAgICAg
c2VsZi5faXNfb2Jzb2xldGUgPSBpc19vYnNvbGV0ZQogCiAgICAgZGVmIGNvbnRlbnRzKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudHMKIAorICAgIGRlZiBpc19wYXRjaChzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3BhdGNoCisKKyAgICBkZWYgaXNfb2Jzb2xldGUo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pc19vYnNvbGV0ZQogCi1jbGFzcyBNb2NrQnVn
emlsbGEoKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVkZV93azI9VHJ1ZSwgaW5jbHVk
ZV93aW5fZnV0dXJlPUZhbHNlKToKLSAgICAgICAgc2VsZi5faW5jbHVkZV93azIgPSBpbmNsdWRl
X3drMgotICAgICAgICBzZWxmLl9pbmNsdWRlX3dpbl9mdXR1cmUgPSBpbmNsdWRlX3dpbl9mdXR1
cmUKIAorY2xhc3MgTW9ja0J1Z3ppbGxhKCk6CiAgICAgZGVmIGZldGNoX2J1ZyhzZWxmLCBpZCk6
CiAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgYXR0YWNobWVudHMoc2VsZik6CisgICAg
ZGVmIGF0dGFjaG1lbnRzKHNlbGYsIGluY2x1ZGVfb2Jzb2xldGU9RmFsc2UpOgogICAgICAgICBh
dHRhY2htZW50cyA9IFtdCi0gICAgICAgIGlmIHNlbGYuX2luY2x1ZGVfd2syOgotICAgICAgICAg
ICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiAxLCAibmFtZSI6ICJB
cmNoaXZlIG9mIGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBld3MxMDMgZm9yIG1hYy1lbGNhcGl0
YW4td2syIn0sICJtYWMtd2syIikpCi0gICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0
YWNobWVudCh7ImlkIjogMiwgIm5hbWUiOiAiQXJjaGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1bHRz
IGZyb20gZXdzMTAzIGZvciBtYWMtZWxjYXBpdGFuIn0sICJtYWMtd2sxYSIpKQotICAgICAgICBh
dHRhY2htZW50cy5hcHBlbmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDMsICJuYW1lIjogIkFyY2hp
dmUgb2YgbGF5b3V0LXRlc3QtcmVzdWx0cyBmcm9tIGV3czEwNCBmb3IgbWFjLWVsY2FwaXRhbiJ9
LCAibWFjLXdrMWIiKSkKLSAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50
KHsiaWQiOiA0LCAibmFtZSI6ICJBcmNoaXZlIG9mIGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBl
d3MxMjIgZm9yIGlvcy1zaW11bGF0b3Itd2syIn0sICJpb3Mtc2ltIikpCi0gICAgICAgIGlmIHNl
bGYuX2luY2x1ZGVfd2luX2Z1dHVyZToKLSAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChN
b2NrQXR0YWNobWVudCh7ImlkIjogNSwgIm5hbWUiOiAiQXJjaGl2ZSBvZiBsYXlvdXQtdGVzdC1y
ZXN1bHRzIGZyb20gZXdzMTI0IGZvciB3aW4tZnV0dXJlIn0sICJ3aW4tZnV0dXJlIikpCisgICAg
ICAgIGF0dGFjaG1lbnRzLmFwcGVuZChNb2NrQXR0YWNobWVudCh7ImlkIjogMSwgIm5hbWUiOiAi
VGVzdCBjYXNlIn0sICJIb3cgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSIsIEZhbHNlLCBGYWxzZSkp
CisgICAgICAgIGlmIGluY2x1ZGVfb2Jzb2xldGU6CisgICAgICAgICAgICBhdHRhY2htZW50cy5h
cHBlbmQoTW9ja0F0dGFjaG1lbnQoeyJpZCI6IDIsICJuYW1lIjogIlBhdGNoIn0sICJQYXRjaCB2
MSIsIFRydWUsIFRydWUpKQorICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRh
Y2htZW50KHsiaWQiOiAzLCAibmFtZSI6ICJQYXRjaCJ9LCAiUGF0Y2ggdjIiLCBUcnVlLCBUcnVl
KSkKKyAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKE1vY2tBdHRhY2htZW50KHsiaWQiOiA0LCAi
bmFtZSI6ICJQYXRjaCJ9LCAiUGF0Y2ggdjMiLCBUcnVlLCBGYWxzZSkpCiAgICAgICAgIHJldHVy
biBhdHRhY2htZW50cwogCiAKK2NsYXNzIE1vY2tSZXF1ZXN0c0dldCgpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB1cmwpOgorICAgICAgICBzZWxmLl91cmxzX2RhdGEgPSB7CisgICAgICAgICAg
ICAnaHR0cHM6Ly9ld3Mud2Via2l0Lm9yZy9zdGF0dXMvNC8nOiAneyJtYWMtd2sxIjogeyJ1cmwi
OiAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzEvYnVpbGRzLzk5Iiwg
InN0YXRlIjogMn0sICJtYWMtd2syIjogeyJ1cmwiOiAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzk5IiwgInN0YXRlIjogMn0sICJtYWMtZGVidWctd2sx
IjogeyJ1cmwiOiAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzMvYnVp
bGRzLzk5IiwgInN0YXRlIjogMn0sICJpb3Mtd2syIjogeyJ1cmwiOiAiaHR0cHM6Ly9ld3MtYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzQvYnVpbGRzLzk5IiwgInN0YXRlIjogMn0sICJ3aW4i
OiB7InVybCI6ICJodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvNS9idWls
ZHMvOTkiLCAic3RhdGUiOiAyfX0nLAorICAgICAgICAgICAgJ2h0dHBzOi8vZXdzLWJ1aWxkLndl
YmtpdC5vcmcvYXBpL3YyL2J1aWxkZXJzLzEvYnVpbGRzLzk5L3N0ZXBzJzogJ3sgInN0ZXBzIjog
WyB7ICJjb21wbGV0ZSI6IHRydWUsICJuYW1lIjogImxheW91dC10ZXN0cyIsICJzdGF0ZV9zdHJp
bmciOiAiUmFuIGxheW91dCB0ZXN0cyIsICAidXJscyI6IFsgeyAibmFtZSI6ICJkb3dubG9hZCBs
YXlvdXQgdGVzdCByZXN1bHRzIiwgInVybCI6ICIvcmVzdWx0cy9tYWMtd2sxL3IxMjM0NS56aXAi
IH0gXSB9IF0gfScsCisgICAgICAgICAgICAnaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9h
cGkvdjIvYnVpbGRlcnMvMi9idWlsZHMvOTkvc3RlcHMnOiAneyAic3RlcHMiOiBbIHsgImNvbXBs
ZXRlIjogdHJ1ZSwgIm5hbWUiOiAibGF5b3V0LXRlc3RzIiwgInN0YXRlX3N0cmluZyI6ICJSYW4g
bGF5b3V0IHRlc3RzIiwgICJ1cmxzIjogWyB7ICJuYW1lIjogImRvd25sb2FkIGxheW91dCB0ZXN0
IHJlc3VsdHMiLCAidXJsIjogIi9yZXN1bHRzL21hYy13azIvcjEyMzQ1LnppcCIgfSBdIH0gXSB9
JywKKyAgICAgICAgICAgICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FwaS92Mi9idWls
ZGVycy8zL2J1aWxkcy85OS9zdGVwcyc6ICd7ICJzdGVwcyI6IFsgeyAiY29tcGxldGUiOiB0cnVl
LCAibmFtZSI6ICJsYXlvdXQtdGVzdHMiLCAic3RhdGVfc3RyaW5nIjogIlJhbiBsYXlvdXQgdGVz
dHMiLCAgInVybHMiOiBbIHsgIm5hbWUiOiAiZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cyIs
ICJ1cmwiOiAiL3Jlc3VsdHMvbWFjLWRlYnVnLXdrMS9yMTIzNDUuemlwIiB9IF0gfSBdIH0nLAor
ICAgICAgICAgICAgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvYXBpL3YyL2J1aWxkZXJz
LzQvYnVpbGRzLzk5L3N0ZXBzJzogJ3sgInN0ZXBzIjogWyB7ICJjb21wbGV0ZSI6IHRydWUsICJu
YW1lIjogImxheW91dC10ZXN0cyIsICJzdGF0ZV9zdHJpbmciOiAiUmFuIGxheW91dCB0ZXN0cyIs
ICAidXJscyI6IFsgeyAibmFtZSI6ICJkb3dubG9hZCBsYXlvdXQgdGVzdCByZXN1bHRzIiwgInVy
bCI6ICIvcmVzdWx0cy9pb3Mtd2syL3IxMjM0NS56aXAiIH0gIF0gfSBdIH0nLAorICAgICAgICAg
ICAgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvYXBpL3YyL2J1aWxkZXJzLzUvYnVpbGRz
Lzk5L3N0ZXBzJzogJ3sgInN0ZXBzIjogWyB7ICJjb21wbGV0ZSI6IHRydWUsICJuYW1lIjogImxh
eW91dC10ZXN0cyIsICJzdGF0ZV9zdHJpbmciOiAiUmFuIGxheW91dCB0ZXN0cyIsICAidXJscyI6
IFsgeyAibmFtZSI6ICJkb3dubG9hZCBsYXlvdXQgdGVzdCByZXN1bHRzIiwgInVybCI6ICIvcmVz
dWx0cy93aW4vcjEyMzQ1LnppcCIgfSAgXSB9IF0gfScsCisgICAgICAgICAgICAiaHR0cHM6Ly9l
d3MtYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL21hYy13azEvcjEyMzQ1LnppcCI6ICJtYWMtd2sx
YSIsCisgICAgICAgICAgICAiaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL21h
Yy1kZWJ1Zy13azEvcjEyMzQ1LnppcCI6ICJtYWMtd2sxYiIsCisgICAgICAgICAgICAiaHR0cHM6
Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL21hYy13azIvcjEyMzQ1LnppcCI6ICJtYWMt
d2syIiwKKyAgICAgICAgICAgICJodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMv
aW9zLXdrMi9yMTIzNDUuemlwIjogImlvcy13azIiLAorICAgICAgICAgICAgImh0dHBzOi8vZXdz
LWJ1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy93aW4vcjEyMzQ1LnppcCI6ICJ3aW4iCisgICAgICAg
IH0KKyAgICAgICAgc2VsZi5fdXJsID0gdXJsCisgICAgICAgIGlmIHVybCBub3QgaW4gc2VsZi5f
dXJsc19kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidXJsIHt9IG5vdCBtb2Nr
ZWQiLmZvcm1hdCh1cmwpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnQoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLl91cmxzX2RhdGFbc2VsZi5fdXJsXQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHRleHQoc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5jb250ZW50
KQorCisKIGNsYXNzIE1vY2taaXAoKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAg
IHNlbGYuY29udGVudCA9IE5vbmUKQEAgLTk1LDE3ICsxMjYsMTcgQEAgY2xhc3MgTW9ja1ppcCgp
OgogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3JlZGlyZWN0L3JlZGlyZWN0LWxvY2F0aW9uLXdvcmtlci1hY3R1YWwudHh0IjogImQiLAogICAg
ICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlZGly
ZWN0L3JlZGlyZWN0LWxvY2F0aW9uLWFjdHVhbC50eHQiOiAiZSIsCiAgICAgICAgICAgICAiaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYnJvd3Np
bmctY29udGV4dC1hY3R1YWwudHh0IjogImYtd2sxYiJ9Ci0gICAgICAgIGlvc19zaW1fZmlsZXMg
PSB7ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsiaW1wb3J0ZWQi
OnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJ1cmwiOnsiaW50ZXJmYWNlcy5odG1sIjp7
InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19
LCJodG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3MiOnsiYnJvd3NpbmctY29udGV4dC5odG1sIjp7
InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19
LCJ0aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1i
cm93c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9wZW4tZmVhdHVyZXMtdG9rZW5pemF0aW9uLTAw
MS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwi
OiJURVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7IkV2ZW50VGFyZ2V0LWRpc3BhdGNoRXZlbnQu
aHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoi
VEVYVCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5
Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhU
IFBBU1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1fcmVncmVzc2lvbnMiOjQsIm90aGVyX2NyYXNo
ZXMiOnt9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNf
ZGlyIjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0L0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwi
bnVtX3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDc6
MzNQTSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUi
OjQ4MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsnLAor
ICAgICAgICBpb3NfZmlsZXMgPSB7ImZ1bGxfcmVzdWx0cy5qc29uIjogJ0FERF9SRVNVTFRTKHsi
dGVzdHMiOnsiaW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJ1cmwiOnsi
aW50ZXJmYWNlcy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIn19LCJodG1sIjp7ImJyb3dzZXJzIjp7IndpbmRvd3MiOnsiYnJvd3Np
bmctY29udGV4dC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIn19LCJ0aGUtd2luZG93LW9iamVjdCI6eyJhcGlzLWZvci1jcmVhdGlu
Zy1hbmQtbmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1uYW1lIjp7Im9wZW4tZmVhdHVy
ZXMtdG9rZW5pemF0aW9uLTAwMS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3Rl
ZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19LCJkb20iOnsiZXZlbnRzIjp7IkV2ZW50VGFy
Z2V0LWRpc3BhdGNoRXZlbnQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQi
OiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fX0sImFuaW1hdGlvbnMiOnsidHJpZ2dlci1jb250
YWluZXItc2Nyb2xsLWVtcHR5Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBB
U1MiLCJhY3R1YWwiOiJURVhUIFBBU1MifX19LCJza2lwcGVkIjo5ODgxLCJudW1fcmVncmVzc2lv
bnMiOjQsIm90aGVyX2NyYXNoZXMiOnt9LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51bV9taXNzaW5n
IjowLCJsYXlvdXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS9FV1MvV2ViS2l0L0xheW91dFRl
c3RzIiwidmVyc2lvbiI6NCwibnVtX3Bhc3NlcyI6MzgyMjUsInBpeGVsX3Rlc3RzX2VuYWJsZWQi
OmZhbHNlLCJkYXRlIjoiMDc6MzNQTSBvbiBBcHJpbCAwOCwgMjAxNyIsImhhc19wcmV0dHlfcGF0
Y2giOnRydWUsImZpeGFibGUiOjQ4MTEwLCJudW1fZmxha3kiOjEsInVzZXNfZXhwZWN0YXRpb25z
X2ZpbGUiOnRydWV9KTsnLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2V2ZW50cy9FdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50LWFjdHVhbC50eHQiOiAi
ZyIsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5n
LWJyb3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUvb3Blbi1mZWF0dXJlcy10b2tlbml6YXRpb24tMDAx
LWFjdHVhbC50eHQiOiAiaCIsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYnJvd3NpbmctY29udGV4dC1hY3R1YWwudHh0
IjogImkiLAogICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJs
L2ludGVyZmFjZXMtYWN0dWFsLnR4dCI6ICJqIn0KLSAgICAgICAgd2luX2Z1dHVyZV9maWxlcyA9
IHsiZnVsbF9yZXN1bHRzLmpzb24iOiAnQUREX1JFU1VMVFMoeyJ0ZXN0cyI6eyJpbXBvcnRlZCI6
eyJ3M2MiOnsid2ViLXBsYXRmb3JtLXRlc3RzIjp7InVybCI6eyJpbnRlcmZhY2VzLmh0bWwiOnsi
cmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifX0s
Imh0bWwiOnsiYnJvd3NlcnMiOnsid2luZG93cyI6eyJicm93c2luZy1jb250ZXh0Lmh0bWwiOnsi
cmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifX0s
InRoZS13aW5kb3ctb2JqZWN0Ijp7ImFwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJy
b3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUiOnsib3Blbi1mZWF0dXJlcy10b2tlbml6YXRpb24tMDAx
Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6
IlRFWFQifX19fX0sImRvbSI6eyJldmVudHMiOnsiRXZlbnRUYXJnZXQtZGlzcGF0Y2hFdmVudC5o
dG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJU
RVhUIn19fX19fSwiYW5pbWF0aW9ucyI6eyJ0cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtZW1wdHku
aHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQg
UEFTUyJ9fX0sInNraXBwZWQiOjk4ODEsIm51bV9yZWdyZXNzaW9ucyI6NCwib3RoZXJfY3Jhc2hl
cyI6e30sImludGVycnVwdGVkIjpmYWxzZSwibnVtX21pc3NpbmciOjAsImxheW91dF90ZXN0c19k
aXIiOiIvVm9sdW1lcy9EYXRhL0VXUy9XZWJLaXQvTGF5b3V0VGVzdHMiLCJ2ZXJzaW9uIjo0LCJu
dW1fcGFzc2VzIjozODIyNSwicGl4ZWxfdGVzdHNfZW5hYmxlZCI6ZmFsc2UsImRhdGUiOiIwNzoz
M1BNIG9uIEFwcmlsIDA4LCAyMDE3IiwiaGFzX3ByZXR0eV9wYXRjaCI6dHJ1ZSwiZml4YWJsZSI6
NDgxMTAsIm51bV9mbGFreSI6MSwidXNlc19leHBlY3RhdGlvbnNfZmlsZSI6dHJ1ZX0pOycsCisg
ICAgICAgIHdpbl9maWxlcyA9IHsiZnVsbF9yZXN1bHRzLmpzb24iOiAnQUREX1JFU1VMVFMoeyJ0
ZXN0cyI6eyJpbXBvcnRlZCI6eyJ3M2MiOnsid2ViLXBsYXRmb3JtLXRlc3RzIjp7InVybCI6eyJp
bnRlcmZhY2VzLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIs
ImFjdHVhbCI6IlRFWFQifX0sImh0bWwiOnsiYnJvd3NlcnMiOnsid2luZG93cyI6eyJicm93c2lu
Zy1jb250ZXh0Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIs
ImFjdHVhbCI6IlRFWFQifX0sInRoZS13aW5kb3ctb2JqZWN0Ijp7ImFwaXMtZm9yLWNyZWF0aW5n
LWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUiOnsib3Blbi1mZWF0dXJl
cy10b2tlbml6YXRpb24tMDAxLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVk
IjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifX19fX0sImRvbSI6eyJldmVudHMiOnsiRXZlbnRUYXJn
ZXQtZGlzcGF0Y2hFdmVudC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6
IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19fSwiYW5pbWF0aW9ucyI6eyJ0cmlnZ2VyLWNvbnRh
aW5lci1zY3JvbGwtZW1wdHkuaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFT
UyIsImFjdHVhbCI6IlRFWFQgUEFTUyJ9fX0sInNraXBwZWQiOjk4ODEsIm51bV9yZWdyZXNzaW9u
cyI6NCwib3RoZXJfY3Jhc2hlcyI6e30sImludGVycnVwdGVkIjpmYWxzZSwibnVtX21pc3Npbmci
OjAsImxheW91dF90ZXN0c19kaXIiOiIvVm9sdW1lcy9EYXRhL0VXUy9XZWJLaXQvTGF5b3V0VGVz
dHMiLCJ2ZXJzaW9uIjo0LCJudW1fcGFzc2VzIjozODIyNSwicGl4ZWxfdGVzdHNfZW5hYmxlZCI6
ZmFsc2UsImRhdGUiOiIwNzozM1BNIG9uIEFwcmlsIDA4LCAyMDE3IiwiaGFzX3ByZXR0eV9wYXRj
aCI6dHJ1ZSwiZml4YWJsZSI6NDgxMTAsIm51bV9mbGFreSI6MSwidXNlc19leHBlY3RhdGlvbnNf
ZmlsZSI6dHJ1ZX0pOycsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vZXZlbnRzL0V2ZW50VGFyZ2V0LWRpc3BhdGNoRXZlbnQtYWN0dWFsLnR4dCI6ICJn
IiwKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvdGhlLXdpbmRvdy1vYmplY3QvYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmct
YnJvd3NpbmctY29udGV4dHMtYnktbmFtZS9vcGVuLWZlYXR1cmVzLXRva2VuaXphdGlvbi0wMDEt
YWN0dWFsLnR4dCI6ICJoIiwKICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9icm93c2luZy1jb250ZXh0LWFjdHVhbC50eHQi
OiAiaSIsCiAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwv
aW50ZXJmYWNlcy1hY3R1YWwudHh0IjogImoifQotICAgICAgICBzZWxmLmZpbGVzID0geyJtYWMt
d2syIjogbWFjX3drMl9maWxlcywgIm1hYy13azFhIjogbWFjX3drMWFfZmlsZXMsICJtYWMtd2sx
YiI6IG1hY193azFiX2ZpbGVzLCAiaW9zLXNpbSI6IGlvc19zaW1fZmlsZXMsICJ3aW4tZnV0dXJl
Ijogd2luX2Z1dHVyZV9maWxlc30KKyAgICAgICAgc2VsZi5maWxlcyA9IHsibWFjLXdrMiI6IG1h
Y193azJfZmlsZXMsICJtYWMtd2sxYSI6IG1hY193azFhX2ZpbGVzLCAibWFjLXdrMWIiOiBtYWNf
d2sxYl9maWxlcywgImlvcy13azIiOiBpb3NfZmlsZXMsICJ3aW4iOiB3aW5fZmlsZXN9CiAKICAg
ICBkZWYgdW56aXAoc2VsZiwgY29udGVudCk6CiAgICAgICAgIHNlbGYuY29udGVudCA9IGNvbnRl
bnQKQEAgLTEzMywyOSArMTY0LDE5IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvblVwZGF0ZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC9pbnRlcmZhY2VzLWV4cGVj
dGVkLnR4dCc6ICJqLW1hYy13azIifSkKIAogICAgICAgICBtb2NrX3ppcCA9IE1vY2taaXAoKQot
ICAgICAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0aW9uVXBkYXRlcihob3N0LCAiMTIzNDU2Iiwg
VHJ1ZSwgRmFsc2UsIE1vY2tCdWd6aWxsYSgpLCBsYW1iZGEgY29udGVudDogbW9ja196aXAudW56
aXAoY29udGVudCkpCi0gICAgICAgIHVwZGF0ZXIuZG9fdXBkYXRlKCkKLSAgICAgICAgIyBtYWMt
d2syIGV4cGVjdGF0aW9uCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLl9pc19tYXRjaGlu
Zyhob3N0LCAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVkaXJl
Y3QvcmVkaXJlY3QtY291bnQtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCIsICJhIikpCi0gICAg
ICAgICMgbm8gbmVlZCB0byBhZGQgbWFjLXdrMSBzcGVjaWZpYyBleHBlY3RhdGlvbgotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuX2V4aXN0cyhob3N0LCAicGxhdGZvcm0vbWFjLXdrMS9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRpcmVjdC9yZWRpcmVj
dC1jb3VudC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IikpCi0gICAgICAgICMgbWFjLXdrMS9p
b3Mtc2ltdWxhdG9yLXdrMiBzcGVjaWZpYyBleHBlY3RhdGlvbgotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoc2VsZi5faXNfbWF0Y2hpbmcoaG9zdCwgInBsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYnJvd3NpbmctY29u
dGV4dC1leHBlY3RlZC50eHQiLCAiZi13azFiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
ZWxmLl9pc19tYXRjaGluZyhob3N0LCAicGxhdGZvcm0vaW9zLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3VybC9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dCIsICJqIikpCi0gICAg
ICAgICMgcmVtb3ZhbCBvZiBtYWMtd2sxIGV4cGVjdGF0aW9uIHNpbmNlIG5vIGxvbmdlciBkaWZm
ZXJlbnQKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLl9leGlzdHMoaG9zdCwgInBsYXRm
b3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVk
aXJlY3QvcmVkaXJlY3QtbG9jYXRpb24tZXhwZWN0ZWQudHh0IikpCi0KLSAgICBkZWYgdGVzdF91
cGRhdGVfd2luX2Z1dHVyZV90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKLSAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKLSAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihleGNl
cHRpb249T1NFcnJvcigpKQotICAgICAgICBob3N0LmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3Rl
bShmaWxlcz17Ci0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZWRp
cmVjdC9yZWRpcmVjdC1sb2NhdGlvbi1leHBlY3RlZC50eHQnOiAnZS13azEnLAotICAgICAgICAg
ICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2V2ZW50cy9FdmVudFRhcmdldC1kaXNwYXRjaEV2ZW50LWV4cGVjdGVkLnR4dCc6
ICJnIiwKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvdGhlLXdpbmRvdy1vYmplY3QvYXBp
cy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMtYnktbmFtZS9v
cGVuLWZlYXR1cmVzLXRva2VuaXphdGlvbi0wMDEtZXhwZWN0ZWQudHh0JzogImgiLAotICAgICAg
ICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQtZXhwZWN0ZWQu
dHh0JzogImkiLAotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0Jzog
ImotbWFjLXdrMiJ9KQorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3dlYmtpdHB5LmNvbW1vbi5u
ZXQuYnVnemlsbGEudGVzdF9leHBlY3RhdGlvbl91cGRhdGVyLnJlcXVlc3RzLmdldCcsIE1vY2tS
ZXF1ZXN0c0dldCk6CisgICAgICAgICAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0aW9uVXBkYXRl
cihob3N0LCAiMTIzNDU2IiwgVHJ1ZSwgRmFsc2UsIE1vY2tCdWd6aWxsYSgpLCBsYW1iZGEgY29u
dGVudDogbW9ja196aXAudW56aXAoY29udGVudCkpCisgICAgICAgICAgICB1cGRhdGVyLmRvX3Vw
ZGF0ZSgpCisgICAgICAgICAgICAjIG1hYy13azIgZXhwZWN0YXRpb24KKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZWxmLl9pc19tYXRjaGluZyhob3N0LCAiaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVkaXJlY3QvcmVkaXJlY3QtY291bnQtY3Jvc3Mtb3Jp
Z2luLWV4cGVjdGVkLnR4dCIsICJhIikpCisgICAgICAgICAgICAjIG5vIG5lZWQgdG8gYWRkIG1h
Yy13azEgc3BlY2lmaWMgZXhwZWN0YXRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
c2VsZi5fZXhpc3RzKGhvc3QsICJwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlZGlyZWN0L3JlZGlyZWN0LWNvdW50LWNyb3NzLW9yaWdp
bi1leHBlY3RlZC50eHQiKSkKKyAgICAgICAgICAgICMgbWFjLXdrMS9pb3Mtc2ltdWxhdG9yLXdr
MiBzcGVjaWZpYyBleHBlY3RhdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYu
X2lzX21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQtZXhwZWN0
ZWQudHh0IiwgImYtd2sxYiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lz
X21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS9pb3Mtd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdXJsL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0IiwgImoiKSkKKyAgICAgICAgICAg
ICMgcmVtb3ZhbCBvZiBtYWMtd2sxIGV4cGVjdGF0aW9uIHNpbmNlIG5vIGxvbmdlciBkaWZmZXJl
bnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5fZXhpc3RzKGhvc3QsICJwbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
ZGlyZWN0L3JlZGlyZWN0LWxvY2F0aW9uLWV4cGVjdGVkLnR4dCIpKQorICAgICAgICAgICAgIyB3
aW5kb3dzIHNwZWNpZmljIGV4cGVjdGF0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
c2VsZi5faXNfbWF0Y2hpbmcoaG9zdCwgInBsYXRmb3JtL3dpbi9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3VybC9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dCIsICJqIikpCisKIAotICAg
ICAgICBtb2NrX3ppcCA9IE1vY2taaXAoKQotICAgICAgICB1cGRhdGVyID0gVGVzdEV4cGVjdGF0
aW9uVXBkYXRlcihob3N0LCAiMTIzNDU2IiwgVHJ1ZSwgRmFsc2UsIE1vY2tCdWd6aWxsYShpbmNs
dWRlX3drMj1GYWxzZSwgaW5jbHVkZV93aW5fZnV0dXJlPVRydWUpLCBsYW1iZGEgY29udGVudDog
bW9ja196aXAudW56aXAoY29udGVudCkpCi0gICAgICAgIHVwZGF0ZXIuZG9fdXBkYXRlKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2lzX21hdGNoaW5nKGhvc3QsICJwbGF0Zm9ybS93
aW4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvaW50ZXJmYWNlcy1leHBlY3Rl
ZC50eHQiLCAiaiIpKQo=
</data>
<flag name="review"
          id="415247"
          type_id="1"
          status="+"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>