<?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>90511</bug_id>
          
          <creation_ts>2012-07-03 17:58:29 -0700</creation_ts>
          <short_desc>nrwt: add a MessagePool abstraction that the manager will call to replace the broker</short_desc>
          <delta_ts>2012-07-11 18:41:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>662616</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-03 17:58:29 -0700</bug_when>
    <thetext>nrwt: add a MessagePool abstraction that the manager will call to replace the broker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662618</commentid>
    <comment_count>1</comment_count>
      <attachid>150700</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-03 18:03:11 -0700</bug_when>
    <thetext>Created attachment 150700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662630</commentid>
    <comment_count>2</comment_count>
      <attachid>150705</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-03 18:35:18 -0700</bug_when>
    <thetext>Created attachment 150705
remove unused self.name assignment in manager.__init__()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667207</commentid>
    <comment_count>3</comment_count>
      <attachid>150705</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-11 16:45:05 -0700</bug_when>
    <thetext>Comment on attachment 150705
remove unused self.name assignment in manager.__init__()

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

Nice cleanup overall. This is heading in the direction of a nice simplification I think.

&gt; Tools/ChangeLog:68
&gt; +2012-07-03  Dirk Pranke  &lt;dpranke@chromium.org&gt;
&gt; +
&gt; +        nrwt: clean up names in worker.py
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=90510

I assume including this was an accident. :)

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:70
&gt; +        self.worker_factory = worker_factory
&gt; +        self.num_workers = num_workers
&gt; +        self.worker_startup_delay_secs = worker_startup_delay_secs
&gt; +        self._worker_states = {}
&gt; +        self.host = host
&gt; +        self.name = &apos;manager&apos;

Seems like all of these could be private, no?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:118
&gt; +    # FIXME: Inline this function.
&gt; +    def _worker_is_done(self, worker_state):
&gt; +        return worker_state.done

Lol. Adding the FIXME is more work than just doing the inlining, no? :)

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:125
&gt; +        for worker in self._worker_states.values():
&gt; +            if worker.worker_connection.is_alive():
&gt; +                worker.worker_connection.join(5.0)

Nit: This looks like it duplicates 104-110 without the useful logging. Should they use a helper function to share this code? A FIXME would be fine if you agree.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:154
&gt; +    def handle_done(self, source, log_messages=None):
&gt; +        worker_state = self._worker_states[source]
&gt; +        worker_state.done = True
&gt; +        self._log_messages(log_messages)
&gt; +
&gt; +    def handle_started_test(self, *args):
&gt; +        self._caller.handle(&apos;started_test&apos;, *args)
&gt; +
&gt; +    def handle_finished_test(self, *args):
&gt; +        self._caller.handle(&apos;finished_test&apos;, *args)
&gt; +
&gt; +    def handle_finished_test_list(self, *args):
&gt; +        self._caller.handle(&apos;finished_test_list&apos;, *args)
&gt; +
&gt; +    def handle_exception(self, *args):
&gt; +        self._handle_worker_exception(*args)
&gt; +
&gt; +    def _log_messages(self, messages):
&gt; +        for message in messages:
&gt; +            logging.root.handle(message)
&gt; +
&gt; +    @staticmethod
&gt; +    def _handle_worker_exception(source, exception_type, exception_value, stack):
&gt; +        if exception_type == KeyboardInterrupt:
&gt; +            raise exception_type(exception_value)
&gt; +        _log.error(&quot;%s raised %s(&apos;%s&apos;):&quot; % (
&gt; +                   source, exception_value.__class__.__name__, str(exception_value)))
&gt; +        raise WorkerException(str(exception_value))

These are all unused as best I can tell. Am I looking at the wrong code? I tried code searching for them and I looked at https://bugs.webkit.org/attachment.cgi?id=150711&amp;action=review for uses of them. Actually, it looks like you delete most of these in that followup patch.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:158
&gt; +    &quot;&quot;&quot;A class for the manager to use to track the current state of the workers.&quot;&quot;&quot;

Meh to this comment. :) I&apos;d delete it.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:168
&gt; +        self.current_test_name = None
&gt; +        self.next_timeout = None
&gt; +        self.stats = {}
&gt; +        self.stats[&apos;name&apos;] = worker_connection.name
&gt; +        self.stats[&apos;num_tests&apos;] = 0
&gt; +        self.stats[&apos;total_time&apos;] = 0

These all appear unused to me.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:407
&gt;          self._worker_connection.yield_to_broker()

FIXME s/yield_to_broker/yield_to_caller/ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667243</commentid>
    <comment_count>4</comment_count>
      <attachid>151822</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-11 17:35:44 -0700</bug_when>
    <thetext>Created attachment 151822
update w/ review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667258</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-11 17:46:07 -0700</bug_when>
    <thetext>Committed r122394: &lt;http://trac.webkit.org/changeset/122394&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150700</attachid>
            <date>2012-07-03 18:03:11 -0700</date>
            <delta_ts>2012-07-03 18:35:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90511-20120703180309.patch</filename>
            <type>text/plain</type>
            <size>21385</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWIxZTM0ZGU4YzkzNDEwYTkyNjAzNTE4NDdiMjZiOTU5
YTFjNGYzYy4uMzU4MTlhZTE3MWQ4ZDhhNmIwNzZmYzNiYTZkM2M1OWVkNjY3NDRhMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY5
IEBACiAyMDEyLTA3LTAzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IGFkZCBhIE1lc3NhZ2VQb29sIGFic3RyYWN0aW9uIHRoYXQgdGhlIG1hbmFn
ZXIgd2lsbCBjYWxsIHRvIHJlcGxhY2UgdGhlIGJyb2tlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1MTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSBuZXcg
TWVzc2FnZVBvb2wgYWJzdHJhY3Rpb24gdGhhdCB3aWxsCisgICAgICAgIHJlcGxhY2UgdGhlIGNs
YXNzZXMgaW4gbWFuYWdlcl93b3JrZXJfYnJva2VyLiBJdCBpcyBhIG1pbmltYWwKKyAgICAgICAg
aW50ZXJmYWNlIHRoYXQgdHJpZXMgdG8gZm9sbG93IHRoZSBjb252ZW50aW9ucyBpbgorICAgICAg
ICBtdWx0aXByb2Nlc3NpbmcuUG9vbCBhbmQgY29uY3VycmVuY3kuZnV0dXJlcyAuLi4gaXQgcHJv
dmlkZXMgYQorICAgICAgICBjb250ZXh0IG1hbmFnZXIgYW5kIGEgcnVuKCkgbWV0aG9kIHRoYXQg
c2VuZHMgTiBtZXNzYWdlcyB0byBNCisgICAgICAgIHdvcmtlcnMgcHJvY2Vzc2VzIChzdGFydGlu
ZyB3b3JrZXJzIGFzIG5lY2Vzc2FyeSkgYW5kIHdhaXRzIGZvcgorICAgICAgICB0aGVtIGFsbCB0
byBjb21wbGV0ZSwgaGFuZGxpbmcgY2xlYW51cCBhcyBuZWNlc3NhcnkuIFRoZSBjYWxsZXIKKyAg
ICAgICAgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhIGhhbmRsZSgpIG1ldGhvZCB0byBo
YW5kbGUKKyAgICAgICAgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgd29ya2Vycy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaW50ZXJmYWNlIGJhc2ljYWxseSBoaWRlcyBhbGwgb2YgdGhlIG11
bHRpcHJvY2Vzc2luZyBsb2dpYyBmcm9tCisgICAgICAgIHRoZSBtYW5hZ2VyIGNsYXNzLgorCisg
ICAgICAgIFRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIE1lc3NhZ2VQb29sIGlzIGEgc2lt
cGxlIHNoaW0KKyAgICAgICAgYXJvdW5kIHRoZSBleGlzdGluZyBicm9rZXIgY2xhc3NlczsgYSBz
dWJzZXF1ZW50IGNoYW5nZSB3aWxsCisgICAgICAgIHJlcGxhY2UgYWxsIHRoZSBvdGhlciBjbGFz
c2VzIHdpdGggYSBtdWNoIHNpbXBsZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgTm8gYWRkaXRpb25hbCB0ZXN0cyBhcmUgcHJvdmlkZWQgZm9yIG5vdzsgZXhpc3RpbmcgdGVz
dHMgc2hvdWxkCisgICAgICAgIHByb3ZpZGUgYWRlcXVhdGUgY292ZXJhZ2UsIGFuZCBJIHdpbGwg
YWRkIG5ldyB1bml0IHRlc3RzIGZvciB0aGUKKyAgICAgICAgTWVzc2FnZVBvb2wgY2xhc3Mgd2hl
biBJIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAg
ICAgKFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbi5fX3JlZHVjZV9fKToKKyAgICAgICAgKE1h
bmFnZXIuX19pbml0X18pOgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rlc3RzKToKKyAgICAgICAg
KE1hbmFnZXIuX3J1bl90ZXN0cy5pbnN0ZWFkKToKKyAgICAgICAgKE1hbmFnZXIuaGFuZGxlKToK
KyAgICAgICAgKE1hbmFnZXIuX2hhbmRsZV9zdGFydGVkX3Rlc3QpOgorICAgICAgICAoTWFuYWdl
ci5faGFuZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdCk6CisgICAgICAgIChNYW5hZ2VyLl9oYW5kbGVf
ZmluaXNoZWRfdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5OgorICAgICAgICAoZ2V0KToKKyAg
ICAgICAgKF9NZXNzYWdlUG9vbCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuX19pbml0X18pOgor
ICAgICAgICAoX01lc3NhZ2VQb29sLl9fZW50ZXJfXyk6CisgICAgICAgIChfTWVzc2FnZVBvb2wu
X19leGl0X18pOgorICAgICAgICAoX01lc3NhZ2VQb29sLnJ1bik6CisgICAgICAgIChfTWVzc2Fn
ZVBvb2wud2FpdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaXNfZG9uZSk6CisgICAgICAgIChf
TWVzc2FnZVBvb2wuX3dvcmtlcl9pc19kb25lKToKKyAgICAgICAgKF9NZXNzYWdlUG9vbC5fY2xv
c2UpOgorICAgICAgICAoX01lc3NhZ2VQb29sLmhhbmRsZV9kb25lKToKKyAgICAgICAgKF9NZXNz
YWdlUG9vbC5oYW5kbGVfc3RhcnRlZF90ZXN0KToKKyAgICAgICAgKF9NZXNzYWdlUG9vbC5oYW5k
bGVfZmluaXNoZWRfdGVzdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaGFuZGxlX2ZpbmlzaGVk
X3Rlc3RfbGlzdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaGFuZGxlX2V4Y2VwdGlvbik6Cisg
ICAgICAgIChfTWVzc2FnZVBvb2wuX2xvZ19tZXNzYWdlcyk6CisgICAgICAgIChfTWVzc2FnZVBv
b2wuX2hhbmRsZV93b3JrZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKF9Xb3JrZXJTdGF0ZSk6Cisg
ICAgICAgIChfV29ya2VyU3RhdGUuZm9yKToKKyAgICAgICAgKF9Xb3JrZXJTdGF0ZS5fX2luaXRf
Xyk6CisgICAgICAgIChfV29ya2VyU3RhdGUuX19yZXByX18pOgorICAgICAgICAoX2dldF9icm9r
ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKG1ha2VfYnJva2Vy
KToKKworMjAxMi0wNy0wMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBucnd0OiBjbGVhbiB1cCBuYW1lcyBpbiB3b3JrZXIucHkKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTEwCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5CmluZGV4IGE2ZDZlYzI2YjNmMGEyODI1YmQxZjFhNTM0ODNkNzI1M2YxMDFiZGMuLjg1MjRk
ZDIwNTAyODg5ZjE3NTEyYTFlZjNkMmU0MWI5NjlkYWY3YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5w
eQpAQCAtMjY2LDYgKzI2Niw3IEBAIGNsYXNzIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbihF
eGNlcHRpb24pOgogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLnJlYXNvbiwp
CiAKIAorIyBFeHBvcnQgdGhpcyBzbyBjYWxsZXJzIGRvbid0IG5lZWQgdG8ga25vdyBhYm91dCBt
YW5hZ2VyX3dvcmtlcl9icm9rZXIuCiBXb3JrZXJFeGNlcHRpb24gPSBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuV29ya2VyRXhjZXB0aW9uCiAKIApAQCAtMzAwLDcgKzMwMSw2IEBAIGNsYXNzIE1hbmFn
ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHBvcnQuaG9zdC5maWxlc3lz
dGVtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3ByaW50
ZXIgPSBwcmludGVyCi0gICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0gTm9uZQogICAgICAg
ICBzZWxmLl9leHBlY3RhdGlvbnMgPSBOb25lCiAKICAgICAgICAgc2VsZi5IVFRQX1NVQkRJUiA9
ICdodHRwJyArIHBvcnQuVEVTVF9QQVRIX1NFUEFSQVRPUgpAQCAtMzI4LDEwICszMjgsOSBAQCBj
bGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMgPSBbXQog
ICAgICAgICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9CisgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0
cyA9IHt9CiAgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSBOb25lCi0KLSAg
ICAgICAgIyBUaGlzIG1hcHMgd29ya2VyIG5hbWVzIHRvIHRoZSBzdGF0ZSB3ZSBhcmUgdHJhY2tp
bmcgZm9yIGVhY2ggb2YgdGhlbS4KLSAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlcyA9IHt9Cisg
ICAgICAgIHNlbGYubmFtZSA9ICdtYW5hZ2VyJwogCiAgICAgICAgIHNlbGYubmFtZSA9ICdtYW5h
Z2VyJwogCkBAIC03NDYsMTEgKzc0NSwxMCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQogICAgICAg
ICBzZWxmLl9hbGxfcmVzdWx0cyA9IFtdCiAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzID0ge30K
LSAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlcyA9IHt9CisgICAgICAgIHNlbGYuX3dvcmtlcl9z
dGF0cyA9IHt9CiAKICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBGYWxzZQogICAgICAg
ICBpbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW10KIAogICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKICAg
ICAgICAgbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRfdGVzdHMo
ZmlsZV9saXN0LCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRp
b25zLmZ1bGx5X3BhcmFsbGVsKQpAQCAtNzc3LDY1ICs3NzUsMjggQEAgY2xhc3MgTWFuYWdlcihv
YmplY3QpOgogICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dvcmtlcl9icm9r
ZXIuZ2V0KG51bV93b3JrZXJzLCBzZWxmLCB3b3JrZXJfZmFjdG9yeSwgc2VsZi5fcG9ydC5ob3N0
KQogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHJldHVy
biAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgc2Vs
Zi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQorICAgICAgICAgICAgcmV0dXJuIChr
ZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHNlbGYuX3dvcmtlcl9zdGF0cy52YWx1
ZXMoKSwgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQogCiAgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyAlcyAuLi4nICUgZ3JhbW1hci5wbHVy
YWxpemUoJ3dvcmtlcicsIG51bV93b3JrZXJzKSkKLSAgICAgICAgZm9yIHdvcmtlcl9udW1iZXIg
aW4geHJhbmdlKG51bV93b3JrZXJzKToKLSAgICAgICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0g
bWFuYWdlcl9jb25uZWN0aW9uLnN0YXJ0X3dvcmtlcih3b3JrZXJfbnVtYmVyKQotICAgICAgICAg
ICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25u
ZWN0aW9uKQotICAgICAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlc1t3b3JrZXJfY29ubmVjdGlv
bi5uYW1lXSA9IHdvcmtlcl9zdGF0ZQotCi0gICAgICAgICAgICB0aW1lLnNsZWVwKHNlbGYuX3Bv
cnQud29ya2VyX3N0YXJ0dXBfZGVsYXlfc2VjcygpKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCi0gICAgICAgIGZvciBzaGFyZCBp
biBhbGxfc2hhcmRzOgotICAgICAgICAgICAgIyBGSVhNRTogQ2hhbmdlICd0ZXN0X2xpc3QnIHRv
ICdzaGFyZCcsIG1ha2Ugc2hhcmRpbmcgcHVibGljLgotICAgICAgICAgICAgbWFuYWdlcl9jb25u
ZWN0aW9uLnBvc3RfbWVzc2FnZSgndGVzdF9saXN0Jywgc2hhcmQubmFtZSwgc2hhcmQudGVzdF9p
bnB1dHMpCi0KLSAgICAgICAgIyBXZSBwb3N0IG9uZSAnc3RvcCcgbWVzc2FnZSBmb3IgZWFjaCB3
b3JrZXIuIEJlY2F1c2UgdGhlIHN0b3AgbWVzc2FnZQotICAgICAgICAjIGFyZSBzZW50IGFmdGVy
IGFsbCBvZiB0aGUgdGVzdHMsIGFuZCBiZWNhdXNlIGVhY2ggd29ya2VyIHdpbGwgc3RvcAotICAg
ICAgICAjIHJlYWRpbmcgbWVzc3NhZ2VzIGFmdGVyIHJlY2VpdmluZyBhIHN0b3AsIHdlIGNhbiBi
ZSBzdXJlIGVhY2gKLSAgICAgICAgIyB3b3JrZXIgd2lsbCBnZXQgYSBzdG9wIG1lc3NhZ2UgYW5k
IGhlbmNlIHRoZXkgd2lsbCBhbGwgc2h1dCBkb3duLgotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uo
bnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2Fn
ZSgnc3RvcCcpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNf
ZG9uZSgpOgotICAgICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9s
b29wKGRlbGF5X3NlY3M9MS4wKQotCi0gICAgICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgb2YgdGhl
IHdvcmtlcnMgaGF2ZSBzaHV0IGRvd24gKGlmIHBvc3NpYmxlKS4KLSAgICAgICAgICAgIGZvciB3
b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKLSAgICAgICAgICAg
ICAgICBpZiB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKLSAgICAg
ICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnV2FpdGluZyBmb3Igd29ya2VyICVkIHRvIGV4aXQn
ICUgd29ya2VyX3N0YXRlLm51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRl
Lndvcmtlcl9jb25uZWN0aW9uLmpvaW4oNS4wKQotICAgICAgICAgICAgICAgICAgICBpZiB3b3Jr
ZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJ1dvcmtlciAlZCBkaWQgbm90IGV4aXQgaW4gdGltZS4nICUgd29y
a2VyX3N0YXRlLm51bWJlcikKLQorICAgICAgICAgICAgd2l0aCBtYW5hZ2VyX3dvcmtlcl9icm9r
ZXIuZ2V0KHNlbGYsIHdvcmtlcl9mYWN0b3J5LCBudW1fd29ya2Vycywgc2VsZi5fcG9ydC53b3Jr
ZXJfc3RhcnR1cF9kZWxheV9zZWNzKCksIHNlbGYuX3BvcnQuaG9zdCkgYXMgcG9vbDoKKyAgICAg
ICAgICAgICAgICBwb29sLnJ1bigoJ3Rlc3RfbGlzdCcsIHNoYXJkLm5hbWUsIHNoYXJkLnRlc3Rf
aW5wdXRzKSBmb3Igc2hhcmQgaW4gYWxsX3NoYXJkcykKICAgICAgICAgZXhjZXB0IEtleWJvYXJk
SW50ZXJydXB0OgogICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5mbHVzaCgpCiAgICAgICAgICAg
ICBzZWxmLl9wcmludGVyLndyaXRlKCdJbnRlcnJ1cHRlZCwgZXhpdGluZyAuLi4nKQotICAgICAg
ICAgICAgc2VsZi5jYW5jZWxfd29ya2VycygpCiAgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1
cHRlZCA9IFRydWUKICAgICAgICAgZXhjZXB0IFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiwg
ZToKICAgICAgICAgICAgIF9sb2cud2FybmluZyhlLnJlYXNvbikKLSAgICAgICAgICAgIHNlbGYu
Y2FuY2VsX3dvcmtlcnMoKQogICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAg
IGV4Y2VwdCBXb3JrZXJFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJz
KCkKLSAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgVW5l
eHBlY3RlZCBleGNlcHRpb247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgogICAgICAg
ICAgICAgX2xvZy5lcnJvcigiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCi0gICAgICAgICAg
ICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24uY2xlYW51cCgpCiAgICAgICAgICAg
ICBzZWxmLnN0b3Bfc2VydmVyc193aXRoX2xvY2soKQogCi0gICAgICAgIHRocmVhZF90aW1pbmdz
ID0gW3dvcmtlcl9zdGF0ZS5zdGF0cyBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9z
dGF0ZXMudmFsdWVzKCldCi0KICAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjbGFz
cyBpbnN0ZWFkIG9mIGEgdHVwbGU/Ci0gICAgICAgIHJldHVybiAoaW50ZXJydXB0ZWQsIGtleWJv
YXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYu
X2FsbF9yZXN1bHRzKQorICAgICAgICByZXR1cm4gKGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRl
cnJ1cHRlZCwgc2VsZi5fd29ya2VyX3N0YXRzLnZhbHVlcygpLCBzZWxmLl9ncm91cF9zdGF0cywg
c2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9yZXRyeWluZzoKQEAgLTE0NDQsNDAgKzE0MDUsMTcgQEAgY2xh
c3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICByZXN1bHRzX2ZpbGVuYW1lID0gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIikKICAg
ICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfZmlsZW5hbWUp
CiAKKyAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIHNvdXJjZSwgKmFyZ3MpOgorICAgICAgICBt
ZXRob2QgPSBnZXRhdHRyKHNlbGYsICdfaGFuZGxlXycgKyBuYW1lKQorICAgICAgICBpZiBtZXRo
b2Q6CisgICAgICAgICAgICByZXR1cm4gbWV0aG9kKHNvdXJjZSwgKmFyZ3MpCisgICAgICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yKCd1bmtub3duIG1lc3NhZ2UgJXMgcmVjZWl2ZWQgZnJvbSAlcywg
YXJncz0lcycgJSAobmFtZSwgc291cmNlLCByZXByKGFyZ3MpKSkKIAotICAgIGRlZiBpc19kb25l
KHNlbGYpOgotICAgICAgICB3b3JrZXJfc3RhdGVzID0gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1
ZXMoKQotICAgICAgICByZXR1cm4gd29ya2VyX3N0YXRlcyBhbmQgYWxsKHNlbGYuX3dvcmtlcl9p
c19kb25lKHdvcmtlcl9zdGF0ZSkgZm9yIHdvcmtlcl9zdGF0ZSBpbiB3b3JrZXJfc3RhdGVzKQot
Ci0gICAgIyBGSVhNRTogSW5saW5lIHRoaXMgZnVuY3Rpb24uCi0gICAgZGVmIF93b3JrZXJfaXNf
ZG9uZShzZWxmLCB3b3JrZXJfc3RhdGUpOgotICAgICAgICByZXR1cm4gd29ya2VyX3N0YXRlLmRv
bmUKLQotICAgIGRlZiBjYW5jZWxfd29ya2VycyhzZWxmKToKLSAgICAgICAgZm9yIHdvcmtlcl9z
dGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpOgotICAgICAgICAgICAgd29ya2Vy
X3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmNhbmNlbCgpCisgICAgZGVmIF9oYW5kbGVfc3RhcnRl
ZF90ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKToK
KyAgICAgICAgIyBGSVhNRTogbG9nIHRoYXQgd2UndmUgc3RhcnRlZCBhbm90aGVyIHRlc3QuCisg
ICAgICAgIHBhc3MKIAotICAgIGRlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYsIHNvdXJjZSwg
dGVzdF9pbmZvLCBoYW5nX3RpbWVvdXQpOgotICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93
b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLmN1cnJlbnRfdGVzdF9u
YW1lID0gdGVzdF9pbmZvLnRlc3RfbmFtZQotICAgICAgICB3b3JrZXJfc3RhdGUubmV4dF90aW1l
b3V0ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQKLQotICAgIGRlZiBoYW5kbGVfZG9uZShz
ZWxmLCBzb3VyY2UsIGxvZ19tZXNzYWdlcz1Ob25lKToKLSAgICAgICAgd29ya2VyX3N0YXRlID0g
c2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5kb25lID0g
VHJ1ZQotICAgICAgICBzZWxmLl9sb2dfbWVzc2FnZXMobG9nX21lc3NhZ2VzKQotCi0gICAgZGVm
IGhhbmRsZV9leGNlcHRpb24oc2VsZiwgc291cmNlLCBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9u
X3ZhbHVlLCBzdGFjayk6Ci0gICAgICAgIGlmIGV4Y2VwdGlvbl90eXBlIGluIChLZXlib2FyZElu
dGVycnVwdCwgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKToKLSAgICAgICAgICAgIHJhaXNl
IGV4Y2VwdGlvbl90eXBlKGV4Y2VwdGlvbl92YWx1ZSkKLSAgICAgICAgX2xvZy5lcnJvcigiJXMg
cmFpc2VkICVzKCclcycpOiIgJSAoCi0gICAgICAgICAgICAgICAgICAgc291cmNlLAotICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbl92YWx1ZS5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAg
ICAgICAgICAgICAgc3RyKGV4Y2VwdGlvbl92YWx1ZSkpKQotICAgICAgICBzZWxmLl9sb2dfd29y
a2VyX3N0YWNrKHN0YWNrKQotICAgICAgICByYWlzZSBXb3JrZXJFeGNlcHRpb24oc3RyKGV4Y2Vw
dGlvbl92YWx1ZSkpCi0KLSAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdChzZWxmLCBz
b3VyY2UsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgorICAgIGRlZiBfaGFu
ZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdChzZWxmLCB3b3JrZXJfbmFtZSwgbGlzdF9uYW1lLCBudW1f
dGVzdHMsIGVsYXBzZWRfdGltZSk6CiAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzW2xpc3RfbmFt
ZV0gPSAobnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpCiAKICAgICAgICAgZGVmIGZpbmQobmFtZSwg
dGVzdF9saXN0cyk6CkBAIC0xNDkyLDI5ICsxNDMwLDEzIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZW1haW5pbmdfbG9ja2VkX3NoYXJkczoKICAg
ICAgICAgICAgICAgICBzZWxmLnN0b3Bfc2VydmVyc193aXRoX2xvY2soKQogCi0gICAgZGVmIGhh
bmRsZV9maW5pc2hlZF90ZXN0KHNlbGYsIHNvdXJjZSwgcmVzdWx0LCBlbGFwc2VkX3RpbWUsIGxv
Z19tZXNzYWdlcz1Ob25lKToKLSAgICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0
YXRlc1tzb3VyY2VdCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5uZXh0X3RpbWVvdXQgPSBOb25lCi0g
ICAgICAgIHdvcmtlcl9zdGF0ZS5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKLSAgICAgICAgd29y
a2VyX3N0YXRlLnN0YXRzWyd0b3RhbF90aW1lJ10gKz0gZWxhcHNlZF90aW1lCi0gICAgICAgIHdv
cmtlcl9zdGF0ZS5zdGF0c1snbnVtX3Rlc3RzJ10gKz0gMQotCi0gICAgICAgIHNlbGYuX2xvZ19t
ZXNzYWdlcyhsb2dfbWVzc2FnZXMpCisgICAgZGVmIF9oYW5kbGVfZmluaXNoZWRfdGVzdChzZWxm
LCB3b3JrZXJfbmFtZSwgcmVzdWx0LCBlbGFwc2VkX3RpbWUsIGxvZ19tZXNzYWdlcz1bXSk6Cisg
ICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0cy5zZXRkZWZhdWx0KHdvcmtlcl9uYW1lLCB7J25hbWUn
OiB3b3JrZXJfbmFtZSwgJ251bV90ZXN0cyc6IDAsICd0b3RhbF90aW1lJzogMH0pCisgICAgICAg
IHNlbGYuX3dvcmtlcl9zdGF0c1t3b3JrZXJfbmFtZV1bJ3RvdGFsX3RpbWUnXSArPSBlbGFwc2Vk
X3RpbWUKKyAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRzW3dvcmtlcl9uYW1lXVsnbnVtX3Rlc3Rz
J10gKz0gMQogICAgICAgICBzZWxmLl9hbGxfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQogICAgICAg
ICBzZWxmLl91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChzZWxmLl9jdXJyZW50X3Jlc3VsdF9z
dW1tYXJ5LCByZXN1bHQpCiAKLSAgICBkZWYgX2xvZ19tZXNzYWdlcyhzZWxmLCBtZXNzYWdlcyk6
Ci0gICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgotICAgICAgICAgICAgbG9nZ2luZy5y
b290LmhhbmRsZShtZXNzYWdlKQotCi0gICAgZGVmIF9sb2dfd29ya2VyX3N0YWNrKHNlbGYsIHN0
YWNrKToKLSAgICAgICAgd2Via2l0cHlkaXIgPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRf
YmFzZSgnVG9vbHMnLCAnU2NyaXB0cycsICd3ZWJraXRweScpICsgc2VsZi5fZmlsZXN5c3RlbS5z
ZXAKLSAgICAgICAgZm9yIGZpbGVuYW1lLCBsaW5lX251bWJlciwgZnVuY3Rpb25fbmFtZSwgdGV4
dCBpbiBzdGFjazoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lLnN0YXJ0c3dpdGgod2Via2l0cHlk
aXIpOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSh3ZWJraXRw
eWRpciwgJycpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcgICVzOiV1IChpbiAlcyknICUgKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgZnVuY3Rpb25fbmFtZSkpCi0gICAgICAgICAgICBfbG9nLmVy
cm9yKCcgICAgJXMnICUgdGV4dCkKLQogCiBkZWYgcmVhZF90ZXN0X2ZpbGVzKGZzLCBmaWxlbmFt
ZXMsIHRlc3RfcGF0aF9zZXBhcmF0b3IpOgogICAgIHRlc3RzID0gW10KQEAgLTE1NjMsMjAgKzE0
ODUsMyBAQCBkZWYgbmF0dXJhbF9zb3J0X2tleShzdHJpbmdfdG9fc3BsaXQpOgogICAgICAgICAg
ICAgcmV0dXJuIHZhbAogCiAgICAgcmV0dXJuIFt0cnlpbnQoY2h1bmspIGZvciBjaHVuayBpbiBy
ZS5zcGxpdCgnKFxkKyknLCBzdHJpbmdfdG9fc3BsaXQpXQotCi0KLWNsYXNzIF9Xb3JrZXJTdGF0
ZShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgZm9yIHRoZSBtYW5hZ2VyIHRvIHVzZSB0byB0cmFj
ayB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgd29ya2Vycy4iIiIKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbik6Ci0gICAgICAgIHNlbGYud29ya2VyX2Nv
bm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgotICAgICAgICBzZWxmLm51bWJlciA9IG51bWJl
cgotICAgICAgICBzZWxmLmRvbmUgPSBGYWxzZQotICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdF9u
YW1lID0gTm9uZQotICAgICAgICBzZWxmLm5leHRfdGltZW91dCA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuc3RhdHNbJ25hbWUnXSA9IHdvcmtlcl9jb25uZWN0
aW9uLm5hbWUKLSAgICAgICAgc2VsZi5zdGF0c1snbnVtX3Rlc3RzJ10gPSAwCi0gICAgICAgIHNl
bGYuc3RhdHNbJ3RvdGFsX3RpbWUnXSA9IDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuICJfV29ya2VyU3RhdGUoIiArIHN0cihzZWxmLl9fZGljdF9fKSArICIpIgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IDJkYjkz
MDE0Mzk5NTc0YjY5MDdiOWFjOWE3ZDJmZDQ0Yzg2MTAyNDAuLjM3ZTM0ZTdkN2MzNWEwZjhhMDVm
ZDk3MjZiNWRkYTZkYTgwNzU2MDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dv
cmtlcl9icm9rZXIucHkKQEAgLTI2LDQ0ICsyNiw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCi0iIiJNb2R1bGUgZm9yIGhhbmRsaW5nIG1lc3NhZ2VzIGFuZCBjb25jdXJyZW5j
eSBmb3IgcnVuLXdlYmtpdC10ZXN0cy4KLQotVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIG1lc3Nh
Z2UgYnJva2VyIHRoYXQgY29ubmVjdHMgdGhlIG1hbmFnZXIgdG8gdGhlCi13b3JrZXJzOiBpdCBw
cm92aWRlcyBhIG1lc3NhZ2luZyBhYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcyAoYnVpbGRp
bmcgb24KLXRvcCBvZiBtZXNzYWdlX2Jyb2tlciksIGFuZCBoYW5kbGVzIHN0YXJ0aW5nIHdvcmtl
cnMgYnkgbGF1bmNoaW5nIHByb2Nlc3Nlcy4KLQotVGhlcmUgYXJlIGEgbG90IG9mIGNsYXNzZXMg
YW5kIG9iamVjdHMgaW52b2x2ZWQgaW4gYSBmdWxseSBjb25uZWN0ZWQgc3lzdGVtLgotVGhleSBp
bnRlcmFjdCBtb3JlIG9yIGxlc3MgbGlrZToKLQotICBNYW5hZ2VyICAtLT4gIF9JbmxpbmVNYW5h
Z2VyIC0tLT4gX0lubGluZVdvcmtlciA8LT4gV29ya2VyCi0gICAgIF4gICAgICAgICAgICAgICAg
ICAgIFwgICAgICAgICAgICAgICAvICAgICAgICAgICAgICBeCi0gICAgIHwgICAgICAgICAgICAg
ICAgICAgICB2ICAgICAgICAgICAgIHYgICAgICAgICAgICAgICB8Ci0gICAgIFwtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAgQnJva2VyICAgLS0tLS0tLS0tLS0tLS0tLS8KLQotVGhlIGJyb2tlciBz
aW1wbHkgZGlzdHJpYnV0ZXMgbWVzc2FnZXMgb250byB0b3BpY3MgKG5hbWVkIHF1ZXVlcyk7IHRo
ZSBhY3R1YWwKLXF1ZXVlcyB0aGVtc2VsdmVzIGFyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLCBh
cyB0aGUgcXVldWUncyBpbXBsZW1lbnRhdGlvbgotcmVxdWlyZW1lbnRzIHZhcmllcyB2YXJ5IGRl
cGVuZGluZyBvbiB0aGUgZGVzaXJlZCBjb25jdXJyZW5jeSBtb2RlbAotKG5vbmUvdGhyZWFkcy9w
cm9jZXNzZXMpLgotCi1JbiBvcmRlciBmb3Igc2hhcmVkLW5vdGhpbmcgbWVzc2FnaW5nIGJldHdl
ZW4gcHJvY2Vzc2luZyB0byBiZSBwb3NzaWJsZSwKLU1lc3NhZ2VzIG11c3QgYmUgcGlja2xhYmxl
LgotCi1UaGUgbW9kdWxlIGRlZmluZXMgb25lIGludGVyZmFjZSBhbmQgdHdvIGNsYXNzZXMuIENh
bGxlcnMgb2YgdGhpcyBwYWNrYWdlCi1tdXN0IGltcGxlbWVudCB0aGUgQnJva2VyQ2xpZW50IGlu
dGVyZmFjZSwgYW5kIG1vc3QgY2FsbGVycyB3aWxsIGNyZWF0ZQotX0Jyb2tlckNvbm5lY3Rpb25z
IGFzIHdlbGwgYXMgQnJva2Vycy4KLQotVGhlIGNsYXNzZXMgcmVsYXRlIHRvIGVhY2ggb3RoZXIg
YXM6Ci0KLSAgICBCcm9rZXJDbGllbnQgICAtLS0tLS0+ICAgIF9Ccm9rZXJDb25uZWN0aW9uCi0g
ICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgdgotICAgICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBfQnJva2Vy
Ci0KLShUaGUgQnJva2VyQ2xpZW50IG5ldmVyIGNhbGxzIGJyb2tlciBkaXJlY3RseSBhZnRlciBp
dCBpcyBjcmVhdGVkLCBvbmx5Ci1fQnJva2VyQ29ubmVjdGlvbi4gIF9Ccm9rZXJDb25uZWN0aW9u
IHBhc3NlcyBhIHJlZmVyZW5jZSB0byBCcm9rZXJDbGllbnQgdG8KLV9Ccm9rZXIsIGFuZCBfQnJv
a2VyIG9ubHkgaW52b2tlcyB0aGF0IHJlZmVyZW5jZSwgbmV2ZXIgdGFsa2luZyBkaXJlY3RseSB0
bwotQnJva2VyQ29ubmVjdGlvbikuCi0iIiIKKyIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2Fn
ZXMgYW5kIGNvbmN1cnJlbmN5IGZvciBydW4td2Via2l0LXRlc3RzLiIiIgogCiBpbXBvcnQgY1Bp
Y2tsZQogaW1wb3J0IGxvZ2dpbmcKQEAgLTcyLDYgKzM1LDcgQEAgaW1wb3J0IG9wdHBhcnNlCiBp
bXBvcnQgb3MKIGltcG9ydCBRdWV1ZQogaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKIGltcG9ydCB0
cmFjZWJhY2sKIAogCkBAIC05MCw3ICs1NCwxMjQgQEAgTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2Vy
cycKIEFOWV9XT1JLRVJfVE9QSUMgPSAnd29ya2VycycKIAogCi1kZWYgZ2V0KG1heF93b3JrZXJz
LCBjbGllbnQsIHdvcmtlcl9mYWN0b3J5LCBob3N0PU5vbmUpOgorZGVmIGdldChjYWxsZXIsIHdv
cmtlcl9mYWN0b3J5LCBudW1fd29ya2Vycywgd29ya2VyX3N0YXJ0dXBfZGVsYXlfc2Vjcz0wLjAs
IGhvc3Q9Tm9uZSk6CisgICAgIiIiUmV0dXJucyBhbiBvYmplY3QgdGhhdCBleHBvc2VzIGEgcnVu
KCkgbWV0aG9kIHRoYXQgdGFrZXMgYSBsaXN0IG9mIHRlc3Qgc2hhcmRzIGFuZCBydW5zIHRoZW0g
aW4gcGFyYWxsZWwuIiIiCisgICAgcmV0dXJuIF9NZXNzYWdlUG9vbChjYWxsZXIsIHdvcmtlcl9m
YWN0b3J5LCBudW1fd29ya2Vycywgd29ya2VyX3N0YXJ0dXBfZGVsYXlfc2VjcywgaG9zdCkKKwor
CitjbGFzcyBfTWVzc2FnZVBvb2wob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2Fs
bGVyLCB3b3JrZXJfZmFjdG9yeSwgbnVtX3dvcmtlcnMsIHdvcmtlcl9zdGFydHVwX2RlbGF5X3Nl
Y3M9MC4wLCBob3N0PU5vbmUpOgorICAgICAgICBzZWxmLl9jYWxsZXIgPSBjYWxsZXIKKyAgICAg
ICAgc2VsZi53b3JrZXJfZmFjdG9yeSA9IHdvcmtlcl9mYWN0b3J5CisgICAgICAgIHNlbGYubnVt
X3dvcmtlcnMgPSBudW1fd29ya2VycworICAgICAgICBzZWxmLndvcmtlcl9zdGFydHVwX2RlbGF5
X3NlY3MgPSB3b3JrZXJfc3RhcnR1cF9kZWxheV9zZWNzCisgICAgICAgIHNlbGYuX3dvcmtlcl9z
dGF0ZXMgPSB7fQorICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYubmFtZSA9
ICdtYW5hZ2VyJworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJh
Y2spOgorICAgICAgICBzZWxmLl9jbG9zZSgpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ZGVmIHJ1bihzZWxmLCBzaGFyZHMpOgorICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBfZ2V0
X2Jyb2tlcihzZWxmLm51bV93b3JrZXJzLCBzZWxmLCBzZWxmLndvcmtlcl9mYWN0b3J5LCBzZWxm
Lmhvc3QpCisgICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShzZWxmLm51bV93b3Jr
ZXJzKToKKyAgICAgICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0gbWFuYWdlcl9jb25uZWN0aW9u
LnN0YXJ0X3dvcmtlcih3b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgd29ya2VyX3N0YXRlID0g
X1dvcmtlclN0YXRlKHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQorICAgICAgICAg
ICAgc2VsZi5fd29ya2VyX3N0YXRlc1t3b3JrZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtlcl9z
dGF0ZQorICAgICAgICAgICAgdGltZS5zbGVlcChzZWxmLndvcmtlcl9zdGFydHVwX2RlbGF5X3Nl
Y3MpCisKKyAgICAgICAgbWVzc2FnZXMgPSBsaXN0KHNoYXJkcykKKyAgICAgICAgZm9yIG1lc3Nh
Z2UgaW4gbWVzc2FnZXM6CisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNz
YWdlKCptZXNzYWdlKQorCisgICAgICAgIGZvciBfIGluIHhyYW5nZShzZWxmLm51bV93b3JrZXJz
KToKKyAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3N0b3AnKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYud2FpdChtYW5hZ2VyX2Nvbm5lY3Rpb24p
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYu
X3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRlLndv
cmtlcl9jb25uZWN0aW9uLmNhbmNlbCgpCisKKyAgICBkZWYgd2FpdChzZWxmLCBtYW5hZ2VyX2Nv
bm5lY3Rpb24pOgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19kb25lKCk6CisgICAgICAgICAg
ICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKwor
ICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgb2YgdGhlIHdvcmtlcnMgaGF2ZSBzaHV0IGRvd24gKGlm
IHBvc3NpYmxlKS4KKyAgICAgICAgZm9yIHdvcmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJfc3Rh
dGVzLnZhbHVlcygpOgorICAgICAgICAgICAgaWYgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0
aW9uLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnV2FpdGluZyBmb3Ig
d29ya2VyICVkIHRvIGV4aXQnICUgd29ya2VyX3N0YXRlLm51bWJlcikKKyAgICAgICAgICAgICAg
ICB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uam9pbig1LjApCisgICAgICAgICAgICAg
ICAgaWYgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmlzX2FsaXZlKCk6CisgICAgICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1dvcmtlciAlZCBkaWQgbm90IGV4aXQgaW4gdGltZS4n
ICUgd29ya2VyX3N0YXRlLm51bWJlcikKKworICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAg
ICB3b3JrZXJfc3RhdGVzID0gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKQorICAgICAgICBy
ZXR1cm4gd29ya2VyX3N0YXRlcyBhbmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcl9z
dGF0ZSkgZm9yIHdvcmtlcl9zdGF0ZSBpbiB3b3JrZXJfc3RhdGVzKQorCisgICAgIyBGSVhNRTog
SW5saW5lIHRoaXMgZnVuY3Rpb24uCisgICAgZGVmIF93b3JrZXJfaXNfZG9uZShzZWxmLCB3b3Jr
ZXJfc3RhdGUpOgorICAgICAgICByZXR1cm4gd29ya2VyX3N0YXRlLmRvbmUKKworICAgIGRlZiBf
Y2xvc2Uoc2VsZik6CisgICAgICAgIGZvciB3b3JrZXIgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52
YWx1ZXMoKToKKyAgICAgICAgICAgIHdvcmtlci53b3JrZXJfY29ubmVjdGlvbi5jYW5jZWwoKQor
ICAgICAgICBmb3Igd29ya2VyIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6CisgICAg
ICAgICAgICBpZiB3b3JrZXIud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKKyAgICAgICAg
ICAgICAgICB3b3JrZXIud29ya2VyX2Nvbm5lY3Rpb24uam9pbig1LjApCisKKyAgICBkZWYgaGFu
ZGxlX2RvbmUoc2VsZiwgc291cmNlLCBsb2dfbWVzc2FnZXM9Tm9uZSk6CisgICAgICAgIHdvcmtl
cl9zdGF0ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNlXQorICAgICAgICB3b3JrZXJfc3Rh
dGUuZG9uZSA9IFRydWUKKyAgICAgICAgc2VsZi5fbG9nX21lc3NhZ2VzKGxvZ19tZXNzYWdlcykK
KworICAgIGRlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYsICphcmdzKToKKyAgICAgICAgc2Vs
Zi5fY2FsbGVyLmhhbmRsZSgnc3RhcnRlZF90ZXN0JywgKmFyZ3MpCisKKyAgICBkZWYgaGFuZGxl
X2ZpbmlzaGVkX3Rlc3Qoc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLl9jYWxsZXIuaGFuZGxl
KCdmaW5pc2hlZF90ZXN0JywgKmFyZ3MpCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX3Rlc3Rf
bGlzdChzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuX2NhbGxlci5oYW5kbGUoJ2ZpbmlzaGVk
X3Rlc3RfbGlzdCcsICphcmdzKQorCisgICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2VsZiwgKmFy
Z3MpOgorICAgICAgICBzZWxmLl9oYW5kbGVfd29ya2VyX2V4Y2VwdGlvbigqYXJncykKKworICAg
IGRlZiBfbG9nX21lc3NhZ2VzKHNlbGYsIG1lc3NhZ2VzKToKKyAgICAgICAgZm9yIG1lc3NhZ2Ug
aW4gbWVzc2FnZXM6CisgICAgICAgICAgICBsb2dnaW5nLnJvb3QuaGFuZGxlKG1lc3NhZ2UpCisK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9oYW5kbGVfd29ya2VyX2V4Y2VwdGlvbihzb3Vy
Y2UsIGV4Y2VwdGlvbl90eXBlLCBleGNlcHRpb25fdmFsdWUsIHN0YWNrKToKKyAgICAgICAgaWYg
ZXhjZXB0aW9uX3R5cGUgPT0gS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICByYWlzZSBl
eGNlcHRpb25fdHlwZShleGNlcHRpb25fdmFsdWUpCisgICAgICAgIF9sb2cuZXJyb3IoIiVzIHJh
aXNlZCAlcygnJXMnKToiICUgKAorICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgZXhjZXB0aW9u
X3ZhbHVlLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKGV4Y2VwdGlvbl92YWx1ZSkpKQorICAgICAg
ICByYWlzZSBXb3JrZXJFeGNlcHRpb24oc3RyKGV4Y2VwdGlvbl92YWx1ZSkpCisKKworY2xhc3Mg
X1dvcmtlclN0YXRlKG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgdGhlIG1hbmFnZXIgdG8g
dXNlIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB3b3JrZXJzLiIiIgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKToKKyAgICAgICAgc2Vs
Zi53b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCisgICAgICAgIHNlbGYubnVt
YmVyID0gbnVtYmVyCisgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYuY3Vy
cmVudF90ZXN0X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF90aW1lb3V0ID0gTm9uZQor
ICAgICAgICBzZWxmLnN0YXRzID0ge30KKyAgICAgICAgc2VsZi5zdGF0c1snbmFtZSddID0gd29y
a2VyX2Nvbm5lY3Rpb24ubmFtZQorICAgICAgICBzZWxmLnN0YXRzWydudW1fdGVzdHMnXSA9IDAK
KyAgICAgICAgc2VsZi5zdGF0c1sndG90YWxfdGltZSddID0gMAorCisgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gIl9Xb3JrZXJTdGF0ZSgiICsgc3RyKHNlbGYuX19kaWN0
X18pICsgIikiCisKKworZGVmIF9nZXRfYnJva2VyKG1heF93b3JrZXJzLCBjbGllbnQsIHdvcmtl
cl9mYWN0b3J5LCBob3N0PU5vbmUpOgogICAgICIiIlJldHVybiBhIGNvbm5lY3Rpb24gdG8gYSBt
YW5hZ2VyL3dvcmtlciBtZXNzYWdlX2Jyb2tlcgogCiAgICAgQXJnczoKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29y
a2VyX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQppbmRleCA0
MTFmNDQ5NDUxNzNlZjYzNDk1MjFiOTgwNzQxYmNkMzY2MjAzZDM4Li5mODJmZDU1OTc5OTA2YTQ4
MTkyMDM5MWYzMjI2M2RkNzIwZTJmMjE2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC01MSw3ICs1MSw3IEBAIGRl
ZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCBtYXhfd29ya2Vycywgc3RhcnRfcXVldWU9Tm9uZSwgc3Rv
cF9xdWV1ZT1Ob25lKToKICAgICBnbG9iYWwgc3RvcHBpbmdfcXVldWUKICAgICBzdGFydGluZ19x
dWV1ZSA9IHN0YXJ0X3F1ZXVlCiAgICAgc3RvcHBpbmdfcXVldWUgPSBzdG9wX3F1ZXVlCi0gICAg
cmV0dXJuIG1hbmFnZXJfd29ya2VyX2Jyb2tlci5nZXQobWF4X3dvcmtlcnMsIG1hbmFnZXIsIF9U
ZXN0V29ya2VyKQorICAgIHJldHVybiBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX2dldF9icm9rZXIo
bWF4X3dvcmtlcnMsIG1hbmFnZXIsIF9UZXN0V29ya2VyKQogCiAKIGNsYXNzIF9UZXN0V29ya2Vy
KG9iamVjdCk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150705</attachid>
            <date>2012-07-03 18:35:18 -0700</date>
            <delta_ts>2012-07-11 17:35:40 -0700</delta_ts>
            <desc>remove unused self.name assignment in manager.__init__()</desc>
            <filename>bug-90511-20120703183517.patch</filename>
            <type>text/plain</type>
            <size>37759</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGU4MGQzMGY3MWYyMTViYTljMjJjZmUzNTZhZWQ0YjI2
YWU4MjRlZi4uMzU4MTlhZTE3MWQ4ZDhhNmIwNzZmYzNiYTZkM2M1OWVkNjY3NDRhMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEy
MiBAQAogMjAxMi0wNy0wMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBucnd0OiBhZGQgYSBNZXNzYWdlUG9vbCBhYnN0cmFjdGlvbiB0aGF0IHRoZSBtYW5h
Z2VyIHdpbGwgY2FsbCB0byByZXBsYWNlIHRoZSBicm9rZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyB0aGUgbmV3
IE1lc3NhZ2VQb29sIGFic3RyYWN0aW9uIHRoYXQgd2lsbAorICAgICAgICByZXBsYWNlIHRoZSBj
bGFzc2VzIGluIG1hbmFnZXJfd29ya2VyX2Jyb2tlci4gSXQgaXMgYSBtaW5pbWFsCisgICAgICAg
IGludGVyZmFjZSB0aGF0IHRyaWVzIHRvIGZvbGxvdyB0aGUgY29udmVudGlvbnMgaW4KKyAgICAg
ICAgbXVsdGlwcm9jZXNzaW5nLlBvb2wgYW5kIGNvbmN1cnJlbmN5LmZ1dHVyZXMgLi4uIGl0IHBy
b3ZpZGVzIGEKKyAgICAgICAgY29udGV4dCBtYW5hZ2VyIGFuZCBhIHJ1bigpIG1ldGhvZCB0aGF0
IHNlbmRzIE4gbWVzc2FnZXMgdG8gTQorICAgICAgICB3b3JrZXJzIHByb2Nlc3NlcyAoc3RhcnRp
bmcgd29ya2VycyBhcyBuZWNlc3NhcnkpIGFuZCB3YWl0cyBmb3IKKyAgICAgICAgdGhlbSBhbGwg
dG8gY29tcGxldGUsIGhhbmRsaW5nIGNsZWFudXAgYXMgbmVjZXNzYXJ5LiBUaGUgY2FsbGVyCisg
ICAgICAgIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgYSBoYW5kbGUoKSBtZXRob2QgdG8g
aGFuZGxlCisgICAgICAgIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhlIHdvcmtlcnMuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGludGVyZmFjZSBiYXNpY2FsbHkgaGlkZXMgYWxsIG9mIHRoZSBt
dWx0aXByb2Nlc3NpbmcgbG9naWMgZnJvbQorICAgICAgICB0aGUgbWFuYWdlciBjbGFzcy4KKwor
ICAgICAgICBUaGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBNZXNzYWdlUG9vbCBpcyBhIHNp
bXBsZSBzaGltCisgICAgICAgIGFyb3VuZCB0aGUgZXhpc3RpbmcgYnJva2VyIGNsYXNzZXM7IGEg
c3Vic2VxdWVudCBjaGFuZ2Ugd2lsbAorICAgICAgICByZXBsYWNlIGFsbCB0aGUgb3RoZXIgY2xh
c3NlcyB3aXRoIGEgbXVjaCBzaW1wbGVyCisgICAgICAgIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgIE5vIGFkZGl0aW9uYWwgdGVzdHMgYXJlIHByb3ZpZGVkIGZvciBub3c7IGV4aXN0aW5nIHRl
c3RzIHNob3VsZAorICAgICAgICBwcm92aWRlIGFkZXF1YXRlIGNvdmVyYWdlLCBhbmQgSSB3aWxs
IGFkZCBuZXcgdW5pdCB0ZXN0cyBmb3IgdGhlCisgICAgICAgIE1lc3NhZ2VQb29sIGNsYXNzIHdo
ZW4gSSByZXBsYWNlIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAg
ICAgIChUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24uX19yZWR1Y2VfXyk6CisgICAgICAgIChN
YW5hZ2VyLl9faW5pdF9fKToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAg
IChNYW5hZ2VyLl9ydW5fdGVzdHMuaW5zdGVhZCk6CisgICAgICAgIChNYW5hZ2VyLmhhbmRsZSk6
CisgICAgICAgIChNYW5hZ2VyLl9oYW5kbGVfc3RhcnRlZF90ZXN0KToKKyAgICAgICAgKE1hbmFn
ZXIuX2hhbmRsZV9maW5pc2hlZF90ZXN0X2xpc3QpOgorICAgICAgICAoTWFuYWdlci5faGFuZGxl
X2ZpbmlzaGVkX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgKGdldCk6Cisg
ICAgICAgIChfTWVzc2FnZVBvb2wpOgorICAgICAgICAoX01lc3NhZ2VQb29sLl9faW5pdF9fKToK
KyAgICAgICAgKF9NZXNzYWdlUG9vbC5fX2VudGVyX18pOgorICAgICAgICAoX01lc3NhZ2VQb29s
Ll9fZXhpdF9fKToKKyAgICAgICAgKF9NZXNzYWdlUG9vbC5ydW4pOgorICAgICAgICAoX01lc3Nh
Z2VQb29sLndhaXQpOgorICAgICAgICAoX01lc3NhZ2VQb29sLmlzX2RvbmUpOgorICAgICAgICAo
X01lc3NhZ2VQb29sLl93b3JrZXJfaXNfZG9uZSk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuX2Ns
b3NlKToKKyAgICAgICAgKF9NZXNzYWdlUG9vbC5oYW5kbGVfZG9uZSk6CisgICAgICAgIChfTWVz
c2FnZVBvb2wuaGFuZGxlX3N0YXJ0ZWRfdGVzdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaGFu
ZGxlX2ZpbmlzaGVkX3Rlc3QpOgorICAgICAgICAoX01lc3NhZ2VQb29sLmhhbmRsZV9maW5pc2hl
ZF90ZXN0X2xpc3QpOgorICAgICAgICAoX01lc3NhZ2VQb29sLmhhbmRsZV9leGNlcHRpb24pOgor
ICAgICAgICAoX01lc3NhZ2VQb29sLl9sb2dfbWVzc2FnZXMpOgorICAgICAgICAoX01lc3NhZ2VQ
b29sLl9oYW5kbGVfd29ya2VyX2V4Y2VwdGlvbik6CisgICAgICAgIChfV29ya2VyU3RhdGUpOgor
ICAgICAgICAoX1dvcmtlclN0YXRlLmZvcik6CisgICAgICAgIChfV29ya2VyU3RhdGUuX19pbml0
X18pOgorICAgICAgICAoX1dvcmtlclN0YXRlLl9fcmVwcl9fKToKKyAgICAgICAgKF9nZXRfYnJv
a2VyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChtYWtlX2Jyb2tl
cik6CisKKzIwMTItMDctMDMgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgbnJ3dDogY2xlYW4gdXAgbmFtZXMgaW4gd29ya2VyLnB5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDUxMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGxhc3QgcGF0Y2gg
aW4gdGhlIHNlcmllcyBvZiByZWZhY3RvcmluZyB3b3JrZXIucHk7CisgICAgICAgIGFsbCB0aGlz
IGRvZXMgaXMgY2hhbmdlIHNvbWUgbmFtZXMgb2YgbWV0aG9kcywgaW5zdGFuY2UKKyAgICAgICAg
dmFyaWFibGVzLCBhbmQgbWV0aG9kIHBhcmFtZXRlcnMgdG8gYmUgY2xlYXJlciAoaXQgYWxzbyBj
aGFuZ2VzCisgICAgICAgIHNvbWUgY29kZSBpbiBtYW5hZ2VyLnB5IGFuZCBtYW5hZ2VyX3dvcmtl
ci5weSB0byBiZSBjb25zaXN0ZW50KS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gZnVuY3Rpb25h
bCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYW5kIHRoZSBleGlzdGluZworICAgICAgICB0ZXN0cyBz
aG91bGQgY292ZXIgZXZlcnl0aGluZy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9faW5p
dF9fKToKKyAgICAgICAgKE1hbmFnZXIucHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KToK
KyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cy53b3JrZXJfZmFjdG9yeSk6CisgICAgICAgIChN
YW5hZ2VyLl9ydW5fdGVzdHMpOgorICAgICAgICAoTWFuYWdlci5fc2hvd19yZXN1bHRzX2h0bWxf
ZmlsZSk6CisgICAgICAgIChNYW5hZ2VyLmhhbmRsZV9maW5pc2hlZF90ZXN0X2xpc3QpOgorICAg
ICAgICAoX1dvcmtlclN0YXRlLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHk6CisgICAg
ICAgIChfQnJva2VyLnBvc3RfbWVzc2FnZSk6CisgICAgICAgIChfQnJva2VyLl9kaXNwYXRjaF9t
ZXNzYWdlKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9fKToKKyAgICAgICAgKEFi
c3RyYWN0V29ya2VyLnJ1bik6CisgICAgICAgIChBYnN0cmFjdFdvcmtlci55aWVsZF90b19jYWxs
ZXIpOgorICAgICAgICAoQWJzdHJhY3RXb3JrZXIucG9zdCk6CisgICAgICAgIChfV29ya2VyQ29u
bmVjdGlvbi5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAoX1Rlc3RXb3JrZXIuX19pbml0X18pOgorICAgICAgICAoX1Rlc3RXb3JrZXIuc3RhcnQpOgor
ICAgICAgICAoX1Rlc3RXb3JrZXIuaGFuZGxlKToKKyAgICAgICAgKF9UZXN0V29ya2VyLnN0b3Ap
OgorICAgICAgICAoX1Rlc3RzTWl4aW4pOgorICAgICAgICAoX1Rlc3RzTWl4aW4udGVzdF9uYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93
b3JrZXIucHk6CisgICAgICAgIChXb3JrZXIuX19pbml0X18pOgorICAgICAgICAoV29ya2VyLl9f
ZGVsX18pOgorICAgICAgICAoV29ya2VyLnN0YXJ0KToKKyAgICAgICAgKFdvcmtlci5oYW5kbGUp
OgorICAgICAgICAoV29ya2VyLl9ydW5fdGVzdCk6CisgICAgICAgIChXb3JrZXIuc3RvcCk6Cisg
ICAgICAgIChXb3JrZXIuX3RpbWVvdXQpOgorICAgICAgICAoV29ya2VyLl9raWxsX2RyaXZlcik6
CisgICAgICAgIChXb3JrZXIuX3J1bl90ZXN0X3dpdGhfdGltZW91dCk6CisgICAgICAgIChXb3Jr
ZXIuX2NsZWFuX3VwX2FmdGVyX3Rlc3QpOgorICAgICAgICAoV29ya2VyLl9ydW5fdGVzdF9pbl9h
bm90aGVyX3RocmVhZC5TaW5nbGVUZXN0VGhyZWFkLnJ1bik6CisgICAgICAgIChXb3JrZXIuX3J1
bl90ZXN0X2luX3RoaXNfdGhyZWFkKToKKyAgICAgICAgKFdvcmtlci5fcnVuX3NpbmdsZV90ZXN0
KToKKworMjAxMi0wNy0wMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBucnd0OiBjbGVhbiB1cCBleGNlcHRpb24gaGFuZGxpbmcgYW5kIG1ha2Ugc3VyZSB3
ZSBsb2cgc29tZSBtb3JlIGZhaWx1cmVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MDUwMwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQppbmRleCBmMmZlZDNm
NGE2MTNjYTEwY2NhMzhjZDdiZTkxODczMDBmYzdlNmNjLi5kZTcyYjU4ZTc4NjdkNDEwMGZhMzQy
NjdjYWZlYzBmNzhjNWY2ZmY1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKQEAgLTI2Niw2ICsyNjYs
NyBAQCBjbGFzcyBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5yZWFzb24sKQogCiAKKyMgRXhwb3J0IHRo
aXMgc28gY2FsbGVycyBkb24ndCBuZWVkIHRvIGtub3cgYWJvdXQgbWFuYWdlcl93b3JrZXJfYnJv
a2VyLgogV29ya2VyRXhjZXB0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLldvcmtlckV4Y2Vw
dGlvbgogCiAKQEAgLTMwMCw3ICszMDEsNiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxm
Ll9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgotICAg
ICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gTm9uZQogCiAgICAgICAgIHNlbGYuSFRUUF9TVUJESVIgPSAnaHR0cCcgKyBwb3J0LlRF
U1RfUEFUSF9TRVBBUkFUT1IKQEAgLTMyOCwxMSArMzI4LDkgQEAgY2xhc3MgTWFuYWdlcihvYmpl
Y3QpOgogCiAgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzID0gW10KICAgICAgICAgc2VsZi5fZ3Jv
dXBfc3RhdHMgPSB7fQorICAgICAgICBzZWxmLl93b3JrZXJfc3RhdHMgPSB7fQogICAgICAgICBz
ZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5ID0gTm9uZQogCi0gICAgICAgICMgVGhpcyBtYXBz
IHdvcmtlciBuYW1lcyB0byB0aGUgc3RhdGUgd2UgYXJlIHRyYWNraW5nIGZvciBlYWNoIG9mIHRo
ZW0uCi0gICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXMgPSB7fQotCiAgICAgZGVmIGNvbGxlY3Rf
dGVzdHMoc2VsZiwgYXJncyk6CiAgICAgICAgICIiIkZpbmQgYWxsIHRoZSBmaWxlcyB0byB0ZXN0
LgogCkBAIC00OTYsNyArNDk0LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBl
bGlmIGxlbihzZWxmLl90ZXN0X2ZpbGVzKSA+IDE6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X2V4cGVjdGVkKCJSdW5uaW5nIGFsbCAlZCB0ZXN0cy4iICUgbGVuKHNlbGYuX3Rlc3Rf
ZmlsZXMpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9l
eHBlY3RlZCgiUnVubmluZyAlMSB0ZXN0LiIpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X2V4cGVjdGVkKCJSdW5uaW5nIDEgdGVzdC4iKQogCiAgICAgICAgICMgQ3JlYXRlIGEgc29y
dGVkIGxpc3Qgb2YgdGVzdCBmaWxlcyBzbyB0aGUgc3Vic2V0IGNodW5rLAogICAgICAgICAjIGlm
IHVzZWQsIGNvbnRhaW5zIGFscGhhYmV0aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgpAQCAtNzQ0
LDExICs3NDIsMTAgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9jdXJy
ZW50X3Jlc3VsdF9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKICAgICAgICAgc2VsZi5fYWxsX3Jl
c3VsdHMgPSBbXQogICAgICAgICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYu
X3dvcmtlcl9zdGF0ZXMgPSB7fQorICAgICAgICBzZWxmLl93b3JrZXJfc3RhdHMgPSB7fQogCiAg
ICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gRmFsc2UKICAgICAgICAgaW50ZXJydXB0ZWQg
PSBGYWxzZQotICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCiAKICAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCiAgICAgICAgIGxvY2tlZF9z
aGFyZHMsIHVubG9ja2VkX3NoYXJkcyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwgaW50
KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0aW9ucy5mdWxseV9wYXJh
bGxlbCkKQEAgLTc2OSw3MSArNzY2LDM0IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgbnVtX3dvcmtlcnMgPSBtaW4obnVtX3dvcmtlcnMsIGxlbihhbGxfc2hhcmRzKSkKICAgICAg
ICAgc2VsZi5fbG9nX251bV93b3JrZXJzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJkcyksIGxl
bihsb2NrZWRfc2hhcmRzKSkKIAotICAgICAgICBkZWYgd29ya2VyX2ZhY3Rvcnkod29ya2VyX2Nv
bm5lY3Rpb24sIHdvcmtlcl9udW1iZXIpOgotICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5Xb3Jr
ZXIod29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIHNlbGYucmVzdWx0c19kaXJlY3Rv
cnkoKSwgc2VsZi5fb3B0aW9ucykKKyAgICAgICAgZGVmIHdvcmtlcl9mYWN0b3J5KHdvcmtlcl9j
b25uZWN0aW9uKToKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuV29ya2VyKHdvcmtlcl9jb25u
ZWN0aW9uLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksIHNlbGYuX29wdGlvbnMpCiAKICAgICAg
ICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChudW1fd29y
a2Vycywgc2VsZiwgd29ya2VyX2ZhY3RvcnksIHNlbGYuX3BvcnQuaG9zdCkKIAogICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICByZXR1cm4gKGtleWJvYXJkX2lu
dGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHNlbGYuX2dyb3VwX3N0YXRz
LCBzZWxmLl9hbGxfcmVzdWx0cykKKyAgICAgICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50ZXJy
dXB0ZWQsIGludGVycnVwdGVkLCBzZWxmLl93b3JrZXJfc3RhdHMudmFsdWVzKCksIHNlbGYuX2dy
b3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKIAogICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXIn
LCBudW1fd29ya2VycykpCi0gICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1f
d29ya2Vycyk6Ci0gICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVj
dGlvbi5zdGFydF93b3JrZXIod29ya2VyX251bWJlcikKLSAgICAgICAgICAgIHdvcmtlcl9zdGF0
ZSA9IF9Xb3JrZXJTdGF0ZSh3b3JrZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKLSAgICAg
ICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24ubmFtZSgpXSA9IHdv
cmtlcl9zdGF0ZQotCi0gICAgICAgICAgICB0aW1lLnNsZWVwKHNlbGYuX3BvcnQud29ya2VyX3N0
YXJ0dXBfZGVsYXlfc2VjcygpKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRl
KCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCi0gICAgICAgIGZvciBzaGFyZCBpbiBhbGxfc2hhcmRz
OgotICAgICAgICAgICAgIyBGSVhNRTogQ2hhbmdlICd0ZXN0X2xpc3QnIHRvICdzaGFyZCcsIG1h
a2Ugc2hhcmRpbmcgcHVibGljLgotICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3Rf
bWVzc2FnZSgndGVzdF9saXN0Jywgc2hhcmQubmFtZSwgc2hhcmQudGVzdF9pbnB1dHMpCi0KLSAg
ICAgICAgIyBXZSBwb3N0IG9uZSAnc3RvcCcgbWVzc2FnZSBmb3IgZWFjaCB3b3JrZXIuIEJlY2F1
c2UgdGhlIHN0b3AgbWVzc2FnZQotICAgICAgICAjIGFyZSBzZW50IGFmdGVyIGFsbCBvZiB0aGUg
dGVzdHMsIGFuZCBiZWNhdXNlIGVhY2ggd29ya2VyIHdpbGwgc3RvcAotICAgICAgICAjIHJlYWRp
bmcgbWVzc3NhZ2VzIGFmdGVyIHJlY2VpdmluZyBhIHN0b3AsIHdlIGNhbiBiZSBzdXJlIGVhY2gK
LSAgICAgICAgIyB3b3JrZXIgd2lsbCBnZXQgYSBzdG9wIG1lc3NhZ2UgYW5kIGhlbmNlIHRoZXkg
d2lsbCBhbGwgc2h1dCBkb3duLgotICAgICAgICBmb3IgXyBpbiB4cmFuZ2UobnVtX3dvcmtlcnMp
OgotICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnc3RvcCcpCiAK
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfZG9uZSgpOgotICAg
ICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3Nl
Y3M9MS4wKQotCi0gICAgICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgb2YgdGhlIHdvcmtlcnMgaGF2
ZSBzaHV0IGRvd24gKGlmIHBvc3NpYmxlKS4KLSAgICAgICAgICAgIGZvciB3b3JrZXJfc3RhdGUg
aW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBpZiB3b3Jr
ZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygnV2FpdGluZyBmb3Igd29ya2VyICVkIHRvIGV4aXQnICUgd29ya2VyX3N0
YXRlLm51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRlLndvcmtlcl9jb25u
ZWN0aW9uLmpvaW4oNS4wKQotICAgICAgICAgICAgICAgICAgICBpZiB3b3JrZXJfc3RhdGUud29y
a2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJ1dvcmtlciAlZCBkaWQgbm90IGV4aXQgaW4gdGltZS4nICUgd29ya2VyX3N0YXRlLm51
bWJlcikKLQorICAgICAgICAgICAgd2l0aCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0KHNlbGYs
IHdvcmtlcl9mYWN0b3J5LCBudW1fd29ya2Vycywgc2VsZi5fcG9ydC53b3JrZXJfc3RhcnR1cF9k
ZWxheV9zZWNzKCksIHNlbGYuX3BvcnQuaG9zdCkgYXMgcG9vbDoKKyAgICAgICAgICAgICAgICBw
b29sLnJ1bigoJ3Rlc3RfbGlzdCcsIHNoYXJkLm5hbWUsIHNoYXJkLnRlc3RfaW5wdXRzKSBmb3Ig
c2hhcmQgaW4gYWxsX3NoYXJkcykKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0Ogog
ICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5mbHVzaCgpCiAgICAgICAgICAgICBzZWxmLl9wcmlu
dGVyLndyaXRlKCdJbnRlcnJ1cHRlZCwgZXhpdGluZyAuLi4nKQotICAgICAgICAgICAgc2VsZi5j
YW5jZWxfd29ya2VycygpCiAgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUK
ICAgICAgICAgZXhjZXB0IFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiwgZToKICAgICAgICAg
ICAgIF9sb2cud2FybmluZyhlLnJlYXNvbikKLSAgICAgICAgICAgIHNlbGYuY2FuY2VsX3dvcmtl
cnMoKQogICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgIGV4Y2VwdCBXb3Jr
ZXJFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKLSAgICAgICAg
ICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNl
cHRpb247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgogICAgICAgICAgICAgX2xvZy5l
cnJvcigiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICBzZWxmLmNhbmNl
bF93b3JrZXJzKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24uY2xlYW51cCgpCiAgICAgICAgICAgICBzZWxmLnN0b3Bf
c2VydmVyc193aXRoX2xvY2soKQogCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW3dvcmtlcl9z
dGF0ZS5zdGF0cyBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVz
KCldCi0KICAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjbGFzcyBpbnN0ZWFkIG9m
IGEgdHVwbGU/Ci0gICAgICAgIHJldHVybiAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVw
dGVkLCB0aHJlYWRfdGltaW5ncywgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRz
KQorICAgICAgICByZXR1cm4gKGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgc2Vs
Zi5fd29ya2VyX3N0YXRzLnZhbHVlcygpLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jl
c3VsdHMpCiAKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIGlmIG5v
dCBzZWxmLl9yZXRyeWluZzoKQEAgLTE0NDIsNDIgKzE0MDIsMTcgQEAgY2xhc3MgTWFuYWdlcihv
YmplY3QpOgogICAgICAgICByZXN1bHRzX2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIikKICAgICAgICAgc2VsZi5f
cG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfZmlsZW5hbWUpCiAKLSAgICBkZWYg
bmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICdNYW5hZ2VyJwotCi0gICAgZGVmIGlzX2RvbmUo
c2VsZik6Ci0gICAgICAgIHdvcmtlcl9zdGF0ZXMgPSBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVl
cygpCi0gICAgICAgIHJldHVybiB3b3JrZXJfc3RhdGVzIGFuZCBhbGwoc2VsZi5fd29ya2VyX2lz
X2RvbmUod29ya2VyX3N0YXRlKSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9zdGF0ZXMpCi0K
LSAgICAjIEZJWE1FOiBJbmxpbmUgdGhpcyBmdW5jdGlvbi4KLSAgICBkZWYgX3dvcmtlcl9pc19k
b25lKHNlbGYsIHdvcmtlcl9zdGF0ZSk6Ci0gICAgICAgIHJldHVybiB3b3JrZXJfc3RhdGUuZG9u
ZQotCi0gICAgZGVmIGNhbmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICBmb3Igd29ya2VyX3N0
YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICB3b3JrZXJf
c3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uY2FuY2VsKCkKLQotICAgIGRlZiBoYW5kbGVfc3RhcnRl
ZF90ZXN0KHNlbGYsIHNvdXJjZSwgdGVzdF9pbmZvLCBoYW5nX3RpbWVvdXQpOgotICAgICAgICB3
b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2Vy
X3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lID0gdGVzdF9pbmZvLnRlc3RfbmFtZQotICAgICAgICB3
b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQKLQot
ICAgIGRlZiBoYW5kbGVfZG9uZShzZWxmLCBzb3VyY2UsIGxvZ19tZXNzYWdlcz1Ob25lKToKLSAg
ICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCi0gICAgICAg
IHdvcmtlcl9zdGF0ZS5kb25lID0gVHJ1ZQotICAgICAgICBzZWxmLl9sb2dfbWVzc2FnZXMobG9n
X21lc3NhZ2VzKQotCi0gICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2VsZiwgc291cmNlLCBleGNl
cHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBzdGFjayk6Ci0gICAgICAgIGlmIGV4Y2VwdGlv
bl90eXBlIGluIChLZXlib2FyZEludGVycnVwdCwgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9u
KToKLSAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbl90eXBlKGV4Y2VwdGlvbl92YWx1ZSkKLSAg
ICAgICAgX2xvZy5lcnJvcigiJXMgcmFpc2VkICVzKCclcycpOiIgJSAoCi0gICAgICAgICAgICAg
ICAgICAgc291cmNlLAotICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl92YWx1ZS5fX2NsYXNz
X18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgc3RyKGV4Y2VwdGlvbl92YWx1ZSkpKQot
ICAgICAgICBzZWxmLl9sb2dfd29ya2VyX3N0YWNrKHN0YWNrKQotICAgICAgICByYWlzZSBXb3Jr
ZXJFeGNlcHRpb24oc3RyKGV4Y2VwdGlvbl92YWx1ZSkpCi0KLSAgICBkZWYgaGFuZGxlX2Zpbmlz
aGVkX2xpc3Qoc2VsZiwgc291cmNlLCBsaXN0X25hbWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1l
KToKKyAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIHNvdXJjZSwgKmFyZ3MpOgorICAgICAgICBt
ZXRob2QgPSBnZXRhdHRyKHNlbGYsICdfaGFuZGxlXycgKyBuYW1lKQorICAgICAgICBpZiBtZXRo
b2Q6CisgICAgICAgICAgICByZXR1cm4gbWV0aG9kKHNvdXJjZSwgKmFyZ3MpCisgICAgICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yKCd1bmtub3duIG1lc3NhZ2UgJXMgcmVjZWl2ZWQgZnJvbSAlcywg
YXJncz0lcycgJSAobmFtZSwgc291cmNlLCByZXByKGFyZ3MpKSkKKworICAgIGRlZiBfaGFuZGxl
X3N0YXJ0ZWRfdGVzdChzZWxmLCB3b3JrZXJfbmFtZSwgdGVzdF9pbnB1dCwgdGVzdF90aW1lb3V0
X3NlYyk6CisgICAgICAgICMgRklYTUU6IGxvZyB0aGF0IHdlJ3ZlIHN0YXJ0ZWQgYW5vdGhlciB0
ZXN0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX2hhbmRsZV9maW5pc2hlZF90ZXN0X2xpc3Qo
c2VsZiwgd29ya2VyX25hbWUsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgog
ICAgICAgICBzZWxmLl9ncm91cF9zdGF0c1tsaXN0X25hbWVdID0gKG51bV90ZXN0cywgZWxhcHNl
ZF90aW1lKQogCiAgICAgICAgIGRlZiBmaW5kKG5hbWUsIHRlc3RfbGlzdHMpOgpAQCAtMTQ5Miwy
OSArMTQyNywxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBub3Qg
c2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHM6CiAgICAgICAgICAgICAgICAgc2VsZi5zdG9w
X3NlcnZlcnNfd2l0aF9sb2NrKCkKIAotICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdChzZWxm
LCBzb3VyY2UsIHJlc3VsdCwgZWxhcHNlZF90aW1lLCBsb2dfbWVzc2FnZXM9Tm9uZSk6Ci0gICAg
ICAgIHdvcmtlcl9zdGF0ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNlXQotICAgICAgICB3
b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0ID0gTm9uZQotICAgICAgICB3b3JrZXJfc3RhdGUuY3Vy
cmVudF90ZXN0X25hbWUgPSBOb25lCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5zdGF0c1sndG90YWxf
dGltZSddICs9IGVsYXBzZWRfdGltZQotICAgICAgICB3b3JrZXJfc3RhdGUuc3RhdHNbJ251bV90
ZXN0cyddICs9IDEKLQotICAgICAgICBzZWxmLl9sb2dfbWVzc2FnZXMobG9nX21lc3NhZ2VzKQor
ICAgIGRlZiBfaGFuZGxlX2ZpbmlzaGVkX3Rlc3Qoc2VsZiwgd29ya2VyX25hbWUsIHJlc3VsdCwg
ZWxhcHNlZF90aW1lLCBsb2dfbWVzc2FnZXM9W10pOgorICAgICAgICBzZWxmLl93b3JrZXJfc3Rh
dHMuc2V0ZGVmYXVsdCh3b3JrZXJfbmFtZSwgeyduYW1lJzogd29ya2VyX25hbWUsICdudW1fdGVz
dHMnOiAwLCAndG90YWxfdGltZSc6IDB9KQorICAgICAgICBzZWxmLl93b3JrZXJfc3RhdHNbd29y
a2VyX25hbWVdWyd0b3RhbF90aW1lJ10gKz0gZWxhcHNlZF90aW1lCisgICAgICAgIHNlbGYuX3dv
cmtlcl9zdGF0c1t3b3JrZXJfbmFtZV1bJ251bV90ZXN0cyddICs9IDEKICAgICAgICAgc2VsZi5f
YWxsX3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkKICAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlf
d2l0aF9yZXN1bHQoc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSwgcmVzdWx0KQogCi0gICAg
ZGVmIF9sb2dfbWVzc2FnZXMoc2VsZiwgbWVzc2FnZXMpOgotICAgICAgICBmb3IgbWVzc2FnZSBp
biBtZXNzYWdlczoKLSAgICAgICAgICAgIGxvZ2dpbmcucm9vdC5oYW5kbGUobWVzc2FnZSkKLQot
ICAgIGRlZiBfbG9nX3dvcmtlcl9zdGFjayhzZWxmLCBzdGFjayk6Ci0gICAgICAgIHdlYmtpdHB5
ZGlyID0gc2VsZi5fcG9ydC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1Rvb2xzJywgJ1NjcmlwdHMn
LCAnd2Via2l0cHknKSArIHNlbGYuX2ZpbGVzeXN0ZW0uc2VwCi0gICAgICAgIGZvciBmaWxlbmFt
ZSwgbGluZV9udW1iZXIsIGZ1bmN0aW9uX25hbWUsIHRleHQgaW4gc3RhY2s6Ci0gICAgICAgICAg
ICBpZiBmaWxlbmFtZS5zdGFydHN3aXRoKHdlYmtpdHB5ZGlyKToKLSAgICAgICAgICAgICAgICBm
aWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2Uod2Via2l0cHlkaXIsICcnKQotICAgICAgICAgICAg
X2xvZy5lcnJvcignICAlczoldSAoaW4gJXMpJyAlIChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGZ1
bmN0aW9uX25hbWUpKQotICAgICAgICAgICAgX2xvZy5lcnJvcignICAgICVzJyAlIHRleHQpCi0K
IAogZGVmIHJlYWRfdGVzdF9maWxlcyhmcywgZmlsZW5hbWVzLCB0ZXN0X3BhdGhfc2VwYXJhdG9y
KToKICAgICB0ZXN0cyA9IFtdCkBAIC0xNTYzLDIwICsxNDgyLDMgQEAgZGVmIG5hdHVyYWxfc29y
dF9rZXkoc3RyaW5nX3RvX3NwbGl0KToKICAgICAgICAgICAgIHJldHVybiB2YWwKIAogICAgIHJl
dHVybiBbdHJ5aW50KGNodW5rKSBmb3IgY2h1bmsgaW4gcmUuc3BsaXQoJyhcZCspJywgc3RyaW5n
X3RvX3NwbGl0KV0KLQotCi1jbGFzcyBfV29ya2VyU3RhdGUob2JqZWN0KToKLSAgICAiIiJBIGNs
YXNzIGZvciB0aGUgbWFuYWdlciB0byB1c2UgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdGUgb2Yg
dGhlIHdvcmtlcnMuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bWJlciwgd29ya2VyX2Nv
bm5lY3Rpb24pOgotICAgICAgICBzZWxmLndvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5l
Y3Rpb24KLSAgICAgICAgc2VsZi5udW1iZXIgPSBudW1iZXIKLSAgICAgICAgc2VsZi5kb25lID0g
RmFsc2UKLSAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5uZXh0X3RpbWVvdXQgPSBOb25lCi0gICAgICAgIHNlbGYuc3RhdHMgPSB7fQotICAgICAgICBz
ZWxmLnN0YXRzWyduYW1lJ10gPSB3b3JrZXJfY29ubmVjdGlvbi5uYW1lKCkKLSAgICAgICAgc2Vs
Zi5zdGF0c1snbnVtX3Rlc3RzJ10gPSAwCi0gICAgICAgIHNlbGYuc3RhdHNbJ3RvdGFsX3RpbWUn
XSA9IDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJfV29ya2Vy
U3RhdGUoIiArIHN0cihzZWxmLl9fZGljdF9fKSArICIpIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJv
a2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IGY3YmFjZWQwYWEzYzQxYjMyM2YxN2MxYmI5
ZGVjZGIyZTNkNmViMjEuLjM3ZTM0ZTdkN2MzNWEwZjhhMDVmZDk3MjZiNWRkYTZkYTgwNzU2MDUg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTI2
LDQ0ICsyNiw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJNb2R1bGUg
Zm9yIGhhbmRsaW5nIG1lc3NhZ2VzIGFuZCBjb25jdXJyZW5jeSBmb3IgcnVuLXdlYmtpdC10ZXN0
cy4KLQotVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIG1lc3NhZ2UgYnJva2VyIHRoYXQgY29ubmVj
dHMgdGhlIG1hbmFnZXIgdG8gdGhlCi13b3JrZXJzOiBpdCBwcm92aWRlcyBhIG1lc3NhZ2luZyBh
YnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcyAoYnVpbGRpbmcgb24KLXRvcCBvZiBtZXNzYWdl
X2Jyb2tlciksIGFuZCBoYW5kbGVzIHN0YXJ0aW5nIHdvcmtlcnMgYnkgbGF1bmNoaW5nIHByb2Nl
c3Nlcy4KLQotVGhlcmUgYXJlIGEgbG90IG9mIGNsYXNzZXMgYW5kIG9iamVjdHMgaW52b2x2ZWQg
aW4gYSBmdWxseSBjb25uZWN0ZWQgc3lzdGVtLgotVGhleSBpbnRlcmFjdCBtb3JlIG9yIGxlc3Mg
bGlrZToKLQotICBNYW5hZ2VyICAtLT4gIF9JbmxpbmVNYW5hZ2VyIC0tLT4gX0lubGluZVdvcmtl
ciA8LT4gV29ya2VyCi0gICAgIF4gICAgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICBeCi0gICAgIHwgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAg
IHYgICAgICAgICAgICAgICB8Ci0gICAgIFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgQnJva2Vy
ICAgLS0tLS0tLS0tLS0tLS0tLS8KLQotVGhlIGJyb2tlciBzaW1wbHkgZGlzdHJpYnV0ZXMgbWVz
c2FnZXMgb250byB0b3BpY3MgKG5hbWVkIHF1ZXVlcyk7IHRoZSBhY3R1YWwKLXF1ZXVlcyB0aGVt
c2VsdmVzIGFyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLCBhcyB0aGUgcXVldWUncyBpbXBsZW1l
bnRhdGlvbgotcmVxdWlyZW1lbnRzIHZhcmllcyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgZGVzaXJl
ZCBjb25jdXJyZW5jeSBtb2RlbAotKG5vbmUvdGhyZWFkcy9wcm9jZXNzZXMpLgotCi1JbiBvcmRl
ciBmb3Igc2hhcmVkLW5vdGhpbmcgbWVzc2FnaW5nIGJldHdlZW4gcHJvY2Vzc2luZyB0byBiZSBw
b3NzaWJsZSwKLU1lc3NhZ2VzIG11c3QgYmUgcGlja2xhYmxlLgotCi1UaGUgbW9kdWxlIGRlZmlu
ZXMgb25lIGludGVyZmFjZSBhbmQgdHdvIGNsYXNzZXMuIENhbGxlcnMgb2YgdGhpcyBwYWNrYWdl
Ci1tdXN0IGltcGxlbWVudCB0aGUgQnJva2VyQ2xpZW50IGludGVyZmFjZSwgYW5kIG1vc3QgY2Fs
bGVycyB3aWxsIGNyZWF0ZQotX0Jyb2tlckNvbm5lY3Rpb25zIGFzIHdlbGwgYXMgQnJva2Vycy4K
LQotVGhlIGNsYXNzZXMgcmVsYXRlIHRvIGVhY2ggb3RoZXIgYXM6Ci0KLSAgICBCcm9rZXJDbGll
bnQgICAtLS0tLS0+ICAgIF9Ccm9rZXJDb25uZWN0aW9uCi0gICAgICAgICBeICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgdgotICAg
ICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBfQnJva2VyCi0KLShUaGUgQnJva2VyQ2xpZW50
IG5ldmVyIGNhbGxzIGJyb2tlciBkaXJlY3RseSBhZnRlciBpdCBpcyBjcmVhdGVkLCBvbmx5Ci1f
QnJva2VyQ29ubmVjdGlvbi4gIF9Ccm9rZXJDb25uZWN0aW9uIHBhc3NlcyBhIHJlZmVyZW5jZSB0
byBCcm9rZXJDbGllbnQgdG8KLV9Ccm9rZXIsIGFuZCBfQnJva2VyIG9ubHkgaW52b2tlcyB0aGF0
IHJlZmVyZW5jZSwgbmV2ZXIgdGFsa2luZyBkaXJlY3RseSB0bwotQnJva2VyQ29ubmVjdGlvbiku
Ci0iIiIKKyIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnZXMgYW5kIGNvbmN1cnJlbmN5IGZv
ciBydW4td2Via2l0LXRlc3RzLiIiIgogCiBpbXBvcnQgY1BpY2tsZQogaW1wb3J0IGxvZ2dpbmcK
QEAgLTcyLDYgKzM1LDcgQEAgaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKIGltcG9ydCBRdWV1
ZQogaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIAogCkBAIC05MCw3
ICs1NCwxMjQgQEAgTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2VycycKIEFOWV9XT1JLRVJfVE9QSUMg
PSAnd29ya2VycycKIAogCi1kZWYgZ2V0KG1heF93b3JrZXJzLCBjbGllbnQsIHdvcmtlcl9mYWN0
b3J5LCBob3N0PU5vbmUpOgorZGVmIGdldChjYWxsZXIsIHdvcmtlcl9mYWN0b3J5LCBudW1fd29y
a2Vycywgd29ya2VyX3N0YXJ0dXBfZGVsYXlfc2Vjcz0wLjAsIGhvc3Q9Tm9uZSk6CisgICAgIiIi
UmV0dXJucyBhbiBvYmplY3QgdGhhdCBleHBvc2VzIGEgcnVuKCkgbWV0aG9kIHRoYXQgdGFrZXMg
YSBsaXN0IG9mIHRlc3Qgc2hhcmRzIGFuZCBydW5zIHRoZW0gaW4gcGFyYWxsZWwuIiIiCisgICAg
cmV0dXJuIF9NZXNzYWdlUG9vbChjYWxsZXIsIHdvcmtlcl9mYWN0b3J5LCBudW1fd29ya2Vycywg
d29ya2VyX3N0YXJ0dXBfZGVsYXlfc2VjcywgaG9zdCkKKworCitjbGFzcyBfTWVzc2FnZVBvb2wo
b2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FsbGVyLCB3b3JrZXJfZmFjdG9yeSwg
bnVtX3dvcmtlcnMsIHdvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3M9MC4wLCBob3N0PU5vbmUpOgor
ICAgICAgICBzZWxmLl9jYWxsZXIgPSBjYWxsZXIKKyAgICAgICAgc2VsZi53b3JrZXJfZmFjdG9y
eSA9IHdvcmtlcl9mYWN0b3J5CisgICAgICAgIHNlbGYubnVtX3dvcmtlcnMgPSBudW1fd29ya2Vy
cworICAgICAgICBzZWxmLndvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3MgPSB3b3JrZXJfc3RhcnR1
cF9kZWxheV9zZWNzCisgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXMgPSB7fQorICAgICAgICBz
ZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYubmFtZSA9ICdtYW5hZ2VyJworCisgICAgZGVm
IF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRf
XyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBzZWxmLl9j
bG9zZSgpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHJ1bihzZWxmLCBzaGFyZHMp
OgorICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBfZ2V0X2Jyb2tlcihzZWxmLm51bV93b3Jr
ZXJzLCBzZWxmLCBzZWxmLndvcmtlcl9mYWN0b3J5LCBzZWxmLmhvc3QpCisgICAgICAgIGZvciB3
b3JrZXJfbnVtYmVyIGluIHhyYW5nZShzZWxmLm51bV93b3JrZXJzKToKKyAgICAgICAgICAgIHdv
cmtlcl9jb25uZWN0aW9uID0gbWFuYWdlcl9jb25uZWN0aW9uLnN0YXJ0X3dvcmtlcih3b3JrZXJf
bnVtYmVyKQorICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdvcmtlcl9u
dW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRl
c1t3b3JrZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtlcl9zdGF0ZQorICAgICAgICAgICAgdGlt
ZS5zbGVlcChzZWxmLndvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3MpCisKKyAgICAgICAgbWVzc2Fn
ZXMgPSBsaXN0KHNoYXJkcykKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6CisgICAg
ICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCptZXNzYWdlKQorCisgICAg
ICAgIGZvciBfIGluIHhyYW5nZShzZWxmLm51bV93b3JrZXJzKToKKyAgICAgICAgICAgIG1hbmFn
ZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3N0b3AnKQorCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNlbGYud2FpdChtYW5hZ2VyX2Nvbm5lY3Rpb24pCisgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVz
KCk6CisgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmNhbmNl
bCgpCisKKyAgICBkZWYgd2FpdChzZWxmLCBtYW5hZ2VyX2Nvbm5lY3Rpb24pOgorICAgICAgICB3
aGlsZSBub3Qgc2VsZi5pc19kb25lKCk6CisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24u
cnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKworICAgICAgICAjIE1ha2Ugc3VyZSBh
bGwgb2YgdGhlIHdvcmtlcnMgaGF2ZSBzaHV0IGRvd24gKGlmIHBvc3NpYmxlKS4KKyAgICAgICAg
Zm9yIHdvcmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpOgorICAgICAg
ICAgICAgaWYgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmlzX2FsaXZlKCk6CisgICAg
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygnV2FpdGluZyBmb3Igd29ya2VyICVkIHRvIGV4aXQnICUg
d29ya2VyX3N0YXRlLm51bWJlcikKKyAgICAgICAgICAgICAgICB3b3JrZXJfc3RhdGUud29ya2Vy
X2Nvbm5lY3Rpb24uam9pbig1LjApCisgICAgICAgICAgICAgICAgaWYgd29ya2VyX3N0YXRlLndv
cmtlcl9jb25uZWN0aW9uLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ1dvcmtlciAlZCBkaWQgbm90IGV4aXQgaW4gdGltZS4nICUgd29ya2VyX3N0YXRlLm51bWJl
cikKKworICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICB3b3JrZXJfc3RhdGVzID0gc2Vs
Zi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKQorICAgICAgICByZXR1cm4gd29ya2VyX3N0YXRlcyBh
bmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcl9zdGF0ZSkgZm9yIHdvcmtlcl9zdGF0
ZSBpbiB3b3JrZXJfc3RhdGVzKQorCisgICAgIyBGSVhNRTogSW5saW5lIHRoaXMgZnVuY3Rpb24u
CisgICAgZGVmIF93b3JrZXJfaXNfZG9uZShzZWxmLCB3b3JrZXJfc3RhdGUpOgorICAgICAgICBy
ZXR1cm4gd29ya2VyX3N0YXRlLmRvbmUKKworICAgIGRlZiBfY2xvc2Uoc2VsZik6CisgICAgICAg
IGZvciB3b3JrZXIgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKKyAgICAgICAgICAg
IHdvcmtlci53b3JrZXJfY29ubmVjdGlvbi5jYW5jZWwoKQorICAgICAgICBmb3Igd29ya2VyIGlu
IHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6CisgICAgICAgICAgICBpZiB3b3JrZXIud29y
a2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICB3b3JrZXIud29ya2Vy
X2Nvbm5lY3Rpb24uam9pbig1LjApCisKKyAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc291cmNl
LCBsb2dfbWVzc2FnZXM9Tm9uZSk6CisgICAgICAgIHdvcmtlcl9zdGF0ZSA9IHNlbGYuX3dvcmtl
cl9zdGF0ZXNbc291cmNlXQorICAgICAgICB3b3JrZXJfc3RhdGUuZG9uZSA9IFRydWUKKyAgICAg
ICAgc2VsZi5fbG9nX21lc3NhZ2VzKGxvZ19tZXNzYWdlcykKKworICAgIGRlZiBoYW5kbGVfc3Rh
cnRlZF90ZXN0KHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5fY2FsbGVyLmhhbmRsZSgnc3Rh
cnRlZF90ZXN0JywgKmFyZ3MpCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX3Rlc3Qoc2VsZiwg
KmFyZ3MpOgorICAgICAgICBzZWxmLl9jYWxsZXIuaGFuZGxlKCdmaW5pc2hlZF90ZXN0JywgKmFy
Z3MpCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdChzZWxmLCAqYXJncyk6Cisg
ICAgICAgIHNlbGYuX2NhbGxlci5oYW5kbGUoJ2ZpbmlzaGVkX3Rlc3RfbGlzdCcsICphcmdzKQor
CisgICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLl9o
YW5kbGVfd29ya2VyX2V4Y2VwdGlvbigqYXJncykKKworICAgIGRlZiBfbG9nX21lc3NhZ2VzKHNl
bGYsIG1lc3NhZ2VzKToKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6CisgICAgICAg
ICAgICBsb2dnaW5nLnJvb3QuaGFuZGxlKG1lc3NhZ2UpCisKKyAgICBAc3RhdGljbWV0aG9kCisg
ICAgZGVmIF9oYW5kbGVfd29ya2VyX2V4Y2VwdGlvbihzb3VyY2UsIGV4Y2VwdGlvbl90eXBlLCBl
eGNlcHRpb25fdmFsdWUsIHN0YWNrKToKKyAgICAgICAgaWYgZXhjZXB0aW9uX3R5cGUgPT0gS2V5
Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICByYWlzZSBleGNlcHRpb25fdHlwZShleGNlcHRp
b25fdmFsdWUpCisgICAgICAgIF9sb2cuZXJyb3IoIiVzIHJhaXNlZCAlcygnJXMnKToiICUgKAor
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgZXhjZXB0aW9uX3ZhbHVlLl9fY2xhc3NfXy5fX25h
bWVfXywgc3RyKGV4Y2VwdGlvbl92YWx1ZSkpKQorICAgICAgICByYWlzZSBXb3JrZXJFeGNlcHRp
b24oc3RyKGV4Y2VwdGlvbl92YWx1ZSkpCisKKworY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6
CisgICAgIiIiQSBjbGFzcyBmb3IgdGhlIG1hbmFnZXIgdG8gdXNlIHRvIHRyYWNrIHRoZSBjdXJy
ZW50IHN0YXRlIG9mIHRoZSB3b3JrZXJzLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1i
ZXIsIHdvcmtlcl9jb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi53b3JrZXJfY29ubmVjdGlvbiA9
IHdvcmtlcl9jb25uZWN0aW9uCisgICAgICAgIHNlbGYubnVtYmVyID0gbnVtYmVyCisgICAgICAg
IHNlbGYuZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0X25hbWUgPSBOb25l
CisgICAgICAgIHNlbGYubmV4dF90aW1lb3V0ID0gTm9uZQorICAgICAgICBzZWxmLnN0YXRzID0g
e30KKyAgICAgICAgc2VsZi5zdGF0c1snbmFtZSddID0gd29ya2VyX2Nvbm5lY3Rpb24ubmFtZQor
ICAgICAgICBzZWxmLnN0YXRzWydudW1fdGVzdHMnXSA9IDAKKyAgICAgICAgc2VsZi5zdGF0c1sn
dG90YWxfdGltZSddID0gMAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1
cm4gIl9Xb3JrZXJTdGF0ZSgiICsgc3RyKHNlbGYuX19kaWN0X18pICsgIikiCisKKworZGVmIF9n
ZXRfYnJva2VyKG1heF93b3JrZXJzLCBjbGllbnQsIHdvcmtlcl9mYWN0b3J5LCBob3N0PU5vbmUp
OgogICAgICIiIlJldHVybiBhIGNvbm5lY3Rpb24gdG8gYSBtYW5hZ2VyL3dvcmtlciBtZXNzYWdl
X2Jyb2tlcgogCiAgICAgQXJnczoKQEAgLTE3MSw3ICsyNTIsNyBAQCBjbGFzcyBfQnJva2VyKG9i
amVjdCk6CiAgICAgICAgICIiIlBvc3QgYSBtZXNzYWdlIHRvIHRoZSBhcHByb3ByaWF0ZSB0b3Bp
YyBuYW1lLgogCiAgICAgICAgIE1lc3NhZ2VzIGhhdmUgYSBuYW1lIGFuZCBhIHR1cGxlIG9mIG9w
dGlvbmFsIGFyZ3VtZW50cy4gQm90aCBtdXN0IGJlIHBpY2tsYWJsZS4iIiIKLSAgICAgICAgbWVz
c2FnZSA9IF9NZXNzYWdlKGNsaWVudC5uYW1lKCksIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwg
bWVzc2FnZV9hcmdzKQorICAgICAgICBtZXNzYWdlID0gX01lc3NhZ2UoY2xpZW50Lm5hbWUsIHRv
cGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdzKQogICAgICAgICBxdWV1ZSA9IHNl
bGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkKICAgICAgICAgcXVldWUucHV0KF9N
ZXNzYWdlLmR1bXBzKG1lc3NhZ2UpKQogCkBAIC0yMDAsNyArMjgxLDcgQEAgY2xhc3MgX0Jyb2tl
cihvYmplY3QpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihjbGllbnQsICdoYW5kbGVfJyArIG1l
c3NhZ2UubmFtZSk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAg
ICAgIiVzOiByZWNlaXZlZCBtZXNzYWdlICclcycgaXQgY291bGRuJ3QgaGFuZGxlIiAlCi0gICAg
ICAgICAgICAgICAoY2xpZW50Lm5hbWUoKSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAg
IChjbGllbnQubmFtZSwgbWVzc2FnZS5uYW1lKSkKICAgICAgICAgb3B0YXJncyA9IG1lc3NhZ2Uu
YXJncwogICAgICAgICBtZXNzYWdlX2hhbmRsZXIgPSBnZXRhdHRyKGNsaWVudCwgJ2hhbmRsZV8n
ICsgbWVzc2FnZS5uYW1lKQogICAgICAgICBtZXNzYWdlX2hhbmRsZXIobWVzc2FnZS5zcmMsICpv
cHRhcmdzKQpAQCAtMjY4LDE2ICszNDksMTMgQEAgY2xhc3MgQWJzdHJhY3RXb3JrZXIoQnJva2Vy
Q2xpZW50KToKICAgICAgICAgQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNl
bGYud29ya2VyID0gTm9uZQogICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtl
cl9jb25uZWN0aW9uCi0gICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVy
Ci0gICAgICAgIHNlbGYuX25hbWUgPSAnd29ya2VyLyVkJyAlIHdvcmtlcl9udW1iZXIKKyAgICAg
ICAgc2VsZi53b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgorICAgICAgICBzZWxmLm5hbWUg
PSAnd29ya2VyLyVkJyAlIHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5fZG9uZSA9IEZhbHNl
CiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdHBhcnNlLlZhbHVlcyh7J3ZlcmJvc2UnOiBGYWxzZX0pCiAgICAgICAgIHNlbGYuaG9zdCA9
IE5vbmUKIAotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQot
CiAgICAgZGVmIGlzX2RvbmUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9kb25lIG9yIHNl
bGYuX2NhbmNlbGVkCiAKQEAgLTI5MCwxNCArMzY4LDE0IEBAIGNsYXNzIEFic3RyYWN0V29ya2Vy
KEJyb2tlckNsaWVudCk6CiAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiIgogICAgICAgICBzZWxm
Lmhvc3QgPSBob3N0CiAKLSAgICAgICAgc2VsZi53b3JrZXIuc2FmZV9pbml0KCkKLSAgICAgICAg
X2xvZy5kZWJ1ZygnJXMgc3RhcnRpbmcnICUgc2VsZi5fbmFtZSkKKyAgICAgICAgc2VsZi53b3Jr
ZXIuc3RhcnQoKQorICAgICAgICBfbG9nLmRlYnVnKCclcyBzdGFydGluZycgJSBzZWxmLm5hbWUp
CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucnVu
X21lc3NhZ2VfbG9vcCgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19kb25lKCk6CiAgICAg
ICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVzOiByYW4gb3V0IG9mIG1lc3NhZ2Vz
IGluIHdvcmtlciBxdWV1ZS4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JSBzZWxmLl9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc2Vs
Zi5uYW1lKQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICBl
eGNlcHRpb25fbXNnID0gIiwgaW50ZXJydXB0ZWQiCiAgICAgICAgICAgICBzZWxmLl93b3JrZXJf
Y29ubmVjdGlvbi5yYWlzZV9leGNlcHRpb24oc3lzLmV4Y19pbmZvKCkpCkBAIC0zMDUsOSArMzgz
LDkgQEAgY2xhc3MgQWJzdHJhY3RXb3JrZXIoQnJva2VyQ2xpZW50KToKICAgICAgICAgICAgIGV4
Y2VwdGlvbl9tc2cgPSAiLCBleGNlcHRpb24gcmFpc2VkIgogICAgICAgICAgICAgc2VsZi5fd29y
a2VyX2Nvbm5lY3Rpb24ucmFpc2VfZXhjZXB0aW9uKHN5cy5leGNfaW5mbygpKQogICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSB3aXRoIG1lc3NhZ2UgbG9v
cCVzIiAlIChzZWxmLl9uYW1lLCBleGNlcHRpb25fbXNnKSkKKyAgICAgICAgICAgIF9sb2cuZGVi
dWcoIiVzIGRvbmUgd2l0aCBtZXNzYWdlIGxvb3AlcyIgJSAoc2VsZi5uYW1lLCBleGNlcHRpb25f
bXNnKSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLndvcmtlci5jbGVh
bnVwKCkKKyAgICAgICAgICAgICAgICBzZWxmLndvcmtlci5zdG9wKCkKICAgICAgICAgICAgIGZp
bmFsbHk6CiAgICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgd2UgcG9zdCBhIGRvbmUgc28gdGhh
dCB3ZSBjYW4gZmx1c2ggdGhlIGxvZyBtZXNzYWdlcwogICAgICAgICAgICAgICAgICMgYW5kIGNs
ZWFuIHVwIHByb3Blcmx5IGV2ZW4gaWYgd2UgcmFpc2UgYW4gZXhjZXB0aW9uIGluIHdvcmtlci5j
bGVhbnVwKCkuCkBAIC0zMjUsMTAgKzQwMywxMCBAQCBjbGFzcyBBYnN0cmFjdFdvcmtlcihCcm9r
ZXJDbGllbnQpOgogICAgICAgICBtZXRob2QgYmVpbmcgY2FsbGVkLCBzbyBjbGllbnRzIHNob3Vs
ZCBub3QgcmVseSBzb2xlbHkgb24gdGhpcy4iIiIKICAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBU
cnVlCiAKLSAgICBkZWYgeWllbGRfdG9fYnJva2VyKHNlbGYpOgorICAgIGRlZiB5aWVsZF90b19j
YWxsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnlpZWxkX3RvX2Jy
b2tlcigpCiAKLSAgICBkZWYgcG9zdF9tZXNzYWdlKHNlbGYsICphcmdzKToKKyAgICBkZWYgcG9z
dChzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVz
c2FnZSgqYXJncykKIAogCkBAIC0zODIsMTcgKzQ2MCwxNSBAQCBjbGFzcyBfV29ya2VyQ29ubmVj
dGlvbihfQnJva2VyQ29ubmVjdGlvbik6CiAgICAgICAgICMgYWN0dWFsIFdvcmtlciAoY3JlYXRl
ZCBieSB3b3JrZXJfZmFjdG9yeSkgaXMgdmVyeSBjb25mdXNpbmcsIGJ1dCB0aGlzIGFsbCBnZXRz
IGJldHRlciB3aGVuCiAgICAgICAgICMgX1dvcmtlckNvbm5lY3Rpb24gYW5kIEFic3RyYWN0V29y
a2VyIGdldCBtZXJnZWQuCiAgICAgICAgIHNlbGYuX2NsaWVudCA9IEFic3RyYWN0V29ya2VyKHNl
bGYsIHdvcmtlcl9udW1iZXIpCi0gICAgICAgIHNlbGYuX3dvcmtlciA9IHdvcmtlcl9mYWN0b3J5
KHNlbGYuX2NsaWVudCwgd29ya2VyX251bWJlcikKKyAgICAgICAgc2VsZi5fd29ya2VyID0gd29y
a2VyX2ZhY3Rvcnkoc2VsZi5fY2xpZW50KQogICAgICAgICBzZWxmLl9jbGllbnQud29ya2VyID0g
c2VsZi5fd29ya2VyCiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuX2xv
Z19tZXNzYWdlcyA9IFtdCiAgICAgICAgIHNlbGYuX2xvZ2dlciA9IE5vbmUKICAgICAgICAgc2Vs
Zi5fbG9nX2hhbmRsZXIgPSBOb25lCisgICAgICAgIHNlbGYubmFtZSA9IHNlbGYuX2NsaWVudC5u
YW1lCiAgICAgICAgIF9Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2Vs
Zi5fY2xpZW50LCBBTllfV09SS0VSX1RPUElDLCBNQU5BR0VSX1RPUElDKQogCi0gICAgZGVmIG5h
bWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jbGllbnQubmFtZSgpCi0KICAgICBkZWYg
Y2FuY2VsKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5w
eQppbmRleCBkN2MzNzE0ZDhkZDkxYTQxNWQ3OWE1NmU2ZjI1ODk5OTM4NDNmMmNlLi5mODJmZDU1
OTc5OTA2YTQ4MTkyMDM5MWYzMjI2M2RkNzIwZTJmMjE2IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9r
ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC01MSwzNyAr
NTEsMzEgQEAgZGVmIG1ha2VfYnJva2VyKG1hbmFnZXIsIG1heF93b3JrZXJzLCBzdGFydF9xdWV1
ZT1Ob25lLCBzdG9wX3F1ZXVlPU5vbmUpOgogICAgIGdsb2JhbCBzdG9wcGluZ19xdWV1ZQogICAg
IHN0YXJ0aW5nX3F1ZXVlID0gc3RhcnRfcXVldWUKICAgICBzdG9wcGluZ19xdWV1ZSA9IHN0b3Bf
cXVldWUKLSAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChtYXhfd29ya2Vycywg
bWFuYWdlciwgX1Rlc3RXb3JrZXIpCisgICAgcmV0dXJuIG1hbmFnZXJfd29ya2VyX2Jyb2tlci5f
Z2V0X2Jyb2tlcihtYXhfd29ya2VycywgbWFuYWdlciwgX1Rlc3RXb3JrZXIpCiAKIAogY2xhc3Mg
X1Rlc3RXb3JrZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2FsbGVyLCB3b3Jr
ZXJfbnVtYmVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FsbGVyKToKICAgICAgICAgc2Vs
Zi5fY2FsbGVyID0gY2FsbGVyCiAgICAgICAgIHNlbGYuX3RoaW5nX3RvX2dyZWV0ID0gJ2V2ZXJ5
Ym9keScKICAgICAgICAgc2VsZi5fc3RhcnRpbmdfcXVldWUgPSBzdGFydGluZ19xdWV1ZQogICAg
ICAgICBzZWxmLl9zdG9wcGluZ19xdWV1ZSA9IHN0b3BwaW5nX3F1ZXVlCiAgICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRwYXJzZS5WYWx1ZXMoeyd2ZXJib3NlJzogRmFsc2V9KQogCi0gICAgZGVm
IG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBXT1JLRVJfTkFNRQotCi0gICAgZGVmIGNsZWFu
dXAoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGUoc2VsZiwgbWVzc2FnZSwg
c3JjLCBhbl9pbnQsIGFfc3RyKToKLSAgICAgICAgYXNzZXJ0IGFuX2ludCA9PSAxCi0gICAgICAg
IGFzc2VydCBhX3N0ciA9PSAiaGVsbG8sIHdvcmxkIgotICAgICAgICBzZWxmLl9jYWxsZXIucG9z
dF9tZXNzYWdlKCdmaW5pc2hlZF90ZXN0JywgMikKLQotICAgIGRlZiBzYWZlX2luaXQoc2VsZik6
CisgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9zdGFydGluZ19xdWV1ZToK
ICAgICAgICAgICAgIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlLnB1dCgnJykKIAogICAgICAgICBpZiBz
ZWxmLl9zdG9wcGluZ19xdWV1ZToKICAgICAgICAgICAgIHNlbGYuX3N0b3BwaW5nX3F1ZXVlLmdl
dCgpCiAKKyAgICBkZWYgaGFuZGxlKHNlbGYsIG1lc3NhZ2UsIHNyYywgYW5faW50LCBhX3N0cik6
CisgICAgICAgIGFzc2VydCBhbl9pbnQgPT0gMQorICAgICAgICBhc3NlcnQgYV9zdHIgPT0gImhl
bGxvLCB3b3JsZCIKKyAgICAgICAgc2VsZi5fY2FsbGVyLnBvc3QoJ2ZpbmlzaGVkX3Rlc3QnLCAy
KQorCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhbGxlci5wb3N0X21lc3Nh
Z2UoJ2RvbmUnKQorICAgICAgICBwYXNzCiAKIAogY2xhc3MgRnVuY3Rpb25UZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CkBAIC05OSw4ICs5Myw3IEBAIGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6
CiAgICAgIiIiTWl4aW4gY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGEgc2VyaWVzIG9mIHRlc3RzIHRv
IGVuZm9yY2UgdGhlCiAgICAgY29udHJhY3QgYWxsIGltcGxlbWVudGF0aW9ucyBtdXN0IGZvbGxv
dy4iIiIKIAotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1Rlc3Rlck1hbmFn
ZXInCisgICAgbmFtZSA9ICdUZXN0ZXJNYW5hZ2VyJwogCiAgICAgZGVmIGlzX2RvbmUoc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLl9kb25lCkBAIC0xMjgsNyArMTIxLDcgQEAgY2xhc3MgX1Rl
c3RzTWl4aW4ob2JqZWN0KToKICAgICBkZWYgdGVzdF9uYW1lKHNlbGYpOgogICAgICAgICBzZWxm
Lm1ha2VfYnJva2VyKCkKICAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtl
cigxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh3b3JrZXIubmFtZSgpLCBXT1JLRVJfTkFN
RSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMod29ya2VyLm5hbWUsIFdPUktFUl9OQU1FKQog
ICAgICAgICB3b3JrZXIuY2FuY2VsKCkKICAgICAgICAgd29ya2VyLmpvaW4oMC4xKQogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5pc19hbGl2ZSgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5Cmlu
ZGV4IGM2ODkxNTkxNjk5YmI3MjVhNTNlNzE5MTE1NzMyNTJlMGFjYzRhMTQuLjU4MTliZmVhMTdm
MDMwZGJiOGJjYjkzMTE4Mzg5Njk4YTJjOWU5YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKQEAgLTQx
LDE0ICs0MSwxNCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xh
c3MgV29ya2VyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0
aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucyk6Ci0gICAgICAg
IHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAgc2Vs
Zi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKLSAgICAgICAgc2VsZi5fbmFtZSA9ICd3
b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsZXIs
IHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fY2FsbGVyID0gY2Fs
bGVyCisgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSBjYWxsZXIud29ya2VyX251bWJlcgor
ICAgICAgICBzZWxmLl9uYW1lID0gY2FsbGVyLm5hbWUKICAgICAgICAgc2VsZi5fcmVzdWx0c19k
aXJlY3RvcnkgPSByZXN1bHRzX2RpcmVjdG9yeQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0
aW9ucwogCi0gICAgICAgICMgVGhlIHJlbWFpbmluZyBmaWVsZHMgYXJlIGluaXRpYWxpemVkIGlu
IHNhZmVfaW5pdCgpCisgICAgICAgICMgVGhlIHJlbWFpbmluZyBmaWVsZHMgYXJlIGluaXRpYWxp
emVkIGluIHN0YXJ0KCkKICAgICAgICAgc2VsZi5faG9zdCA9IE5vbmUKICAgICAgICAgc2VsZi5f
cG9ydCA9IE5vbmUKICAgICAgICAgc2VsZi5fYmF0Y2hfc2l6ZSA9IE5vbmUKQEAgLTU5LDEyICs1
OSwxMyBAQCBjbGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2Zp
bGVuYW1lID0gTm9uZQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHNlbGYuY2xl
YW51cCgpCisgICAgICAgIHNlbGYuc3RvcCgpCiAKLSAgICBkZWYgc2FmZV9pbml0KHNlbGYpOgot
ICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBpdCBpcyBzYWZlIGZvciB0aGUg
b2JqZWN0IHRvIGNyZWF0ZSBzdGF0ZSB0aGF0Ci0gICAgICAgIGRvZXMgbm90IG5lZWQgdG8gYmUg
cGlja2xlZCAodXN1YWxseSB0aGlzIG1lYW5zIGl0IGlzIGNhbGxlZCBpbiBhIGNoaWxkIHByb2Nl
c3MpLiIiIgotICAgICAgICBzZWxmLl9ob3N0ID0gc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24uaG9z
dAorICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVk
IHdoZW4gdGhlIG9iamVjdCBpcyBzdGFydGluZyB0byBiZSB1c2VkIGFuZCBpdCBpcyBzYWZlCisg
ICAgICAgIGZvciB0aGUgb2JqZWN0IHRvIGNyZWF0ZSBzdGF0ZSB0aGF0IGRvZXMgbm90IG5lZWQg
dG8gYmUgcGlja2xlZCAodXN1YWxseSB0aGlzIG1lYW5zCisgICAgICAgIGl0IGlzIGNhbGxlZCBp
biBhIGNoaWxkIHByb2Nlc3MpLiIiIgorICAgICAgICBzZWxmLl9ob3N0ID0gc2VsZi5fY2FsbGVy
Lmhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbQog
ICAgICAgICBzZWxmLl9wb3J0ID0gc2VsZi5faG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHNlbGYuX29w
dGlvbnMucGxhdGZvcm0sIHNlbGYuX29wdGlvbnMpCiAKQEAgLTczLDE4ICs3NCwxNCBAQCBjbGFz
cyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidGVzdHNfcnVuJWQudHh0IiAl
IHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlID0gc2Vs
Zi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyh0ZXN0c19ydW5fZmlsZW5h
bWUpCiAKLSAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIHNvdXJjZSwgbGlzdF9uYW1lLCB0ZXN0
X2xpc3QpOgorICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgc291cmNlLCB0ZXN0X2xpc3RfbmFt
ZSwgdGVzdF9pbnB1dHMpOgogICAgICAgICBhc3NlcnQgbmFtZSA9PSAndGVzdF9saXN0JwogICAg
ICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgbnVtX3Rlc3RzID0gMAotICAg
ICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBzZWxmLl91cGRh
dGVfdGVzdF9pbnB1dCh0ZXN0X2lucHV0KQorICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0
X2lucHV0czoKICAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5wdXQpCi0gICAgICAg
ICAgICBudW1fdGVzdHMgKz0gMQotICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24u
eWllbGRfdG9fYnJva2VyKCkKLQorICAgICAgICAgICAgc2VsZi5fY2FsbGVyLnlpZWxkX3RvX2Nh
bGxlcigpCiAgICAgICAgIGVsYXBzZWRfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQot
ICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2ZpbmlzaGVkX2xp
c3QnLCBsaXN0X25hbWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQorICAgICAgICBzZWxmLl9j
YWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdF9saXN0JywgdGVzdF9saXN0X25hbWUsIGxlbih0ZXN0
X2lucHV0cyksIGVsYXBzZWRfdGltZSkKIAogICAgIGRlZiBfdXBkYXRlX3Rlc3RfaW5wdXQoc2Vs
ZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2Vs
Zi5fcG9ydC5yZWZlcmVuY2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCkBAIC05OSwyNSAr
OTYsMjYgQEAgY2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X2lucHV0LnNo
b3VsZF9ydW5fcGl4ZWxfdGVzdCA9IEZhbHNlCiAKICAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRl
c3RfaW5wdXQpOgotICAgICAgICB0ZXN0X3RpbWVvdXRfc2VjID0gc2VsZi50aW1lb3V0KHRlc3Rf
aW5wdXQpCisgICAgICAgIHNlbGYuX3VwZGF0ZV90ZXN0X2lucHV0KHRlc3RfaW5wdXQpCisgICAg
ICAgIHRlc3RfdGltZW91dF9zZWMgPSBzZWxmLl90aW1lb3V0KHRlc3RfaW5wdXQpCiAgICAgICAg
IHN0YXJ0ID0gdGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9z
dF9tZXNzYWdlKCdzdGFydGVkX3Rlc3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQor
ICAgICAgICBzZWxmLl9jYWxsZXIucG9zdCgnc3RhcnRlZF90ZXN0JywgdGVzdF9pbnB1dCwgdGVz
dF90aW1lb3V0X3NlYykKIAotICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bl90ZXN0X3dpdGhfdGlt
ZW91dCh0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQorICAgICAgICByZXN1bHQgPSBzZWxm
Ll9ydW5fdGVzdF93aXRoX3RpbWVvdXQodGVzdF9pbnB1dCwgdGVzdF90aW1lb3V0X3NlYykKIAog
ICAgICAgICBlbGFwc2VkX3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0Ci0gICAgICAgIHNlbGYu
X3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnZmluaXNoZWRfdGVzdCcsIHJlc3VsdCwg
ZWxhcHNlZF90aW1lKQorICAgICAgICBzZWxmLl9jYWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdCcs
IHJlc3VsdCwgZWxhcHNlZF90aW1lKQogCi0gICAgICAgIHNlbGYuY2xlYW5fdXBfYWZ0ZXJfdGVz
dCh0ZXN0X2lucHV0LCByZXN1bHQpCisgICAgICAgIHNlbGYuX2NsZWFuX3VwX2FmdGVyX3Rlc3Qo
dGVzdF9pbnB1dCwgcmVzdWx0KQogCi0gICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgZGVmIHN0
b3Aoc2VsZik6CiAgICAgICAgIF9sb2cuZGVidWcoIiVzIGNsZWFuaW5nIHVwIiAlIHNlbGYuX25h
bWUpCi0gICAgICAgIHNlbGYua2lsbF9kcml2ZXIoKQorICAgICAgICBzZWxmLl9raWxsX2RyaXZl
cigpCiAgICAgICAgIGlmIHNlbGYuX3Rlc3RzX3J1bl9maWxlOgogICAgICAgICAgICAgc2VsZi5f
dGVzdHNfcnVuX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUg
PSBOb25lCiAKLSAgICBkZWYgdGltZW91dChzZWxmLCB0ZXN0X2lucHV0KToKKyAgICBkZWYgX3Rp
bWVvdXQoc2VsZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgICIiIkNvbXB1dGUgdGhlIGFwcHJvcHJp
YXRlIHRpbWVvdXQgdmFsdWUgZm9yIGEgdGVzdC4iIiIKICAgICAgICAgIyBUaGUgRHVtcFJlbmRl
clRyZWUgd2F0Y2hkb2cgdXNlcyAyLjV4IHRoZSB0aW1lb3V0OyB3ZSB3YW50IHRvIGJlCiAgICAg
ICAgICMgbGFyZ2VyIHRoYW4gdGhhdC4gV2UgYWxzbyBhZGQgYSBsaXR0bGUgbW9yZSBwYWRkaW5n
IGlmIHdlJ3JlCkBAIC0xMzMsNyArMTMxLDcgQEAgY2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAg
ICAgIHRocmVhZF90aW1lb3V0X3NlYyA9IGRyaXZlcl90aW1lb3V0X3NlYyArIHRocmVhZF9wYWRk
aW5nX3NlYwogICAgICAgICByZXR1cm4gdGhyZWFkX3RpbWVvdXRfc2VjCiAKLSAgICBkZWYga2ls
bF9kcml2ZXIoc2VsZik6CisgICAgZGVmIF9raWxsX2RyaXZlcihzZWxmKToKICAgICAgICAgIyBC
ZSBjYXJlZnVsIGFib3V0IGhvdyBhbmQgd2hlbiB3ZSBraWxsIHRoZSBkcml2ZXI7IGlmIGRyaXZl
ci5zdG9wKCkKICAgICAgICAgIyByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGlzIHJvdXRpbmUgbWF5
IGdldCByZS1lbnRlcmVkIHZpYSBfX2RlbF9fLgogICAgICAgICBkcml2ZXIgPSBzZWxmLl9kcml2
ZXIKQEAgLTE0MiwxMiArMTQwLDEyIEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygiJXMga2lsbGluZyBkcml2ZXIiICUgc2VsZi5fbmFtZSkKICAgICAgICAg
ICAgIGRyaXZlci5zdG9wKCkKIAotICAgIGRlZiBydW5fdGVzdF93aXRoX3RpbWVvdXQoc2VsZiwg
dGVzdF9pbnB1dCwgdGltZW91dCk6CisgICAgZGVmIF9ydW5fdGVzdF93aXRoX3RpbWVvdXQoc2Vs
ZiwgdGVzdF9pbnB1dCwgdGltZW91dCk6CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX3Np
bmdseToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdF9pbl9hbm90aGVyX3RocmVh
ZCh0ZXN0X2lucHV0LCB0aW1lb3V0KQogICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RfaW5f
dGhpc190aHJlYWQodGVzdF9pbnB1dCkKIAotICAgIGRlZiBjbGVhbl91cF9hZnRlcl90ZXN0KHNl
bGYsIHRlc3RfaW5wdXQsIHJlc3VsdCk6CisgICAgZGVmIF9jbGVhbl91cF9hZnRlcl90ZXN0KHNl
bGYsIHRlc3RfaW5wdXQsIHJlc3VsdCk6CiAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ICs9IDEK
ICAgICAgICAgdGVzdF9uYW1lID0gdGVzdF9pbnB1dC50ZXN0X25hbWUKICAgICAgICAgc2VsZi5f
dGVzdHNfcnVuX2ZpbGUud3JpdGUodGVzdF9uYW1lICsgIlxuIikKQEAgLTE1NSw3ICsxNTMsNyBA
QCBjbGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgaWYgcmVzdWx0LmZhaWx1cmVzOgogICAg
ICAgICAgICAgIyBDaGVjayBhbmQga2lsbCBEdW1wUmVuZGVyVHJlZSBpZiB3ZSBuZWVkIHRvLgog
ICAgICAgICAgICAgaWYgYW55KFtmLmRyaXZlcl9uZWVkc19yZXN0YXJ0KCkgZm9yIGYgaW4gcmVz
dWx0LmZhaWx1cmVzXSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5raWxsX2RyaXZlcigpCisgICAg
ICAgICAgICAgICAgc2VsZi5fa2lsbF9kcml2ZXIoKQogICAgICAgICAgICAgICAgICMgUmVzZXQg
dGhlIGJhdGNoIGNvdW50IHNpbmNlIHRoZSBzaGVsbCBqdXN0IGJvdW5jZWQuCiAgICAgICAgICAg
ICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCiAKQEAgLTE2OSw3ICsxNjcsNyBAQCBjbGFzcyBX
b3JrZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIHBhc3NlZCIgJSAo
c2VsZi5fbmFtZSwgdGVzdF9uYW1lKSkKIAogICAgICAgICBpZiBzZWxmLl9iYXRjaF9zaXplID4g
MCBhbmQgc2VsZi5fYmF0Y2hfY291bnQgPj0gc2VsZi5fYmF0Y2hfc2l6ZToKLSAgICAgICAgICAg
IHNlbGYua2lsbF9kcml2ZXIoKQorICAgICAgICAgICAgc2VsZi5fa2lsbF9kcml2ZXIoKQogICAg
ICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCiAKICAgICBkZWYgX3J1bl90ZXN0X2luX2Fu
b3RoZXJfdGhyZWFkKHNlbGYsIHRlc3RfaW5wdXQsIHRocmVhZF90aW1lb3V0X3NlYyk6CkBAIC0x
OTUsNyArMTkzLDcgQEAgY2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2Vs
Zi5yZXN1bHQgPSBOb25lCiAKICAgICAgICAgICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5yZXN1bHQgPSB3b3JrZXIucnVuX3NpbmdsZV90ZXN0KGRyaXZlciwgdGVzdF9p
bnB1dCkKKyAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IHdvcmtlci5fcnVuX3NpbmdsZV90
ZXN0KGRyaXZlciwgdGVzdF9pbnB1dCkKIAogICAgICAgICB0aHJlYWQgPSBTaW5nbGVUZXN0VGhy
ZWFkKCkKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKQEAgLTIyNywxMSArMjI1LDExIEBAIGNsYXNz
IFdvcmtlcihvYmplY3QpOgogICAgICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0Lgog
ICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fZHJpdmVyIGFuZCBzZWxmLl9kcml2ZXIuaGFz
X2NyYXNoZWQoKToKLSAgICAgICAgICAgIHNlbGYua2lsbF9kcml2ZXIoKQorICAgICAgICAgICAg
c2VsZi5fa2lsbF9kcml2ZXIoKQogICAgICAgICBpZiBub3Qgc2VsZi5fZHJpdmVyOgogICAgICAg
ICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHNlbGYuX3dvcmtl
cl9udW1iZXIpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bl9zaW5nbGVfdGVzdChzZWxmLl9kcml2
ZXIsIHRlc3RfaW5wdXQpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc2luZ2xlX3Rlc3Qoc2Vs
Zi5fZHJpdmVyLCB0ZXN0X2lucHV0KQogCi0gICAgZGVmIHJ1bl9zaW5nbGVfdGVzdChzZWxmLCBk
cml2ZXIsIHRlc3RfaW5wdXQpOgorICAgIGRlZiBfcnVuX3NpbmdsZV90ZXN0KHNlbGYsIGRyaXZl
ciwgdGVzdF9pbnB1dCk6CiAgICAgICAgIHJldHVybiBzaW5nbGVfdGVzdF9ydW5uZXIucnVuX3Np
bmdsZV90ZXN0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCiAgICAgICAgICAgICB0ZXN0X2lu
cHV0LCBkcml2ZXIsIHNlbGYuX25hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151822</attachid>
            <date>2012-07-11 17:35:44 -0700</date>
            <delta_ts>2012-07-11 17:36:47 -0700</delta_ts>
            <desc>update w/ review comments</desc>
            <filename>bug-90511-20120711173543.patch</filename>
            <type>text/plain</type>
            <size>20817</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzg4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2M0NDczYjVhNzdjODUxNjM3YWNkY2Q4OWZiM2ZlZWY1
MmU4NmIyYi4uM2QyODhjMjk5NjRhYWM2OWQ2NWQ4M2MxNjcwN2I1ZWIwNjZkY2M2MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3
IEBACisyMDEyLTA3LTAzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IGFkZCBhIE1lc3NhZ2VQb29sIGFic3RyYWN0aW9uIHRoYXQgdGhlIG1hbmFn
ZXIgd2lsbCBjYWxsIHRvIHJlcGxhY2UgdGhlIGJyb2tlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1MTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSBuZXcg
TWVzc2FnZVBvb2wgYWJzdHJhY3Rpb24gdGhhdCB3aWxsCisgICAgICAgIHJlcGxhY2UgdGhlIGNs
YXNzZXMgaW4gbWFuYWdlcl93b3JrZXJfYnJva2VyLiBJdCBpcyBhIG1pbmltYWwKKyAgICAgICAg
aW50ZXJmYWNlIHRoYXQgdHJpZXMgdG8gZm9sbG93IHRoZSBjb252ZW50aW9ucyBpbgorICAgICAg
ICBtdWx0aXByb2Nlc3NpbmcuUG9vbCBhbmQgY29uY3VycmVuY3kuZnV0dXJlcyAuLi4gaXQgcHJv
dmlkZXMgYQorICAgICAgICBjb250ZXh0IG1hbmFnZXIgYW5kIGEgcnVuKCkgbWV0aG9kIHRoYXQg
c2VuZHMgTiBtZXNzYWdlcyB0byBNCisgICAgICAgIHdvcmtlcnMgcHJvY2Vzc2VzIChzdGFydGlu
ZyB3b3JrZXJzIGFzIG5lY2Vzc2FyeSkgYW5kIHdhaXRzIGZvcgorICAgICAgICB0aGVtIGFsbCB0
byBjb21wbGV0ZSwgaGFuZGxpbmcgY2xlYW51cCBhcyBuZWNlc3NhcnkuIFRoZSBjYWxsZXIKKyAg
ICAgICAgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhIGhhbmRsZSgpIG1ldGhvZCB0byBo
YW5kbGUKKyAgICAgICAgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgd29ya2Vycy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaW50ZXJmYWNlIGJhc2ljYWxseSBoaWRlcyBhbGwgb2YgdGhlIG11
bHRpcHJvY2Vzc2luZyBsb2dpYyBmcm9tCisgICAgICAgIHRoZSBtYW5hZ2VyIGNsYXNzLgorCisg
ICAgICAgIFRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIE1lc3NhZ2VQb29sIGlzIGEgc2lt
cGxlIHNoaW0KKyAgICAgICAgYXJvdW5kIHRoZSBleGlzdGluZyBicm9rZXIgY2xhc3NlczsgYSBz
dWJzZXF1ZW50IGNoYW5nZSB3aWxsCisgICAgICAgIHJlcGxhY2UgYWxsIHRoZSBvdGhlciBjbGFz
c2VzIHdpdGggYSBtdWNoIHNpbXBsZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgTm8gYWRkaXRpb25hbCB0ZXN0cyBhcmUgcHJvdmlkZWQgZm9yIG5vdzsgZXhpc3RpbmcgdGVz
dHMgc2hvdWxkCisgICAgICAgIHByb3ZpZGUgYWRlcXVhdGUgY292ZXJhZ2UsIGFuZCBJIHdpbGwg
YWRkIG5ldyB1bml0IHRlc3RzIGZvciB0aGUKKyAgICAgICAgTWVzc2FnZVBvb2wgY2xhc3Mgd2hl
biBJIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAg
ICAgKFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbi5fX3JlZHVjZV9fKToKKyAgICAgICAgKE1h
bmFnZXIuX19pbml0X18pOgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rlc3RzKToKKyAgICAgICAg
KE1hbmFnZXIuX3J1bl90ZXN0cy5pbnN0ZWFkKToKKyAgICAgICAgKE1hbmFnZXIuaGFuZGxlKToK
KyAgICAgICAgKE1hbmFnZXIuX2hhbmRsZV9zdGFydGVkX3Rlc3QpOgorICAgICAgICAoTWFuYWdl
ci5faGFuZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdCk6CisgICAgICAgIChNYW5hZ2VyLl9oYW5kbGVf
ZmluaXNoZWRfdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5OgorICAgICAgICAoZ2V0KToKKyAg
ICAgICAgKF9NZXNzYWdlUG9vbCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuX19pbml0X18pOgor
ICAgICAgICAoX01lc3NhZ2VQb29sLl9fZW50ZXJfXyk6CisgICAgICAgIChfTWVzc2FnZVBvb2wu
X19leGl0X18pOgorICAgICAgICAoX01lc3NhZ2VQb29sLnJ1bik6CisgICAgICAgIChfTWVzc2Fn
ZVBvb2wud2FpdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaXNfZG9uZSk6CisgICAgICAgIChf
TWVzc2FnZVBvb2wuX3dvcmtlcl9pc19kb25lKToKKyAgICAgICAgKF9NZXNzYWdlUG9vbC5fY2xv
c2UpOgorICAgICAgICAoX01lc3NhZ2VQb29sLmhhbmRsZV9kb25lKToKKyAgICAgICAgKF9NZXNz
YWdlUG9vbC5oYW5kbGVfc3RhcnRlZF90ZXN0KToKKyAgICAgICAgKF9NZXNzYWdlUG9vbC5oYW5k
bGVfZmluaXNoZWRfdGVzdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaGFuZGxlX2ZpbmlzaGVk
X3Rlc3RfbGlzdCk6CisgICAgICAgIChfTWVzc2FnZVBvb2wuaGFuZGxlX2V4Y2VwdGlvbik6Cisg
ICAgICAgIChfTWVzc2FnZVBvb2wuX2xvZ19tZXNzYWdlcyk6CisgICAgICAgIChfTWVzc2FnZVBv
b2wuX2hhbmRsZV93b3JrZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKF9Xb3JrZXJTdGF0ZSk6Cisg
ICAgICAgIChfV29ya2VyU3RhdGUuZm9yKToKKyAgICAgICAgKF9Xb3JrZXJTdGF0ZS5fX2luaXRf
Xyk6CisgICAgICAgIChfV29ya2VyU3RhdGUuX19yZXByX18pOgorICAgICAgICAoX2dldF9icm9r
ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKG1ha2VfYnJva2Vy
KToKKwogMjAxMi0wNy0xMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICB3ZWJraXRweTogbGludCBjb2RlIGluIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IGE2ZDZlYzI2YjNmMGEyODI1YmQxZjFhNTM0ODNk
NzI1M2YxMDFiZGMuLmRlNzJiNThlNzg2N2Q0MTAwZmEzNDI2N2NhZmVjMGY3OGM1ZjZmZjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlci5weQpAQCAtMjY2LDYgKzI2Niw3IEBAIGNsYXNzIFRlc3RSdW5JbnRl
cnJ1cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNz
X18sIChzZWxmLnJlYXNvbiwpCiAKIAorIyBFeHBvcnQgdGhpcyBzbyBjYWxsZXJzIGRvbid0IG5l
ZWQgdG8ga25vdyBhYm91dCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuCiBXb3JrZXJFeGNlcHRpb24g
PSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuV29ya2VyRXhjZXB0aW9uCiAKIApAQCAtMzAwLDcgKzMw
MSw2IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9
IHBvcnQuaG9zdC5maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAg
ICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGVyCi0gICAgICAgIHNlbGYuX21lc3NhZ2VfYnJv
a2VyID0gTm9uZQogICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBOb25lCiAKICAgICAgICAg
c2VsZi5IVFRQX1NVQkRJUiA9ICdodHRwJyArIHBvcnQuVEVTVF9QQVRIX1NFUEFSQVRPUgpAQCAt
MzI4LDEzICszMjgsOSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5f
YWxsX3Jlc3VsdHMgPSBbXQogICAgICAgICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9CisgICAgICAg
IHNlbGYuX3dvcmtlcl9zdGF0cyA9IHt9CiAgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1
bW1hcnkgPSBOb25lCiAKLSAgICAgICAgIyBUaGlzIG1hcHMgd29ya2VyIG5hbWVzIHRvIHRoZSBz
dGF0ZSB3ZSBhcmUgdHJhY2tpbmcgZm9yIGVhY2ggb2YgdGhlbS4KLSAgICAgICAgc2VsZi5fd29y
a2VyX3N0YXRlcyA9IHt9Ci0KLSAgICAgICAgc2VsZi5uYW1lID0gJ21hbmFnZXInCi0KICAgICBk
ZWYgY29sbGVjdF90ZXN0cyhzZWxmLCBhcmdzKToKICAgICAgICAgIiIiRmluZCBhbGwgdGhlIGZp
bGVzIHRvIHRlc3QuCiAKQEAgLTc0NiwxMSArNzQyLDEwIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5
CiAgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzID0gW10KICAgICAgICAgc2VsZi5fZ3JvdXBfc3Rh
dHMgPSB7fQotICAgICAgICBzZWxmLl93b3JrZXJfc3RhdGVzID0ge30KKyAgICAgICAgc2VsZi5f
d29ya2VyX3N0YXRzID0ge30KIAogICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IEZhbHNl
CiAgICAgICAgIGludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBb
XQogCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAu
Li4nKQogICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxmLl9zaGFy
ZF90ZXN0cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNl
bGYuX29wdGlvbnMuZnVsbHlfcGFyYWxsZWwpCkBAIC03NzcsNjUgKzc3MiwyOCBAQCBjbGFzcyBN
YW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5nZXQobnVtX3dvcmtlcnMsIHNlbGYsIHdvcmtlcl9mYWN0b3J5LCBzZWxmLl9w
b3J0Lmhvc3QpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAg
ICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90aW1p
bmdzLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCisgICAgICAgICAgICBy
ZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgc2VsZi5fd29ya2VyX3N0
YXRzLnZhbHVlcygpLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJSBncmFt
bWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQotICAgICAgICBmb3Igd29ya2Vy
X251bWJlciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgd29ya2VyX2Nvbm5l
Y3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCi0g
ICAgICAgICAgICB3b3JrZXJfc3RhdGUgPSBfV29ya2VyU3RhdGUod29ya2VyX251bWJlciwgd29y
a2VyX2Nvbm5lY3Rpb24pCi0gICAgICAgICAgICBzZWxmLl93b3JrZXJfc3RhdGVzW3dvcmtlcl9j
b25uZWN0aW9uLm5hbWVdID0gd29ya2VyX3N0YXRlCi0KLSAgICAgICAgICAgIHRpbWUuc2xlZXAo
c2VsZi5fcG9ydC53b3JrZXJfc3RhcnR1cF9kZWxheV9zZWNzKCkpCi0KLSAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIikKLSAgICAgICAgZm9y
IHNoYXJkIGluIGFsbF9zaGFyZHM6Ci0gICAgICAgICAgICAjIEZJWE1FOiBDaGFuZ2UgJ3Rlc3Rf
bGlzdCcgdG8gJ3NoYXJkJywgbWFrZSBzaGFyZGluZyBwdWJsaWMuCi0gICAgICAgICAgICBtYW5h
Z2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCd0ZXN0X2xpc3QnLCBzaGFyZC5uYW1lLCBzaGFy
ZC50ZXN0X2lucHV0cykKLQotICAgICAgICAjIFdlIHBvc3Qgb25lICdzdG9wJyBtZXNzYWdlIGZv
ciBlYWNoIHdvcmtlci4gQmVjYXVzZSB0aGUgc3RvcCBtZXNzYWdlCi0gICAgICAgICMgYXJlIHNl
bnQgYWZ0ZXIgYWxsIG9mIHRoZSB0ZXN0cywgYW5kIGJlY2F1c2UgZWFjaCB3b3JrZXIgd2lsbCBz
dG9wCi0gICAgICAgICMgcmVhZGluZyBtZXNzc2FnZXMgYWZ0ZXIgcmVjZWl2aW5nIGEgc3RvcCwg
d2UgY2FuIGJlIHN1cmUgZWFjaAotICAgICAgICAjIHdvcmtlciB3aWxsIGdldCBhIHN0b3AgbWVz
c2FnZSBhbmQgaGVuY2UgdGhleSB3aWxsIGFsbCBzaHV0IGRvd24uCi0gICAgICAgIGZvciBfIGlu
IHhyYW5nZShudW1fd29ya2Vycyk6Ci0gICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucG9z
dF9tZXNzYWdlKCdzdG9wJykKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBub3Qg
c2VsZi5pc19kb25lKCk6Ci0gICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9t
ZXNzYWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCi0KLSAgICAgICAgICAgICMgTWFrZSBzdXJlIGFs
bCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9zc2libGUpLgotICAgICAgICAg
ICAgZm9yIHdvcmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpOgotICAg
ICAgICAgICAgICAgIGlmIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5pc19hbGl2ZSgp
OgotICAgICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCdXYWl0aW5nIGZvciB3b3JrZXIgJWQg
dG8gZXhpdCcgJSB3b3JrZXJfc3RhdGUubnVtYmVyKQotICAgICAgICAgICAgICAgICAgICB3b3Jr
ZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uam9pbig1LjApCi0gICAgICAgICAgICAgICAgICAg
IGlmIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5pc19hbGl2ZSgpOgotICAgICAgICAg
ICAgICAgICAgICAgICAgX2xvZy5lcnJvcignV29ya2VyICVkIGRpZCBub3QgZXhpdCBpbiB0aW1l
LicgJSB3b3JrZXJfc3RhdGUubnVtYmVyKQotCisgICAgICAgICAgICB3aXRoIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5nZXQoc2VsZiwgd29ya2VyX2ZhY3RvcnksIG51bV93b3JrZXJzLCBzZWxmLl9w
b3J0Lndvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3MoKSwgc2VsZi5fcG9ydC5ob3N0KSBhcyBwb29s
OgorICAgICAgICAgICAgICAgIHBvb2wucnVuKCgndGVzdF9saXN0Jywgc2hhcmQubmFtZSwgc2hh
cmQudGVzdF9pbnB1dHMpIGZvciBzaGFyZCBpbiBhbGxfc2hhcmRzKQogICAgICAgICBleGNlcHQg
S2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLmZsdXNoKCkKICAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoJ0ludGVycnVwdGVkLCBleGl0aW5nIC4uLicp
Ci0gICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKICAgICAgICAgICAgIGtleWJvYXJk
X2ludGVycnVwdGVkID0gVHJ1ZQogICAgICAgICBleGNlcHQgVGVzdFJ1bkludGVycnVwdGVkRXhj
ZXB0aW9uLCBlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKGUucmVhc29uKQotICAgICAgICAg
ICAgc2VsZi5jYW5jZWxfd29ya2VycygpCiAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUK
LSAgICAgICAgZXhjZXB0IFdvcmtlckV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYuY2FuY2Vs
X3dvcmtlcnMoKQotICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgotICAgICAgICAg
ICAgIyBVbmV4cGVjdGVkIGV4Y2VwdGlvbjsgZG9uJ3QgdHJ5IHRvIGNsZWFuIHVwIHdvcmtlcnMu
CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikKLSAg
ICAgICAgICAgIHNlbGYuY2FuY2VsX3dvcmtlcnMoKQogICAgICAgICAgICAgcmFpc2UKICAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5jbGVhbnVwKCkKICAg
ICAgICAgICAgIHNlbGYuc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKLSAgICAgICAgdGhyZWFk
X3RpbWluZ3MgPSBbd29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5f
d29ya2VyX3N0YXRlcy52YWx1ZXMoKV0KLQogICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBi
ZSBhIGNsYXNzIGluc3RlYWQgb2YgYSB0dXBsZT8KLSAgICAgICAgcmV0dXJuIChpbnRlcnJ1cHRl
ZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCBzZWxmLl9ncm91cF9zdGF0
cywgc2VsZi5fYWxsX3Jlc3VsdHMpCisgICAgICAgIHJldHVybiAoaW50ZXJydXB0ZWQsIGtleWJv
YXJkX2ludGVycnVwdGVkLCBzZWxmLl93b3JrZXJfc3RhdHMudmFsdWVzKCksIHNlbGYuX2dyb3Vw
X3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKIAogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9yeShz
ZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3JldHJ5aW5nOgpAQCAtMTQ0NCw0MCArMTQwMiwx
NyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgPSBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJyZXN1bHRzLmh0
bWwiKQogICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUocmVzdWx0c19m
aWxlbmFtZSkKIAorICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgc291cmNlLCAqYXJncyk6Cisg
ICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGVfJyArIG5hbWUpCisgICAgICAg
IGlmIG1ldGhvZDoKKyAgICAgICAgICAgIHJldHVybiBtZXRob2Qoc291cmNlLCAqYXJncykKKyAg
ICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3Vua25vd24gbWVzc2FnZSAlcyByZWNlaXZlZCBm
cm9tICVzLCBhcmdzPSVzJyAlIChuYW1lLCBzb3VyY2UsIHJlcHIoYXJncykpKQogCi0gICAgZGVm
IGlzX2RvbmUoc2VsZik6Ci0gICAgICAgIHdvcmtlcl9zdGF0ZXMgPSBzZWxmLl93b3JrZXJfc3Rh
dGVzLnZhbHVlcygpCi0gICAgICAgIHJldHVybiB3b3JrZXJfc3RhdGVzIGFuZCBhbGwoc2VsZi5f
d29ya2VyX2lzX2RvbmUod29ya2VyX3N0YXRlKSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9z
dGF0ZXMpCi0KLSAgICAjIEZJWE1FOiBJbmxpbmUgdGhpcyBmdW5jdGlvbi4KLSAgICBkZWYgX3dv
cmtlcl9pc19kb25lKHNlbGYsIHdvcmtlcl9zdGF0ZSk6Ci0gICAgICAgIHJldHVybiB3b3JrZXJf
c3RhdGUuZG9uZQotCi0gICAgZGVmIGNhbmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICBmb3Ig
d29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6Ci0gICAgICAgICAg
ICB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uY2FuY2VsKCkKKyAgICBkZWYgX2hhbmRs
ZV9zdGFydGVkX3Rlc3Qoc2VsZiwgd29ya2VyX25hbWUsIHRlc3RfaW5wdXQsIHRlc3RfdGltZW91
dF9zZWMpOgorICAgICAgICAjIEZJWE1FOiBsb2cgdGhhdCB3ZSd2ZSBzdGFydGVkIGFub3RoZXIg
dGVzdC4KKyAgICAgICAgcGFzcwogCi0gICAgZGVmIGhhbmRsZV9zdGFydGVkX3Rlc3Qoc2VsZiwg
c291cmNlLCB0ZXN0X2luZm8sIGhhbmdfdGltZW91dCk6Ci0gICAgICAgIHdvcmtlcl9zdGF0ZSA9
IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNlXQotICAgICAgICB3b3JrZXJfc3RhdGUuY3VycmVu
dF90ZXN0X25hbWUgPSB0ZXN0X2luZm8udGVzdF9uYW1lCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5u
ZXh0X3RpbWVvdXQgPSB0aW1lLnRpbWUoKSArIGhhbmdfdGltZW91dAotCi0gICAgZGVmIGhhbmRs
ZV9kb25lKHNlbGYsIHNvdXJjZSwgbG9nX21lc3NhZ2VzPU5vbmUpOgotICAgICAgICB3b3JrZXJf
c3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRl
LmRvbmUgPSBUcnVlCi0gICAgICAgIHNlbGYuX2xvZ19tZXNzYWdlcyhsb2dfbWVzc2FnZXMpCi0K
LSAgICBkZWYgaGFuZGxlX2V4Y2VwdGlvbihzZWxmLCBzb3VyY2UsIGV4Y2VwdGlvbl90eXBlLCBl
eGNlcHRpb25fdmFsdWUsIHN0YWNrKToKLSAgICAgICAgaWYgZXhjZXB0aW9uX3R5cGUgaW4gKEtl
eWJvYXJkSW50ZXJydXB0LCBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24pOgotICAgICAgICAg
ICAgcmFpc2UgZXhjZXB0aW9uX3R5cGUoZXhjZXB0aW9uX3ZhbHVlKQotICAgICAgICBfbG9nLmVy
cm9yKCIlcyByYWlzZWQgJXMoJyVzJyk6IiAlICgKLSAgICAgICAgICAgICAgICAgICBzb3VyY2Us
Ci0gICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX3ZhbHVlLl9fY2xhc3NfXy5fX25hbWVfXywK
LSAgICAgICAgICAgICAgICAgICBzdHIoZXhjZXB0aW9uX3ZhbHVlKSkpCi0gICAgICAgIHNlbGYu
X2xvZ193b3JrZXJfc3RhY2soc3RhY2spCi0gICAgICAgIHJhaXNlIFdvcmtlckV4Y2VwdGlvbihz
dHIoZXhjZXB0aW9uX3ZhbHVlKSkKLQotICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdF9saXN0
KHNlbGYsIHNvdXJjZSwgbGlzdF9uYW1lLCBudW1fdGVzdHMsIGVsYXBzZWRfdGltZSk6CisgICAg
ZGVmIF9oYW5kbGVfZmluaXNoZWRfdGVzdF9saXN0KHNlbGYsIHdvcmtlcl9uYW1lLCBsaXN0X25h
bWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKToKICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHNb
bGlzdF9uYW1lXSA9IChudW1fdGVzdHMsIGVsYXBzZWRfdGltZSkKIAogICAgICAgICBkZWYgZmlu
ZChuYW1lLCB0ZXN0X2xpc3RzKToKQEAgLTE0OTIsMjkgKzE0MjcsMTMgQEAgY2xhc3MgTWFuYWdl
cihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlbWFpbmluZ19sb2NrZWRfc2hh
cmRzOgogICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKLSAg
ICBkZWYgaGFuZGxlX2ZpbmlzaGVkX3Rlc3Qoc2VsZiwgc291cmNlLCByZXN1bHQsIGVsYXBzZWRf
dGltZSwgbG9nX21lc3NhZ2VzPU5vbmUpOgotICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93
b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGltZW91dCA9
IE5vbmUKLSAgICAgICAgd29ya2VyX3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lID0gTm9uZQotICAg
ICAgICB3b3JrZXJfc3RhdGUuc3RhdHNbJ3RvdGFsX3RpbWUnXSArPSBlbGFwc2VkX3RpbWUKLSAg
ICAgICAgd29ya2VyX3N0YXRlLnN0YXRzWydudW1fdGVzdHMnXSArPSAxCi0KLSAgICAgICAgc2Vs
Zi5fbG9nX21lc3NhZ2VzKGxvZ19tZXNzYWdlcykKKyAgICBkZWYgX2hhbmRsZV9maW5pc2hlZF90
ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCByZXN1bHQsIGVsYXBzZWRfdGltZSwgbG9nX21lc3NhZ2Vz
PVtdKToKKyAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRzLnNldGRlZmF1bHQod29ya2VyX25hbWUs
IHsnbmFtZSc6IHdvcmtlcl9uYW1lLCAnbnVtX3Rlc3RzJzogMCwgJ3RvdGFsX3RpbWUnOiAwfSkK
KyAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRzW3dvcmtlcl9uYW1lXVsndG90YWxfdGltZSddICs9
IGVsYXBzZWRfdGltZQorICAgICAgICBzZWxmLl93b3JrZXJfc3RhdHNbd29ya2VyX25hbWVdWydu
dW1fdGVzdHMnXSArPSAxCiAgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzLmFwcGVuZChyZXN1bHQp
CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRf
cmVzdWx0X3N1bW1hcnksIHJlc3VsdCkKIAotICAgIGRlZiBfbG9nX21lc3NhZ2VzKHNlbGYsIG1l
c3NhZ2VzKToKLSAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICBs
b2dnaW5nLnJvb3QuaGFuZGxlKG1lc3NhZ2UpCi0KLSAgICBkZWYgX2xvZ193b3JrZXJfc3RhY2so
c2VsZiwgc3RhY2spOgotICAgICAgICB3ZWJraXRweWRpciA9IHNlbGYuX3BvcnQucGF0aF9mcm9t
X3dlYmtpdF9iYXNlKCdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykgKyBzZWxmLl9maWxl
c3lzdGVtLnNlcAotICAgICAgICBmb3IgZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9u
YW1lLCB0ZXh0IGluIHN0YWNrOgotICAgICAgICAgICAgaWYgZmlsZW5hbWUuc3RhcnRzd2l0aCh3
ZWJraXRweWRpcik6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNl
KHdlYmtpdHB5ZGlyLCAnJykKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJXM6JXUgKGluICVz
KScgJSAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9uYW1lKSkKLSAgICAgICAgICAg
IF9sb2cuZXJyb3IoJyAgICAlcycgJSB0ZXh0KQotCiAKIGRlZiByZWFkX3Rlc3RfZmlsZXMoZnMs
IGZpbGVuYW1lcywgdGVzdF9wYXRoX3NlcGFyYXRvcik6CiAgICAgdGVzdHMgPSBbXQpAQCAtMTU2
MywyMCArMTQ4MiwzIEBAIGRlZiBuYXR1cmFsX3NvcnRfa2V5KHN0cmluZ190b19zcGxpdCk6CiAg
ICAgICAgICAgICByZXR1cm4gdmFsCiAKICAgICByZXR1cm4gW3RyeWludChjaHVuaykgZm9yIGNo
dW5rIGluIHJlLnNwbGl0KCcoXGQrKScsIHN0cmluZ190b19zcGxpdCldCi0KLQotY2xhc3MgX1dv
cmtlclN0YXRlKG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgdGhlIG1hbmFnZXIgdG8gdXNl
IHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB3b3JrZXJzLiIiIgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKToKLSAgICAgICAgc2VsZi53
b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCi0gICAgICAgIHNlbGYubnVtYmVy
ID0gbnVtYmVyCi0gICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCi0gICAgICAgIHNlbGYuY3VycmVu
dF90ZXN0X25hbWUgPSBOb25lCi0gICAgICAgIHNlbGYubmV4dF90aW1lb3V0ID0gTm9uZQotICAg
ICAgICBzZWxmLnN0YXRzID0ge30KLSAgICAgICAgc2VsZi5zdGF0c1snbmFtZSddID0gd29ya2Vy
X2Nvbm5lY3Rpb24ubmFtZQotICAgICAgICBzZWxmLnN0YXRzWydudW1fdGVzdHMnXSA9IDAKLSAg
ICAgICAgc2VsZi5zdGF0c1sndG90YWxfdGltZSddID0gMAotCi0gICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgotICAgICAgICByZXR1cm4gIl9Xb3JrZXJTdGF0ZSgiICsgc3RyKHNlbGYuX19kaWN0X18p
ICsgIikiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKaW5k
ZXggMmRiOTMwMTQzOTk1NzRiNjkwN2I5YWM5YTdkMmZkNDRjODYxMDI0MC4uNmZjMGViMjIwZTIx
ZWM1YTE4MjkzOTc1YmVhODM0NDQ1MjJmMjdmOCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfd29ya2VyX2Jyb2tlci5weQpAQCAtMjYsNDQgKzI2LDcgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLSIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnZXMgYW5kIGNv
bmN1cnJlbmN5IGZvciBydW4td2Via2l0LXRlc3RzLgotCi1UaGlzIG1vZHVsZSBpbXBsZW1lbnRz
IGEgbWVzc2FnZSBicm9rZXIgdGhhdCBjb25uZWN0cyB0aGUgbWFuYWdlciB0byB0aGUKLXdvcmtl
cnM6IGl0IHByb3ZpZGVzIGEgbWVzc2FnaW5nIGFic3RyYWN0aW9uIGFuZCBtZXNzYWdlIGxvb3Bz
IChidWlsZGluZyBvbgotdG9wIG9mIG1lc3NhZ2VfYnJva2VyKSwgYW5kIGhhbmRsZXMgc3RhcnRp
bmcgd29ya2VycyBieSBsYXVuY2hpbmcgcHJvY2Vzc2VzLgotCi1UaGVyZSBhcmUgYSBsb3Qgb2Yg
Y2xhc3NlcyBhbmQgb2JqZWN0cyBpbnZvbHZlZCBpbiBhIGZ1bGx5IGNvbm5lY3RlZCBzeXN0ZW0u
Ci1UaGV5IGludGVyYWN0IG1vcmUgb3IgbGVzcyBsaWtlOgotCi0gIE1hbmFnZXIgIC0tPiAgX0lu
bGluZU1hbmFnZXIgLS0tPiBfSW5saW5lV29ya2VyIDwtPiBXb3JrZXIKLSAgICAgXiAgICAgICAg
ICAgICAgICAgICAgXCAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgIF4KLSAgICAgfCAgICAg
ICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwKLSAgICAgXC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICBCcm9rZXIgICAtLS0tLS0tLS0tLS0tLS0tLwotCi1UaGUg
YnJva2VyIHNpbXBseSBkaXN0cmlidXRlcyBtZXNzYWdlcyBvbnRvIHRvcGljcyAobmFtZWQgcXVl
dWVzKTsgdGhlIGFjdHVhbAotcXVldWVzIHRoZW1zZWx2ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBj
YWxsZXIsIGFzIHRoZSBxdWV1ZSdzIGltcGxlbWVudGF0aW9uCi1yZXF1aXJlbWVudHMgdmFyaWVz
IHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIGNvbmN1cnJlbmN5IG1vZGVsCi0obm9uZS90
aHJlYWRzL3Byb2Nlc3NlcykuCi0KLUluIG9yZGVyIGZvciBzaGFyZWQtbm90aGluZyBtZXNzYWdp
bmcgYmV0d2VlbiBwcm9jZXNzaW5nIHRvIGJlIHBvc3NpYmxlLAotTWVzc2FnZXMgbXVzdCBiZSBw
aWNrbGFibGUuCi0KLVRoZSBtb2R1bGUgZGVmaW5lcyBvbmUgaW50ZXJmYWNlIGFuZCB0d28gY2xh
c3Nlcy4gQ2FsbGVycyBvZiB0aGlzIHBhY2thZ2UKLW11c3QgaW1wbGVtZW50IHRoZSBCcm9rZXJD
bGllbnQgaW50ZXJmYWNlLCBhbmQgbW9zdCBjYWxsZXJzIHdpbGwgY3JlYXRlCi1fQnJva2VyQ29u
bmVjdGlvbnMgYXMgd2VsbCBhcyBCcm9rZXJzLgotCi1UaGUgY2xhc3NlcyByZWxhdGUgdG8gZWFj
aCBvdGhlciBhczoKLQotICAgIEJyb2tlckNsaWVudCAgIC0tLS0tLT4gICAgX0Jyb2tlckNvbm5l
Y3Rpb24KLSAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICB2Ci0gICAgICAgICBcLS0tLS0tLS0tLS0tLS0tLSAgICAg
IF9Ccm9rZXIKLQotKFRoZSBCcm9rZXJDbGllbnQgbmV2ZXIgY2FsbHMgYnJva2VyIGRpcmVjdGx5
IGFmdGVyIGl0IGlzIGNyZWF0ZWQsIG9ubHkKLV9Ccm9rZXJDb25uZWN0aW9uLiAgX0Jyb2tlckNv
bm5lY3Rpb24gcGFzc2VzIGEgcmVmZXJlbmNlIHRvIEJyb2tlckNsaWVudCB0bwotX0Jyb2tlciwg
YW5kIF9Ccm9rZXIgb25seSBpbnZva2VzIHRoYXQgcmVmZXJlbmNlLCBuZXZlciB0YWxraW5nIGRp
cmVjdGx5IHRvCi1Ccm9rZXJDb25uZWN0aW9uKS4KLSIiIgorIiIiTW9kdWxlIGZvciBoYW5kbGlu
ZyBtZXNzYWdlcyBhbmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuIiIiCiAKIGlt
cG9ydCBjUGlja2xlCiBpbXBvcnQgbG9nZ2luZwpAQCAtNzIsNiArMzUsNyBAQCBpbXBvcnQgb3B0
cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc3lzCitpbXBvcnQgdGltZQog
aW1wb3J0IHRyYWNlYmFjawogCiAKQEAgLTkwLDcgKzU0LDEwNiBAQCBNQU5BR0VSX1RPUElDID0g
J21hbmFnZXJzJwogQU5ZX1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJwogCiAKLWRlZiBnZXQobWF4
X3dvcmtlcnMsIGNsaWVudCwgd29ya2VyX2ZhY3RvcnksIGhvc3Q9Tm9uZSk6CitkZWYgZ2V0KGNh
bGxlciwgd29ya2VyX2ZhY3RvcnksIG51bV93b3JrZXJzLCB3b3JrZXJfc3RhcnR1cF9kZWxheV9z
ZWNzPTAuMCwgaG9zdD1Ob25lKToKKyAgICAiIiJSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGV4cG9z
ZXMgYSBydW4oKSBtZXRob2QgdGhhdCB0YWtlcyBhIGxpc3Qgb2YgdGVzdCBzaGFyZHMgYW5kIHJ1
bnMgdGhlbSBpbiBwYXJhbGxlbC4iIiIKKyAgICByZXR1cm4gX01lc3NhZ2VQb29sKGNhbGxlciwg
d29ya2VyX2ZhY3RvcnksIG51bV93b3JrZXJzLCB3b3JrZXJfc3RhcnR1cF9kZWxheV9zZWNzLCBo
b3N0KQorCisKK2NsYXNzIF9NZXNzYWdlUG9vbChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjYWxsZXIsIHdvcmtlcl9mYWN0b3J5LCBudW1fd29ya2Vycywgd29ya2VyX3N0YXJ0dXBf
ZGVsYXlfc2Vjcz0wLjAsIGhvc3Q9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NhbGxlciA9IGNhbGxl
cgorICAgICAgICBzZWxmLl93b3JrZXJfZmFjdG9yeSA9IHdvcmtlcl9mYWN0b3J5CisgICAgICAg
IHNlbGYuX251bV93b3JrZXJzID0gbnVtX3dvcmtlcnMKKyAgICAgICAgc2VsZi5fd29ya2VyX3N0
YXJ0dXBfZGVsYXlfc2VjcyA9IHdvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3MKKyAgICAgICAgc2Vs
Zi5fd29ya2VyX3N0YXRlcyA9IHt9CisgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAg
IHNlbGYubmFtZSA9ICdtYW5hZ2VyJworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3Zh
bHVlLCB0cmFjZWJhY2spOgorICAgICAgICBzZWxmLl9jbG9zZSgpCisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIHJ1bihzZWxmLCBzaGFyZHMpOgorICAgICAgICBtYW5hZ2VyX2Nvbm5l
Y3Rpb24gPSBfZ2V0X2Jyb2tlcihzZWxmLl9udW1fd29ya2Vycywgc2VsZiwgc2VsZi5fd29ya2Vy
X2ZhY3RvcnksIHNlbGYuX2hvc3QpCisgICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5n
ZShzZWxmLl9udW1fd29ya2Vycyk6CisgICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1h
bmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29ya2VyX251bWJlcikKKyAgICAgICAgICAg
IHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3JrZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVj
dGlvbikKKyAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24u
bmFtZV0gPSB3b3JrZXJfc3RhdGUKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5fd29ya2Vy
X3N0YXJ0dXBfZGVsYXlfc2VjcykKKworICAgICAgICBtZXNzYWdlcyA9IGxpc3Qoc2hhcmRzKQor
ICAgICAgICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKKyAgICAgICAgICAgIG1hbmFnZXJfY29u
bmVjdGlvbi5wb3N0X21lc3NhZ2UoKm1lc3NhZ2UpCisKKyAgICAgICAgZm9yIF8gaW4geHJhbmdl
KHNlbGYuX251bV93b3JrZXJzKToKKyAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0
X21lc3NhZ2UoJ3N0b3AnKQorCisgICAgICAgIHNlbGYud2FpdChtYW5hZ2VyX2Nvbm5lY3Rpb24p
CisKKyAgICBkZWYgd2FpdChzZWxmLCBtYW5hZ2VyX2Nvbm5lY3Rpb24pOgorICAgICAgICB0cnk6
CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19kb25lKCk6CisgICAgICAgICAgICAgICAg
bWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisKKyAgICBkZWYgaXNfZG9u
ZShzZWxmKToKKyAgICAgICAgd29ya2VyX3N0YXRlcyA9IHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFs
dWVzKCkKKyAgICAgICAgcmV0dXJuIHdvcmtlcl9zdGF0ZXMgYW5kIGFsbCh3b3JrZXJfc3RhdGUu
ZG9uZSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9zdGF0ZXMpCisKKyAgICBkZWYgX2Nsb3Nl
KHNlbGYpOgorICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMu
dmFsdWVzKCk6CisgICAgICAgICAgICBpZiB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24u
aXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rp
b24uY2FuY2VsKCkKKyAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCdXYWl0aW5nIGZvciB3b3Jr
ZXIgJWQgdG8gZXhpdCcgJSB3b3JrZXJfc3RhdGUubnVtYmVyKQorICAgICAgICAgICAgICAgIHdv
cmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5qb2luKDUuMCkKKyAgICAgICAgICAgICAgICBp
ZiB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKToKKyAgICAgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcignV29ya2VyICVkIGRpZCBub3QgZXhpdCBpbiB0aW1lLicgJSB3
b3JrZXJfc3RhdGUubnVtYmVyKQorCisgICAgZGVmIGhhbmRsZV9kb25lKHNlbGYsIHNvdXJjZSwg
bG9nX21lc3NhZ2VzPU5vbmUpOgorICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJf
c3RhdGVzW3NvdXJjZV0KKyAgICAgICAgd29ya2VyX3N0YXRlLmRvbmUgPSBUcnVlCisgICAgICAg
IHNlbGYuX2xvZ19tZXNzYWdlcyhsb2dfbWVzc2FnZXMpCisKKyAgICBkZWYgaGFuZGxlX3N0YXJ0
ZWRfdGVzdChzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuX2NhbGxlci5oYW5kbGUoJ3N0YXJ0
ZWRfdGVzdCcsICphcmdzKQorCisgICAgZGVmIGhhbmRsZV9maW5pc2hlZF90ZXN0KHNlbGYsICph
cmdzKToKKyAgICAgICAgc2VsZi5fY2FsbGVyLmhhbmRsZSgnZmluaXNoZWRfdGVzdCcsICphcmdz
KQorCisgICAgZGVmIGhhbmRsZV9maW5pc2hlZF90ZXN0X2xpc3Qoc2VsZiwgKmFyZ3MpOgorICAg
ICAgICBzZWxmLl9jYWxsZXIuaGFuZGxlKCdmaW5pc2hlZF90ZXN0X2xpc3QnLCAqYXJncykKKwor
ICAgIGRlZiBoYW5kbGVfZXhjZXB0aW9uKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5faGFu
ZGxlX3dvcmtlcl9leGNlcHRpb24oKmFyZ3MpCisKKyAgICBkZWYgX2xvZ19tZXNzYWdlcyhzZWxm
LCBtZXNzYWdlcyk6CisgICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgorICAgICAgICAg
ICAgbG9nZ2luZy5yb290LmhhbmRsZShtZXNzYWdlKQorCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBfaGFuZGxlX3dvcmtlcl9leGNlcHRpb24oc291cmNlLCBleGNlcHRpb25fdHlwZSwgZXhj
ZXB0aW9uX3ZhbHVlLCBzdGFjayk6CisgICAgICAgIGlmIGV4Y2VwdGlvbl90eXBlID09IEtleWJv
YXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uX3R5cGUoZXhjZXB0aW9u
X3ZhbHVlKQorICAgICAgICBfbG9nLmVycm9yKCIlcyByYWlzZWQgJXMoJyVzJyk6IiAlICgKKyAg
ICAgICAgICAgICAgICAgICBzb3VyY2UsIGV4Y2VwdGlvbl92YWx1ZS5fX2NsYXNzX18uX19uYW1l
X18sIHN0cihleGNlcHRpb25fdmFsdWUpKSkKKyAgICAgICAgcmFpc2UgV29ya2VyRXhjZXB0aW9u
KHN0cihleGNlcHRpb25fdmFsdWUpKQorCisKK2NsYXNzIF9Xb3JrZXJTdGF0ZShvYmplY3QpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKToKKyAgICAg
ICAgc2VsZi53b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCisgICAgICAgIHNl
bGYubnVtYmVyID0gbnVtYmVyCisgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisKKyAgICBkZWYg
X19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX1dvcmtlclN0YXRlKCIgKyBzdHIoc2Vs
Zi5fX2RpY3RfXykgKyAiKSIKKworCitkZWYgX2dldF9icm9rZXIobWF4X3dvcmtlcnMsIGNsaWVu
dCwgd29ya2VyX2ZhY3RvcnksIGhvc3Q9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGEgY29ubmVjdGlv
biB0byBhIG1hbmFnZXIvd29ya2VyIG1lc3NhZ2VfYnJva2VyCiAKICAgICBBcmdzOgpAQCAtMzk3
LDYgKzQ2MCw3IEBAIGNsYXNzIF9Xb3JrZXJDb25uZWN0aW9uKF9Ccm9rZXJDb25uZWN0aW9uKToK
ICAgICBkZWYgam9pbihzZWxmLCB0aW1lb3V0KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcgogCisgICAgIyBGSVhNRTogcmVuYW1lIHRvIHlpZWxkX3RvX2NhbGxlcigpLgogICAg
IGRlZiB5aWVsZF90b19icm9rZXIoc2VsZik6CiAgICAgICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93
b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CmluZGV4
IDQxMWY0NDk0NTE3M2VmNjM0OTUyMWI5ODA3NDFiY2QzNjYyMDNkMzguLmY4MmZkNTU5Nzk5MDZh
NDgxOTIwMzkxZjMyMjYzZGQ3MjBlMmYyMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKQEAgLTUxLDcgKzUxLDcgQEAg
ZGVmIG1ha2VfYnJva2VyKG1hbmFnZXIsIG1heF93b3JrZXJzLCBzdGFydF9xdWV1ZT1Ob25lLCBz
dG9wX3F1ZXVlPU5vbmUpOgogICAgIGdsb2JhbCBzdG9wcGluZ19xdWV1ZQogICAgIHN0YXJ0aW5n
X3F1ZXVlID0gc3RhcnRfcXVldWUKICAgICBzdG9wcGluZ19xdWV1ZSA9IHN0b3BfcXVldWUKLSAg
ICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChtYXhfd29ya2VycywgbWFuYWdlciwg
X1Rlc3RXb3JrZXIpCisgICAgcmV0dXJuIG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fZ2V0X2Jyb2tl
cihtYXhfd29ya2VycywgbWFuYWdlciwgX1Rlc3RXb3JrZXIpCiAKIAogY2xhc3MgX1Rlc3RXb3Jr
ZXIob2JqZWN0KToK
</data>

          </attachment>
      

    </bug>

</bugzilla>