<?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>50381</bug_id>
          
          <creation_ts>2010-12-02 02:45:25 -0800</creation_ts>
          <short_desc>nrwt multiprocessing - add in actual multiprocessing code</short_desc>
          <delta_ts>2010-12-14 20:52:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>50375</dependson>
          <blocked>49566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316058</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 02:45:25 -0800</bug_when>
    <thetext>nrwt multiprocessing - add in actual multiprocessing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316060</commentid>
    <comment_count>1</comment_count>
      <attachid>75362</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 02:48:07 -0800</bug_when>
    <thetext>Created attachment 75362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316062</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 02:54:48 -0800</bug_when>
    <thetext>*** Bug 49567 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316063</commentid>
    <comment_count>3</comment_count>
      <attachid>75363</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 03:00:24 -0800</bug_when>
    <thetext>Created attachment 75363
ignore - wrong bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316064</commentid>
    <comment_count>4</comment_count>
      <attachid>75362</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 03:01:12 -0800</bug_when>
    <thetext>Comment on attachment 75362
Patch

whoops ... wrong bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316198</commentid>
    <comment_count>5</comment_count>
      <attachid>75362</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-02 09:24:55 -0800</bug_when>
    <thetext>Comment on attachment 75362
Patch

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

Other than the super() call, I think this is OK.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:370
&gt; +            super(_MultiProcessBroker._Worker, self).__init__(broker,

Interesting.  I was just reading this: http://fuhm.net/super-harmful/  I&apos;m not sure super() is what we want in this MI setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316199</commentid>
    <comment_count>6</comment_count>
      <attachid>75362</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-02 09:25:35 -0800</bug_when>
    <thetext>Comment on attachment 75362
Patch

r- since that constructor isn&apos;t probably doing what you want (it&apos;s only causing one of the parent classes to be __init__&apos;d too... which may or may not matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316324</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 12:15:25 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 75362 [details])
&gt; r- since that constructor isn&apos;t probably doing what you want (it&apos;s only causing one of the parent classes to be __init__&apos;d too... which may or may not matter.

super(_MultiProcessBroker._Worker, self) == dump_render_tree_thread.Worker.__init__()

That code does:

super(dump_render_tree_thread.Worker, self) == multiprocessing.Process.__init()

So it works fine, and, in my admittedly somewhat shaky understanding of MI in Python, is how this code has to be written for drt_thread.Worker to know how to call the correct next method in the MRO.

From threads on the Google internal python-users@ list, Guide mentioned that the post you linked to is dated and somewhat misleading. I asked for a recommendation on the best way to do what I&apos;m trying to do here, but have yet to get a reply.

There are two possible other options that I can think of.

1) have MultiProcessBroker._Worker init both subclasses (and not use super). drt_thread.Worker only initialize itself and not call anything else (making it more like a mixin or a trait).

2) use delegation or aggregation instead of inheritance in the first place. This is the way I originally did this, but it was clunky and the naming was awkward. That said, it&apos;s also a bit more testable, depending on how it&apos;s coded, because I could make drt_thread.Worker a parameter that gets passed in, and which would remove the dependency on dump_render_tree_thread.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317573</commentid>
    <comment_count>8</comment_count>
      <attachid>75682</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-06 05:36:13 -0800</bug_when>
    <thetext>Created attachment 75682
update w/ new interfaces, aggregation code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317574</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-06 05:38:14 -0800</bug_when>
    <thetext>Please review again. This code uses the new aggregation-style interfaces I&apos;ve added in 50557.

There&apos;s a bunch of code duplication here that would go away if we decided to allow multiple inheritance.

However, if we allow it here and didn&apos;t allow it in the first patches for 50375 (the ones that didn&apos;t use aggregation), we should probably document why it was okay in one place and not okay in another somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317761</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-06 11:55:03 -0800</bug_when>
    <thetext>Since when do we not allow multiple inheritance?  We use it all over the tool/commands/ directory. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317764</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-12-06 11:59:12 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Since when do we not allow multiple inheritance?  We use it all over the tool/commands/ directory. :)

MI is fine for mixins, but that&apos;s not what Dirk&apos;s talking about here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317772</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-06 12:06:56 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Since when do we not allow multiple inheritance?  We use it all over the tool/commands/ directory. :)
&gt; 
&gt; MI is fine for mixins, but that&apos;s not what Dirk&apos;s talking about here.

Yeah, I meant not allow as in &quot;R- its use in this patch&quot;, not banning multiple inheritance generally. 

However, given that, for example, your comment in #4 about super not being the thing to use was wrong AFAICT, and that it took me a bunch of research to figure out what the &quot;right&quot; way to do MI in this setting was prior to that, banning some uses doesn&apos;t seem like a completely bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322489</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 20:52:01 -0800</bug_when>
    <thetext>marking as WONTFIX. will split up the patches differently.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75362</attachid>
            <date>2010-12-02 02:48:07 -0800</date>
            <delta_ts>2010-12-06 05:36:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50381-20101202024806.patch</filename>
            <type>text/plain</type>
            <size>9378</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MzRiNjAwYWVlNTFkZjYwMGVmZDBhMzYxNDg0OWIxOWNlYzQ4Nzk1Li4wNzA5ZGVk
YmQ5NjZkNTg0YzcwN2IyNDJkMGU3MDA4YzVhMjlmZjNkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTItMDIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbnJ3dCBtdWx0aXByb2Nl
c3NpbmcgLSBhZGQgaW4gYWN0dWFsIG11bHRpcHJvY2Vzc2luZyBjb2RlCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkZXBlbmRzIG9uIGJ1ZyA1MDM3NS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAzODEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2Vf
YnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKwogMjAxMC0xMi0wMSAg
RGlyayBQcmFua2UgIDxkcHJhbmVrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2Fn
ZV9icm9rZXIucHkKaW5kZXggZmQxZGY2Y2YyOGU2N2YyMDU3ZmU4N2NhZjI2ZmIyMzRhNmY5MmU3
Ni4uZWZjMzFlMmVjYjRmMzE2M2I4MmRjZTAzMjYwMzg3NTk2NjU4Y2FlYSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
bWVzc2FnZV9icm9rZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkKQEAgLTY2LDYgKzY2LDgg
QEAgZGVmIGdldChwb3J0LCBvcHRpb25zKToKICAgICAgICAgcmV0dXJuIF9JbmxpbmVCcm9rZXIo
cG9ydCwgb3B0aW9ucykKICAgICBpZiB3b3JrZXJfbW9kZWwgPT0gJ3RocmVhZHMnOgogICAgICAg
ICByZXR1cm4gX011bHRpVGhyZWFkZWRCcm9rZXIocG9ydCwgb3B0aW9ucykKKyAgICBpZiB3b3Jr
ZXJfbW9kZWwgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgIHJldHVybiBfTXVsdGlQcm9jZXNzQnJv
a2VyKHBvcnQsIG9wdGlvbnMpCiAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5zdXBwb3J0ZWQgdmFs
dWUgZm9yIC0td29ya2VyLW1vZGVsOiAlcycgJSB3b3JrZXJfbW9kZWwpCiAKIApAQCAtMjg0LDcg
KzI4Niw5IEBAIGNsYXNzIF9NdWx0aVRocmVhZGVkQnJva2VyKF9Xb3JrZXJNZXNzYWdlQnJva2Vy
KToKICAgICAgICAgc2VsZi5fcXVldWVzW01BTkFHRVJdID0gUXVldWUuUXVldWUoKQogICAgICAg
ICBzZWxmLl9xdWV1ZXNbQU5ZX1dPUktFUl0gPSBRdWV1ZS5RdWV1ZSgpCiAKLSAgICAgICAgc2Vs
Zi5fdGhyZWFkcyA9IHt9CisgICAgICAgICMgTWFwcGluZyBvZiB3b3JrZXIgbmFtZXMgdG8gY2hp
bGQgdGhyZWFkcy9wcm9jZXNzZXMsIHdoaWNoIHdlCisgICAgICAgICMgZ2VuZXJpY2FsbHkgY2Fs
bCBjaGlsZHJlbi4KKyAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSB7fQogCiAgICAgY2xhc3MgX1dv
cmtlcihkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5Xb3JrZXIsIHRocmVhZGluZy5UaHJlYWQpOgog
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfbnVtYmVyKToKQEAgLTI5
OSw3ICszMDMsNyBAQCBjbGFzcyBfTXVsdGlUaHJlYWRlZEJyb2tlcihfV29ya2VyTWVzc2FnZUJy
b2tlcik6CiAgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKICAgICAg
ICAgd29ya2VyID0gc2VsZi5fV29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpCiAgICAgICAgIG5h
bWUgPSB3b3JrZXIubmFtZSgpCi0gICAgICAgIHNlbGYuX3RocmVhZHNbbmFtZV0gPSB3b3JrZXIK
KyAgICAgICAgc2VsZi5fY2hpbGRyZW5bbmFtZV0gPSB3b3JrZXIKICAgICAgICAgd29ya2VyLnN0
YXJ0KCkKICAgICAgICAgcmV0dXJuIG5hbWUKIApAQCAtMzIzLDE2ICszMjcsMTYgQEAgY2xhc3Mg
X011bHRpVGhyZWFkZWRCcm9rZXIoX1dvcmtlck1lc3NhZ2VCcm9rZXIpOgogICAgICAgICAgICAg
ICAgICAgICBwYXNzCiAKICAgICBkZWYgY2FuY2VsX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSk6
Ci0gICAgICAgIHNlbGYuX3RocmVhZHNbd29ya2VyX25hbWVdLmNhbmNlbCgpCisgICAgICAgIHNl
bGYuX2NoaWxkcmVuW3dvcmtlcl9uYW1lXS5jYW5jZWwoKQogCiAgICAgZGVmIGpvaW5fd29ya2Vy
KHNlbGYsIHdvcmtlcl9uYW1lLCB0aW1lb3V0KToKLSAgICAgICAgc2VsZi5fdGhyZWFkc1t3b3Jr
ZXJfbmFtZV0uam9pbih0aW1lb3V0KQorICAgICAgICBzZWxmLl9jaGlsZHJlblt3b3JrZXJfbmFt
ZV0uam9pbih0aW1lb3V0KQogCiAgICAgZGVmIHdvcmtlcl9pc19hbGl2ZShzZWxmLCB3b3JrZXJf
bmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl90aHJlYWRzW3dvcmtlcl9uYW1lXS5pc19hbGl2
ZSgpCisgICAgICAgIHJldHVybiBzZWxmLl9jaGlsZHJlblt3b3JrZXJfbmFtZV0uaXNfYWxpdmUo
KQogCiAgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X25h
bWUpOgotICAgICAgICB0aHJlYWQgPSBzZWxmLl90aHJlYWRzW3dvcmtlcl9uYW1lXQorICAgICAg
ICB0aHJlYWQgPSBzZWxmLl9jaGlsZHJlblt3b3JrZXJfbmFtZV0KICAgICAgICAgc3RhY2sgPSBz
ZWxmLl9maW5kX3RocmVhZF9zdGFjayh0aHJlYWQuaWQoKSkKICAgICAgICAgYXNzZXJ0KHN0YWNr
IGlzIG5vdCBOb25lKQogICAgICAgICBfbG9nLmVycm9yKCIlcyAodGlkICVkKSBpcyB3ZWRnZWQg
b24gdGVzdCAlcyIgJQpAQCAtMzUzLDQgKzM1NywyNCBAQCBjbGFzcyBfTXVsdGlUaHJlYWRlZEJy
b2tlcihfV29ya2VyTWVzc2FnZUJyb2tlcik6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdGaWxl
OiAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAoZmlsZW5hbWUsIGxpbmVubywgbmFtZSkpCiAgICAg
ICAgICAgICBpZiBsaW5lOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJXMnICUgbGlu
ZS5zdHJpcCgpKQorCisKK2NsYXNzIF9NdWx0aVByb2Nlc3NCcm9rZXIoX011bHRpVGhyZWFkZWRC
cm9rZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zKToKKyAgICAgICAg
c3VwZXIoX011bHRpUHJvY2Vzc0Jyb2tlciwgc2VsZikuX19pbml0X18ocG9ydCwgb3B0aW9ucykK
KyAgICAgICAgc2VsZi5fcXVldWVzW01BTkFHRVJdID0gbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkK
KyAgICAgICAgc2VsZi5fcXVldWVzW0FOWV9XT1JLRVJdID0gbXVsdGlwcm9jZXNzaW5nLlF1ZXVl
KCkKKworICAgIGNsYXNzIF9Xb3JrZXIoZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuV29ya2VyLCBt
dWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9r
ZXIsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICAgICAgc3VwZXIoX011bHRpUHJvY2Vzc0Jyb2tl
ci5fV29ya2VyLCBzZWxmKS5fX2luaXRfXyhicm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl9udW1iZXIpCisK
KyAgICAgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgICAgIHNlbGYudGVybWluYXRlKCkK
KworICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSwgdGVzdF9uYW1l
KToKKyAgICAgICAgcHJvYyA9IHNlbGYuX2NoaWxkcmVuW3dvcmtlcl9uYW1lXQorICAgICAgICBf
bG9nLmVycm9yKCIlcyAocGlkICVkKSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJQorICAgICAgICAg
ICAgICAgICAgICh3b3JrZXJfbmFtZSwgcHJvYy5waWQsIHRlc3RfbmFtZSkpCiAgICAgICAgIF9s
b2cuZXJyb3IoIiIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21l
c3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CmluZGV4IDY0NmFkNGFkZjMxNjQ4ZTYwMzhmZDdiMzBi
MWM1ZTc5YjZjOTg4ZTcuLjY5NTJmZjUwOTk0ZTJmZWRjMDZlNWQ0ZGZkYjVkYTE2NTZjODA5NDQg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJv
a2VyX3VuaXR0ZXN0LnB5CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFRlc3RUaHJlYWRTdGFja3Mo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzdG9wcGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVl
KCkKICAgICAgICAgY2hpbGRfdGhyZWFkID0gVGVzdFRocmVhZFN0YWNrcy5UaHJlYWQoc3RhcnRp
bmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKQogICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQoKQot
ICAgICAgICBicm9rZXIuX3RocmVhZHNbY2hpbGRfdGhyZWFkLm5hbWUoKV0gPSBjaGlsZF90aHJl
YWQKKyAgICAgICAgYnJva2VyLl9jaGlsZHJlbltjaGlsZF90aHJlYWQubmFtZSgpXSA9IGNoaWxk
X3RocmVhZAogICAgICAgICBtc2cgPSBzdGFydGluZ19xdWV1ZS5nZXQoKQogCiAgICAgICAgIGJy
b2tlci5sb2dfd2VkZ2VkX3dvcmtlcihjaGlsZF90aHJlYWQubmFtZSgpLCAndGVzdF9uYW1lJykK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbWFjLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKaW5kZXggZDFjMzgzYzEzZWMyZjEzYWY1ZmIxZjE1
NDA1NzljNGM4ODlmZGQ2My4uN2Q3MDRjM2E4OWFmNTRhZDBkYWYwNzQ4YjRkODg5YTYyMmFjZTRj
ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9tYWMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKQEAgLTYyLDE1ICs2Miw2IEBAIGNsYXNz
IENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICAgICAgICAg
ICAgICAgICAnTWFjQnVpbGRJbnN0cnVjdGlvbnMnKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAK
LSAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6Ci0gICAgICAgICMgRklYTUU6
IHdlIG5lZWQgdG8gcnVuIHNpbmdsZS10aHJlYWRlZCBmb3Igbm93LiBTZWUKLSAgICAgICAgIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg1NTMuIFVuZm9ydHVuYXRl
bHkgdGhpcwotICAgICAgICAjIHJvdXRpbmUgaXMgY2FsbGVkIHJpZ2h0IGJlZm9yZSB0aGUgbG9n
Z2VyIGlzIGNvbmZpZ3VyZWQsIHNvIGlmIHdlCi0gICAgICAgICMgdHJ5IHRvIF9sb2cud2Fybmlu
ZygpLCBpdCBnZXRzIHRocm93biBhd2F5LgotICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoIkRlZmF1bHRpbmcgdG8gb25lIGNoaWxkIC0gc2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODU1M1xuIikKLSAgICAgICAgcmV0dXJuIDEK
LQogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgIiIibmFtZSBmb3IgdGhpcyBw
b3J0J3MgZXF1aXZhbGVudCBvZiBEdW1wUmVuZGVyVHJlZS4iIiIKICAgICAgICAgaWYgc2VsZi5n
ZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDY5NmUzMzk4ZWE0YjI4YWM3NjIy
NTkwN2RjMzYyZmZjM2ZiODZmOWUuLjcyZjkxZDgzODIxNWFmNGJjNDRmMWRjMWYwNjU1ZGFkYzdk
MzM2ZmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5CkBAIC00NywxNSArNDcsNiBAQCBjbGFzcyBNYWNQb3J0KFdlYktp
dFBvcnQpOgogICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgncG9ydF9uYW1lJywgJ21hYycgKyBz
ZWxmLnZlcnNpb24oKSkKICAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJn
cykKIAotICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKLSAgICAgICAgIyBG
SVhNRTogbmV3LXJ1bi13ZWJraXQtdGVzdHMgaXMgdW5zdGFibGUgb24gTWFjIHJ1bm5pbmcgbW9y
ZSB0aGFuCi0gICAgICAgICMgZm91ciB0aHJlYWRzIGluIHBhcmFsbGVsLgotICAgICAgICAjIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2MjIKLSAgICAgICAg
Y2hpbGRfcHJvY2Vzc2VzID0gV2ViS2l0UG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxm
KQotICAgICAgICBpZiBjaGlsZF9wcm9jZXNzZXMgPiA0OgotICAgICAgICAgICAgcmV0dXJuIDQK
LSAgICAgICAgcmV0dXJuIGNoaWxkX3Byb2Nlc3NlcwotCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJj
aF9wYXRoKHNlbGYpOgogICAgICAgICBwb3J0X25hbWVzID0gW10KICAgICAgICAgaWYgc2VsZi5f
bmFtZSA9PSAnbWFjLXRpZ2VyJzoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDc2OTYy
MDJiYmU3MzkzOWI3Y2Y4NzNhMDJkNzkzZDc1NTljNzRmZGIuLjVmNWEyNDZhMzgwMTk1ZjIzNDQ5
MGFjYmMxODU2NGI4ZDY0ZmY1N2YgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMTY1
OSw4ICsxNjU5LDggQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAgIGhl
bHA9Ik51bWJlciBvZiBEdW1wUmVuZGVyVHJlZXMgdG8gcnVuIGluIHBhcmFsbGVsLiIpLAogICAg
ICAgICAjIEZJWE1FOiBEaXNwbGF5IGRlZmF1bHQgbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyB0
aGF0IHdpbGwgcnVuLgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXItbW9k
ZWwiLCBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAgIGRlZmF1bHQ9InRocmVhZHMiLCBoZWxw
PSgiY29udHJvbHMgd29ya2VyIG1vZGVsLiBWYWxpZCB2YWx1ZXMgIgotICAgICAgICAgICAgImFy
ZSAnaW5saW5lJyBhbmQgJ3RocmVhZHMnIChkZWZhdWx0OiAlZGVmYXVsdCkuIikpLAorICAgICAg
ICAgICAgZGVmYXVsdD0icHJvY2Vzc2VzIiwgaGVscD0oImNvbnRyb2xzIHdvcmtlciBtb2RlbC4g
VmFsaWQgdmFsdWVzICIKKyAgICAgICAgICAgICJhcmUgJ2lubGluZScsICd0aHJlYWRzJywgYW5k
ICdwcm9jZXNzZXMnIChkZWZhdWx0OiAlZGVmYXVsdCkuIikpLAogICAgICAgICBvcHRwYXJzZS5t
YWtlX29wdGlvbigiLS1leHBlcmltZW50YWwtZnVsbHktcGFyYWxsZWwiLAogICAgICAgICAgICAg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhlbHA9InJ1
biBhbGwgdGVzdHMgaW4gcGFyYWxsZWwiKSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CmluZGV4IGIxMWZkZDJkNTZmMDBlZDA1MjMwMGE1NmE3Zjk1OGJkMGIzNTc4
YjMuLmFmZDcwMTJhMGVhMTQ5YzlmNWZkNWYwNmMyOWJhODE5MzM1ODkzZDEgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNDA4LDggKzQwOCw3IEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBhc3NpbmdfcnVuKFsnLS13b3JrZXItbW9kZWwnLCAndGhyZWFkcyddKSkKIAogICAgIGRlZiB0
ZXN0X3dvcmtlcl9tb2RlbF9fcHJvY2Vzc2VzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nX3J1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
WyctLXdvcmtlci1tb2RlbCcsICdwcm9jZXNzZXMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBhc3NpbmdfcnVuKFsnLS13b3JrZXItbW9kZWwnLCAncHJvY2Vzc2VzJ10pKQogCiAgICAgZGVm
IHRlc3Rfd29ya2VyX21vZGVsX191bmtub3duKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nX3J1biwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75363</attachid>
            <date>2010-12-02 03:00:24 -0800</date>
            <delta_ts>2010-12-02 03:01:28 -0800</delta_ts>
            <desc>ignore - wrong bug</desc>
            <filename>bug-50381-20101202030022.patch</filename>
            <type>text/plain</type>
            <size>87953</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZThlYTZlNTdiM2Y4YzQ2M2ZkMDE3MTA3YjRhZTkzZDY0ODNkOGE0Li4wNzA5ZGVk
YmQ5NjZkNTg0YzcwN2IyNDJkMGU3MDA4YzVhMjlmZjNkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBA
CisyMDEwLTEyLTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5yd3QgbXVsdGlwcm9j
ZXNzaW5nIC0gYWRkIGluIGFjdHVhbCBtdWx0aXByb2Nlc3NpbmcgY29kZQorCisgICAgICAgIFRo
aXMgcGF0Y2ggZGVwZW5kcyBvbiBidWcgNTAzNzUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMzgxCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdl
X2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21hYy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKKzIwMTAtMTItMDEg
IERpcmsgUHJhbmtlICA8ZHByYW5la0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IGFjdHVh
bGx5IGltcGxlbWVudCBtZXNzYWdpbmcgYmV0d2VlbgorICAgICAgICB0aHJlYWRzLgorICAgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gYnVnIDUwMzc0LgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3NQorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCisyMDEwLTEyLTAxICBEaXJrIFByYW5rZSAgPGRw
cmFua2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIG5yd3QgbXVsdGlwcm9jZXNzaW5nIC0gbW92ZSBsb2dpYyBiYWNrIGludG8g
cnVuX3dlYmtpdF90ZXN0cworCisgICAgICAgIFRoaXMgY2hhbmdlIG1vdmVzIGEgYnVuY2ggb2Yg
bG9naWMgdGhhdCBJIGhhZCBwdXQgaW50bworICAgICAgICBtZXNzYWdlX2Jyb2tlciBiYWNrIGlu
dG8gcnVuX3dlYmtpdF90ZXN0cywgaW4gYSBzbGlnaHRseQorICAgICAgICBkaWZmZXJlbnQgZm9y
bWF0LiBXb3JrZXJNZXNzYWdlQnJva2VyIG5lZWRlZCB0byBiZWNvbWUgbGVzcyBhd2FyZSBvZgor
ICAgICAgICB0aGUgbG9naWMgdGhlIFRlc3RSdW5uZXIgY2xhc3MgdXNlcywgYW5kIG1vcmUgZ2Vu
ZXJpYy4KKyAgICAgICAgRXZlbnR1YWxseSB0aGUgTWVzc2FnZUJyb2tlciB3aWxsIG9ubHkgZG8g
Z2VuZXJpYyBtZXNzYWdpbmcgYW5kCisgICAgICAgIHRocmVhZC9wcm9jZXNzLXBvb2xpbmcsIGFu
ZCAoYWxtb3N0KSBhbGwgb2YgdGhlCisgICAgICAgIHJ1bi13ZWJraXQtdGVzdHMtc3BlY2lmaWMg
bG9naWMgd2lsbCBiZSBtb3ZlZCB0bworICAgICAgICBydW5fd2Via2l0X3Rlc3RzLnB5IGFuZCBk
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weS4KKyAgICAgICAgCisgICAgICAgIFRoZSBiaWdnZXN0
IGNoYW5nZXMgYXJlIHRoYXQgdGhlIEJyb2tlciBjYW4gbm93IHN0YXJ0IGEgc2luZ2xlCisgICAg
ICAgIHdvcmtlciwgYnV0IHRoZSByZXNwb25zaWJpbGl0eSBmb3Igc3RhcnRpbmcgYWxsIG9mIHRo
ZW0gaXMgcHVzaGVkCisgICAgICAgIGJhY2sgdG8gdGhlIFRlc3RSdW5uZXIgKE1hbmFnZXIpLCBh
bmQgdGhlIGxvZ2ljIGZvciBjaGVja2luZyBpZgorICAgICAgICB0aGUgdGhyZWFkcyBhcmUgZG9u
ZSBvciB3ZWRnZWQgaXMgbW92ZWQgYmFjayB0byBUZXN0UnVubmVyLiBXZQorICAgICAgICBhbHNv
IHJlbW92ZSBXb3JrZXJNZXNzYWdlQnJva2VyLmNsZWFudXAgKG5vdCBuZWVkZWQpIGFuZAorICAg
ICAgICBjYW5jZWxfd29ya2VycyAodGhleSBoYXZlIHRvIGJlIGNhbmNlbGxlZCBpbmRpdmlkdWFs
bHkpLgorICAgICAgICAKKyAgICAgICAgVGhlICBtZXNzYWdlX2Jyb2tlciBpcyBub3cgZW5jYXBz
dWxhdGVkIGluc2lkZQorICAgICAgICBUZXN0UnVubmVyLl9ydW5fdGVzdHMoKTsgaXQgb25seSBu
ZWVkcyB0byBleGlzdCB3aGlsZSBhY3R1YWxseQorICAgICAgICBydW5uaW5nIHRoZSB0ZXN0cy4K
KworICAgICAgICBBbHNvLCBkZWxldGUgYSBidW5jaCBvZiB0ZXN0cyBpbiBtZXNzYWdlX2Jyb2tl
cl91bml0dGVzdCB0aGF0IG5vCisgICAgICAgIGxvbmdlciBtYWtlIG11Y2ggc2Vuc2UuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBkZXBlbmRzIG9uIGJ1ZyA1MDM3Mi4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAzNzQKKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVf
dGhyZWFkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c191bml0dGVzdC5weToKKworMjAxMC0xMi0wMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogbWlub3IgY2xlYW51cCBmb3IgbXVsdGlwcm9jZXNz
aW5nIHdvcmsKKworICAgICAgICBUaGlzIGNoYW5nZToKKyAgICAgICAgKiBtb3ZlcyB3b3JrZXIg
bmFtaW5nIGludG8gVGVzdFNoZWxsVGhyZWFkLCBlbGltaW5hdGluZyBhCisgICAgICAgICAgcGFy
YW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBhbmQgcHV0dGluZyB0aGUgcmVzcG9uc2liaWxpdHkg
aW4KKyAgICAgICAgICB0aGUgY29ycmVjdCBwbGFjZS4KKyAgICAgICAgKiBlbGltaW5hdGVzIHRo
ZSBfV29ya2VyU3RhdGUoKSBjbGFzcyBpbiBtZXNzYWdlX2Jyb2tlciwgYmVjYXVzZQorICAgICAg
ICAgIGl0IHR1cm5zIG91dCB0aGF0IHN0YXRlIHJlYWxseSBuZWVkcyB0byBiZSBpbiBydW5fd2Vi
a2l0X3Rlc3RzCisgICAgICAgICogcmVuYW1lcyB0aGUgQnJva2VyIGNsYXNzZXMgdG8gYmUgbW9k
dWxlLXByaXZhdGUuCisgICAgICAgICogZml4ZXMgYSBidW5jaCBvZiBtaW5vciBjb21tZW50aW5n
IGFuZCB3aGl0ZXNwYWNlIGlzc3VlcyB0bworICAgICAgICAgIG1ha2Ugc3Vic2VxdWVudCBwYXRj
aGVzIGEgYml0IGNsZWFyZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkZXBlbmRzIG9uIGJ1ZyA1
MDM2Ny4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTAzNzIKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3Nh
Z2VfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKworMjAxMC0xMi0wMSAg
RGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBhIGJ1bmNoIG9mIGNs
ZWFudXAgLyByZWZhY3RvcmluZyBvZiB0aGUgZmlsZQorICAgICAgICBiZWxvdy4gSXQgbW92ZXMg
YSBidW5jaCBvZiBmcmVlIGZ1bmN0aW9ucyB0byBtZXRob2RzIG9uIHRoZQorICAgICAgICBUZXN0
U2hlbGxUaHJlYWQgY2xhc3MsIGFuZCByZXN0cnVjdHVyZXMgb3RoZXIgbWV0aG9kcyB0byBiZQor
ICAgICAgICBjbG9zZXIgdG8gdGhlIHN0cnVjdHVyZSB3ZSdsbCBuZWVkIGZvciB0aGUgbXVsdGlw
cm9jZXNzaW5nCisgICAgICAgIHJld3JpdGUuCisKKyAgICAgICAgSXQgYWxzbyBtYWtlcyB0aGUg
bG9naWMgb2YgLS1ydW4tc2luZ2x5IGEgKmxvdCogZWFzaWVyIHRvIGZvbGxvdworICAgICAgICBi
eSBuZXN0bGluZyBhbGwgb2YgdGhlIHNlcGFyYXRlLXRocmVhZCBsb2dpYyBpbnRvIGEgc2luZ2xl
CisgICAgICAgIHJvdXRpbmUuCisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIHNlbWFudGlj
IGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwganVzdCBjbGVhbnVwLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM2NworCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90
aHJlYWQucHk6CisKIDIwMTAtMTItMDEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBf
cmVuZGVyX3RyZWVfdGhyZWFkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKaW5kZXgg
ZmRiOGRhNmNjODBiNzNlZTdkZmI3ZDYxZDlkYmJjYmJhYmJjYjQ3OC4uMzc1NDgyN2FlYTU1MGU2
YWU1Nzg5NGZkZjIzNmNjYmVjZDE4OWZkZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90
aHJlYWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKQEAgLTQyLDEwICs0Miw4
IEBAIGltcG9ydCBjb2RlY3MKIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9z
Ci1pbXBvcnQgUXVldWUKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKLWltcG9ydCB0aHJlYWQK
IGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKQEAgLTU0LDYgKzUyLDcgQEAgZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcyBpbXBvcnQgaW1hZ2VfZGlmZgogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcyBpbXBvcnQgdGVzdF90eXBlX2Jhc2UKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlwZXMgaW1wb3J0IHRleHRfZGlmZgogCitp
bXBvcnQgbWVzc2FnZV9icm9rZXIKIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBpbXBvcnQgdGVzdF9v
dXRwdXQKIGltcG9ydCB0ZXN0X3Jlc3VsdHMKQEAgLTYyLDIxNyArNjEsMjIgQEAgX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UuIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICJkdW1wX3JlbmRlcl90cmVlX3RocmVhZCIpCiAKIAot
ZGVmIF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCBmaWxlbmFtZSk6Ci0gICAgIiIiUmV0dXJu
cyBhbiBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVjdC4iIiIKLSAgICByZXR1cm4gdGVzdF9vdXRw
dXQuVGVzdE91dHB1dChwb3J0LmV4cGVjdGVkX3RleHQoZmlsZW5hbWUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcnQuZXhwZWN0ZWRfaW1hZ2UoZmlsZW5hbWUpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmls
ZW5hbWUpKQotCi1kZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQs
IHRlc3RfdHlwZXMsIHRlc3RfYXJncywKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9vdXRwdXQs
IHdvcmtlcl9uYW1lKToKLSAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBEdW1wUmVu
ZGVyVHJlZSBwcm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCi0gICAgbnVtYmVyIG9mIHRlc3RzLCBh
bmQgcmV0dXJucyBhIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcyB0aGUgdGVzdCBwcm9kdWNlZC4KLQot
ICAgIEFyZ3M6Ci0gICAgICBwb3J0OiBwb3J0LXNwZWNpZmljIGhvb2tzCi0gICAgICBvcHRpb25z
OiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVudCBmcm9tIG9wdHBhcnNlCi0gICAgICBwcm9j
OiBhbiBhY3RpdmUgRHVtcFJlbmRlclRyZWUgcHJvY2VzcwotICAgICAgdGVzdF9pbnB1dDogT2Jq
ZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUgYW5kIHRpbWVvdXQKLSAgICAgIHRlc3Rf
dHlwZXM6IGxpc3Qgb2YgdGVzdCB0eXBlcyB0byBzdWJqZWN0IHRoZSBvdXRwdXQgdG8KLSAgICAg
IHRlc3RfYXJnczogYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byBlYWNoIHRlc3QKLSAgICAgIHRl
c3Rfb3V0cHV0OiBhIFRlc3RPdXRwdXQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZiB0
aGUgdGVzdAotICAgICAgd29ya2VyX25hbWU6IHdvcmtlciBuYW1lIGZvciBsb2dnaW5nCi0KLSAg
ICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0Ci0gICAgIiIiCi0gICAgZmFpbHVyZXMgPSBb
XQotCi0gICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6Ci0gICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0
ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQotICAgIGlmIHRlc3Rfb3V0cHV0LnRpbWVvdXQ6
Ci0gICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KCkp
Ci0KLSAgICB0ZXN0X25hbWUgPSBwb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9pbnB1
dC5maWxlbmFtZSkKLSAgICBpZiB0ZXN0X291dHB1dC5jcmFzaDoKLSAgICAgICAgX2xvZy5kZWJ1
ZygiJXMgU3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIgJSAod29ya2VyX25hbWUsIHRlc3RfbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9v
dXRwdXQuZXJyb3IpKQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcHRpb25zLnJl
c3VsdHNfZGlyZWN0b3J5LCB0ZXN0X25hbWUpCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5z
cGxpdGV4dChmaWxlbmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKLSAgICAgICAgcG9ydC5tYXliZV9t
YWtlX2RpcmVjdG9yeShvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKVswXSkKLSAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihmaWxlbmFtZSwgIndiIiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAg
IGZpbGUud3JpdGUodGVzdF9vdXRwdXQuZXJyb3IpCi0gICAgZWxpZiB0ZXN0X291dHB1dC5lcnJv
cjoKLSAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAl
ICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0LmVycm9yKSkKLQotICAgIGV4cGVj
dGVkX3Rlc3Rfb3V0cHV0ID0gX2V4cGVjdGVkX3Rlc3Rfb3V0cHV0KHBvcnQsIHRlc3RfaW5wdXQu
ZmlsZW5hbWUpCi0KLSAgICAjIENoZWNrIHRoZSBvdXRwdXQgYW5kIHNhdmUgdGhlIHJlc3VsdHMu
Ci0gICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgdGltZV9mb3JfZGlmZnMgPSB7fQot
ICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF90eXBlczoKLSAgICAgICAgc3RhcnRfZGlmZl90aW1l
ID0gdGltZS50aW1lKCkKLSAgICAgICAgbmV3X2ZhaWx1cmVzID0gdGVzdF90eXBlLmNvbXBhcmVf
b3V0cHV0KHBvcnQsIHRlc3RfaW5wdXQuZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MsIHRlc3Rfb3V0cHV0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9v
dXRwdXQpCi0gICAgICAgICMgRG9uJ3QgYWRkIGFueSBtb3JlIGZhaWx1cmVzIGlmIHdlIGFscmVh
ZHkgaGF2ZSBhIGNyYXNoLCBzbyB3ZSBkb24ndAotICAgICAgICAjIGRvdWJsZS1yZXBvcnQgdGhv
c2UgdGVzdHMuIFdlIGRvIGRvdWJsZS1yZXBvcnQgZm9yIHRpbWVvdXRzIHNpbmNlCi0gICAgICAg
ICMgd2Ugc3RpbGwgd2FudCB0byBzZWUgdGhlIHRleHQgYW5kIGltYWdlIG91dHB1dC4KLSAgICAg
ICAgaWYgbm90IHRlc3Rfb3V0cHV0LmNyYXNoOgotICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5k
KG5ld19mYWlsdXJlcykKLSAgICAgICAgdGltZV9mb3JfZGlmZnNbdGVzdF90eXBlLl9fY2xhc3Nf
Xy5fX25hbWVfX10gPSAoCi0gICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X2RpZmZfdGlt
ZSkKLQotICAgIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9IHRpbWUudGltZSgpIC0gc3RhcnRf
ZGlmZl90aW1lCi0gICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3RfaW5wdXQu
ZmlsZW5hbWUsIGZhaWx1cmVzLCB0ZXN0X291dHB1dC50ZXN0X3RpbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcywgdGltZV9mb3Jf
ZGlmZnMpCi0KLQotZGVmIF9wYWRfdGltZW91dCh0aW1lb3V0KToKLSAgICAiIiJSZXR1cm5zIGEg
c2FmZSBtdWx0aXBsZSBvZiB0aGUgcGVyLXRlc3QgdGltZW91dCB2YWx1ZSB0byB1c2UKLSAgICB0
byBkZXRlY3QgaHVuZyB0ZXN0IHRocmVhZHMuCi0KLSAgICAiIiIKLSAgICAjIFdoZW4gd2UncmUg
cnVubmluZyBvbmUgdGVzdCBwZXIgRHVtcFJlbmRlclRyZWUgcHJvY2Vzcywgd2UgY2FuCi0gICAg
IyBlbmZvcmNlIGEgaGFyZCB0aW1lb3V0LiAgVGhlIER1bXBSZW5kZXJUcmVlIHdhdGNoZG9nIHVz
ZXMgMi41eAotICAgICMgdGhlIHRpbWVvdXQ7IHdlIHdhbnQgdG8gYmUgbGFyZ2VyIHRoYW4gdGhh
dC4KLSAgICByZXR1cm4gdGltZW91dCAqIDMKLQotCi1kZWYgX21pbGxpc2Vjb25kc190b19zZWNv
bmRzKG1zZWNzKToKLSAgICByZXR1cm4gZmxvYXQobXNlY3MpIC8gMTAwMC4wCi0KLQotZGVmIF9z
aG91bGRfZmV0Y2hfZXhwZWN0ZWRfY2hlY2tzdW0ob3B0aW9ucyk6Ci0gICAgcmV0dXJuIG9wdGlv
bnMucGl4ZWxfdGVzdHMgYW5kIG5vdCAob3B0aW9ucy5uZXdfYmFzZWxpbmUgb3Igb3B0aW9ucy5y
ZXNldF9yZXN1bHRzKQotCi0KLWRlZiBfcnVuX3NpbmdsZV90ZXN0KHBvcnQsIG9wdGlvbnMsIHRl
c3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywgZHJpdmVyLCB3b3JrZXJfbmFtZSk6Ci0g
ICAgIyBGSVhNRTogUHVsbCB0aGlzIGludG8gVGVzdFNoZWxsVGhyZWFkLl9ydW4oKS4KLQotICAg
ICMgVGhlIGltYWdlIGhhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1wIGlm
IHRoZQotICAgICMgY2hlY2tzdW1zIG1hdGNoLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGEgYmxh
bmsgdmFsdWUgaWYgd2UKLSAgICAjIGFyZSBnZW5lcmF0aW5nIGEgbmV3IGJhc2VsaW5lLiAgKE90
aGVyd2lzZSwgYW4gaW1hZ2UgZnJvbSBhCi0gICAgIyBwcmV2aW91cyBydW4gd2lsbCBiZSBjb3Bp
ZWQgaW50byB0aGUgYmFzZWxpbmUuIiIiCi0gICAgaWYgX3Nob3VsZF9mZXRjaF9leHBlY3RlZF9j
aGVja3N1bShvcHRpb25zKToKLSAgICAgICAgdGVzdF9pbnB1dC5pbWFnZV9oYXNoID0gcG9ydC5l
eHBlY3RlZF9jaGVja3N1bSh0ZXN0X2lucHV0LmZpbGVuYW1lKQotICAgIHRlc3Rfb3V0cHV0ID0g
ZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5wdXQpCi0gICAgcmV0dXJuIF9wcm9jZXNzX291dHB1dChw
b3J0LCBvcHRpb25zLCB0ZXN0X2lucHV0LCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dCwgd29ya2VyX25hbWUpCi0KLQotY2xhc3Mg
U2luZ2xlVGVzdFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJUaHJlYWQgd3JhcHBl
ciBmb3IgcnVubmluZyBhIHNpbmdsZSB0ZXN0IGZpbGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcG9ydCwgb3B0aW9ucywgd29ya2VyX251bWJlciwgd29ya2VyX25hbWUsCi0gICAgICAg
ICAgICAgICAgIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncyk6Ci0gICAgICAgICIi
IgotICAgICAgICBBcmdzOgotICAgICAgICAgIHBvcnQ6IG9iamVjdCBpbXBsZW1lbnRpbmcgcG9y
dC1zcGVjaWZpYyBob29rcwotICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBhcmd1bWVu
dCBvYmplY3QgZnJvbSBvcHRwYXJzZQotICAgICAgICAgIHdvcmtlcl9udW1iZXI6IHdvcmtlciBu
dW1iZXIgZm9yIHRlc3RzCi0gICAgICAgICAgd29ya2VyX25hbWU6IGZvciBsb2dnaW5nCi0gICAg
ICAgICAgdGVzdF9pbnB1dDogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUgYW5k
IHRpbWVvdXQKLSAgICAgICAgICB0ZXN0X3R5cGVzOiBBIGxpc3Qgb2YgVGVzdFR5cGUgb2JqZWN0
cyB0byBydW4gdGhlIHRlc3Qgb3V0cHV0Ci0gICAgICAgICAgICAgIGFnYWluc3QuCi0gICAgICAg
ICAgdGVzdF9hcmdzOiBBIFRlc3RBcmd1bWVudHMgb2JqZWN0IHRvIHBhc3MgdG8gZWFjaCBUZXN0
VHlwZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhz
ZWxmKQotICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAgICAgICBzZWxmLl9vcHRpb25zID0g
b3B0aW9ucwotICAgICAgICBzZWxmLl90ZXN0X2lucHV0ID0gdGVzdF9pbnB1dAotICAgICAgICBz
ZWxmLl90ZXN0X3R5cGVzID0gdGVzdF90eXBlcwotICAgICAgICBzZWxmLl90ZXN0X2FyZ3MgPSB0
ZXN0X2FyZ3MKLSAgICAgICAgc2VsZi5fZHJpdmVyID0gTm9uZQorY2xhc3MgV29ya2VyKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX251bWJlcik6CisgICAg
ICAgIHN1cGVyKFdvcmtlciwgc2VsZikuX19pbml0X18oKQorICAgICAgICBzZWxmLl9icm9rZXIg
PSBicm9rZXIKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKLSAg
ICAgICAgc2VsZi5fbmFtZSA9IHdvcmtlcl9uYW1lCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAg
ICAgICBzZWxmLl9jb3ZlcmVkX3J1bigpCi0KLSAgICBkZWYgX2NvdmVyZWRfcnVuKHNlbGYpOgot
ICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGEgc2VwYXJhdGUgcm91dGluZSB0byB3b3JrIGFyb3Vu
ZCBhIGJ1ZwotICAgICAgICAjIGluIGNvdmVyYWdlOiBzZWUgaHR0cDovL2JpdGJ1Y2tldC5vcmcv
bmVkL2NvdmVyYWdlcHkvaXNzdWUvODUuCi0gICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3Bv
cnQuY3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVyKQotICAgICAgICBzZWxmLl9kcml2
ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdCA9IF9ydW5fc2luZ2xlX3Rlc3Qo
c2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfaW5wdXQsIHNlbGYuX3Rlc3RfdHlwZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2FyZ3Ms
IHNlbGYuX2RyaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX25hbWUpCi0gICAgICAgIHNlbGYuX2RyaXZlci5zdG9wKCkKLQotICAgIGRlZiBn
ZXRfdGVzdF9yZXN1bHQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90ZXN0X3Jlc3VsdAot
Ci0KLWNsYXNzIFdhdGNoYWJsZVRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJUaGlz
IGNsYXNzIGFic3RyYWN0cyBhbiBpbnRlcmZhY2UgdXNlZCBieQotICAgIHJ1bl93ZWJraXRfdGVz
dHMuVGVzdFJ1bm5lci5fd2FpdF9mb3JfdGhyZWFkc190b19maW5pc2ggZm9yIHRocmVhZAotICAg
IG1hbmFnZW1lbnQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICB0aHJlYWRp
bmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UK
LSAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBOb25lCi0gICAgICAgIHNlbGYuX25leHRf
dGltZW91dCA9IE5vbmUKLSAgICAgICAgc2VsZi5fdGhyZWFkX2lkID0gTm9uZQotCi0gICAgZGVm
IGNhbmNlbChzZWxmKToKLSAgICAgICAgIiIiU2V0IGEgZmxhZyB0ZWxsaW5nIHRoaXMgdGhyZWFk
IHRvIHF1aXQuIiIiCi0gICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQorICAgICAgICBzZWxm
Ll9uYW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCiAKLSAgICBkZWYgY2xlYXJfbmV4
dF90aW1lb3V0KHNlbGYpOgotICAgICAgICAiIiJNYXJrIGEgZmxhZyB0ZWxsaW5nIHRoaXMgdGhy
ZWFkIHRvIHN0b3Agc2V0dGluZyB0aW1lb3V0cy4iIiIKLSAgICAgICAgc2VsZi5fdGltZW91dCA9
IDAKKyAgICAgICAgc2VsZi5fY2FuY2VsbGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fZG9uZSA9
IEZhbHNlCiAKLSAgICBkZWYgZXhjZXB0aW9uX2luZm8oc2VsZik6Ci0gICAgICAgICIiIklmIHJ1
bigpIHRlcm1pbmF0ZWQgb24gYW4gdW5jYXVnaHQgZXhjZXB0aW9uLCByZXR1cm4gaXQgaGVyZQot
ICAgICAgICAoKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spIHR1cGxlKS4KLSAgICAgICAgUmV0dXJu
cyBOb25lIGlmIHJ1bigpIHRlcm1pbmF0ZWQgbm9ybWFsbHkuIE1lYW50IHRvIGJlIGNhbGxlZCBh
ZnRlcgotICAgICAgICBqb2luaW5nIHRoaXMgdGhyZWFkLiIiIgotICAgICAgICByZXR1cm4gc2Vs
Zi5fZXhjZXB0aW9uX2luZm8KLQotICAgIGRlZiBpZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJu
IGEgdGhyZWFkIGlkZW50aWZpZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl90aHJlYWRfaWQK
LQotICAgIGRlZiBuZXh0X3RpbWVvdXQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgdGlt
ZSB0aGUgdGVzdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYnkuIiIiCi0gICAgICAgIHJldHVybiBz
ZWxmLl9uZXh0X3RpbWVvdXQKLQotCi1jbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhy
ZWFkKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgd29ya2VyX251bWJl
ciwgd29ya2VyX25hbWUsCi0gICAgICAgICAgICAgICAgIGZpbGVuYW1lX2xpc3RfcXVldWUsIHJl
c3VsdF9xdWV1ZSk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgYWxsIHRoZSBsb2NhbCBzdGF0ZSBm
b3IgdGhpcyBEdW1wUmVuZGVyVHJlZSB0aHJlYWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICBwb3J0OiBpbnRlcmZhY2UgdG8gcG9ydC1zcGVjaWZpYyBob29rcwotICAgICAgICAgIG9wdGlv
bnM6IGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZ3VtZW50IGZyb20gb3B0cGFyc2UKLSAgICAgICAg
ICB3b3JrZXJfbnVtYmVyOiBpZGVudGlmaWVyIGZvciBhIHBhcnRpY3VsYXIgd29ya2VyIHRocmVh
ZC4KLSAgICAgICAgICB3b3JrZXJfbmFtZTogZm9yIGxvZ2dpbmcuCi0gICAgICAgICAgZmlsZW5h
bWVfbGlzdF9xdWV1ZTogQSB0aHJlYWQgc2FmZSBRdWV1ZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGxp
c3RzCi0gICAgICAgICAgICAgIG9mIHR1cGxlcyBvZiAoZmlsZW5hbWUsIHVyaSkgcGFpcnMuCi0g
ICAgICAgICAgcmVzdWx0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgd2ls
bCBjb250YWluCi0gICAgICAgICAgICAgIHNlcmlhbGl6ZWQgVGVzdFJlc3VsdCBvYmplY3RzLgot
ICAgICAgICAiIiIKLSAgICAgICAgV2F0Y2hhYmxlVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAg
ICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0g
ICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYu
X25hbWUgPSB3b3JrZXJfbmFtZQotICAgICAgICBzZWxmLl9maWxlbmFtZV9saXN0X3F1ZXVlID0g
ZmlsZW5hbWVfbGlzdF9xdWV1ZQotICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSByZXN1bHRf
cXVldWUKLSAgICAgICAgc2VsZi5fZmlsZW5hbWVfbGlzdCA9IFtdCisgICAgICAgIHNlbGYuX3Bv
cnQgPSBicm9rZXIuX3BvcnQKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGJyb2tlci5fb3B0aW9u
cworICAgICAgICBzZWxmLl9iYXRjaF9jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fYmF0Y2hfc2l6
ZSA9IHNlbGYuX29wdGlvbnMuYmF0Y2hfc2l6ZQogICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25l
Ci0gICAgICAgIHNlbGYuX3Rlc3RfZ3JvdXBfdGltaW5nX3N0YXRzID0ge30KLSAgICAgICAgc2Vs
Zi5fdGVzdF9yZXN1bHRzID0gW10KLSAgICAgICAgc2VsZi5fbnVtX3Rlc3RzID0gMAotICAgICAg
ICBzZWxmLl9zdGFydF90aW1lID0gMAotICAgICAgICBzZWxmLl9zdG9wX3RpbWUgPSAwCiAgICAg
ICAgIHNlbGYuX2hhdmVfaHR0cF9sb2NrID0gRmFsc2UKLSAgICAgICAgc2VsZi5faHR0cF9sb2Nr
X3dhaXRfYmVnaW4gPSAwCi0gICAgICAgIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCA9IDAKIAog
ICAgICAgICBzZWxmLl90ZXN0X3R5cGVzID0gW10KICAgICAgICAgZm9yIGNscyBpbiBzZWxmLl9n
ZXRfdGVzdF90eXBlX2NsYXNzZXMoKToKQEAgLTI4MCwxOSArODQsMTcgQEAgY2xhc3MgVGVzdFNo
ZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkpCiAgICAgICAgIHNl
bGYuX3Rlc3RfYXJncyA9IHNlbGYuX2dldF90ZXN0X2FyZ3Mod29ya2VyX251bWJlcikKIAotICAg
ICAgICAjIEN1cnJlbnQgZ3JvdXAgb2YgdGVzdHMgd2UncmUgcnVubmluZy4KLSAgICAgICAgc2Vs
Zi5fY3VycmVudF9ncm91cCA9IE5vbmUKLSAgICAgICAgIyBOdW1iZXIgb2YgdGVzdHMgaW4gc2Vs
Zi5fY3VycmVudF9ncm91cC4KLSAgICAgICAgc2VsZi5fbnVtX3Rlc3RzX2luX2N1cnJlbnRfZ3Jv
dXAgPSBOb25lCi0gICAgICAgICMgVGltZSBhdCB3aGljaCB3ZSBzdGFydGVkIHJ1bm5pbmcgdGVz
dHMgZnJvbSBzZWxmLl9jdXJyZW50X2dyb3VwLgotICAgICAgICBzZWxmLl9jdXJyZW50X2dyb3Vw
X3N0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgICMgQXBwZW5kIHRlc3RzIHdlJ3JlIHJ1bm5pbmcg
dG8gdGhlIGV4aXN0aW5nIHRlc3RzX3J1bi50eHQgZmlsZS4KKyAgICAgICAgIyBUaGlzIGlzIGNy
ZWF0ZWQgaW4gcnVuX3dlYmtpdF90ZXN0cy5weTpfUHJlcGFyZUxpc3RzQW5kUHJpbnRPdXRwdXQu
CisgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25z
LnJlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRlc3RzX3J1bi50eHQiKQorICAgICAgICBzZWxmLl90ZXN0c19ydW5fZmlsZSA9IGNv
ZGVjcy5vcGVuKHRlc3RzX3J1bl9maWxlbmFtZSwgImEiLCAidXRmLTgiKQogCiAgICAgZGVmIF9n
ZXRfdGVzdF9hcmdzKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICAiIiJSZXR1cm5zIHRo
ZSB0dXBsZSBvZiBhcmd1bWVudHMgZm9yIHRlc3RzIGFuZCBmb3IgRHVtcFJlbmRlclRyZWUuIiIi
CiAgICAgICAgIHRlc3RfYXJncyA9IHRlc3RfdHlwZV9iYXNlLlRlc3RBcmd1bWVudHMoKQogICAg
ICAgICB0ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lID0gc2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUK
ICAgICAgICAgdGVzdF9hcmdzLnJlc2V0X3Jlc3VsdHMgPSBzZWxmLl9vcHRpb25zLnJlc2V0X3Jl
c3VsdHMKLQogICAgICAgICByZXR1cm4gdGVzdF9hcmdzCiAKICAgICBkZWYgX2dldF90ZXN0X3R5
cGVfY2xhc3NlcyhzZWxmKToKQEAgLTMwMSwxNjIgKzEwMywxMjEgQEAgY2xhc3MgVGVzdFNoZWxs
VGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZChpbWFn
ZV9kaWZmLkltYWdlRGlmZikKICAgICAgICAgcmV0dXJuIGNsYXNzZXMKIAotICAgIGRlZiBnZXRf
dGVzdF9ncm91cF90aW1pbmdfc3RhdHMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBkaWN0
aW9uYXJ5IG1hcHBpbmcgdGVzdCBncm91cCB0byBhIHR1cGxlIG9mCi0gICAgICAgIChudW1iZXIg
b2YgdGVzdHMgaW4gdGhhdCBncm91cCwgdGltZSB0byBydW4gdGhlIHRlc3RzKSIiIgotICAgICAg
ICByZXR1cm4gc2VsZi5fdGVzdF9ncm91cF90aW1pbmdfc3RhdHMKLQotICAgIGRlZiBnZXRfdGVz
dF9yZXN1bHRzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHRlc3Rz
IHJ1biBvbiB0aGlzIHRocmVhZC4KLQotICAgICAgICBUaGlzIGlzIHVzZWQgdG8gY2FsY3VsYXRl
IHBlci10aHJlYWQgc3RhdGlzdGljcy4KLQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3Rlc3RfcmVzdWx0cworICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICIiIkF0dGVt
cHQgdG8gYWJvcnQgcHJvY2Vzc2luZyAoYmVzdCBlZmZvcnQpLiIiIgorICAgICAgICBzZWxmLl9j
YW5jZWxsZWQgPSBUcnVlCiAKLSAgICBkZWYgZ2V0X3RvdGFsX3RpbWUoc2VsZik6Ci0gICAgICAg
IHJldHVybiBtYXgoc2VsZi5fc3RvcF90aW1lIC0gc2VsZi5fc3RhcnRfdGltZSAtCi0gICAgICAg
ICAgICAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dhaXRfdGltZSgpLCAwLjApCisgICAgZGVmIGlz
X2RvbmUoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyB1c2VkIGZvciBhc3NlcnRpb24gY2hlY2tp
bmcgaW4gdGhlIG1hbmFnZXIuCisgICAgICAgIHJldHVybiBzZWxmLl9kb25lIG9yIHNlbGYuX2Nh
bmNlbGxlZAogCi0gICAgZGVmIGdldF9udW1fdGVzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9udW1fdGVzdHMKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X25hbWUKIAogICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIkRlbGVnYXRlIG1haW4gd29y
ayB0byBhIGhlbHBlciBtZXRob2QgYW5kIHdhdGNoIGZvciB1bmNhdWdodAotICAgICAgICBleGNl
cHRpb25zLiIiIgotICAgICAgICBzZWxmLl9jb3ZlcmVkX3J1bigpCi0KLSAgICBkZWYgX2NvdmVy
ZWRfcnVuKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGEgc2VwYXJhdGUgcm91dGlu
ZSB0byB3b3JrIGFyb3VuZCBhIGJ1ZwotICAgICAgICAjIGluIGNvdmVyYWdlOiBzZWUgaHR0cDov
L2JpdGJ1Y2tldC5vcmcvbmVkL2NvdmVyYWdlcHkvaXNzdWUvODUuCi0gICAgICAgIHNlbGYuX3Ro
cmVhZF9pZCA9IHRocmVhZC5nZXRfaWRlbnQoKQotICAgICAgICBzZWxmLl9zdGFydF90aW1lID0g
dGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5fbnVtX3Rlc3RzID0gMAorICAgICAgICBleGNlcHRp
b25fbXNnID0gIiIKKyAgICAgICAgX2xvZy5kZWJ1ZygnJXMgc3RhcnRpbmcnICUgc2VsZi5fbmFt
ZSkKKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCclcyBzdGFydGluZycg
JSAoc2VsZi5nZXROYW1lKCkpKQotICAgICAgICAgICAgc2VsZi5fcnVuKHRlc3RfcnVubmVyPU5v
bmUsIHJlc3VsdF9zdW1tYXJ5PU5vbmUpCi0gICAgICAgICAgICBfbG9nLmRlYnVnKCclcyBkb25l
ICglZCB0ZXN0cyknICUgKHNlbGYuZ2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLmdldF9udW1fdGVzdHMoKSkpCisgICAgICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3Nh
Z2VfbG9vcChzZWxmLCBtZXNzYWdlX2Jyb2tlci5BTllfV09SS0VSKQorICAgICAgICAgICAgaWYg
bm90IHNlbGYuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9y
KCIlczogcmFuIG91dCBvZiBtZXNzYWdlcyBpbiB3b3JrZXIgcXVldWUuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICUgc2VsZi5fbmFtZSkKICAgICAgICAgZXhjZXB0IEtl
eWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBzeXMu
ZXhjX2luZm8oKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgaW50ZXJydXB0ZWQiICUgc2Vs
Zi5nZXROYW1lKCkpCisgICAgICAgICAgICBleGNlcHRpb25fbXNnID0gIiwgaW50ZXJydXB0ZWQi
CiAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgU2F2ZSB0aGUgZXhjZXB0aW9uIGZvciBv
dXIgY2FsbGVyIHRvIHNlZS4KLSAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbl9pbmZvID0gc3lz
LmV4Y19pbmZvKCkKLSAgICAgICAgICAgIHNlbGYuX3N0b3BfdGltZSA9IHRpbWUudGltZSgpCi0g
ICAgICAgICAgICBfbG9nLmVycm9yKCclcyBkeWluZywgZXhjZXB0aW9uIHJhaXNlZCcgJSBzZWxm
LmdldE5hbWUoKSkKLQotICAgICAgICBzZWxmLl9zdG9wX3RpbWUgPSB0aW1lLnRpbWUoKQotCi0g
ICAgZGVmIHJ1bl9pbl9tYWluX3RocmVhZChzZWxmLCB0ZXN0X3J1bm5lciwgcmVzdWx0X3N1bW1h
cnkpOgotICAgICAgICAiIiJUaGlzIGhvb2sgYWxsb3dzIHVzIHRvIHJ1biB0aGUgdGVzdHMgZnJv
bSB0aGUgbWFpbiB0aHJlYWQgaWYKLSAgICAgICAgLS1udW0tdGVzdC1zaGVsbHM9PTEsIGluc3Rl
YWQgb2YgaGF2aW5nIHRvIGFsd2F5cyBydW4gdHdvIG9yIG1vcmUKLSAgICAgICAgdGhyZWFkcy4g
VGhpcyBhbGxvd3MgdXMgdG8gZGVidWcgdGhlIHRlc3QgaGFybmVzcyB3aXRob3V0IGhhdmluZyB0
bwotICAgICAgICBkbyBtdWx0aS10aHJlYWRlZCBkZWJ1Z2dpbmcuIiIiCi0gICAgICAgIHNlbGYu
X3J1bih0ZXN0X3J1bm5lciwgcmVzdWx0X3N1bW1hcnkpCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYp
OgotICAgICAgICAiIiJDbGVhbiB1cCBodHRwIGxvY2sgYW5kIHNldCBhIGZsYWcgdGVsbGluZyB0
aGlzIHRocmVhZCB0byBxdWl0LiIiIgotICAgICAgICBzZWxmLl9zdG9wX3NlcnZlcnNfd2l0aF9s
b2NrKCkKLSAgICAgICAgV2F0Y2hhYmxlVGhyZWFkLmNhbmNlbChzZWxmKQotCi0gICAgZGVmIG5l
eHRfdGltZW91dChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlz
IHN1cHBvc2VkIHRvIGZpbmlzaCBieS4iIiIKLSAgICAgICAgaWYgc2VsZi5fbmV4dF90aW1lb3V0
OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dCArIHNlbGYuX2h0dHBfbG9j
a193YWl0X3RpbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90aW1lb3V0Ci0KLSAgICBk
ZWYgX2h0dHBfbG9ja193YWl0X3RpbWUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgdGlt
ZSB3aGF0IGh0dHAgbG9ja2luZyB0YWtlcy4iIiIKLSAgICAgICAgaWYgc2VsZi5faHR0cF9sb2Nr
X3dhaXRfYmVnaW4gPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGlmIHNlbGYu
X2h0dHBfbG9ja193YWl0X2VuZCA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHRpbWUudGltZSgp
IC0gc2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2h0dHBf
bG9ja193YWl0X2VuZCAtIHNlbGYuX2h0dHBfbG9ja193YWl0X2JlZ2luCi0KLSAgICBkZWYgX3J1
bihzZWxmLCB0ZXN0X3J1bm5lciwgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJNYWluIHdv
cmsgZW50cnkgcG9pbnQgb2YgdGhlIHRocmVhZC4gQmFzaWNhbGx5IHdlIHB1bGwgdXJscyBmcm9t
IHRoZQotICAgICAgICBmaWxlbmFtZSBxdWV1ZSBhbmQgcnVuIHRoZSB0ZXN0cyB1bnRpbCB3ZSBy
dW4gb3V0IG9mIHVybHMuCi0KLSAgICAgICAgSWYgdGVzdF9ydW5uZXIgaXMgbm90IE5vbmUsIHRo
ZW4gd2UgY2FsbCB0ZXN0X3J1bm5lci5VcGRhdGVTdW1tYXJ5KCkKLSAgICAgICAgd2l0aCB0aGUg
cmVzdWx0cyBvZiBlYWNoIHRlc3QuIiIiCi0gICAgICAgIGJhdGNoX3NpemUgPSBzZWxmLl9vcHRp
b25zLmJhdGNoX3NpemUKLSAgICAgICAgYmF0Y2hfY291bnQgPSAwCi0KLSAgICAgICAgIyBBcHBl
bmQgdGVzdHMgd2UncmUgcnVubmluZyB0byB0aGUgZXhpc3RpbmcgdGVzdHNfcnVuLnR4dCBmaWxl
LgotICAgICAgICAjIFRoaXMgaXMgY3JlYXRlZCBpbiBydW5fd2Via2l0X3Rlc3RzLnB5Ol9QcmVw
YXJlTGlzdHNBbmRQcmludE91dHB1dC4KLSAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gb3Mu
cGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdHNfcnVuLnR4dCIpCi0gICAgICAgIHRl
c3RzX3J1bl9maWxlID0gY29kZWNzLm9wZW4odGVzdHNfcnVuX2ZpbGVuYW1lLCAiYSIsICJ1dGYt
OCIpCi0KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIHNlbGYuX2NhbmNlbGVk
OgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1Rlc3RpbmcgY2FuY2VsbGVkJykKLSAgICAg
ICAgICAgICAgICB0ZXN0c19ydW5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9maWxlbmFtZV9saXN0KSBpcyAwOgotICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfZ3JvdXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3Rlc3RfZ3JvdXBfdGltaW5nX3N0YXRzW3NlbGYuX2N1cnJlbnRfZ3Jv
dXBdID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX251bV90ZXN0c19pbl9jdXJy
ZW50X2dyb3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc2VsZi5f
Y3VycmVudF9ncm91cF9zdGFydF90aW1lKQotCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2dyb3VwLCBzZWxmLl9maWxlbmFtZV9saXN0ID0g
XAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZW5hbWVfbGlzdF9xdWV1ZS5nZXRf
bm93YWl0KCkKLSAgICAgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3N0b3Bfc2VydmVyc193aXRoX2xvY2soKQotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9raWxsX2R1bXBfcmVuZGVyX3RyZWUoKQotICAgICAgICAgICAgICAgICAgICB0
ZXN0c19ydW5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICAgICAgICAgaWYgc2VsZi5fY3VycmVudF9ncm91cCA9PSAidGVzdHNfdG9faHR0cF9sb2Nr
IjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnRfc2VydmVyc193aXRoX2xvY2soKQot
ICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5faGF2ZV9odHRwX2xvY2s6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3N0b3Bfc2VydmVyc193aXRoX2xvY2soKQotCi0gICAgICAgICAgICAgICAg
c2VsZi5fbnVtX3Rlc3RzX2luX2N1cnJlbnRfZ3JvdXAgPSBsZW4oc2VsZi5fZmlsZW5hbWVfbGlz
dCkKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2dyb3VwX3N0YXJ0X3RpbWUgPSB0aW1l
LnRpbWUoKQotCi0gICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZmlsZW5hbWVfbGlzdC5w
b3AoKQotCi0gICAgICAgICAgICAjIFdlIGhhdmUgYSB1cmwsIHJ1biB0ZXN0cy4KLSAgICAgICAg
ICAgIGJhdGNoX2NvdW50ICs9IDEKLSAgICAgICAgICAgIHNlbGYuX251bV90ZXN0cyArPSAxCi0g
ICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9zaW5nbHk6Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3RfaW5fYW5vdGhlcl90aHJlYWQodGVzdF9pbnB1dCkKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3Rf
aW5fdGhpc190aHJlYWQodGVzdF9pbnB1dCkKLQotICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0
X2lucHV0LmZpbGVuYW1lCi0gICAgICAgICAgICB0ZXN0c19ydW5fZmlsZS53cml0ZShmaWxlbmFt
ZSArICJcbiIpCi0gICAgICAgICAgICBpZiByZXN1bHQuZmFpbHVyZXM6Ci0gICAgICAgICAgICAg
ICAgIyBDaGVjayBhbmQga2lsbCBEdW1wUmVuZGVyVHJlZSBpZiB3ZSBuZWVkIHRvLgotICAgICAg
ICAgICAgICAgIGlmIGxlbihbMSBmb3IgZiBpbiByZXN1bHQuZmFpbHVyZXMKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGYuc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpXSk6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpCi0gICAgICAgICAg
ICAgICAgICAgICMgUmVzZXQgdGhlIGJhdGNoIGNvdW50IHNpbmNlIHRoZSBzaGVsbCBqdXN0IGJv
dW5jZWQuCi0gICAgICAgICAgICAgICAgICAgIGJhdGNoX2NvdW50ID0gMAotICAgICAgICAgICAg
ICAgICMgUHJpbnQgdGhlIGVycm9yIG1lc3NhZ2UocykuCi0gICAgICAgICAgICAgICAgZXJyb3Jf
c3RyID0gJ1xuJy5qb2luKFsnICAnICsgZi5tZXNzYWdlKCkgZm9yCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmIGluIHJlc3VsdC5mYWlsdXJlc10pCi0gICAgICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgZmFpbGVkOlxuJXMiICUgKHNlbGYuZ2V0TmFtZSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVu
YW1lKGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3N0cikpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIHBhc3Nl
ZCIgJSAoc2VsZi5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
b3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKSkKLSAgICAgICAgICAgIHNlbGYu
X3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCi0KLSAgICAgICAgICAgIGlmIGJhdGNo
X3NpemUgPiAwIGFuZCBiYXRjaF9jb3VudCA+PSBiYXRjaF9zaXplOgotICAgICAgICAgICAgICAg
ICMgQm91bmNlIHRoZSBzaGVsbCBhbmQgcmVzZXQgY291bnQuCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKLSAgICAgICAgICAgICAgICBiYXRjaF9jb3VudCA9
IDAKLQotICAgICAgICAgICAgaWYgdGVzdF9ydW5uZXI6Ci0gICAgICAgICAgICAgICAgdGVzdF9y
dW5uZXIudXBkYXRlX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkpCisgICAgICAgICAgICBleGNlcHRp
b25fbXNnID0gIiwgZXhjZXB0aW9uIHJhaXNlZCIKKyAgICAgICAgZmluYWxseToKKyAgICAgICAg
ICAgIF9sb2cuZGVidWcoIiVzIGRvbmUlcyIgJSAoc2VsZi5fbmFtZSwgZXhjZXB0aW9uX21zZykp
CisgICAgICAgICAgICBpZiBleGNlcHRpb25fbXNnOgorICAgICAgICAgICAgICAgIGV4Y19pbmZv
ID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBFeHRyYWN0IHRoZSBz
dGFjayB0cmFjZSBpbnRvIGEgc3RyaW5nPworICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3QoJ2V4
Y2VwdGlvbicsIGV4Y19pbmZvWzBdLCBleGNfaW5mb1sxXSwgTm9uZSkKKyAgICAgICAgICAgIHNl
bGYuX3Bvc3QoJ2RvbmUnKQorICAgICAgICAgICAgc2VsZi5fY2xlYW51cCgpCisKKyAgICBkZWYg
X2NsZWFudXAoc2VsZik6CisgICAgICAgIHNlbGYuX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpCisg
ICAgICAgIGlmIHNlbGYuX2hhdmVfaHR0cF9sb2NrOgorICAgICAgICAgICAgc2VsZi5fc3RvcF9z
ZXJ2ZXJzX3dpdGhfbG9jaygpCisgICAgICAgIGlmIHNlbGYuX3Rlc3RzX3J1bl9maWxlOgorICAg
ICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5f
dGVzdHNfcnVuX2ZpbGUgPSBOb25lCisKKyAgICBkZWYgaGFuZGxlX3Rlc3RfbGlzdChzZWxmLCBz
cmMsIGxpc3RfbmFtZSwgdGVzdF9saXN0KToKKyAgICAgICAgaWYgbGlzdF9uYW1lID09ICJ0ZXN0
c190b19odHRwX2xvY2siOgorICAgICAgICAgICAgc2VsZi5fc3RhcnRfc2VydmVyc193aXRoX2xv
Y2soKQorCisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICBudW1fdGVz
dHMgPSAwCisgICAgICAgIGZvciB0ZXN0X2lucHV0IGluIHRlc3RfbGlzdDoKKyAgICAgICAgICAg
IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5wdXQpCisgICAgICAgICAgICBzZWxmLnlpZWxkX3RvX2Jy
b2tlcigpCisgICAgICAgICAgICBpZiBzZWxmLl9jYW5jZWxsZWQ6CisgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgIG51bV90ZXN0cyArPSAxCisKKyAgICAgICAgZWxhcHNlZF90aW1l
ID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCiAKLSAgICBkZWYgX3J1bl90ZXN0X2luX2Fub3Ro
ZXJfdGhyZWFkKHNlbGYsIHRlc3RfaW5wdXQpOgorICAgICAgICBpZiBzZWxmLl9oYXZlX2h0dHBf
bG9jazoKKyAgICAgICAgICAgIHNlbGYuX3N0b3Bfc2VydmVyc193aXRoX2xvY2soKQorCisgICAg
ICAgIHNlbGYuX3Bvc3QoJ2ZpbmlzaGVkX2xpc3QnLCBsaXN0X25hbWUsIG51bV90ZXN0cywgZWxh
cHNlZF90aW1lKQorCisgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxmKToKKyAgICAgICAgIiIi
U3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzIGlmIHRoZXkgYXJlIG5vdCBydW5uaW5nIGlu
IGEKKyAgICAgICAgZGVkaWNhdGVkIHRocmVhZCBvciBwcm9jZXNzLiIiIgorICAgICAgICBwYXNz
CisKKyAgICBkZWYgaGFuZGxlX3N0b3Aoc2VsZiwgc3JjKToKKyAgICAgICAgIiIiU3RvcCByZWNl
aXZlZCAtIG5vIG1vcmUgdGVzdHMgdG8gcnVuLiIiIgorICAgICAgICBzZWxmLl9kb25lID0gVHJ1
ZQorCisgICAgZGVmIF9wb3N0KHNlbGYsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6Cisg
ICAgICAgIHNlbGYuX2Jyb2tlci5wdXRfbWVzc2FnZShzZWxmLl9uYW1lLCBtZXNzYWdlX2Jyb2tl
ci5NQU5BR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9uYW1l
LCBtZXNzYWdlX2FyZ3MpCisKKyAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgor
ICAgICAgICBzZWxmLl9zZXRfdXBfdGVzdCh0ZXN0X2lucHV0KQorCisgICAgICAgICMgV2UgY2Fs
Y3VsYXRlIGhvdyBsb25nIHdlIGV4cGVjdCB0aGUgdGVzdCB0byB0YWtlLgorICAgICAgICAjCisg
ICAgICAgICMgVGhlIER1bXBSZW5kZXJUcmVlIHdhdGNoZG9nIHVzZXMgMi41eCB0aGUgdGltZW91
dDsgd2Ugd2FudCB0byBiZQorICAgICAgICAjIGxhcmdlciB0aGFuIHRoYXQuIFdlIGFsc28gYWRk
IGEgbGl0dGxlIG1vcmUgcGFkZGluZyBpZiB3ZSdyZQorICAgICAgICAjIHJ1bm5pbmcgdGVzdHMg
aW4gYSBzZXBhcmF0ZSB0aHJlYWQuCisgICAgICAgICMKKyAgICAgICAgIyBOb3RlIHRoYXQgd2Ug
bmVlZCB0byBjb252ZXJ0IHRoZSB0ZXN0IHRpbWVvdXQgZnJvbSBhCisgICAgICAgICMgc3RyaW5n
IHZhbHVlIGluIG1pbGxpc2Vjb25kcyB0byBhIGZsb2F0IGZvciBQeXRob24uCisgICAgICAgIGRy
aXZlcl90aW1lb3V0ID0gMy4wICogZmxvYXQodGVzdF9pbnB1dC50aW1lb3V0KSAvIDEwMDAuMAor
ICAgICAgICB0aHJlYWRfcGFkZGluZyA9IDEuMAorICAgICAgICB0aHJlYWRfdGltZW91dCA9IGRy
aXZlcl90aW1lb3V0ICsgdGhyZWFkX3BhZGRpbmcKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5y
dW5fc2luZ2x5OgorICAgICAgICAgICAgdGVzdF90aW1lb3V0ID0gdGhyZWFkX3RpbWVvdXQKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RfdGltZW91dCA9IGRyaXZlcl90aW1lb3V0CisK
KyAgICAgICAgc2VsZi5fcG9zdCgnc3RhcnRlZF90ZXN0JywgdGVzdF9pbnB1dCwgdGVzdF90aW1l
b3V0KQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisKKyAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ydW5fc2luZ2x5OgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3RfaW5f
YW5vdGhlcl90aHJlYWQodGVzdF9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF90aW1lb3V0KQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3RfaW5fdGhpc190aHJlYWQodGVzdF9p
bnB1dCkKKworICAgICAgICBzZWxmLl90ZWFyX2Rvd25fdGVzdCh0ZXN0X2lucHV0LCByZXN1bHQs
IHRpbWUudGltZSgpIC0gc3RhcnQpCisKKyAgICBkZWYgX3NldF91cF90ZXN0KHNlbGYsIHRlc3Rf
aW5wdXQpOgorICAgICAgICB0ZXN0X2lucHV0LnVyaSA9IHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9f
dXJpKHRlc3RfaW5wdXQuZmlsZW5hbWUpCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9mZXRjaF9l
eHBlY3RlZF9jaGVja3N1bSgpOgorICAgICAgICAgICAgdGVzdF9pbnB1dC5pbWFnZV9jaGVja3N1
bSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oCisgICAgICAgICAgICAgICAgdGVzdF9p
bnB1dC5maWxlbmFtZSkKKworICAgIGRlZiBfc2hvdWxkX2ZldGNoX2V4cGVjdGVkX2NoZWNrc3Vt
KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIG5v
dAorICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSBvciBzZWxmLl9v
cHRpb25zLnJlc2V0X3Jlc3VsdHMpKQorCisgICAgZGVmIF9ydW5fdGVzdF9pbl9hbm90aGVyX3Ro
cmVhZChzZWxmLCB0ZXN0X2lucHV0LCB0aHJlYWRfdGltZW91dCk6CiAgICAgICAgICIiIlJ1biBh
IHRlc3QgaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIGVuZm9yY2luZyBhIGhhcmQgdGltZSBsaW1pdC4K
IAogICAgICAgICBTaW5jZSB3ZSBjYW4gb25seSBkZXRlY3QgdGhlIHRlcm1pbmF0aW9uIG9mIGEg
dGhyZWFkLCBub3QgYW55IGludGVybmFsCkBAIC00NjksMjEgKzIzMCwyMCBAQCBjbGFzcyBUZXN0
U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgUmV0dXJuczoKICAgICAgICAg
ICBBIFRlc3RSZXN1bHQKICAgICAgICAgIiIiCi0gICAgICAgIHdvcmtlciA9IFNpbmdsZVRlc3RU
aHJlYWQoc2VsZi5fcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dvcmtl
cl9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9hcmdzKQotCi0gICAgICAgIHdvcmtlci5z
dGFydCgpCi0KLSAgICAgICAgdGhyZWFkX3RpbWVvdXQgPSBfbWlsbGlzZWNvbmRzX3RvX3NlY29u
ZHMoCi0gICAgICAgICAgICBfcGFkX3RpbWVvdXQoaW50KHRlc3RfaW5wdXQudGltZW91dCkpKQot
ICAgICAgICB0aHJlYWQuX25leHRfdGltZW91dCA9IHRpbWUudGltZSgpICsgdGhyZWFkX3RpbWVv
dXQKLSAgICAgICAgd29ya2VyLmpvaW4odGhyZWFkX3RpbWVvdXQpCi0gICAgICAgIGlmIHdvcmtl
ci5pc0FsaXZlKCk6CisgICAgICAgIHdvcmtlciA9IHNlbGYKKyAgICAgICAgcmVzdWx0ID0gTm9u
ZQorCisgICAgICAgIGRyaXZlciA9IHdvcmtlci5fcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlci5f
d29ya2VyX251bWJlcikKKyAgICAgICAgZHJpdmVyLnN0YXJ0KCkKKworICAgICAgICBjbGFzcyBT
aW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAgZGVmIHJ1bihz
ZWxmKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB3b3JrZXIuX3J1bl9zaW5nbGVfdGVzdChk
cml2ZXIsIHRlc3RfaW5wdXQpCisKKyAgICAgICAgdGhyZWFkID0gU2luZ2xlVGVzdFRocmVhZCgp
CisgICAgICAgIHRocmVhZC5zdGFydCgpCisgICAgICAgIHRocmVhZC5qb2luKHRocmVhZF90aW1l
b3V0KQorICAgICAgICBpZiB0aHJlYWQuaXNBbGl2ZSgpOgogICAgICAgICAgICAgIyBJZiBqb2lu
KCkgcmV0dXJuZWQgd2l0aCB0aGUgdGhyZWFkIHN0aWxsIHJ1bm5pbmcsIHRoZQogICAgICAgICAg
ICAgIyBEdW1wUmVuZGVyVHJlZSBpcyBjb21wbGV0ZWx5IGh1bmcgYW5kIHRoZXJlJ3Mgbm90aGlu
ZwogICAgICAgICAgICAgIyBtb3JlIHdlIGNhbiBkbyB3aXRoIGl0LiAgV2UgaGF2ZSB0byBraWxs
IGFsbCB0aGUKQEAgLTQ5MywxNiArMjUzLDEwIEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRj
aGFibGVUaHJlYWQpOgogICAgICAgICAgICAgIyB0aGF0IHRyYWRlb2ZmIGluIG9yZGVyIHRvIGF2
b2lkIGxvc2luZyB0aGUgcmVzdCBvZiB0aGlzCiAgICAgICAgICAgICAjIHRocmVhZCdzIHJlc3Vs
dHMuCiAgICAgICAgICAgICBfbG9nLmVycm9yKCdUZXN0IHRocmVhZCBodW5nOiBraWxsaW5nIGFs
bCBEdW1wUmVuZGVyVHJlZXMnKQotICAgICAgICAgICAgaWYgd29ya2VyLl9kcml2ZXI6Ci0gICAg
ICAgICAgICAgICAgd29ya2VyLl9kcml2ZXIuc3RvcCgpCiAKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgcmVzdWx0ID0gd29ya2VyLmdldF90ZXN0X3Jlc3VsdCgpCi0gICAgICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvciwgZToKLSAgICAgICAgICAgICMgVGhpcyBnZXRzIHJhaXNlZCBpZiB0aGUg
d29ya2VyIHRocmVhZCBoYXMgYWxyZWFkeSBleGl0ZWQuCi0gICAgICAgICAgICBmYWlsdXJlcyA9
IFtdCi0gICAgICAgICAgICBfbG9nLmVycm9yKCdDYW5ub3QgZ2V0IHJlc3VsdHMgb2YgdGVzdDog
JXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbnB1dC5maWxlbmFtZSkKKyAgICAg
ICAgZHJpdmVyLnN0b3AoKQorCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICBy
ZXN1bHQgPSB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2lucHV0LmZpbGVuYW1lLCBmYWls
dXJlcz1bXSwKICAgICAgICAgICAgICAgICB0ZXN0X3J1bl90aW1lPTAsIHRvdGFsX3RpbWVfZm9y
X2FsbF9kaWZmcz0wLCB0aW1lX2Zvcl9kaWZmcz17fSkKIApAQCAtNTE2LDQxICsyNzAsMTMwIEBA
IGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogCiAgICAgICAgIFJldHVy
bnM6IGEgVGVzdFJlc3VsdCBvYmplY3QuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9lbnN1
cmVfZHVtcF9yZW5kZXJfdHJlZV9pc19ydW5uaW5nKCkKLSAgICAgICAgdGhyZWFkX3RpbWVvdXQg
PSBfbWlsbGlzZWNvbmRzX3RvX3NlY29uZHMoCi0gICAgICAgICAgICAgX3BhZF90aW1lb3V0KGlu
dCh0ZXN0X2lucHV0LnRpbWVvdXQpKSkKLSAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0ID0gdGlt
ZS50aW1lKCkgKyB0aHJlYWRfdGltZW91dAotICAgICAgICB0ZXN0X3Jlc3VsdCA9IF9ydW5fc2lu
Z2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgdGVzdF9pbnB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMsIHNlbGYuX3Rl
c3RfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Ry
aXZlciwgc2VsZi5fbmFtZSkKLSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZCh0ZXN0
X3Jlc3VsdCkKLSAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0Ci0KLSAgICBkZWYgX2Vuc3VyZV9k
dW1wX3JlbmRlcl90cmVlX2lzX3J1bm5pbmcoc2VsZik6Ci0gICAgICAgICIiIlN0YXJ0IHRoZSBz
aGFyZWQgRHVtcFJlbmRlclRyZWUsIGlmIGl0J3Mgbm90IHJ1bm5pbmcuCi0KLSAgICAgICAgVGhp
cyBpcyBub3QgZm9yIHVzZSB3aGVuIHJ1bm5pbmcgdGVzdHMgc2luZ2x5LCBzaW5jZSB0aG9zZSBl
YWNoIHN0YXJ0Ci0gICAgICAgIGEgc2VwYXJhdGUgRHVtcFJlbmRlclRyZWUgaW4gdGhlaXIgb3du
IHRocmVhZC4KLQotICAgICAgICAiIiIKICAgICAgICAgIyBwb2xsKCkgaXMgbm90IHRocmVhZHNh
ZmUgYW5kIGNhbiB0aHJvdyBPU0Vycm9yIGR1ZSB0bzoKICAgICAgICAgIyBodHRwOi8vYnVncy5w
eXRob24ub3JnL2lzc3VlMTczMTcxNwogICAgICAgICBpZiBub3Qgc2VsZi5fZHJpdmVyIG9yIHNl
bGYuX2RyaXZlci5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9kcml2ZXIg
PSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIoc2VsZi5fd29ya2VyX251bWJlcikKICAgICAgICAg
ICAgIHNlbGYuX2RyaXZlci5zdGFydCgpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc2luZ2xl
X3Rlc3QodGVzdF9pbnB1dCwgc2VsZi5fZHJpdmVyKQorCisgICAgZGVmIF9ydW5fc2luZ2xlX3Rl
c3Qoc2VsZiwgdGVzdF9pbnB1dCwgZHJpdmVyKToKKyAgICAgICAgIyBUaGUgaW1hZ2UgaGFzaCBp
cyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCisgICAgICAgICMgY2hl
Y2tzdW1zIG1hdGNoLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGEgYmxhbmsgdmFsdWUgaWYgd2UK
KyAgICAgICAgIyBhcmUgZ2VuZXJhdGluZyBhIG5ldyBiYXNlbGluZS4gIChPdGhlcndpc2UsIGFu
IGltYWdlIGZyb20gYQorICAgICAgICAjIHByZXZpb3VzIHJ1biB3aWxsIGJlIGNvcGllZCBpbnRv
IHRoZSBiYXNlbGluZS4iIiIKKyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX2ZldGNoX2V4cGVjdGVk
X2NoZWNrc3VtKCk6CisgICAgICAgICAgICB0ZXN0X2lucHV0LmltYWdlX2hhc2ggPSBzZWxmLl9w
b3J0LmV4cGVjdGVkX2NoZWNrc3VtKAorICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQuZmlsZW5h
bWUpCisgICAgICAgIHRlc3Rfb3V0cHV0ID0gZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5wdXQpCisg
ICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX291dHB1dCh0ZXN0X2lucHV0LmZpbGVuYW1lLCB0
ZXN0X291dHB1dCkKKworICAgIGRlZiBfcHJvY2Vzc19vdXRwdXQoc2VsZiwgdGVzdF9maWxlbmFt
ZSwgdGVzdF9vdXRwdXQpOgorICAgICAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBE
dW1wUmVuZGVyVHJlZSBwcm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCisgICAgICAgIG51bWJlciBv
ZiB0ZXN0cywgYW5kIHJldHVybnMgYSBsaXN0IG9mIGZhaWx1cmUgdHlwZXMgdGhlIHRlc3QgcHJv
ZHVjZWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgdGVzdF9maWxlbmFtZTogZnVsbCBwYXRo
IHRvIHRoZSB0ZXN0IGluIHF1ZXN0aW9uLgorICAgICAgICB0ZXN0X291dHB1dDogYSBUZXN0T3V0
cHV0IG9iamVjdCBjb250YWluaW5nIHRoZSBvdXRwdXQgb2YgdGhlIHRlc3QKKworICAgICAgICBS
ZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0CisgICAgICAgICIiIgorICAgICAgICBmYWlsdXJl
cyA9IFtdCisKKyAgICAgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CisgICAgICAgICAgICBmYWls
dXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKSkKKyAgICAgICAgaWYgdGVz
dF9vdXRwdXQudGltZW91dDoKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVUaW1lb3V0KCkpCisKKyAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5y
ZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfZmlsZW5hbWUpCisgICAgICAgIGlmIHRlc3Rfb3V0
cHV0LmNyYXNoOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgU3RhY2t0cmFjZSBmb3IgJXM6
XG4lcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fbmFtZSwgdGVzdF9uYW1lLCB0
ZXN0X291dHB1dC5lcnJvcikpCisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihz
ZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCB0ZXN0X25hbWUpCisgICAgICAgICAgICBm
aWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCisg
ICAgICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGguc3BsaXQo
ZmlsZW5hbWUpWzBdKQorICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlbmFtZSwgIndi
IiwgInV0Zi04IikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHRlc3Rfb3V0
cHV0LmVycm9yKQorICAgICAgICBlbGlmIHRlc3Rfb3V0cHV0LmVycm9yOgorICAgICAgICAgICAg
X2xvZy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAlCisgICAgICAgICAg
ICAgICAgICAgICAgIChzZWxmLl9uYW1lLCB0ZXN0X25hbWUsIHRlc3Rfb3V0cHV0LmVycm9yKSkK
KworICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dCA9IHNlbGYuX2V4cGVjdGVkX3Rlc3Rfb3V0
cHV0KHRlc3RfZmlsZW5hbWUpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IGFuZCBzYXZl
IHRoZSByZXN1bHRzLgorICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAg
dGltZV9mb3JfZGlmZnMgPSB7fQorICAgICAgICBmb3IgdGVzdF90eXBlIGluIHNlbGYuX3Rlc3Rf
dHlwZXM6CisgICAgICAgICAgICBzdGFydF9kaWZmX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAg
ICAgICAgbmV3X2ZhaWx1cmVzID0gdGVzdF90eXBlLmNvbXBhcmVfb3V0cHV0KHNlbGYuX3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl90ZXN0X2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQpCisgICAg
ICAgICAgICAjIERvbid0IGFkZCBhbnkgbW9yZSBmYWlsdXJlcyBpZiB3ZSBhbHJlYWR5IGhhdmUg
YSBjcmFzaCwgc28gd2UKKyAgICAgICAgICAgICMgZG9uJ3QgZG91YmxlLXJlcG9ydCB0aG9zZSB0
ZXN0cy4gV2UgZG8gZG91YmxlLXJlcG9ydCBmb3IgdGltZW91dHMKKyAgICAgICAgICAgICMgc2lu
Y2Ugd2Ugc3RpbGwgd2FudCB0byBzZWUgdGhlIHRleHQgYW5kIGltYWdlIG91dHB1dC4KKyAgICAg
ICAgICAgIGlmIG5vdCB0ZXN0X291dHB1dC5jcmFzaDoKKyAgICAgICAgICAgICAgICBmYWlsdXJl
cy5leHRlbmQobmV3X2ZhaWx1cmVzKQorICAgICAgICAgICAgdGltZV9mb3JfZGlmZnNbdGVzdF90
eXBlLl9fY2xhc3NfXy5fX25hbWVfX10gPSAoCisgICAgICAgICAgICAgICAgdGltZS50aW1lKCkg
LSBzdGFydF9kaWZmX3RpbWUpCisKKyAgICAgICAgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzID0g
dGltZS50aW1lKCkgLSBzdGFydF9kaWZmX3RpbWUKKyAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0
cy5UZXN0UmVzdWx0KHRlc3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Rfb3V0cHV0LnRlc3RfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZzKQorCisgICAgZGVmIF9leHBlY3RlZF90
ZXN0X291dHB1dChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIlJldHVybnMgYW4gZXhwZWN0
ZWQgVGVzdE91dHB1dCBvYmplY3QuIiIiCisgICAgICAgIHJldHVybiB0ZXN0X291dHB1dC5UZXN0
T3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChmaWxlbmFtZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKGZpbGVuYW1l
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuZXhwZWN0
ZWRfY2hlY2tzdW0oZmlsZW5hbWUpKQorCisgICAgZGVmIF90ZWFyX2Rvd25fdGVzdChzZWxmLCB0
ZXN0X2lucHV0LCByZXN1bHQsIGVsYXBzZWRfdGltZSk6CisgICAgICAgIHNlbGYuX2JhdGNoX2Nv
dW50ICs9IDEKKyAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUud3JpdGUodGVzdF9pbnB1dC5m
aWxlbmFtZSArICJcbiIpCisgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVf
dGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVuYW1lKQorCisgICAgICAgIGlmIHJlc3VsdC5m
YWlsdXJlczoKKyAgICAgICAgICAgICMgQ2hlY2sgYW5kIGtpbGwgRHVtcFJlbmRlclRyZWUgaWYg
d2UgbmVlZCB0by4KKyAgICAgICAgICAgIGlmIGFueShbZi5zaG91bGRfa2lsbF9kdW1wX3JlbmRl
cl90cmVlKCkgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzXSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKKyAgICAgICAgICAgICAgICAjIFJlc2V0IHRoZSBi
YXRjaCBjb3VudCBzaW5jZSB0aGUgc2hlbGwganVzdCBib3VuY2VkLgorICAgICAgICAgICAgICAg
IHNlbGYuX2JhdGNoX2NvdW50ID0gMAorCisgICAgICAgICAgICAjIFByaW50IHRoZSBlcnJvciBt
ZXNzYWdlKHMpLgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgZmFpbGVkOiIgJSAoc2Vs
Zi5fbmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIGZvciBmIGluIHJlc3VsdC5mYWlsdXJl
czoKKyAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAgJXMiICUgKHNlbGYuX25hbWUsIGYu
bWVzc2FnZSgpKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVz
IHBhc3NlZCIgJSAoc2VsZi5fbmFtZSwgdGVzdF9uYW1lKSkKKworICAgICAgICBzZWxmLl9wb3N0
KCdmaW5pc2hlZF90ZXN0JywgcmVzdWx0LCBlbGFwc2VkX3RpbWUpCisKKyAgICAgICAgaWYgc2Vs
Zi5fYmF0Y2hfc2l6ZSA+IDAgYW5kIHNlbGYuX2JhdGNoX2NvdW50ID49IHNlbGYuX2JhdGNoX3Np
emU6CisgICAgICAgICAgICAjIEJvdW5jZSB0aGUgc2hlbGwgYW5kIHJlc2V0IGNvdW50LgorICAg
ICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKKyAgICAgICAgICAgIHNlbGYu
X2JhdGNoX2NvdW50ID0gMAogCiAgICAgZGVmIF9zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhzZWxm
KToKLSAgICAgICAgIiIiQWNxdWlyZSBodHRwIGxvY2sgYW5kIHN0YXJ0IHRoZSBzZXJ2ZXJzLiIi
IgotICAgICAgICBzZWxmLl9odHRwX2xvY2tfd2FpdF9iZWdpbiA9IHRpbWUudGltZSgpCi0gICAg
ICAgIF9sb2cuZGVidWcoJ0FjcXVpcmUgaHR0cCBsb2NrIC4uLicpCisgICAgICAgIF9sb2cuZGVi
dWcoJ0FjcXVpcmluZyBodHRwIGxvY2sgLi4uJykKICAgICAgICAgc2VsZi5fcG9ydC5hY3F1aXJl
X2h0dHBfbG9jaygpCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIEhUVFAgc2VydmVyIC4u
LicpCiAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQogICAgICAgICBfbG9n
LmRlYnVnKCdTdGFydGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicpCiAgICAgICAgIHNlbGYuX3Bv
cnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCi0gICAgICAgIHNlbGYuX2h0dHBfbG9ja193YWl0
X2VuZCA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYuX2hhdmVfaHR0cF9sb2NrID0gVHJ1ZQog
CisgICAgZGVmIF9odHRwX2xvY2tfd2FpdF90aW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4g
dGhlIHRpbWUgd2hhdCBodHRwIGxvY2tpbmcgdGFrZXMuIiIiCisgICAgICAgIGlmIHNlbGYuX2h0
dHBfbG9ja193YWl0X2JlZ2luID09IDA6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBp
ZiBzZWxmLl9odHRwX2xvY2tfd2FpdF9lbmQgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiB0aW1l
LnRpbWUoKSAtIHNlbGYuX2h0dHBfbG9ja193YWl0X2JlZ2luCisgICAgICAgIHJldHVybiBzZWxm
Ll9odHRwX2xvY2tfd2FpdF9lbmQgLSBzZWxmLl9odHRwX2xvY2tfd2FpdF9iZWdpbgorCiAgICAg
ZGVmIF9zdG9wX3NlcnZlcnNfd2l0aF9sb2NrKHNlbGYpOgogICAgICAgICAiIiJTdG9wIHRoZSBz
ZXJ2ZXJzIGFuZCByZWxlYXNlIGh0dHAgbG9jay4iIiIKICAgICAgICAgaWYgc2VsZi5faGF2ZV9o
dHRwX2xvY2s6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2Vy
LnB5CmluZGV4IGU1MjBhOWNhYTZiNzY4MmViZmRkMmE5OGJiMjE3ZWI4NWQ3MjUxYmMuLmVmYzMx
ZTJlY2I0ZjMxNjNiODJkY2UwMzI2MDM4NzU5NjY1OGNhZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2Vf
YnJva2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5CkBAIC0yNiw3ICsyNiw3IEBACiAjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJNb2R1bGUgZm9yIGhhbmRsaW5nIG1lc3Nh
Z2VzLCB0aHJlYWRzLCBwcm9jZXNzZXMsIGFuZCBjb25jdXJyZW5jeSBmb3IgcnVuLXdlYmtpdC10
ZXN0cy4KKyIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnZXMgYW5kIGNvbmN1cnJlbmN5IGZv
ciBydW4td2Via2l0LXRlc3RzLgogCiBUZXN0aW5nIGlzIGFjY29tcGxpc2hlZCBieSBoYXZpbmcg
YSBtYW5hZ2VyIChUZXN0UnVubmVyKSBnYXRoZXIgYWxsIG9mIHRoZQogdGVzdHMgdG8gYmUgcnVu
LCBhbmQgc2VuZGluZyBtZXNzYWdlcyB0byBhIHBvb2wgb2Ygd29ya2VycyAoVGVzdFNoZWxsVGhy
ZWFkcykKQEAgLTQwLDggKzQwLDE0IEBAIGhhbmRsZXMgbGF1bmNoaW5nIHRocmVhZHMgYW5kL29y
IHByb2Nlc3NlcyBkZXBlbmRpbmcgb24gdGhlCiByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbi4KICIi
IgogCitpbXBvcnQgY1BpY2tsZQogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBtdWx0aXByb2Nlc3Np
bmcKK2ltcG9ydCBvcworaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc3lzCitpbXBvcnQgdGhyZWFkCitp
bXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCkBAIC00OSwx
NDkgKzU1LDMyNiBAQCBpbXBvcnQgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQKIAogX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCitNQU5BR0VSID0gJ21hbmFnZXInCitBTllfV09S
S0VSID0gJ3dvcmtlcicKKwogCiBkZWYgZ2V0KHBvcnQsIG9wdGlvbnMpOgogICAgICIiIlJldHVy
biBhbiBpbnN0YW5jZSBvZiBhIFdvcmtlck1lc3NhZ2VCcm9rZXIuIiIiCiAgICAgd29ya2VyX21v
ZGVsID0gb3B0aW9ucy53b3JrZXJfbW9kZWwKICAgICBpZiB3b3JrZXJfbW9kZWwgPT0gJ2lubGlu
ZSc6Ci0gICAgICAgIHJldHVybiBJbmxpbmVCcm9rZXIocG9ydCwgb3B0aW9ucykKKyAgICAgICAg
cmV0dXJuIF9JbmxpbmVCcm9rZXIocG9ydCwgb3B0aW9ucykKICAgICBpZiB3b3JrZXJfbW9kZWwg
PT0gJ3RocmVhZHMnOgotICAgICAgICByZXR1cm4gTXVsdGlUaHJlYWRlZEJyb2tlcihwb3J0LCBv
cHRpb25zKQorICAgICAgICByZXR1cm4gX011bHRpVGhyZWFkZWRCcm9rZXIocG9ydCwgb3B0aW9u
cykKKyAgICBpZiB3b3JrZXJfbW9kZWwgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgIHJldHVybiBf
TXVsdGlQcm9jZXNzQnJva2VyKHBvcnQsIG9wdGlvbnMpCiAgICAgcmFpc2UgVmFsdWVFcnJvcign
dW5zdXBwb3J0ZWQgdmFsdWUgZm9yIC0td29ya2VyLW1vZGVsOiAlcycgJSB3b3JrZXJfbW9kZWwp
CiAKIAotY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYudGhyZWFkID0g
Tm9uZQorY2xhc3MgX01lc3NhZ2Uob2JqZWN0KToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm
IGxvYWRzKHN0cik6CisgICAgICAgIG9iaiA9IGNQaWNrbGUubG9hZHMoc3RyKQorICAgICAgICBh
c3NlcnQoaXNpbnN0YW5jZShvYmosIF9NZXNzYWdlKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzcmMsIGRlc3QsIGhkciwgYm9keSk6CisgICAgICAgIHNlbGYuc3JjID0gc3JjCisgICAgICAg
IHNlbGYuZGVzdCA9IGRlc3QKKyAgICAgICAgc2VsZi5oZHIgPSBoZHIKKyAgICAgICAgc2VsZi5i
b2R5ID0gYm9keQorCisgICAgZGVmIGR1bXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gY1BpY2ts
ZS5kdW1wcyhzZWxmKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
KCJfTWVzc2FnZShzcmM9JyVzJywgZGVzdD0nJXMnLCBoZHI9JyVzJykiICUKKyAgICAgICAgICAg
ICAgICAoc2VsZi5zcmMsIHNlbGYuZGVzdCwgc2VsZi5oZHIpKQogCiAKLWNsYXNzIFdvcmtlck1l
c3NhZ2VCcm9rZXIob2JqZWN0KToKK2NsYXNzIF9UaW1lcihvYmplY3QpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjYWxsYmFjaywgZGVsYXkpOgorICAgICAgICBzZWxmLmNhbGxiYWNrID0gY2Fs
bGJhY2sKKyAgICAgICAgc2VsZi5kZWxheSA9IGRlbGF5CisgICAgICAgIHNlbGYuZGVhZGxpbmUg
PSB0aW1lLnRpbWUoKSArIGRlbGF5CisKKworY2xhc3MgX1dvcmtlck1lc3NhZ2VCcm9rZXIob2Jq
ZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucyk6CiAgICAgICAgIHNl
bGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAg
IHNlbGYuX251bV93b3JrZXJzID0gaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQog
Ci0gICAgICAgICMgVGhpcyBtYXBzIHdvcmtlciBuYW1lcyB0byB0aGVpciBfV29ya2VyU3RhdGUg
dmFsdWVzLgotICAgICAgICBzZWxmLl93b3JrZXJzID0ge30KKyAgICAgICAgc2VsZi5fdGltZXJz
ID0ge30KKyAgICAgICAgc2VsZi5fdGltZXJzW01BTkFHRVJdID0gTm9uZQorICAgICAgICBzZWxm
Ll90aW1lcnNbQU5ZX1dPUktFUl0gPSBOb25lCisgICAgICAgIHNlbGYuX3F1ZXVlcyA9IHt9CisK
KyAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICAiIiJT
dGFydCBhIHdvcmtlciB3aXRoIHRoZSBnaXZlbiBpbmRleCBudW1iZXIuCiAKLSAgICBkZWYgX3Ro
cmVhZHMoc2VsZik6Ci0gICAgICAgIHJldHVybiB0dXBsZShbdy50aHJlYWQgZm9yIHcgaW4gc2Vs
Zi5fd29ya2Vycy52YWx1ZXMoKV0pCisgICAgICAgIFJldHVybnMgdGhlIGFjdHVhbCBUZXN0U2hl
bGxUaHJlYWQgb2JqZWN0LiIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAK
LSAgICBkZWYgc3RhcnRfd29ya2VycyhzZWxmLCB0ZXN0X3J1bm5lcik6Ci0gICAgICAgICIiIlN0
YXJ0cyB1cCB0aGUgcG9vbCBvZiB3b3JrZXJzIGZvciBydW5uaW5nIHRoZSB0ZXN0cy4KKyAgICBk
ZWYgY2FuY2VsX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSk6CisgICAgICAgICIiIkF0dGVtcHQg
dG8gY2FuY2VsIGEgd29ya2VyIChiZXN0LWVmZm9ydCkuIFRoZSB3b3JrZXIgbWF5IHN0aWxsIGJl
CisgICAgICAgIHJ1bm5pbmcgYWZ0ZXIgdGhpcyBjYWxsIHJldHVybnMuIiIiCisgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGVz
dF9ydW5uZXI6IGEgaGFuZGxlIHRvIHRoZSBtYW5hZ2VyL1Rlc3RSdW5uZXIgb2JqZWN0Ci0gICAg
ICAgICIiIgotICAgICAgICBzZWxmLl90ZXN0X3J1bm5lciA9IHRlc3RfcnVubmVyCi0gICAgICAg
IGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShzZWxmLl9udW1fd29ya2Vycyk6Ci0gICAgICAg
ICAgICB3b3JrZXIgPSBfV29ya2VyU3RhdGUoJ3dvcmtlci0lZCcgJSB3b3JrZXJfbnVtYmVyKQot
ICAgICAgICAgICAgd29ya2VyLnRocmVhZCA9IHNlbGYuX3N0YXJ0X3dvcmtlcih3b3JrZXJfbnVt
YmVyLCB3b3JrZXIubmFtZSkKLSAgICAgICAgICAgIHNlbGYuX3dvcmtlcnNbd29ya2VyLm5hbWVd
ID0gd29ya2VyCi0gICAgICAgIHJldHVybiBzZWxmLl90aHJlYWRzKCkKKyAgICBkZWYgam9pbl93
b3JrZXIoc2VsZiwgd29ya2VyX25hbWUsIHRpbWVvdXQpOgorICAgICAgICAiIiJXYWl0IHVudGls
IHdvcmtlciBleGl0cyBvciB0aW1lb3V0IG9jY3Vycy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIF9zdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJl
ciwgd29ya2VyX25hbWUpOgorICAgIGRlZiB3b3JrZXJfaXNfYWxpdmUoc2VsZiwgd29ya2VyX25h
bWUpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgd29ya2VyIGlzIHN0aWxsIHJ1bm5p
bmcuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBydW5f
bWVzc2FnZV9sb29wKHNlbGYpOgotICAgICAgICAiIiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMg
dW50aWwgZG9uZS4iIiIKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgd29ya2VyX25h
bWUpOgorICAgICAgICAiIiJMb2cgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdpdmVuIHdvcmtlcidz
IHN0YXRlLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYg
Y2FuY2VsX3dvcmtlcnMoc2VsZik6Ci0gICAgICAgICIiIkNhbmNlbC9pbnRlcnJ1cHQgYW55IHdv
cmtlcnMgdGhhdCBhcmUgc3RpbGwgYWxpdmUuIiIiCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBj
bGVhbnVwKHNlbGYpOgotICAgICAgICAiIiJQZXJmb3JtIGFueSBuZWNlc3NhcnkgY2xlYW51cCBv
biBzaHV0ZG93bi4iIiIKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIElubGluZUJyb2tlcihXb3Jr
ZXJNZXNzYWdlQnJva2VyKToKLSAgICBkZWYgX3N0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVt
YmVyLCB3b3JrZXJfbmFtZSk6Ci0gICAgICAgICMgRklYTUU6IFJlcGxhY2Ugd2l0aCBzb21ldGhp
bmcgdGhhdCBpc24ndCBhIHRocmVhZC4KLSAgICAgICAgdGhyZWFkID0gZHVtcF9yZW5kZXJfdHJl
ZV90aHJlYWQuVGVzdFNoZWxsVGhyZWFkKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9v
cHRpb25zLCB3b3JrZXJfbnVtYmVyLCB3b3JrZXJfbmFtZSwKLSAgICAgICAgICAgIHNlbGYuX3Rl
c3RfcnVubmVyLl9jdXJyZW50X2ZpbGVuYW1lX3F1ZXVlLAotICAgICAgICAgICAgc2VsZi5fdGVz
dF9ydW5uZXIuX3Jlc3VsdF9xdWV1ZSkKLSAgICAgICAgIyBOb3RlOiBEb24ndCBzdGFydCgpIHRo
ZSB0aHJlYWQhIElmIHdlIGRpZCwgaXQgd291bGQgYWN0dWFsbHkKLSAgICAgICAgIyBjcmVhdGUg
YW5vdGhlciB0aHJlYWQgYW5kIHN0YXJ0IGV4ZWN1dGluZyBpdCwgYW5kIHdlJ2Qgbm8gbG9uZ2Vy
Ci0gICAgICAgICMgYmUgc2luZ2xlLXRocmVhZGVkLgotICAgICAgICByZXR1cm4gdGhyZWFkCi0K
LSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmKToKLSAgICAgICAgdGhyZWFkID0gc2VsZi5f
dGhyZWFkcygpWzBdCi0gICAgICAgIHRocmVhZC5ydW5faW5fbWFpbl90aHJlYWQoc2VsZi5fdGVz
dF9ydW5uZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9y
dW5uZXIuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkpCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVubmVy
LnVwZGF0ZSgpCi0KLQotY2xhc3MgTXVsdGlUaHJlYWRlZEJyb2tlcihXb3JrZXJNZXNzYWdlQnJv
a2VyKToKLSAgICBkZWYgX3N0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyLCB3b3JrZXJf
bmFtZSk6Ci0gICAgICAgIHRocmVhZCA9IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RTaGVs
bFRocmVhZChzZWxmLl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucywgd29ya2VyX251
bWJlciwgd29ya2VyX25hbWUsCi0gICAgICAgICAgICBzZWxmLl90ZXN0X3J1bm5lci5fY3VycmVu
dF9maWxlbmFtZV9xdWV1ZSwKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfcnVubmVyLl9yZXN1bHRf
cXVldWUpCi0gICAgICAgIHRocmVhZC5zdGFydCgpCi0gICAgICAgIHJldHVybiB0aHJlYWQKLQot
ICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYpOgotICAgICAgICB0aHJlYWRzID0gc2VsZi5f
dGhyZWFkcygpCi0KLSAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIHRoZSB0aHJlYWRzIHdhaXRp
bmcgZm9yIHRoZW0gdG8gZmluaXNoLgotICAgICAgICBzb21lX3RocmVhZF9pc19hbGl2ZSA9IFRy
dWUKLSAgICAgICAgd2hpbGUgc29tZV90aHJlYWRfaXNfYWxpdmU6Ci0gICAgICAgICAgICBzb21l
X3RocmVhZF9pc19hbGl2ZSA9IEZhbHNlCi0gICAgICAgICAgICB0ID0gdGltZS50aW1lKCkKLSAg
ICAgICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKLSAgICAgICAgICAgICAgICBleGNlcHRp
b25faW5mbyA9IHRocmVhZC5leGNlcHRpb25faW5mbygpCi0gICAgICAgICAgICAgICAgaWYgZXhj
ZXB0aW9uX2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtcmFpc2Ug
dGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJlIHRvIG1ha2UgaXQKLSAgICAgICAgICAgICAgICAg
ICAgIyBjbGVhciB0aGF0IHRlc3Rpbmcgd2FzIGFib3J0ZWQuIE90aGVyd2lzZSwKLSAgICAgICAg
ICAgICAgICAgICAgIyB0aGUgdGVzdHMgdGhhdCBkaWQgbm90IHJ1biB3b3VsZCBiZSBhc3N1bWVk
Ci0gICAgICAgICAgICAgICAgICAgICMgdG8gaGF2ZSBwYXNzZWQuCi0gICAgICAgICAgICAgICAg
ICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhjZXB0aW9u
X2luZm9bMl0KLQotICAgICAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6Ci0gICAgICAg
ICAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAgICAgICAgICAg
ICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4dF90aW1lb3V0KCkKLSAgICAgICAgICAgICAg
ICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nX3dlZGdlZF93b3JrZXIodGhyZWFkLmdldE5hbWUoKSwgdGhyZWFkLmlk
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQuY2xlYXJfbmV4dF90aW1lb3V0KCkK
LQotICAgICAgICAgICAgc2VsZi5fdGVzdF9ydW5uZXIudXBkYXRlKCkKLQotICAgICAgICAgICAg
aWYgc29tZV90aHJlYWRfaXNfYWxpdmU6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAx
KQotCi0gICAgZGVmIGNhbmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICB0aHJlYWRzID0gc2Vs
Zi5fdGhyZWFkcygpCi0gICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKLSAgICAgICAgICAg
IHRocmVhZC5jYW5jZWwoKQotCi0KLWRlZiBsb2dfd2VkZ2VkX3dvcmtlcihuYW1lLCBpZCk6Ci0g
ICAgIiIiTG9nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiB3b3JrZXIgc3RhdGUuIiIiCi0g
ICAgc3RhY2sgPSBfZmluZF90aHJlYWRfc3RhY2soaWQpCi0gICAgYXNzZXJ0KHN0YWNrIGlzIG5v
dCBOb25lKQotICAgIF9sb2cuZXJyb3IoIiIpCi0gICAgX2xvZy5lcnJvcigiJXMgKHRpZCAlZCkg
aXMgd2VkZ2VkIiAlIChuYW1lLCBpZCkpCi0gICAgX2xvZ19zdGFjayhzdGFjaykKLSAgICBfbG9n
LmVycm9yKCIiKQotCi0KLWRlZiBfZmluZF90aHJlYWRfc3RhY2soaWQpOgotICAgICIiIlJldHVy
bnMgYSBzdGFjayBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBkdW1wIGEgc3RhY2sgdHJhY2Ug
Zm9yCi0gICAgdGhlIGdpdmVuIHRocmVhZCBpZCAob3IgTm9uZSBpZiB0aGUgaWQgaXMgbm90IGZv
dW5kKS4iIiIKLSAgICBmb3IgdGhyZWFkX2lkLCBzdGFjayBpbiBzeXMuX2N1cnJlbnRfZnJhbWVz
KCkuaXRlbXMoKToKLSAgICAgICAgaWYgdGhyZWFkX2lkID09IGlkOgotICAgICAgICAgICAgcmV0
dXJuIHN0YWNrCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgX2xvZ19zdGFjayhzdGFjayk6Ci0g
ICAgIiIiTG9nIGEgc3RhY2sgdHJhY2UgdG8gbG9nLmVycm9yKCkuIiIiCi0gICAgZm9yIGZpbGVu
YW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soc3RhY2sp
OgotICAgICAgICBfbG9nLmVycm9yKCdGaWxlOiAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAoZmls
ZW5hbWUsIGxpbmVubywgbmFtZSkpCi0gICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAgICBfbG9n
LmVycm9yKCcgICVzJyAlIGxpbmUuc3RyaXAoKSkKKyAgICBkZWYgYWRkX3RpbWVyKHNlbGYsIHF1
ZXVlX25hbWUsIGNhbGxiYWNrLCBkZWxheV9zZWNzKToKKyAgICAgICAgIiIiQWRkIGEgdGltZXIg
dGhhdCB3aWxsIGZpcmUgZHVyaW5nIHJ1bl9tZXNzYWdlX2xvb3AocXVldWVfbmFtZSkuCisKKyAg
ICAgICAgVGltZXIgY2FsbGJhY2tzIHRha2Ugbm8gYXJndW1lbnRzLCBhbmQgc2hvdWxkIHJldHVy
biBUcnVlIGlmZgorICAgICAgICBydW5fbWVzc2FnZV9sb29wIHNob3VsZCBleGl0LiBDdXJyZW50
bHkgdGhlIGNvZGUgb25seSBzdXBwb3J0cyBvbmUKKyAgICAgICAgdGltZXIgcGVyIHF1ZXVlX25h
bWUsIGJ1dCBhIHRpbWVyIGNhbiBiZSBhZGRlZCBmcm9tIGluc2lkZSB0aGUKKyAgICAgICAgY2Fs
bCBiYWNrLCBpbiBvcmRlciB0byBjcmVhdGUgcGVyaW9kaWMgdGltZXJzLiIiIgorICAgICAgICBh
c3NlcnQoc2VsZi5fdGltZXJzW3F1ZXVlX25hbWVdIGlzIE5vbmUpCisgICAgICAgIHNlbGYuX3Rp
bWVyc1txdWV1ZV9uYW1lXSA9IF9UaW1lcihjYWxsYmFjaywgZGVsYXlfc2VjcykKKworICAgIGRl
ZiBwdXRfbWVzc2FnZShzZWxmLCBzcmMsIGRlc3QsIG1lc3NhZ2VfbmFtZSwgYm9keT1Ob25lKToK
KyAgICAgICAgIiIiUG9zdCBhIG1lc3NhZ2UgdG8gdGhlIHF1ZXVlIG5hbWVkICdkZXN0Jy4iIiIK
KyAgICAgICAgYm9keSA9IGJvZHkgb3IgdHVwbGUoKQorICAgICAgICBtc2cgPSBfTWVzc2FnZShz
cmMsIGRlc3QsIG1lc3NhZ2VfbmFtZSwgYm9keSkKKyAgICAgICAgc2VsZi5fcXVldWVzW2Rlc3Rd
LnB1dChtc2cpCisKKyAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmLCByZWFkZXIsIHF1ZXVl
X25hbWUpOgorICAgICAgICAiIiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgZG9uZS4K
KworICAgICAgICBUaGUgbG9vcCBpcyBkb25lIHdoZW4gZWl0aGVyIHJlYWRlci5pc19kb25lKCkg
cmV0dXJucyBUcnVlIG9yIGEKKyAgICAgICAgdGltZXIgZmlyZXMgYW5kIHJldHVybnMgVHJ1ZS4i
IiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIF9jaGVja190
aW1lcihzZWxmLCBxdWV1ZV9uYW1lLCBub3cpOgorICAgICAgICAiIiJDaGVjayBpZiBhbnkgdGlt
ZXJzIG5lZWQgdG8gZmlyZSwgYW5kIGZpcmUgdGhlbS4KKworICAgICAgICBSZXR1cm5zIGEgdHVw
bGUgb2YgKHdoZXRoZXIgYSB0aW1lciBmaXJlZCwgd2hldGhlciBhIHRpbWVyCisgICAgICAgICAg
ICByZXR1cm5lZCBUcnVlIHRvIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkIGJhaWwgb3V0IG9mIHRo
ZSBhCisgICAgICAgICAgICBtZXNzYWdlIGxvb3AgaWYgbmVjZXNzYXJ5KS4iIiIKKyAgICAgICAg
IyBUaGUgZmlyc3QgcmV0dXJuIHZhbHVlIGlzIG5lZWRlZCBieSBJbmxpbmVCcm9rZXIuX2RyYWlu
X3F1ZXVlKCksCisgICAgICAgICMgdGhlIHNlY29uZCBieSBNdWx0aVRocmVhZGVkQnJva2VyLnJ1
bl9tZXNzYWdlX2xvb3AoKS4KKyAgICAgICAgaWYgc2VsZi5fdGltZXJfZXhwaXJlZChxdWV1ZV9u
YW1lLCBub3cpOgorICAgICAgICAgICAgZGVsYXkgPSBzZWxmLl90aW1lcl9kZWxheShxdWV1ZV9u
YW1lLCBub3cpCisgICAgICAgICAgICB0ID0gc2VsZi5fdGltZXJzW3F1ZXVlX25hbWVdCisgICAg
ICAgICAgICBzZWxmLl90aW1lcnNbcXVldWVfbmFtZV0gPSBOb25lCisgICAgICAgICAgICBkb25l
ID0gdC5jYWxsYmFjaygpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgZG9uZQorICAgICAgICBy
ZXR1cm4gRmFsc2UsIEZhbHNlCisKKyAgICBkZWYgX3RpbWVyX2RlbGF5KHNlbGYsIHF1ZXVlX25h
bWUsIG5vdyk6CisgICAgICAgICIiIiJSZXR1cm4gdGhlIHRpbWUgKGluIHNlY3MpIGZyb20gJ25v
dycgdW50aWwgdGhlIHF1ZXVlIHRpbWVyIGZpcmVzLgorCisgICAgICAgIFRoZSByZXR1cm4gdmFs
dWUgbWF5IGJlIG5lZ2F0aXZlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHRpbWVyIGhhcworICAgICAg
ICBleHBpcmVkLCBvciBOb25lLCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIG5vIHRpbWVyIG9u
IHRoZSBxdWV1ZQorICAgICAgICAoZGVsYXkgZm9yZXZlcikuIiIiCisgICAgICAgIHQgPSBzZWxm
Ll90aW1lcnNbcXVldWVfbmFtZV0KKyAgICAgICAgaWYgdDoKKyAgICAgICAgICAgIHJldHVybiB0
LmRlYWRsaW5lIC0gbm93CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3RpbWVyX2V4
cGlyZWQoc2VsZiwgcXVldWVfbmFtZSwgbm93KToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIg
dGhlIHF1ZXVlIGhhcyBhIHRpbWVyIHdob3NlIGRlYWRsaW5lIGlzIGVhcmxpZXIgdGhhbiBub3cu
IiIiCisgICAgICAgIHQgPSBzZWxmLl90aW1lcnNbcXVldWVfbmFtZV0KKyAgICAgICAgcmV0dXJu
ICh0IGlzIG5vdCBOb25lKSBhbmQgbm93ID49IHQuZGVhZGxpbmUKKworICAgIGRlZiBfZGlzcGF0
Y2hfbWVzc2FnZShzZWxmLCBtc2csIHJlYWRlcik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHJl
YWRlciwgJ2hhbmRsZV8nICsgbXNnLmhkcik6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25F
cnJvcigKKyAgICAgICAgICAgICAgICIlczogcmVjZWl2ZWQgbWVzc2FnZSAnJXMnIGl0IGNvdWxk
bid0IGhhbmRsZSIgJQorICAgICAgICAgICAgICAgKHJlYWRlci5uYW1lKCksIG1zZy5oZHIpKQor
CisgICAgICAgIG9wdGFyZ3MgPSBtc2cuYm9keQorICAgICAgICBmbiA9IGdldGF0dHIocmVhZGVy
LCAnaGFuZGxlXycgKyBtc2cuaGRyKQorICAgICAgICBmbihtc2cuc3JjLCAqb3B0YXJncykKKwor
CitjbGFzcyBfSW5saW5lQnJva2VyKF9Xb3JrZXJNZXNzYWdlQnJva2VyKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucyk6CisgICAgICAgIHN1cGVyKF9JbmxpbmVCcm9rZXIs
IHNlbGYpLl9faW5pdF9fKHBvcnQsIG9wdGlvbnMpCisgICAgICAgICMgRklYTUU6IFdlIGRvbid0
IGFjdHVhbGx5IG5lZWQgdGhyZWFkc2FmZSBxdWV1ZXMgaGVyZS4KKyAgICAgICAgc2VsZi5fcXVl
dWVzW01BTkFHRVJdID0gUXVldWUuUXVldWUoKQorICAgICAgICBzZWxmLl9xdWV1ZXNbQU5ZX1dP
UktFUl0gPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuX21hbmFnZXIgPSBOb25lCisKKyAg
ICBjbGFzcyBfV29ya2VyKGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLldvcmtlcik6CisgICAgICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICAgICAg
c3VwZXIoX0lubGluZUJyb2tlci5fV29ya2VyLCBzZWxmKS5fX2luaXRfXyhicm9rZXIsIHdvcmtl
cl9udW1iZXIpCisgICAgICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCisKKyAgICAgICAgZGVm
IGlzX2FsaXZlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FsaXZlCisKKyAgICAg
ICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2FsaXZlID0gVHJ1ZQorICAgICAg
ICAgICAgc3VwZXIoX0lubGluZUJyb2tlci5Xb3JrZXIsIHNlbGYpLnJ1bigpCisgICAgICAgICAg
ICBzZWxmLl9hbGl2ZSA9IEZhbHNlCisKKyAgICAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxm
KToKKyAgICAgICAgICAgIHNlbGYuX2Jyb2tlci5fZHJhaW5fcXVldWUoc2VsZi5fYnJva2VyLl9t
YW5hZ2VyLCBNQU5BR0VSKQorCisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVt
YmVyKToKKyAgICAgICAgc2VsZi5faW5saW5lX3dvcmtlciA9IHNlbGYuX1dvcmtlcihzZWxmLCB3
b3JrZXJfbnVtYmVyKQorICAgICAgICByZXR1cm4gc2VsZi5faW5saW5lX3dvcmtlci5uYW1lKCkK
KworICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIG1hbmFnZXIsIHF1ZXVlX25hbWUpOgor
ICAgICAgICAiIiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgZG9uZS4iIiIKKyAgICAg
ICAgc2VsZi5fbWFuYWdlciA9IG1hbmFnZXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGlk
X3dvcmsgPSBUcnVlCisgICAgICAgICAgICB3aGlsZSBkaWRfd29yazoKKyAgICAgICAgICAgICAg
ICBkaWRfd29yayA9IHNlbGYuX2RyYWluX3F1ZXVlKHNlbGYuX2lubGluZV93b3JrZXIsIEFOWV9X
T1JLRVIpCisgICAgICAgICAgICAgICAgZGlkX3dvcmsgPSBkaWRfd29yayBvciBzZWxmLl9kcmFp
bl9xdWV1ZShtYW5hZ2VyLCBNQU5BR0VSKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAg
c2VsZi5fbWFuYWdlciA9IE5vbmUKKworICAgIGRlZiBjYW5jZWxfd29ya2VyKHNlbGYsIHdvcmtl
cl9uYW1lKToKKyAgICAgICAgYXNzZXJ0IHdvcmtlcl9uYW1lID09IHNlbGYuX2lubGluZV93b3Jr
ZXIubmFtZSgpCisgICAgICAgIHNlbGYuX2lubGluZV93b3JrZXIuY2FuY2VsKCkKKworICAgIGRl
ZiB3b3JrZXJfaXNfYWxpdmUoc2VsZiwgd29ya2VyX25hbWUpOgorICAgICAgICBhc3NlcnQgd29y
a2VyX25hbWUgPT0gc2VsZi5faW5saW5lX3dvcmtlci5uYW1lKCkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2lubGluZV93b3JrZXIuaXNfYWxpdmUoKQorCisgICAgZGVmIGpvaW5fd29ya2VyKHNlbGYs
IHdvcmtlcl9uYW1lLCB0aW1lb3V0KToKKyAgICAgICAgYXNzZXJ0IHdvcmtlcl9uYW1lID09IHNl
bGYuX2lubGluZV93b3JrZXIubmFtZSgpCisgICAgICAgIGFzc2VydCBzZWxmLl9pbmxpbmVfd29y
a2VyLmlzX2RvbmUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9u
YW1lLCB0ZXN0X25hbWUpOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiX0lubGluZUJy
b2tlci5sb2dfd2VkZ2VkX3dvcmtlcigpIGNhbGxlZCIpCisKKyAgICBkZWYgX2RyYWluX3F1ZXVl
KHNlbGYsIHJlYWRlciwgcXVldWVfbmFtZSk6CisgICAgICAgICIiIkxvb3AgdW50aWwgd2UgcnVu
IG91dCBvZiBzdHVmZiB0byBkbyB3L28gYmxvY2tpbmcuCisKKyAgICAgICAgVGhpcyBtZWFucyB0
aGVyZSBhcmUgbm8gbWVzc2FnZXMgdG8gcHJvY2VzcyBhbmQgbm8gdGltZXJzIGFyZSBmaXJpbmcu
CisgICAgICAgIFRoZSBtZXRob2Qgd2lsbCBrZWVwIHByb2Nlc3NpbmcgbWVzc2FnZXMgYW5kIGZp
cmluZyB0aW1lcnMgcmVnYXJkbGVzcworICAgICAgICBvZiB3aGF0IHRoZSB0aW1lcnMgcmV0dXJu
IG9yIHdoYXQgcmVhZGVyLmlzX2RvbmUoKSByZXR1cm5zLgorCisgICAgICAgIFJldHVybnMgd2hl
dGhlciBvciBub3Qgd2UgZGlkIGFueXRoaW5nIGF0IGFsbC4iIiIKKyAgICAgICAgIyBGSVhNRTog
U2hvdWxkIHdlIGV4aXQgZWFybHkgaWYgdGltZXJzIHJldHVybiBkb25lIG9yIHJlYWRlci5pc19k
b25lKCkKKyAgICAgICAgIyBpcyBUcnVlPworCisgICAgICAgIGRpZF93b3JrID0gRmFsc2UKKyAg
ICAgICAgZGlkX3dvcmtfb25fdGhpc19ydW4gPSBUcnVlCisgICAgICAgIHdoaWxlIGRpZF93b3Jr
X29uX3RoaXNfcnVuOgorICAgICAgICAgICAgIyBQZXIgdGhlIGFib3ZlLCB3ZSBpZ25vcmUgdGhl
ICdkb25lJyB2YWx1ZSBmcm9tIGNoZWNrX3RpbWVyKCkKKyAgICAgICAgICAgIGRpZF93b3JrX29u
X3RoaXNfcnVuLCBfID0gc2VsZi5fY2hlY2tfdGltZXIocXVldWVfbmFtZSwgdGltZS50aW1lKCkp
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbXNnID0gc2VsZi5fcXVldWVzW3F1
ZXVlX25hbWVdLmdldChibG9jaz1GYWxzZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9kaXNwYXRj
aF9tZXNzYWdlKG1zZywgcmVhZGVyKQorICAgICAgICAgICAgICAgIGRpZF93b3JrX29uX3RoaXNf
cnVuID0gVHJ1ZQorICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgorICAgICAgICAgICAg
ICAgIHBhc3MKKworICAgICAgICAgICAgaWYgZGlkX3dvcmtfb25fdGhpc19ydW46CisgICAgICAg
ICAgICAgICAgZGlkX3dvcmsgPSBUcnVlCisKKyAgICAgICAgcmV0dXJuIGRpZF93b3JrCisKKwor
Y2xhc3MgX011bHRpVGhyZWFkZWRCcm9rZXIoX1dvcmtlck1lc3NhZ2VCcm9rZXIpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zKToKKyAgICAgICAgc3VwZXIoX011bHRpVGhy
ZWFkZWRCcm9rZXIsIHNlbGYpLl9faW5pdF9fKHBvcnQsIG9wdGlvbnMpCisgICAgICAgIHNlbGYu
X3F1ZXVlc1tNQU5BR0VSXSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5fcXVldWVzW0FO
WV9XT1JLRVJdID0gUXVldWUuUXVldWUoKQorCisgICAgICAgICMgTWFwcGluZyBvZiB3b3JrZXIg
bmFtZXMgdG8gY2hpbGQgdGhyZWFkcy9wcm9jZXNzZXMsIHdoaWNoIHdlCisgICAgICAgICMgZ2Vu
ZXJpY2FsbHkgY2FsbCBjaGlsZHJlbi4KKyAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSB7fQorCisg
ICAgY2xhc3MgX1dvcmtlcihkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5Xb3JrZXIsIHRocmVhZGlu
Zy5UaHJlYWQpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfbnVt
YmVyKToKKyAgICAgICAgICAgIHN1cGVyKF9NdWx0aVRocmVhZGVkQnJva2VyLl9Xb3JrZXIsIHNl
bGYpLl9faW5pdF9fKGJyb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICBz
ZWxmLnRpZCA9ICI8bm9uZT4iCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAg
IHNlbGYudGlkID0gdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgICAgICBkdW1wX3JlbmRlcl90
cmVlX3RocmVhZC5Xb3JrZXIucnVuKHNlbGYpCisKKyAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYs
IHdvcmtlcl9udW1iZXIpOgorICAgICAgICB3b3JrZXIgPSBzZWxmLl9Xb3JrZXIoc2VsZiwgd29y
a2VyX251bWJlcikKKyAgICAgICAgbmFtZSA9IHdvcmtlci5uYW1lKCkKKyAgICAgICAgc2VsZi5f
Y2hpbGRyZW5bbmFtZV0gPSB3b3JrZXIKKyAgICAgICAgd29ya2VyLnN0YXJ0KCkKKyAgICAgICAg
cmV0dXJuIG5hbWUKKworICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIHJlYWRlciwgcXVl
dWVfbmFtZSk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIEhlcmUgd2UgZG9u
J3QgY2FyZSBpZiB3ZSBkbyB3b3JrIGluIHRoZSB0aW1lci4KKyAgICAgICAgICAgIG5vdyA9IHRp
bWUudGltZSgpCisgICAgICAgICAgICBfLCBkb25lID0gc2VsZi5fY2hlY2tfdGltZXIocXVldWVf
bmFtZSwgbm93KQorICAgICAgICAgICAgaWYgZG9uZSBvciByZWFkZXIuaXNfZG9uZSgpOgorICAg
ICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIFJlLWNoZWNrIHRoZSB0aW1lLCBp
biBjYXNlIHRoZSB0aW1lciBoYWQgYSBzbG93IGNhbGxiYWNrLgorICAgICAgICAgICAgbm93ID0g
dGltZS50aW1lKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90aW1lcl9leHBpcmVkKHF1ZXVl
X25hbWUsIG5vdyk6CisgICAgICAgICAgICAgICAgZGVsYXkgPSBzZWxmLl90aW1lcl9kZWxheShx
dWV1ZV9uYW1lLCBub3cpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAg
ICBtc2cgPSBzZWxmLl9xdWV1ZXNbcXVldWVfbmFtZV0uZ2V0KGJsb2NrPVRydWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1k
ZWxheSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hfbWVzc2FnZShtc2csIHJl
YWRlcikKKyAgICAgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CisgICAgICAgICAgICAg
ICAgICAgIHBhc3MKKworICAgIGRlZiBjYW5jZWxfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lKToK
KyAgICAgICAgc2VsZi5fY2hpbGRyZW5bd29ya2VyX25hbWVdLmNhbmNlbCgpCisKKyAgICBkZWYg
am9pbl93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUsIHRpbWVvdXQpOgorICAgICAgICBzZWxmLl9j
aGlsZHJlblt3b3JrZXJfbmFtZV0uam9pbih0aW1lb3V0KQorCisgICAgZGVmIHdvcmtlcl9pc19h
bGl2ZShzZWxmLCB3b3JrZXJfbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9jaGlsZHJlblt3
b3JrZXJfbmFtZV0uaXNfYWxpdmUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYs
IHdvcmtlcl9uYW1lLCB0ZXN0X25hbWUpOgorICAgICAgICB0aHJlYWQgPSBzZWxmLl9jaGlsZHJl
blt3b3JrZXJfbmFtZV0KKyAgICAgICAgc3RhY2sgPSBzZWxmLl9maW5kX3RocmVhZF9zdGFjayh0
aHJlYWQuaWQoKSkKKyAgICAgICAgYXNzZXJ0KHN0YWNrIGlzIG5vdCBOb25lKQorICAgICAgICBf
bG9nLmVycm9yKCIlcyAodGlkICVkKSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJQorICAgICAgICAg
ICAgICAgICAgICh3b3JrZXJfbmFtZSwgdGhyZWFkLmlkKCksIHRlc3RfbmFtZSkpCisgICAgICAg
IHNlbGYuX2xvZ19zdGFjayhzdGFjaykKKworICAgIGRlZiBfZmluZF90aHJlYWRfc3RhY2soc2Vs
ZiwgaWQpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc3RhY2sgb2JqZWN0IHRoYXQgY2FuIGJlIHVz
ZWQgdG8gZHVtcCBhIHN0YWNrIHRyYWNlIGZvcgorICAgICAgICB0aGUgZ2l2ZW4gdGhyZWFkIGlk
IChvciBOb25lIGlmIHRoZSBpZCBpcyBub3QgZm91bmQpLiIiIgorICAgICAgICBmb3IgdGhyZWFk
X2lkLCBzdGFjayBpbiBzeXMuX2N1cnJlbnRfZnJhbWVzKCkuaXRlbXMoKToKKyAgICAgICAgICAg
IGlmIHRocmVhZF9pZCA9PSBpZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhY2sKKyAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfbG9nX3N0YWNrKHNlbGYsIHN0YWNrKToKKyAgICAg
ICAgIiIiTG9nIGEgc3RhY2sgdHJhY2UgdG8gbG9nLmVycm9yKCkuIiIiCisgICAgICAgIGZvciBm
aWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lIGluIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN0
YWNrKToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZpbGU6ICIlcyIsIGxpbmUgJWQsIGluICVz
JyAlIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKSkKKyAgICAgICAgICAgIGlmIGxpbmU6CisgICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcignICAlcycgJSBsaW5lLnN0cmlwKCkpCisKKworY2xhc3Mg
X011bHRpUHJvY2Vzc0Jyb2tlcihfTXVsdGlUaHJlYWRlZEJyb2tlcik6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMpOgorICAgICAgICBzdXBlcihfTXVsdGlQcm9jZXNzQnJv
a2VyLCBzZWxmKS5fX2luaXRfXyhwb3J0LCBvcHRpb25zKQorICAgICAgICBzZWxmLl9xdWV1ZXNb
TUFOQUdFUl0gPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICBzZWxmLl9xdWV1ZXNb
QU5ZX1dPUktFUl0gPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorCisgICAgY2xhc3MgX1dvcmtl
cihkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5Xb3JrZXIsIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNz
KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX251bWJlcik6Cisg
ICAgICAgICAgICBzdXBlcihfTXVsdGlQcm9jZXNzQnJva2VyLl9Xb3JrZXIsIHNlbGYpLl9faW5p
dF9fKGJyb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2VyX251bWJlcikKKworICAgICAgICBkZWYgY2FuY2VsKHNl
bGYpOgorICAgICAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRf
d29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X25hbWUpOgorICAgICAgICBwcm9jID0gc2Vs
Zi5fY2hpbGRyZW5bd29ya2VyX25hbWVdCisgICAgICAgIF9sb2cuZXJyb3IoIiVzIChwaWQgJWQp
IGlzIHdlZGdlZCBvbiB0ZXN0ICVzIiAlCisgICAgICAgICAgICAgICAgICAgKHdvcmtlcl9uYW1l
LCBwcm9jLnBpZCwgdGVzdF9uYW1lKSkKKyAgICAgICAgX2xvZy5lcnJvcigiIikKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRlc3Qu
cHkKaW5kZXggNmYwNGZkMzU1MThhMDRlYmQ2OTE5ZmY4YTk3NjEzY2Y0YzViZTFmNC4uNjk1MmZm
NTA5OTRlMmZlZGMwNmU1ZDRkZmRiNWRhMTY1NmM4MDk0NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9i
cm9rZXJfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRlc3QucHkKQEAgLTQy
LDEzOSArNDIsNjAgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJr
aXRfdGVzdHMKIAogaW1wb3J0IG1lc3NhZ2VfYnJva2VyCiAKKyMgRklYTUU6IEJveSBkbyB3ZSBu
ZWVkIGEgbG90IG1vcmUgdGVzdHMgaGVyZSAuLi4KIAotY2xhc3MgVGVzdFRocmVhZCh0aHJlYWRp
bmcuVGhyZWFkKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnRlZF9xdWV1ZSwgc3RvcHBp
bmdfcXVldWUpOgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAg
ICAgIHNlbGYuX3RocmVhZF9pZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fc3RhcnRlZF9xdWV1ZSA9
IHN0YXJ0ZWRfcXVldWUKLSAgICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19x
dWV1ZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gRmFsc2UKLSAgICAgICAgc2VsZi5fdGltZW91
dF9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBO
b25lCi0KLSAgICBkZWYgaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90aHJlYWRfaWQK
LQotICAgIGRlZiBnZXROYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gIndvcmtlci0wIgotCi0g
ICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2VsZi5fY292ZXJlZF9ydW4oKQotCi0gICAgZGVm
IF9jb3ZlcmVkX3J1bihzZWxmKToKLSAgICAgICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRl
IHJvdXRpbmUgdG8gd29yayBhcm91bmQgYSBidWcKLSAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2Vl
IGh0dHA6Ly9iaXRidWNrZXQub3JnL25lZC9jb3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICBz
ZWxmLl90aHJlYWRfaWQgPSB0aHJlYWQuZ2V0X2lkZW50KCkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5fc3RhcnRlZF9xdWV1ZS5wdXQoJycpCi0gICAgICAgICAgICBtc2cgPSBzZWxm
Ll9zdG9wcGluZ19xdWV1ZS5nZXQoKQotICAgICAgICAgICAgaWYgbXNnID09ICdLZXlib2FyZElu
dGVycnVwdCc6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAg
ICAgICAgIGVsaWYgbXNnID09ICdFeGNlcHRpb24nOgotICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoKQotICAgICAgICAgICAgZWxpZiBtc2cgPT0gJ1RpbWVvdXQnOgotICAgICAgICAg
ICAgICAgIHNlbGYuX3RpbWVvdXQgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fdGltZW91
dF9xdWV1ZS5nZXQoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLl9leGNlcHRp
b25faW5mbyA9IHN5cy5leGNfaW5mbygpCi0KLSAgICBkZWYgZXhjZXB0aW9uX2luZm8oc2VsZik6
Ci0gICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb25faW5mbwotCi0gICAgZGVmIG5leHRfdGlt
ZW91dChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fdGltZW91dDoKLSAgICAgICAgICAgIHNlbGYu
X3RpbWVvdXRfcXVldWUucHV0KCdkb25lJykKLSAgICAgICAgICAgIHJldHVybiB0aW1lLnRpbWUo
KSAtIDEwCi0gICAgICAgIHJldHVybiB0aW1lLnRpbWUoKQotCi0gICAgZGVmIGNsZWFyX25leHRf
dGltZW91dChzZWxmKToKLSAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0ID0gTm9uZQotCi1jbGFz
cyBUZXN0SGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBh
c3RyZWFtKToKLSAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAg
IHNlbGYuX3N0cmVhbSA9IGFzdHJlYW0KLQotICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6Ci0g
ICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZShzZWxmLmZvcm1hdChyZWNvcmQpKQotCi0KLWNsYXNz
IE11bHRpVGhyZWFkZWRCcm9rZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjbGFzcyBN
b2NrVGVzdFJ1bm5lcihvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgICAgICBwYXNzCi0KLSAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgICAgICBw
YXNzCi0KLSAgICAgICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgICAgIHBhc3MKLQotICAg
IGRlZiBydW5fb25lX3RocmVhZChzZWxmLCBtc2cpOgotICAgICAgICBydW5uZXIgPSBzZWxmLk1v
Y2tUZXN0UnVubmVyKCkKLSAgICAgICAgcG9ydCA9IE5vbmUKLSAgICAgICAgb3B0aW9ucyA9IG1v
Y2t0b29sLk1vY2tPcHRpb25zKGNoaWxkX3Byb2Nlc3Nlcz0nMScpCi0gICAgICAgIHN0YXJ0aW5n
X3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBzdG9wcGluZ19xdWV1ZSA9IFF1ZXVlLlF1
ZXVlKCkKLSAgICAgICAgYnJva2VyID0gbWVzc2FnZV9icm9rZXIuTXVsdGlUaHJlYWRlZEJyb2tl
cihwb3J0LCBvcHRpb25zKQotICAgICAgICBicm9rZXIuX3Rlc3RfcnVubmVyID0gcnVubmVyCi0g
ICAgICAgIGNoaWxkX3RocmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRpbmdfcXVldWUsIHN0b3BwaW5n
X3F1ZXVlKQotICAgICAgICBicm9rZXIuX3dvcmtlcnNbJ3dvcmtlci0wJ10gPSBtZXNzYWdlX2Jy
b2tlci5fV29ya2VyU3RhdGUoJ3dvcmtlci0wJykKLSAgICAgICAgYnJva2VyLl93b3JrZXJzWyd3
b3JrZXItMCddLnRocmVhZCA9IGNoaWxkX3RocmVhZAotICAgICAgICBjaGlsZF90aHJlYWQuc3Rh
cnQoKQotICAgICAgICBzdGFydGVkX21zZyA9IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCi0gICAgICAg
IHN0b3BwaW5nX3F1ZXVlLnB1dChtc2cpCi0gICAgICAgIHJldHVybiBicm9rZXIucnVuX21lc3Nh
Z2VfbG9vcCgpCiAKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgaW50ZXJydXB0
ZWQgPSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlu
dGVycnVwdGVkKQorY2xhc3MgVGVzdFRocmVhZFN0YWNrcyh1bml0dGVzdC5UZXN0Q2FzZSk6Cisg
ICAgY2xhc3MgVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICBkZWYgX19pbml0X18o
c2VsZiwgc3RhcnRlZF9xdWV1ZSwgc3RvcHBpbmdfcXVldWUpOgorICAgICAgICAgICAgdGhyZWFk
aW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgc2VsZi5faWQgPSBOb25lCisg
ICAgICAgICAgICBzZWxmLl9zdGFydGVkX3F1ZXVlID0gc3RhcnRlZF9xdWV1ZQorICAgICAgICAg
ICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19xdWV1ZQogCi0gICAgZGVmIHRlc3Rf
aW50ZXJydXB0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVy
cnVwdCwgc2VsZi5ydW5fb25lX3RocmVhZCwgJ0tleWJvYXJkSW50ZXJydXB0JykKKyAgICAgICAg
ZGVmIGlkKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lkCiAKLSAgICBkZWYgdGVz
dF90aW1lb3V0KHNlbGYpOgotICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVy
ZSgpCi0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgaW50ZXJydXB0ZWQgPSBz
ZWxmLnJ1bl9vbmVfdGhyZWFkKCdUaW1lb3V0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShp
bnRlcnJ1cHRlZCkKLSAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICBkZWYgbmFt
ZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAnd29ya2VyLzAnCiAKLSAgICBkZWYgdGVzdF9l
eGNlcHRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNl
bGYucnVuX29uZV90aHJlYWQsICdFeGNlcHRpb24nKQorICAgICAgICBkZWYgcnVuKHNlbGYpOgor
ICAgICAgICAgICAgc2VsZi5faWQgPSB0aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgICAgIHNl
bGYuX3N0YXJ0ZWRfcXVldWUucHV0KCcnKQorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RvcHBp
bmdfcXVldWUuZ2V0KCkKIAorICAgIGRlZiBtYWtlX2Jyb2tlcihzZWxmKToKKyAgICAgICAgb3B0
aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKCkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VfYnJv
a2VyLl9NdWx0aVRocmVhZGVkQnJva2VyKHBvcnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucykKIAotY2xhc3Mg
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZmluZF90aHJlYWRfc3RhY2tf
Zm91bmQoc2VsZik6CisgICAgICAgIGJyb2tlciA9IHNlbGYubWFrZV9icm9rZXIoKQogICAgICAg
ICBpZCwgc3RhY2sgPSBzeXMuX2N1cnJlbnRfZnJhbWVzKCkuaXRlbXMoKVswXQotICAgICAgICBm
b3VuZF9zdGFjayA9IG1lc3NhZ2VfYnJva2VyLl9maW5kX3RocmVhZF9zdGFjayhpZCkKKyAgICAg
ICAgZm91bmRfc3RhY2sgPSBicm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKGlkKQogICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGZvdW5kX3N0YWNrLCBOb25lKQogCiAgICAgZGVmIHRlc3RfZmlu
ZF90aHJlYWRfc3RhY2tfbm90X2ZvdW5kKHNlbGYpOgotICAgICAgICBmb3VuZF9zdGFjayA9IG1l
c3NhZ2VfYnJva2VyLl9maW5kX3RocmVhZF9zdGFjaygwKQorICAgICAgICBicm9rZXIgPSBzZWxm
Lm1ha2VfYnJva2VyKCkKKyAgICAgICAgZm91bmRfc3RhY2sgPSBicm9rZXIuX2ZpbmRfdGhyZWFk
X3N0YWNrKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmRfc3RhY2ssIE5vbmUpCiAK
ICAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3dvcmtlcihzZWxmKToKKyAgICAgICAgYnJva2VyID0g
c2VsZi5tYWtlX2Jyb2tlcigpCiAgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0
dXJlKCkKICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBsb2dnZXIgPSBtZXNz
YWdlX2Jyb2tlci5fbG9nCi0gICAgICAgIGFzdHJlYW0gPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJl
YW0oKQotICAgICAgICBoYW5kbGVyID0gVGVzdEhhbmRsZXIoYXN0cmVhbSkKLSAgICAgICAgbG9n
Z2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKIAogICAgICAgICBzdGFydGluZ19xdWV1ZSA9IFF1ZXVl
LlF1ZXVlKCkKICAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAg
IGNoaWxkX3RocmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVl
KQorICAgICAgICBjaGlsZF90aHJlYWQgPSBUZXN0VGhyZWFkU3RhY2tzLlRocmVhZChzdGFydGlu
Z19xdWV1ZSwgc3RvcHBpbmdfcXVldWUpCiAgICAgICAgIGNoaWxkX3RocmVhZC5zdGFydCgpCisg
ICAgICAgIGJyb2tlci5fY2hpbGRyZW5bY2hpbGRfdGhyZWFkLm5hbWUoKV0gPSBjaGlsZF90aHJl
YWQKICAgICAgICAgbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0KCkKIAotICAgICAgICBtZXNzYWdl
X2Jyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcihjaGlsZF90aHJlYWQuZ2V0TmFtZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF90aHJlYWQuaWQoKSkKKyAg
ICAgICAgYnJva2VyLmxvZ193ZWRnZWRfd29ya2VyKGNoaWxkX3RocmVhZC5uYW1lKCksICd0ZXN0
X25hbWUnKQogICAgICAgICBzdG9wcGluZ19xdWV1ZS5wdXQoJycpCiAgICAgICAgIGNoaWxkX3Ro
cmVhZC5qb2luKHRpbWVvdXQ9MS4wKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN0cmVh
bS5lbXB0eSgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNoaWxkX3RocmVhZC5pc0FsaXZl
KCkpCiAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21h
Yy5weQppbmRleCBkMWMzODNjMTNlYzJmMTNhZjVmYjFmMTU0MDU3OWM0Yzg4OWZkZDYzLi43ZDcw
NGMzYTg5YWY1NGFkMGRhZjA3NDhiNGQ4ODlhNjIyYWNlNGNkIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX21hYy5weQpAQCAtNjIsMTUgKzYyLDYgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAgICAgICAgICdNYWNCdWlsZEluc3Ry
dWN0aW9ucycpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIGRlZiBkZWZhdWx0X2NoaWxk
X3Byb2Nlc3NlcyhzZWxmKToKLSAgICAgICAgIyBGSVhNRTogd2UgbmVlZCB0byBydW4gc2luZ2xl
LXRocmVhZGVkIGZvciBub3cuIFNlZQotICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODU1My4gVW5mb3J0dW5hdGVseSB0aGlzCi0gICAgICAgICMgcm91
dGluZSBpcyBjYWxsZWQgcmlnaHQgYmVmb3JlIHRoZSBsb2dnZXIgaXMgY29uZmlndXJlZCwgc28g
aWYgd2UKLSAgICAgICAgIyB0cnkgdG8gX2xvZy53YXJuaW5nKCksIGl0IGdldHMgdGhyb3duIGF3
YXkuCi0gICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRGVmYXVs
dGluZyB0byBvbmUgY2hpbGQgLSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4NTUzXG4iKQotICAgICAgICByZXR1cm4gMQotCiAgICAgZGVmIGRyaXZlcl9uYW1l
KHNlbGYpOgogICAgICAgICAiIiJuYW1lIGZvciB0aGlzIHBvcnQncyBlcXVpdmFsZW50IG9mIER1
bXBSZW5kZXJUcmVlLiIiIgogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWMucHkKaW5kZXggNjk2ZTMzOThlYTRiMjhhYzc2MjI1OTA3ZGMzNjJmZmMzZmI4NmY5ZS4u
NzJmOTFkODM4MjE1YWY0YmM0NGYxZGMxZjA2NTVkYWRjN2QzMzZmZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAg
LTQ3LDE1ICs0Nyw2IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgIGt3YXJn
cy5zZXRkZWZhdWx0KCdwb3J0X25hbWUnLCAnbWFjJyArIHNlbGYudmVyc2lvbigpKQogICAgICAg
ICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQogCi0gICAgZGVmIGRlZmF1bHRf
Y2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBuZXctcnVuLXdlYmtpdC10
ZXN0cyBpcyB1bnN0YWJsZSBvbiBNYWMgcnVubmluZyBtb3JlIHRoYW4KLSAgICAgICAgIyBmb3Vy
IHRocmVhZHMgaW4gcGFyYWxsZWwuCi0gICAgICAgICMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjYyMgotICAgICAgICBjaGlsZF9wcm9jZXNzZXMgPSBXZWJL
aXRQb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpCi0gICAgICAgIGlmIGNoaWxkX3By
b2Nlc3NlcyA+IDQ6Ci0gICAgICAgICAgICByZXR1cm4gNAotICAgICAgICByZXR1cm4gY2hpbGRf
cHJvY2Vzc2VzCi0KICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAg
IHBvcnRfbmFtZXMgPSBbXQogICAgICAgICBpZiBzZWxmLl9uYW1lID09ICdtYWMtdGlnZXInOgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggZjRlOTJhNjg2OThkNGIwNjkwMzFkNmJiMWIz
Nzg4MmRiYWYxZmFmNS4uNWY1YTI0NmEzODAxOTVmMjM0NDkwYWNiYzE4NTY0YjhkNjRmZjU3ZiAx
MDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC02NCw3ICs2NCw2IEBAIGltcG9ydCBzeXMK
IGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiAKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1w
b3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBq
c29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQg
bWVzc2FnZV9icm9rZXIKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCkBAIC0x
MzUsNyArMTM0LDcgQEAgY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgogICAgICAgICAiIiJB
ZGQgYSBUZXN0UmVzdWx0IGludG8gdGhlIGFwcHJvcHJpYXRlIGJpbi4KIAogICAgICAgICBBcmdz
OgotICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdCBmcm9tIGR1bXBfcmVuZGVyX3RyZWVfdGhy
ZWFkLgorICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdAogICAgICAgICAgIGV4cGVjdGVkOiB3
aGV0aGVyIHRoZSByZXN1bHQgd2FzIHdoYXQgd2UgZXhwZWN0ZWQgaXQgdG8gYmUuCiAgICAgICAg
ICIiIgogCkBAIC0yMjgsNiArMjI3LDI1IEBAIGRlZiBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1
bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LAogICAgIHJldHVybiBy
ZXN1bHRzCiAKIAorIyBGSVhNRTogVGhpcyBuYW1lIGlzIHNvbWV3aGF0IG1pc2xlYWRpbmcgYmVj
YXVzZSB0aGUgYWN0dWFsIHdvcmtlcnMgaGF2ZQorIyB0aGVpciBvd24gaW50ZXJuYWwgc3RhdGUg
aW4gVGVzdFNoZWxsVGhyZWFkLiBIb3dldmVyLCBhIGJldHRlciBuYW1lIGZvcgorIyB0aGlzIGhh
cyB5ZXQgdG8gYmUgZm91bmQuCitjbGFzcyBfV29ya2VyU3RhdGUob2JqZWN0KToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgbmFtZSwgbnVtYmVyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQor
ICAgICAgICBzZWxmLm51bWJlciA9IG51bWJlcgorICAgICAgICBzZWxmLmRvbmUgPSBGYWxzZQor
ICAgICAgICBzZWxmLm5leHRfdGltZW91dCA9IE5vbmUKKyAgICAgICAgc2VsZi53ZWRnZWQgPSBG
YWxzZQorICAgICAgICBzZWxmLnN0YXRzID0ge30KKyAgICAgICAgc2VsZi5zdGF0c1snbmFtZSdd
ID0gbmFtZQorICAgICAgICBzZWxmLnN0YXRzWydudW1fdGVzdHMnXSA9IDAKKyAgICAgICAgc2Vs
Zi5zdGF0c1sndG90YWxfdGltZSddID0gMAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAg
ICAgICByZXR1cm4gIl9Xb3JrZXJTdGF0ZSgiICsgc3RyKHNlbGYuX19kaWN0X18pICsgIikiCisK
KwogY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAiIiJBIGNsYXNzIGZvciBtYW5hZ2luZyBydW5uaW5n
IGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAogICAgIHRlc3QgZmlsZXMu
IiIiCkBAIC0yNDAsMTkgKzI1OCwyNiBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICMgaW4gRHVt
cFJlbmRlclRyZWUuCiAgICAgREVGQVVMVF9URVNUX1RJTUVPVVRfTVMgPSA2ICogMTAwMAogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHByaW50ZXIsIG1lc3NhZ2VfYnJv
a2VyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgcHJpbnRlcik6CiAg
ICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1Y3R1cmVzLgogCiAgICAg
ICAgIEFyZ3M6CiAgICAgICAgICAgcG9ydDogYW4gb2JqZWN0IGltcGxlbWVudGluZyBwb3J0LXNw
ZWNpZmljCiAgICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNvbW1hbmQgbGluZSBv
cHRpb25zCiAgICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVjdCB0byByZWNvcmQgdXBk
YXRlcyB0by4KLSAgICAgICAgICBtZXNzYWdlX2Jyb2tlcjogb2JqZWN0IHVzZWQgdG8gY29tbXVu
aWNhdGUgd2l0aCB3b3JrZXJzLgogICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fbmFtZSA9IG1l
c3NhZ2VfYnJva2VyLk1BTkFHRVIKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAg
c2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50ZXIK
LSAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBtZXNzYWdlX2Jyb2tlcgorICAgICAgICBz
ZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKKyAgICAgICAgc2VsZi5VUERBVEVfSU5URVJWQUwg
PSAwLjAxCisKKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhY3R1YWxseSBhIGNvbGxlY3Rpb24g
b2YgV29ya2VyU3RhdGUgb2JqZWN0cyB0aGF0CisgICAgICAgICMgcmVwcmVzZW50IHRoZSBzdGF0
ZSBvZiB0aGUgd29ya2VycyAod2hpY2ggbWF5IGJlIHNlcGFyYXRlIHRocmVhZHMKKyAgICAgICAg
IyBvciBwcm9jZXNzZXMuIFRoaXMgaXMgYSBiaXQgYXdrd2FyZCBidXQgYSBiZXR0ZXIgbmFtZSBo
YXMgeWV0IHRvCisgICAgICAgICMgcHJlc2VudCBpdHNlbGYuCisgICAgICAgIHNlbGYuX3dvcmtl
cnMgPSB7fQogCiAgICAgICAgICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRvIGluc3RhbGwg
cHlPcGVuU1NMIG9uIGJ1aWxkYm90cy4KICAgICAgICAgIyBzZWxmLl93ZWJzb2NrZXRfc2VjdXJl
X3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCkBAIC0yNjEsOSArMjg2LDE0
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICMgYSBzZXQgb2YgdGVzdCBmaWxlcywgYW5k
IHRoZSBzYW1lIHRlc3RzIGFzIGEgbGlzdAogICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0
KCkKICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gTm9uZQotICAgICAgICBzZWxmLl9y
ZXN1bHRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCiAgICAgICAgIHNlbGYuX3JldHJ5aW5nID0gRmFs
c2UKIAorICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCiAgICAgZGVmIGNv
bGxlY3RfdGVzdHMoc2VsZiwgYXJncywgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpOgogICAgICAg
ICAiIiJGaW5kIGFsbCB0aGUgZmlsZXMgdG8gdGVzdC4KIApAQCAtNTg1LDYyICs2MTUsOTggQEAg
Y2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0ge2ZpbGVuYW1lOmZp
bGVuYW1lLCB0ZXN0X3J1bl90aW1lOnRlc3RfcnVuX3RpbWV9CiAgICAgICAgICAgICByZXN1bHRf
c3VtbWFyeTogc3VtbWFyeSBvYmplY3QgdG8gcG9wdWxhdGUgd2l0aCB0aGUgcmVzdWx0cwogICAg
ICAgICAiIiIKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCisKKyAg
ICAgICAgc2VsZi5fY3VycmVudF9maWxlX2xpc3QgPSBmaWxlX2xpc3QKKyAgICAgICAgc2VsZi5f
Y3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5CisKKyAgICAgICAgc2VsZi5f
YWxsX3Jlc3VsdHMgPSBbXQorICAgICAgICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9CisgICAgICAg
IHNlbGYuX3dvcmtlcnMgPSB7fQogCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRl
KCdTaGFyZGluZyB0ZXN0cyAuLi4nKQotICAgICAgICBudW1fd29ya2VycyA9IHNlbGYuX251bV93
b3JrZXJzKCkKICAgICAgICAgdGVzdF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlz
dCwKICAgICAgICAgICAgIG51bV93b3JrZXJzID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZXhw
ZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsKQotICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IFF1ZXVl
LlF1ZXVlKCkKLSAgICAgICAgZm9yIGl0ZW0gaW4gdGVzdF9saXN0czoKLSAgICAgICAgICAgIGZp
bGVuYW1lX3F1ZXVlLnB1dChpdGVtKQorCisgICAgICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2Vy
LmdldChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zKQorICAgICAgICBzZWxmLl9tZXNzYWdlX2Jy
b2tlciA9IGJyb2tlcgorICAgICAgICBmb3IgdGVzdF9saXN0IGluIHRlc3RfbGlzdHM6CisgICAg
ICAgICAgICBzZWxmLl9wb3N0KCd0ZXN0X2xpc3QnLCB0ZXN0X2xpc3QpCisKKyAgICAgICAgIyBU
ZWxsIHRoZSB3b3JrZXJzIHRvIHNodXQgZG93biBhZnRlciB0aGV5J3JlIGRvbmUgcnVubmluZyBh
bGwgdGhlCisgICAgICAgICMgdGVzdHMuCisgICAgICAgIGZvciBpIGluIHhyYW5nZShudW1fd29y
a2Vycyk6CisgICAgICAgICAgICBzZWxmLl9wb3N0KCdzdG9wJykKIAogICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2Vy
cykpCi0gICAgICAgIG1lc3NhZ2VfYnJva2VyID0gc2VsZi5fbWVzc2FnZV9icm9rZXIKLSAgICAg
ICAgc2VsZi5fY3VycmVudF9maWxlbmFtZV9xdWV1ZSA9IGZpbGVuYW1lX3F1ZXVlCi0gICAgICAg
IHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQotCi0gICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICB0aHJlYWRzID0gbWVz
c2FnZV9icm9rZXIuc3RhcnRfd29ya2VycyhzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgdGhyZWFkcyA9IHt9CisgICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1f
d29ya2Vycyk6CisgICAgICAgICAgICB3b3JrZXJfbmFtZSA9IGJyb2tlci5zdGFydF93b3JrZXIo
d29ya2VyX251bWJlcikKKyAgICAgICAgICAgIHcgPSBfV29ya2VyU3RhdGUod29ya2VyX25hbWUs
IHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICBzZWxmLl93b3JrZXJzW3dvcmtlcl9uYW1lXSA9
IHcKIAogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgdGVzdGlu
ZyAuLi4iKQogICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIGlm
IG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgbWVzc2FnZV9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCi0gICAgICAgICAgICBleGNl
cHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJJbnRlcnJ1
cHRlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICAgICAgbWVzc2FnZV9icm9rZXIuY2FuY2VsX3dv
cmtlcnMoKQotICAgICAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gVHJ1ZQotICAg
ICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNlcHRpb247
IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgotICAgICAgICAgICAgICAgIF9sb2cuaW5m
bygiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICAgICAgcmFpc2UKLQot
ICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGlt
aW5ncyA9IFwKLSAgICAgICAgICAgIHNlbGYuX2NvbGxlY3RfdGltaW5nX2luZm8odGhyZWFkcykK
LQotICAgICAgICByZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywg
dGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQot
Ci0gICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxm
Ll9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5KQotCi0gICAgZGVmIF9jb2xsZWN0X3RpbWluZ19pbmZv
KHNlbGYsIHRocmVhZHMpOgotICAgICAgICB0ZXN0X3RpbWluZ3MgPSB7fQotICAgICAgICBpbmRp
dmlkdWFsX3Rlc3RfdGltaW5ncyA9IFtdCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW10KKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKKyAg
ICAgICAgICAgICAgICBkb25lID0gc2VsZi5fY2hlY2tfb25fd29ya2VycygpCisgICAgICAgICAg
ICAgICAgaWYgbm90IGRvbmU6CisgICAgICAgICAgICAgICAgICAgIGJyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKHNlbGYsIG1lc3NhZ2VfYnJva2VyLk1BTkFHRVIpCisKKyAgICAgICAgICAgICAgICBm
b3IgdyBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBu
b3Qgdy53ZWRnZWQgYW5kIGJyb2tlci53b3JrZXJfaXNfYWxpdmUody5uYW1lKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyb2tlci5qb2luX3dvcmtlcih3Lm5hbWUsIDAuNSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydCBub3QgYnJva2VyLndvcmtlcl9pc19hbGl2ZSh3Lm5hbWUp
CisKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgX2xvZy5p
bmZvKCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCisgICAgICAgICAgICBmb3Igd29ya2VyX25hbWUg
aW4gc2VsZi5fd29ya2Vycy5rZXlzKCk6CisgICAgICAgICAgICAgICAgYnJva2VyLmNhbmNlbF93
b3JrZXIod29ya2VyX25hbWUpCisgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRy
dWUKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBVbmV4cGVjdGVkIGV4Y2VwdGlvbjsg
ZG9uJ3QgdHJ5IHRvIGNsZWFuIHVwIHdvcmtlcnMuCisgICAgICAgICAgICBfbG9nLmluZm8oIkV4
Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9r
ZXIgPSBOb25lCisgICAgICAgICAgICByYWlzZQogCi0gICAgICAgIGZvciB0aHJlYWQgaW4gdGhy
ZWFkczoKLSAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLmFwcGVuZCh7J25hbWUnOiB0aHJlYWQu
Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtX3Rlc3Rz
JzogdGhyZWFkLmdldF9udW1fdGVzdHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RvdGFsX3RpbWUnOiB0aHJlYWQuZ2V0X3RvdGFsX3RpbWUoKX0pCi0gICAgICAgICAg
ICB0ZXN0X3RpbWluZ3MudXBkYXRlKHRocmVhZC5nZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMo
KSkKLSAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLmV4dGVuZCh0aHJlYWQuZ2V0
X3Rlc3RfcmVzdWx0cygpKQorICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKKyAg
ICAgICAgdGhyZWFkX3RpbWluZ3MgPSBbdy5zdGF0cyBmb3IgdyBpbiBzZWxmLl93b3JrZXJzLnZh
bHVlcygpXQorICAgICAgICByZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGlt
aW5ncywKKyAgICAgICAgICAgICAgICBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3Vs
dHMpCisKKyAgICBkZWYgX3Bvc3Qoc2VsZiwgbWVzc2FnZV9uYW1lLCAqbWVzc2FnZV9hcmdzKToK
KyAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIucHV0X21lc3NhZ2Uoc2VsZi5fbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9icm9rZXIuQU5Z
X1dPUktFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZV9uYW1lLCAqbWVzc2FnZV9hcmdzKQorCisgICAgZGVmIF9jaGVja19vbl93b3JrZXJzKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGFsbCB0aGUgd29ya2VycyBoYXZlIGVpdGhl
ciBjb21wbGV0ZWQgb3Igd2VkZ2VkLiIiIgorICAgICAgICBkb25lID0gVHJ1ZQorICAgICAgICB0
ID0gdGltZS50aW1lKCkKKyAgICAgICAgYnJva2VyID0gc2VsZi5fbWVzc2FnZV9icm9rZXIKKyAg
ICAgICAgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIG5v
dCB3LmRvbmUgYW5kIG5vdCB3LndlZGdlZDoKKyAgICAgICAgICAgICAgICBuZXh0X3RpbWVvdXQg
PSB3Lm5leHRfdGltZW91dAorICAgICAgICAgICAgICAgIFdFREdFX1BBRERJTkcgPSA0MC4wCisg
ICAgICAgICAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0ICsgV0VE
R0VfUEFERElORzoKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAg
ICAgICAgICAgICAgYnJva2VyLmxvZ193ZWRnZWRfd29ya2VyKHcubmFtZSwgdy5jdXJyZW50X3Rl
c3RfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAg
ICAgICAgICAgdy53ZWRnZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgZG9uZSA9IEZhbHNlCiAKLSAgICAgICAgcmV0dXJuICh0aHJlYWRfdGltaW5n
cywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgaWYgZG9u
ZToKKyAgICAgICAgICAgIGlmIGFueShbdy53ZWRnZWQgZm9yIHdjIGluIHNlbGYuX3dvcmtlcnNd
KToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJ1JlbWFpbmluZyB3b3JrZXJzIGFyZSB3ZWRnZWQsIGJhaWxpbmcgb3V0LicpCisgICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygnTm8gd2VkZ2VkIHRocmVhZHMnKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgYnJva2VyLmFkZF90aW1lcihzZWxmLm5hbWUoKSwgc2VsZi5fY2hlY2tfb25fd29y
a2VycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5VUERBVEVfSU5URVJWQUwp
CisgICAgICAgIHJldHVybiBkb25lCiAKICAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKICAgICAg
ICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZl
ci4iIiIKQEAgLTc3NCwyMyArODQwLDUxIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIF9s
b2cuZGVidWcoInN0b3BwaW5nIGhlbHBlciIpCiAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxw
ZXIoKQogCi0gICAgZGVmIHVwZGF0ZV9zdW1tYXJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAg
ICBkZWYgaGFuZGxlX3N0YXJ0ZWRfdGVzdChzZWxmLCBzcmMsIHRlc3RfaW5mbywgaGFuZ190aW1l
b3V0KToKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3LmN1cnJlbnRf
dGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKAorICAgICAgICAg
ICAgdGVzdF9pbmZvLmZpbGVuYW1lKQorICAgICAgICB3Lm5leHRfdGltZW91dCA9IHRpbWUudGlt
ZSgpICsgaGFuZ190aW1lb3V0CisKKyAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc3JjKToKKyAg
ICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3LmRvbmUgPSBUcnVlCisgICAg
ICAgIHBhc3MKKworICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdChzZWxmLCBzcmMsIHJlc3Vs
dCwgZWxhcHNlZF90aW1lKToKICAgICAgICAgIiIiVXBkYXRlIHRoZSBzdW1tYXJ5IGFuZCBwcmlu
dCByZXN1bHRzIHdpdGggYW55IGNvbXBsZXRlZCB0ZXN0cy4iIiIKLSAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3Vs
dHMuVGVzdFJlc3VsdC5sb2FkcyhzZWxmLl9yZXN1bHRfcXVldWUuZ2V0X25vd2FpdCgpKQotICAg
ICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVj
dGVkX3Jlc3VsdCgKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUsIHJlc3VsdC50eXBl
LCBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzKQotICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnku
YWRkKHJlc3VsdCwgZXhwZWN0ZWQpCi0gICAgICAgICAgICBleHBfc3RyID0gc2VsZi5fZXhwZWN0
YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZSkKLSAgICAgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0
YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3RyKQotICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9wcm9ncmVzcyhyZXN1bHRfc3VtbWFyeSwgc2Vs
Zi5fcmV0cnlpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCkKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAg
ICAgICB3Lm5leHRfdGltZW91dCA9IE5vbmUKKyAgICAgICAgdy5jdXJyZW50X3Rlc3QgPSBOb25l
CisKKyAgICAgICAgaWYgdy53ZWRnZWQ6CisgICAgICAgICAgICAjIEhtbS4gVGhpcyBzaG91bGRu
J3QgaGFwcGVuIGlmIHdlIGhhdmUgb3VyIHRpbWVvdXRzCisgICAgICAgICAgICAjIHR1bmVkIHBy
b3Blcmx5LgorICAgICAgICAgICAgX2xvZy5lcnJvcigiJXMgdW53ZWRnZWQiLCB3Lm5hbWUpCisK
KyAgICAgICAgc2VsZi5fdXBkYXRlX3dvcmtlcl9zdGF0cyhzcmMsIHJlc3VsdCwgZWxhcHNlZF90
aW1lKQorCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5f
ZXhwZWN0ZWRfcmVzdWx0KAorICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlw
ZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykKKyAgICAgICAgZXhwX3N0ciA9IHNlbGYuX2V4
cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKKyAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZSkKKyAgICAgICAgZ290X3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5leHBlY3RhdGlv
bl90b19zdHJpbmcocmVzdWx0LnR5cGUpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGVz
dF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZCwgZXhwX3N0ciwgZ290X3N0cikKKworICAgICAgICBz
ZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQorICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3Byb2dyZXNzKHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcs
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKKworICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfbGlzdChz
ZWxmLCBzcmMsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgorICAgICAgICBz
ZWxmLl9ncm91cF9zdGF0c1tsaXN0X25hbWVdID0gKG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQor
CisgICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2VsZiwgc3JjLCBleGNlcHRpb25faW5mbyk6Cisg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhjZXB0
aW9uX2luZm9bMl0KKworICAgIGRlZiBfdXBkYXRlX3dvcmtlcl9zdGF0cyhzZWxmLCBzcmMsIHJl
c3VsdCwgZWxhcHNlZF90aW1lKToKKyAgICAgICAgc2VsZi5fd29ya2Vyc1tzcmNdLnN0YXRzWyd0
b3RhbF90aW1lJ10gKz0gZWxhcHNlZF90aW1lCisgICAgICAgIHNlbGYuX3dvcmtlcnNbc3JjXS5z
dGF0c1snbnVtX3Rlc3RzJ10gKz0gMQorICAgICAgICBzZWxmLl9hbGxfcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KQogCiAgICAgZGVmIF9jbG9iYmVyX29sZF9yZXN1bHRzKHNlbGYpOgogICAgICAgICAj
IEp1c3QgY2xvYmJlciB0aGUgYWN0dWFsIHRlc3QgcmVzdWx0cyBkaXJlY3RvcmllcyBzaW5jZSB0
aGUgb3RoZXIKQEAgLTk3MCw4ICsxMDY0LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICBkZWYg
X3ByaW50X2FnZ3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3Moc2VsZiwgaW5kaXZpZHVhbF90ZXN0X3Rp
bWluZ3MpOgogICAgICAgICAiIiJQcmludHMgYWdncmVnYXRlIHN0YXRpc3RpY3MgKGUuZy4gbWVk
aWFuLCBtZWFuLCBldGMuKSBmb3IgYWxsIHRlc3RzLgogICAgICAgICBBcmdzOgotICAgICAgICAg
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LlRlc3RTdGF0cwotICAgICAgICAgICAgICBmb3IgYWxsIHRlc3RzLgorICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RSZXN1bHRzIGZvciBhbGwgdGVzdHMuCiAg
ICAgICAgICIiIgogICAgICAgICB0ZXN0X3R5cGVzID0gW10gICMgVW5pdCB0ZXN0cyBkb24ndCBh
Y3R1YWxseSBwcm9kdWNlIGFueSB0aW1pbmdzLgogICAgICAgICBpZiBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5nczoKQEAgLTEwMDYsOCArMTA5OSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpOgogICAgICAgICAiIiJQ
cmludHMgdGhlIHJ1biB0aW1lcyBmb3Igc2xvdywgdGltZW91dCBhbmQgY3Jhc2ggdGVzdHMuCiAg
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2Yg
ZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFN0YXRzCi0gICAgICAgICAgICAgIGZvciBhbGwg
dGVzdHMuCisgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFN0
YXRzIGZvciBhbGwgdGVzdHMuCiAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2Jq
ZWN0IGZvciB0ZXN0IHJ1bgogICAgICAgICAiIiIKICAgICAgICAgIyBSZXZlcnNlLXNvcnQgYnkg
dGhlIHRpbWUgc3BlbnQgaW4gRHVtcFJlbmRlclRyZWUuCkBAIC0xMjk1LDEzICsxMzg3LDExIEBA
IGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwK
ICAgICAgICAgcHJpbnRlci5jbGVhbnVwKCkKICAgICAgICAgcmV0dXJuIDAKIAotICAgIGJyb2tl
ciA9IG1lc3NhZ2VfYnJva2VyLmdldChwb3J0LCBvcHRpb25zKQotCiAgICAgIyBXZSB3cmFwIGFu
eSBwYXJ0cyBvZiB0aGUgcnVuIHRoYXQgYXJlIHNsb3cgb3IgbGlrZWx5IHRvIHJhaXNlIGV4Y2Vw
dGlvbnMKICAgICAjIGluIGEgdHJ5L2ZpbmFsbHkgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4gdXAg
dGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4KICAgICBudW1fdW5leHBlY3RlZF9yZXN1bHRzID0g
LTEKICAgICB0cnk6Ci0gICAgICAgIHRlc3RfcnVubmVyID0gVGVzdFJ1bm5lcihwb3J0LCBvcHRp
b25zLCBwcmludGVyLCBicm9rZXIpCisgICAgICAgIHRlc3RfcnVubmVyID0gVGVzdFJ1bm5lcihw
b3J0LCBvcHRpb25zLCBwcmludGVyKQogICAgICAgICB0ZXN0X3J1bm5lci5fcHJpbnRfY29uZmln
KCkKIAogICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiQ29sbGVjdGluZyB0ZXN0cyAuLi4i
KQpAQCAtMTMzMCw3ICsxNDIwLDYgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCByZWd1
bGFyX291dHB1dD1zeXMuc3RkZXJyLAogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiVGVzdGluZyBj
b21wbGV0ZWQsIEV4aXQgc3RhdHVzOiAlZCIgJQogICAgICAgICAgICAgICAgICAgICAgICBudW1f
dW5leHBlY3RlZF9yZXN1bHRzKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIGJyb2tlci5jbGVhbnVw
KCkKICAgICAgICAgcHJpbnRlci5jbGVhbnVwKCkKIAogICAgIHJldHVybiBudW1fdW5leHBlY3Rl
ZF9yZXN1bHRzCkBAIC0xNTcwLDggKzE2NTksOCBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUp
OgogICAgICAgICAgICAgaGVscD0iTnVtYmVyIG9mIER1bXBSZW5kZXJUcmVlcyB0byBydW4gaW4g
cGFyYWxsZWwuIiksCiAgICAgICAgICMgRklYTUU6IERpc3BsYXkgZGVmYXVsdCBudW1iZXIgb2Yg
Y2hpbGQgcHJvY2Vzc2VzIHRoYXQgd2lsbCBydW4uCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItLXdvcmtlci1tb2RlbCIsIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAgICAgZGVmYXVs
dD0idGhyZWFkcyIsIGhlbHA9KCJjb250cm9scyB3b3JrZXIgbW9kZWwuIFZhbGlkIHZhbHVlcyBh
cmUgIgotICAgICAgICAgICAgIidpbmxpbmUnIGFuZCAndGhyZWFkcycgKGRlZmF1bHQpLiIpKSwK
KyAgICAgICAgICAgIGRlZmF1bHQ9InByb2Nlc3NlcyIsIGhlbHA9KCJjb250cm9scyB3b3JrZXIg
bW9kZWwuIFZhbGlkIHZhbHVlcyAiCisgICAgICAgICAgICAiYXJlICdpbmxpbmUnLCAndGhyZWFk
cycsIGFuZCAncHJvY2Vzc2VzJyAoZGVmYXVsdDogJWRlZmF1bHQpLiIpKSwKICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oIi0tZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsIiwKICAgICAg
ICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBo
ZWxwPSJydW4gYWxsIHRlc3RzIGluIHBhcmFsbGVsIiksCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weQppbmRleCA2YmI3NDFhNTdjOTFjMGIwZTI2NGNmZGU3ZDY0MTBj
YmY1ODM5NjZhLi5hZmQ3MDEyYTBlYTE0OWM5ZjVmZDVmMDZjMjliYTgxOTMzNTg5M2QxIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTE4Nyw3ICsxODcs
OCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYmF0
Y2hfc2l6ZShzZWxmKToKICAgICAgICAgYmF0Y2hfdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihb
Jy0tYmF0Y2gtc2l6ZScsICcyJ10pCiAgICAgICAgIGZvciBiYXRjaCBpbiBiYXRjaF90ZXN0c19y
dW46Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGJhdGNoKSA8PSAyLCAnJXMgaGFk
IHRvbyBtYW55IHRlc3RzJyAlICcsICcuam9pbihiYXRjaCkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUobGVuKGJhdGNoKSA8PSAyLCAnJXMgaGFkIHRvbyBtYW55IHRlc3RzJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJywnLmpvaW4oYmF0Y2gpKQogCiAgICAgZGVmIHRlc3Rf
Y2hpbGRfcHJvY2Vzc18xKHNlbGYpOgogICAgICAgICAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJl
Z3VsYXJfb3V0cHV0LCB1c2VyKSA9IGxvZ2dpbmdfcnVuKApAQCAtMjcwLDM4ICsyNzEsNTkgQEAg
Y2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3J1bl9jaHVu
ayhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgYWN0dWFsbHkgc2VsZWN0IHRoZSByaWdo
dCBjaHVuawogICAgICAgICBhbGxfdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihmbGF0dGVuX2Jh
dGNoZXM9VHJ1ZSkKLSAgICAgICAgY2h1bmtfdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0t
cnVuLWNodW5rJywgJzE6NCddLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgY2h1bmtf
dGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tcnVuLWNodW5rJywgJzE6NCddLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhbGxfdGVzdHNfcnVuWzQ6OF0sIGNodW5rX3Rlc3Rz
X3J1bikKIAotICAgICAgICAjIFRlc3QgdGhhdCB3ZSB3cmFwIGFyb3VuZCBpZiB0aGUgbnVtYmVy
IG9mIHRlc3RzIGlzIG5vdCBldmVubHkgZGl2aXNpYmxlIGJ5IHRoZSBjaHVuayBzaXplCi0gICAg
ICAgIHRlc3RzX3RvX3J1biA9IFsncGFzc2VzL2Vycm9yLmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0
bWwnLCAncGFzc2VzL3BsYXRmb3JtX2ltYWdlLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCddCi0g
ICAgICAgIGNodW5rX3Rlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXJ1bi1jaHVuaycsICcx
OjMnXSArIHRlc3RzX3RvX3J1biwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVz
PVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRtbCcsICdw
YXNzZXMvZXJyb3IuaHRtbCcsICdwYXNzZXMvaW1hZ2UuaHRtbCddLCBjaHVua190ZXN0c19ydW4p
CisgICAgICAgICMgVGVzdCB0aGF0IHdlIHdyYXAgYXJvdW5kIGlmIHRoZSBudW1iZXIgb2YgdGVz
dHMgaXMgbm90IGV2ZW5seQorICAgICAgICAjIGRpdmlzaWJsZSBieSB0aGUgY2h1bmsgc2l6ZS4K
KyAgICAgICAgdGVzdHNfdG9fcnVuID0gWydwYXNzZXMvZXJyb3IuaHRtbCcsICdwYXNzZXMvaW1h
Z2UuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL3BsYXRmb3JtX2ltYWdl
Lmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCddCisgICAgICAgIGNodW5rX3Rlc3RzX3J1biA9IGdl
dF90ZXN0c19ydW4oWyctLXJ1bi1jaHVuaycsICcxOjMnXSArIHRlc3RzX3RvX3J1biwKKyAgICAg
ICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCAncGFzc2VzL2Vycm9yLmh0
bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9pbWFnZS5odG1sJ10sIGNo
dW5rX3Rlc3RzX3J1bikKIAogICAgIGRlZiB0ZXN0X3J1bl9mb3JjZShzZWxmKToKICAgICAgICAg
IyBUaGlzIHJhaXNlcyBhbiBleGNlcHRpb24gYmVjYXVzZSB3ZSBydW4KLSAgICAgICAgIyBmYWls
dXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCwgd2hpY2ggaXMgbm9ybWFsbHkgU0tJUHBlZC4K
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZ19ydW4sIFsnLS1m
b3JjZSddKQorICAgICAgICAjIGZhaWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlvbi5odG1sIGFuZAor
ICAgICAgICAjIGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLCB3aGljaCBhcmUgbm9ybWFsbHkg
U0tJUHBlZC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9nZ2luZ19ydW4oWyctLWZvcmNl
J10pCisgICAgICAgICAgICB0ZXN0X3Bhc3NlZCA9IEZhbHNlCisgICAgICAgIGV4Y2VwdCBWYWx1
ZUVycm9yOgorICAgICAgICAgICAgdGVzdF9wYXNzZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBL
ZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHRlc3RfcGFzc2VkID0gVHJ1ZQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUodGVzdF9wYXNzZWQpCiAKICAgICBkZWYgdGVzdF9ydW5fcGFydChz
ZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgYWN0dWFsbHkgc2VsZWN0IHRoZSByaWdodCBw
YXJ0Ci0gICAgICAgIHRlc3RzX3RvX3J1biA9IFsncGFzc2VzL2Vycm9yLmh0bWwnLCAncGFzc2Vz
L2ltYWdlLmh0bWwnLCAncGFzc2VzL3BsYXRmb3JtX2ltYWdlLmh0bWwnLCAncGFzc2VzL3RleHQu
aHRtbCddCi0gICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXJ1bi1wYXJ0Jywg
JzE6MiddICsgdGVzdHNfdG9fcnVuLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNo
ZXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvZXJyb3IuaHRtbCcs
ICdwYXNzZXMvaW1hZ2UuaHRtbCddLCB0ZXN0c19ydW4pCi0KLSAgICAgICAgIyBUZXN0IHRoYXQg
d2Ugd3JhcCBhcm91bmQgaWYgdGhlIG51bWJlciBvZiB0ZXN0cyBpcyBub3QgZXZlbmx5IGRpdmlz
aWJsZSBieSB0aGUgY2h1bmsgc2l6ZQotICAgICAgICAjIChoZXJlIHdlIGVuZCB1cCB3aXRoIDMg
cGFydHMsIGVhY2ggd2l0aCAyIHRlc3RzLCBhbmQgd2Ugb25seSBoYXZlIDQgdGVzdHMgdG90YWws
IHNvIHRoZQorICAgICAgICB0ZXN0c190b19ydW4gPSBbJ3Bhc3Nlcy9lcnJvci5odG1sJywgJ3Bh
c3Nlcy9pbWFnZS5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvcGxhdGZv
cm1faW1hZ2UuaHRtbCcsICdwYXNzZXMvdGV4dC5odG1sJ10KKyAgICAgICAgdGVzdHNfcnVuID0g
Z2V0X3Rlc3RzX3J1bihbJy0tcnVuLXBhcnQnLCAnMToyJ10gKyB0ZXN0c190b19ydW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRl
bl9iYXRjaGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL2Vycm9y
Lmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0bWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdHNfcnVuKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIHdyYXAgYXJvdW5kIGlmIHRoZSBu
dW1iZXIgb2YgdGVzdHMgaXMgbm90IGV2ZW5seQorICAgICAgICAjIGRpdmlzaWJsZSBieSB0aGUg
Y2h1bmsgc2l6ZSAoaGVyZSB3ZSBlbmQgdXAgd2l0aCAzIHBhcnRzLCBlYWNoCisgICAgICAgICMg
d2l0aCAyIHRlc3RzLCBhbmQgd2Ugb25seSBoYXZlIDQgdGVzdHMgdG90YWwsIHNvIHRoZQogICAg
ICAgICAjIGxhc3QgcGFydCByZXBlYXRzIHRoZSBmaXJzdCB0d28gdGVzdHMpLgotICAgICAgICBj
aHVua190ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS1ydW4tcGFydCcsICczOjMnXSArIHRl
c3RzX3RvX3J1biwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL2Vycm9yLmh0bWwnLCAncGFzc2VzL2lt
YWdlLmh0bWwnXSwgY2h1bmtfdGVzdHNfcnVuKQorICAgICAgICBjaHVua190ZXN0c19ydW4gPSBn
ZXRfdGVzdHNfcnVuKFsnLS1ydW4tcGFydCcsICczOjMnXSArIHRlc3RzX3RvX3J1biwKKyAgICAg
ICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9lcnJvci5odG1sJywgJ3Bhc3Nlcy9pbWFnZS5o
dG1sJ10sCisgICAgICAgICAgICBjaHVua190ZXN0c19ydW4pCiAKICAgICBkZWYgdGVzdF9ydW5f
c2luZ2x5KHNlbGYpOgogICAgICAgICBiYXRjaF90ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsn
LS1ydW4tc2luZ2x5J10pCiAgICAgICAgIGZvciBiYXRjaCBpbiBiYXRjaF90ZXN0c19ydW46Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oYmF0Y2gpLCAxLCAnJXMgaGFkIHRvbyBt
YW55IHRlc3RzJyAlICcsICcuam9pbihiYXRjaCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhsZW4oYmF0Y2gpLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzIGhh
ZCB0b28gbWFueSB0ZXN0cycgJSAnLCAnLmpvaW4oYmF0Y2gpKQogCiAgICAgZGVmIHRlc3Rfc2lu
Z2xlX2ZpbGUoc2VsZik6Ci0gICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWydwYXNz
ZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVl
KQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsncGFzc2VzL3RleHQuaHRtbCdd
LCB0ZXN0c19pbmNsdWRlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nl
cy90ZXh0Lmh0bWwnXSwgdGVzdHNfcnVuKQogCiAgICAgZGVmIHRlc3RfdGVzdF9saXN0KHNlbGYp
OgpAQCAtMzA5LDcgKzMzMSw4IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgdG1wZmlsZSA9IGZpbGUoZmlsZW5hbWUsIG1vZGU9J3crJykKICAgICAgICAgdG1w
ZmlsZS53cml0ZSgncGFzc2VzL3RleHQuaHRtbCcpCiAgICAgICAgIHRtcGZpbGUuY2xvc2UoKQot
ICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmls
ZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAg
ICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1l
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVl
LCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNz
ZXMvdGV4dC5odG1sJ10sIHRlc3RzX3J1bikKICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQog
ICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXRlc3QtbGlzdD0l
cycgJSBmaWxlbmFtZV0sCkBAIC0zNzMsOCArMzk2LDggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICB0ZXN0X3BvcnQgPSBnZXRfcG9ydF9mb3JfcnVuKGJhc2Vf
YXJncyArIFsnLS10b2xlcmFuY2UnLCAnMCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAs
IHRlc3RfcG9ydC50b2xlcmFuY2VfdXNlZF9mb3JfZGlmZl9pbWFnZSkKIAotICAgICAgICAjIE90
aGVyd2lzZSB0aGUgcG9ydCdzIGRlZmF1bHQgdG9sZXJhbmNlIGJlaGF2aW9yIChpbmNsdWRpbmcg
aWdub3JpbmcgaXQpCi0gICAgICAgICMgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgICMgT3RoZXJ3
aXNlIHRoZSBwb3J0J3MgZGVmYXVsdCB0b2xlcmFuY2UgYmVoYXZpb3IgKGluY2x1ZGluZyBpZ25v
cmluZworICAgICAgICAjIGl0KSBzaG91bGQgYmUgdXNlZC4KICAgICAgICAgdGVzdF9wb3J0ID0g
Z2V0X3BvcnRfZm9yX3J1bihiYXNlX2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgdGVzdF9wb3J0LnRvbGVyYW5jZV91c2VkX2Zvcl9kaWZmX2ltYWdlKQogCkBAIC0zODUsOCAr
NDA4LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxm
LmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXdvcmtlci1tb2RlbCcsICd0aHJlYWRzJ10pKQog
CiAgICAgZGVmIHRlc3Rfd29ya2VyX21vZGVsX19wcm9jZXNzZXMoc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdfcnVuLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBbJy0td29ya2VyLW1vZGVsJywgJ3Byb2Nlc3NlcyddKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXdvcmtlci1tb2RlbCcsICdwcm9jZXNzZXMnXSkp
CiAKICAgICBkZWYgdGVzdF93b3JrZXJfbW9kZWxfX3Vua25vd24oc2VsZik6CiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdfcnVuLApAQCAtNDE0LDggKzQzNiw4
IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IGJhc2VsaW5lID0gZmlsZSArICItZXhwZWN0ZWQiICsgZXh0CiAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoYW55KGYuZmluZChiYXNlbGluZSkgIT0gLTEgZm9yIGYgaW4gZmlsZV9saXN0KSkK
IAotICAgICMgRklYTUU6IEFkZCB0ZXN0cyB0byBlbnN1cmUgdGhhdCB3ZSdyZSAqbm90KiB3cml0
aW5nIGJhc2VsaW5lcyB3aGVuIHdlJ3JlIG5vdAotICAgICMgc3VwcG9zZWQgdG8gYmUuCisgICAg
IyBGSVhNRTogQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IHdlJ3JlICpub3QqIHdyaXRpbmcgYmFz
ZWxpbmVzIHdoZW4KKyAgICAjIHdlJ3JlIG5vdCBzdXBwb3NlZCB0byBiZS4KIAogICAgIGRlZiBk
aXNhYmxlZF90ZXN0X3Jlc2V0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgICMgRklYTUU6IFRoaXMg
dGVzdCBpcyBkaXNhYmxlZCB1bnRpbCB3ZSBjYW4gcmV3cml0ZSBpdCB0byB1c2UgYQpAQCAtNDc0
LDcgKzQ5Niw3IEBAIGNsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgbW9ja19wb3J0LmZpbGVuYW1lX3RvX3VyaSA9IGxhbWJkYSBuYW1lOiBuYW1lCiAKICAg
ICAgICAgcnVubmVyID0gcnVuX3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyKHBvcnQ9bW9ja19wb3J0
LCBvcHRpb25zPU1vY2soKSwKLSAgICAgICAgICAgIHByaW50ZXI9TW9jaygpLCBtZXNzYWdlX2Jy
b2tlcj1Nb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludGVyPU1vY2soKSkKICAgICAgICAgZXhwZWN0ZWRfaHRtbCA9IHUiIiI8aHRtbD4KICAg
PGhlYWQ+CiAgICAgPHRpdGxlPkxheW91dCBUZXN0IFJlc3VsdHMgKHRpbWUpPC90aXRsZT4KQEAg
LTQ4NSwxNCArNTA3LDE1IEBAIGNsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIDwvcD4KIDwvYm9keT48L2h0bWw+CiAiIiIKLSAgICAgICAgaHRtbCA9IHJ1bm5lci5fcmVz
dWx0c19odG1sKFsidGVzdF9wYXRoIl0sIHt9LCAiVGl0bGUiLCBvdmVycmlkZV90aW1lPSJ0aW1l
IikKKyAgICAgICAgaHRtbCA9IHJ1bm5lci5fcmVzdWx0c19odG1sKFsidGVzdF9wYXRoIl0sIHt9
LCAiVGl0bGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVf
dGltZT0idGltZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHRtbCwgZXhwZWN0ZWRfaHRt
bCkKIAogICAgIGRlZiB0ZXN0X3NoYXJkX3Rlc3RzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhh
dCBfc2hhcmRfdGVzdHMgaW4gcnVuX3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyIHJlYWxseQogICAg
ICAgICAjIHB1dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCiAgICAgICAgIHJ1
bm5lciA9IFRlc3RSdW5uZXJXcmFwcGVyKHBvcnQ9TW9jaygpLCBvcHRpb25zPU1vY2soKSwKLSAg
ICAgICAgICAgIHByaW50ZXI9TW9jaygpLCBtZXNzYWdlX2Jyb2tlcj1Nb2NrKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXI9TW9jaygpKQogCiAgICAgICAgIHRl
c3RfbGlzdCA9IFsKICAgICAgICAgICAiTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNv
ZGUuaHRtIiwKQEAgLTUxOCw5ICs1NDEsMTEgQEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hh
cmRfdGVzdHModGVzdF9saXN0LCBUcnVlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRl
c3RzX3RvX2h0dHBfbG9jayIsIHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVswXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChzaW5nbGVf
dGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
X3Rlc3RzX3RvX2h0dHBfbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoc2luZ2xl
X3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdHNf
dG9faHR0cF9sb2NrIiwgbXVsdGlfdGhyZWFkX3Jlc3VsdHNbMF1bMF0pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBzZXQobXVsdGlfdGhyZWFk
X3Jlc3VsdHNbMF1bMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3Rz
X3RvX2h0dHBfbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobXVsdGlfdGhyZWFk
X3Jlc3VsdHNbMF1bMV0pKQogCiAKIGNsYXNzIERyeXJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2Up
Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75682</attachid>
            <date>2010-12-06 05:36:13 -0800</date>
            <delta_ts>2010-12-14 20:52:12 -0800</delta_ts>
            <desc>update w/ new interfaces, aggregation code</desc>
            <filename>bug-50381-20101206053612.patch</filename>
            <type>text/plain</type>
            <size>5147</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyMi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyMi5weQppbmRl
eCA5NmMzMWYxMWYxMDM2MDhkNDgxYzBmMDJiYzFlMzhiY2JlYmZlYzRjLi40NTU3OTA2ZWJkOTFk
MzBjZWFhNzZiMmIyMGNjYmZlOTBkMjNlZWY2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcjIu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyLnB5CkBAIC01OSw2ICs1OSw3IEBAIGludm9rZXMgcnVu
X21lc3NhZ2VfbG9vcCgpLgogCiBpbXBvcnQgY1BpY2tsZQogaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgUXVl
dWUKQEAgLTc3LDEzICs3OCwxNyBAQCBNQU5BR0VSX1RPUElDID0gJ21hbmFnZXInCiBBTllfV09S
S0VSX1RPUElDID0gJ3dvcmtlcicKIAogCisjCisjIEZJWE1FOiBhZGQgY29kZSB0byBhbGxvdyB0
aGlzIHRvIHJ1biB3L28gbXVsdGlwcm9jZXNzaW5nIG9uIDIuNS4KKyMKKwogZGVmIHJ1bnRpbWVf
b3B0aW9ucygpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2Ygb3B0cGFyc2UuT3B0aW9uIG9iamVj
dHMgZm9yIGFueSBydW50aW1lIHZhbHVlcyB1c2VkCiAgICAgYnkgdGhpcyBtZXRob2QuIiIiCiAg
ICAgb3B0aW9ucyA9IFsKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td29ya2VyLW1v
ZGVsIiwgYWN0aW9uPSJzdG9yZSIsCiAgICAgICAgICAgICBoZWxwPSgiY29udHJvbHMgd29ya2Vy
IG1vZGVsLiBWYWxpZCB2YWx1ZXMgYXJlICIKLSAgICAgICAgICAgICInaW5saW5lJyBhbmQgJ3Ro
cmVhZHMnLiIpKSwKKyAgICAgICAgICAgICInaW5saW5lJywgJ3RocmVhZHMnLCBhbmQgJ3Byb2Nl
c3NlcycuIikpLAogICAgIF0KICAgICByZXR1cm4gb3B0aW9ucwogCkBAIC0xNzYsNiArMTgxLDcg
QEAgZGVmIF9nZXRfYnJva2VyKHBvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIHdvcmtlcl9jbGFzcywg
d29ya2VyX3RvcGljLAogICAgIGJyb2tlcl90eXBlcyA9IHsKICAgICAgICAgJ2lubGluZSc6IF9J
bmxpbmVCcm9rZXIsCiAgICAgICAgICd0aHJlYWRzJzogX011bHRpVGhyZWFkZWRCcm9rZXIsCisg
ICAgICAgICdwcm9jZXNzZXMnOiBfTXVsdGlQcm9jZXNzQnJva2VyLAogICAgIH0KICAgICB0cnk6
CiAgICAgICAgIGJyb2tlcl9jbGFzcyA9IGJyb2tlcl90eXBlc1t3b3JrZXJfbW9kZWxdCkBAIC02
NDYsMyArNjUyLDY0IEBAIGNsYXNzIF9NdWx0aVRocmVhZGVkQnJva2VyKF9Xb3JrZXJNZXNzYWdl
QnJva2VyKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZpbGU6ICIlcyIsIGxpbmUgJWQsIGlu
ICVzJyAlIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKSkKICAgICAgICAgICAgIGlmIGxpbmU6CiAg
ICAgICAgICAgICAgICAgX2xvZy5lcnJvcignICAlcycgJSBsaW5lLnN0cmlwKCkpCisKKworIwor
IyBGSVhNRTogU2hvdWxkIHdlIHVzZSBtdWx0aXBsZSBpbmhlcml0YW5jZSBoZXJlIHRvIHNoYXJl
IGFsbCB0aGUgY29kZQorIyB3aXRoIF9NdWx0aVRocmVhZGVkQnJva2VyPyBUaGVyZSBpcyBhIGxv
dCBvZiBkdXBsaWNhdGlvbiBvdGhlcndpc2UuCisjCisKK2NsYXNzIF9NdWx0aVByb2Nlc3NCcm9r
ZXIoX1dvcmtlck1lc3NhZ2VCcm9rZXIpOgorICAgIGNsYXNzIF9NdWx0aVByb2Nlc3NXb3JrZXJD
b25uZWN0aW9uKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKKyAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgICAg
IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYpCisgICAgICAgICAgICBzZWxm
Ll9icm9rZXIgPSBicm9rZXIKKyAgICAgICAgICAgIHNlbGYuX3BvcnQgPSBicm9rZXIuX3BvcnQK
KyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBicm9rZXIuX29wdGlvbnMKKyAgICAgICAgICAg
IHNlbGYuX3dvcmtlciA9IHdvcmtlcl9jbGFzcyhzZWxmLCB3b3JrZXJfbnVtYmVyKQorCisgICAg
ICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICAgICBzZWxmLnRlcm1pbmF0ZSgpCisKKyAg
ICAgICAgZGVmIGlzQWxpdmUoc2VsZik6CisgICAgICAgICAgICAjIEZJWE1FOiBSZW5hbWUgd2hl
biBldmVyeW9uZSBpcyBvbiAyLjYKKyAgICAgICAgICAgIHNlbGYuaXNfYWxpdmUoKQorCisgICAg
ICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5n
LlByb2Nlc3Muam9pbihzZWxmLCB0aW1lb3V0KQorCisgICAgICAgIGRlZiBuYW1lKHNlbGYpOgor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dvcmtlci5uYW1lKCkKKworICAgICAgICBkZWYgb3B0
aW9ucyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9icm9rZXIuX29wdGlvbnMKKwor
ICAgICAgICBkZWYgcG9ydChzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9icm9rZXIu
X3BvcnQKKworICAgICAgICBkZWYgcG9zdF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2VfbmFtZSwgKm1l
c3NhZ2VfYXJncyk6CisgICAgICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKHNlbGYu
bmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9icm9r
ZXIuX3dvcmtlcl9yZXBseV90b3BpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpCisKKyAgICAgICAgZGVmIHJ1bihzZWxm
KToKKyAgICAgICAgICAgIHNlbGYuX3dvcmtlci5ydW4oKQorCisgICAgICAgIGRlZiBydW5fbWVz
c2FnZV9sb29wKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xv
b3Aoc2VsZi5fYnJva2VyLl93b3JrZXJfcnVuX3RvcGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29ya2VyKQorCisgICAgICAgIGRlZiB5aWVsZF90
b19icm9rZXIoc2VsZik6CisgICAgICAgICAgICAjIFRoZXJlJ3Mgbm8gbmVlZCB0byB5aWVsZCB3
aXRoIG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAgICAgICAgIHBhc3MKKworICAgIF9XT1JLRVJf
Q09OTkVDVElPTl9DTEFTUyA9IF9NdWx0aVByb2Nlc3NXb3JrZXJDb25uZWN0aW9uCisKKyAgICBk
ZWYgYWRkX3RvcGljKHNlbGYsIHRvcGljX25hbWUpOgorICAgICAgICBpZiBub3QgdG9waWNfbmFt
ZSBpbiBzZWxmLl90b3BpY3M6CisgICAgICAgICAgICBzZWxmLl90b3BpY3NbdG9waWNfbmFtZV0g
PSBfVG9waWMobXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkpCisKKyAgICBkZWYgbG9nX3dlZGdlZF93
b3JrZXIoc2VsZiwgd29ya2VyX25hbWUsIHRlc3RfbmFtZSk6CisgICAgICAgIHByb2MgPSBzZWxm
Ll9jaGlsZHJlblt3b3JrZXJfbmFtZV0KKyAgICAgICAgX2xvZy5lcnJvcigiJXMgKHBpZCAlZCkg
aXMgd2VkZ2VkIG9uIHRlc3QgJXMiICUKKyAgICAgICAgICAgICAgICAgICAod29ya2VyX25hbWUs
IHByb2MucGlkLCB0ZXN0X25hbWUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyX3VuaXR0
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyX3VuaXR0ZXN0LnB5CmluZGV4IDNkZjhhOTIwNzgzMDVh
ZjUzOGY1NTExOGIxZTMwNmQ3YzVlZWZlNDQuLmFiOTRjZjAyMmUyNWU0YjU0MzBhNjU4NjlkNDJj
MWExMzNhZmZjMDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyMl91bml0dGVzdC5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9tZXNzYWdlX2Jyb2tlcjJfdW5pdHRlc3QucHkKQEAgLTEwNCw2ICsxMDQsOSBAQCBjbGFzcyBG
dW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9nZXRfX3RocmVh
ZHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAndGhy
ZWFkcycpIGlzIG5vdCBOb25lKQogCisgICAgZGVmIHRlc3RfZ2V0X19wcm9jZXNzZXMoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWtlX2Jyb2tlcihzZWxmLCAncHJvY2Vzc2VzJykg
aXMgbm90IE5vbmUpCisKICAgICBkZWYgdGVzdF9nZXRfX3Vua25vd24oc2VsZik6CiAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ha2VfYnJva2VyLCBzZWxmLCAndW5rbm93
bicpCiAKQEAgLTI0OSw2ICsyNTIsMTQgQEAgY2xhc3MgSW5saW5lQnJva2VyVGVzdHMoX1dvcmtl
ck1lc3NhZ2VCcm9rZXJUZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzZWxmLl9icm9rZXIubG9nX3dlZGdlZF93
b3JrZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUpCiAKK2NsYXNzIE11
bHRpUHJvY2Vzc0Jyb2tlclRlc3RzKF9Xb3JrZXJNZXNzYWdlQnJva2VyVGVzdHNNaXhpbiwgdW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgX1dvcmtlck1l
c3NhZ2VCcm9rZXJUZXN0c01peGluLnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYuX3dvcmtlcl9t
b2RlbCA9ICdwcm9jZXNzZXMnCisKKyAgICBkZWYgcXVldWUoc2VsZik6CisgICAgICAgIHJldHVy
biBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorCiAKIGNsYXNzIFRocmVhZGVkQnJva2VyVGVzdHMo
X1dvcmtlck1lc3NhZ2VCcm9rZXJUZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ZGVmIHF1ZXVlKHNlbGYpOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>