<?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>173772</bug_id>
          
          <creation_ts>2017-06-23 09:27:08 -0700</creation_ts>
          <short_desc>[WPE] Add run-wpe-tests script to run WPE glib API tests</short_desc>
          <delta_ts>2017-11-20 16:55:08 -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>WPE WebKit</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>173770</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1322310</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-23 09:27:08 -0700</bug_when>
    <thetext>Refactoring the run-gtk-tests script to share the code as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322313</commentid>
    <comment_count>1</comment_count>
      <attachid>313723</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-23 09:30:53 -0700</bug_when>
    <thetext>Created attachment 313723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324933</commentid>
    <comment_count>2</comment_count>
      <attachid>313723</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-07-02 09:21:16 -0700</bug_when>
    <thetext>Comment on attachment 313723
Patch

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

&gt; Tools/ChangeLog:8
&gt; +        Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests.

run-wpe-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373756</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-20 03:03:34 -0800</bug_when>
    <thetext>Committed r225047: &lt;https://trac.webkit.org/changeset/225047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373849</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-20 15:39:19 -0800</bug_when>
    <thetext>It broke run-gtk-tests:

$ run-gtk-tests
Traceback (most recent call last):
  File &quot;/home/mcatanzaro/Projects/WebKit/Tools/Scripts/run-gtk-tests&quot;, line 159, in &lt;module&gt;
    if not jhbuildutils.enter_jhbuild_environment_if_available(&quot;gtk&quot;):
  File &quot;/home/mcatanzaro/Projects/WebKit/Tools/jhbuild/jhbuildutils.py&quot;, line 51, in enter_jhbuild_environment_if_available
    config = jhbuild.config.Config(get_config_file_for_platform(platform), [])
  File &quot;/home/mcatanzaro/Projects/WebKit/WebKitBuild/DependenciesGTK/Source/jhbuild/jhbuild/config.py&quot;, line 167, in __init__
    self.load(filename)
  File &quot;/home/mcatanzaro/Projects/WebKit/WebKitBuild/DependenciesGTK/Source/jhbuild/jhbuild/config.py&quot;, line 220, in load
    _(&apos;unknown keys defined in configuration file: %s&apos;) % \
NameError: global name &apos;_&apos; is not defined

It&apos;s tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373850</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-20 15:51:16 -0800</bug_when>
    <thetext>It has to be imported into Python&apos;s builtins namespace using gettext.install(), see https://docs.python.org/2.7/library/gettext.html#gettext.install. jhbuild does that itself, but we break that by trying to call into jhbuild&apos;s internal classes directly. So we have to do it ourselves.

I&apos;m confused because none of the code you moved did this, so I&apos;m not sure how it worked before. But whatever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373851</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-20 15:51:58 -0800</bug_when>
    <thetext>Committed r225055: &lt;https://trac.webkit.org/changeset/225055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373874</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-20 16:55:08 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; Committed r225055: &lt;https://trac.webkit.org/changeset/225055&gt;

Bots are happy again. Well, the API tests are still failing, but they&apos;re being run again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313723</attachid>
            <date>2017-06-23 09:30:53 -0700</date>
            <delta_ts>2017-07-02 09:21:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wpe-run-tests.diff</filename>
            <type>text/plain</type>
            <size>41828</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OWZj
ZTQ3YjMxNC4uOWE3ODUxNDcwOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxNy0wNi0yMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW1dQRV0gQWRkIHJ1bi13
cGUtdGVzdHMgc2NyaXB0IHRvIHJ1biBXUEUgZ2xpYiBBUEkgdGVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mzc3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29tbW9uIGNvZGUgZnJvbSBy
dW4tZ3RrLXRlc3RzIHRvIGFwaV90ZXN0X3J1bm5lci5weSwgdG8gYmUgc2hhcmVkIGJ5IGJvdGgg
cnVuLWd0ay10ZXN0cyBhbmQgdW4td3BlLXRlc3RzLgorCisgICAgICAgICogU2NyaXB0cy9ydW4t
Z3RrLXRlc3RzOgorICAgICAgICAoR3RrVGVzdFJ1bm5lcik6CisgICAgICAgIChHdGtUZXN0UnVu
bmVyLl9faW5pdF9fKToKKyAgICAgICAgKEd0a1Rlc3RSdW5uZXIuX3N0YXJ0X2FjY2Vzc2liaWxp
dHlfZGFlbW9ucyk6CisgICAgICAgIChHdGtUZXN0UnVubmVyLl9zZXR1cF90ZXN0aW5nX2Vudmly
b25tZW50KToKKyAgICAgICAgKEd0a1Rlc3RSdW5uZXIuX3RlYXJfZG93bl90ZXN0aW5nX2Vudmly
b25tZW50KToKKyAgICAgICAgKEd0a1Rlc3RSdW5uZXIuaXNfZ2xpYl90ZXN0KToKKyAgICAgICAg
KEd0a1Rlc3RSdW5uZXIuaXNfZ29vZ2xlX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvcnVuLXdw
ZS10ZXN0czogQWRkZWQuCisgICAgICAgIChXUEVUZXN0UnVubmVyKToKKyAgICAgICAgKFdQRVRl
c3RSdW5uZXIuX19pbml0X18pOgorICAgICAgICAoV1BFVGVzdFJ1bm5lci5pc19nbGliX3Rlc3Qp
OgorICAgICAgICAoV1BFVGVzdFJ1bm5lci5pc19nb29nbGVfdGVzdCk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuX19pbml0X18pOgor
ICAgICAgICAoV1BFUG9ydC5fZHJpdmVyX2NsYXNzKTogQWxsb3cgdG8gb3B0aW9uYWxseSB1c2Ug
dGhlIHdheWxhbmQgZHJpdmVyIHRvby4KKyAgICAgICAgKiBnbGliL2FwaV90ZXN0X3J1bm5lci5w
eTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzLgorICAgICAgICAoU2tp
cHBlZFRlc3QpOgorICAgICAgICAoU2tpcHBlZFRlc3QuX19pbml0X18pOgorICAgICAgICAoU2tp
cHBlZFRlc3QuX19zdHJfXyk6CisgICAgICAgIChTa2lwcGVkVGVzdC5za2lwX2VudGlyZV9zdWl0
ZSk6CisgICAgICAgIChTa2lwcGVkVGVzdC5za2lwX2Zvcl9idWlsZF90eXBlKToKKyAgICAgICAg
KFRlc3RUaW1lb3V0KToKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAoVGVzdFJ1bm5l
ci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0UnVubmVyLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGly
KToKKyAgICAgICAgKFRlc3RSdW5uZXIuX2dldF90ZXN0c19mcm9tX2Rpcik6CisgICAgICAgIChU
ZXN0UnVubmVyLl9nZXRfdGVzdHMpOgorICAgICAgICAoVGVzdFJ1bm5lci5fY3JlYXRlX2RyaXZl
cik6CisgICAgICAgIChUZXN0UnVubmVyLl9zZXR1cF90ZXN0aW5nX2Vudmlyb25tZW50KToKKyAg
ICAgICAgKFRlc3RSdW5uZXIuX3RlYXJfZG93bl90ZXN0aW5nX2Vudmlyb25tZW50KToKKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3Rlc3RfY2FzZXNfdG9fc2tpcCk6CisgICAgICAgIChUZXN0UnVubmVy
Ll9zaG91bGRfcnVuX3Rlc3RfcHJvZ3JhbSk6CisgICAgICAgIChUZXN0UnVubmVyLl9nZXRfY2hp
bGRfcGlkX2Zyb21fdGVzdF9vdXRwdXQpOgorICAgICAgICAoVGVzdFJ1bm5lci5fa2lsbF9wcm9j
ZXNzKToKKyAgICAgICAgKFRlc3RSdW5uZXIuX3J1bl90ZXN0X2NvbW1hbmQpOgorICAgICAgICAo
VGVzdFJ1bm5lci5fcnVuX3Rlc3RfY29tbWFuZC5hbGFybV9oYW5kbGVyKToKKyAgICAgICAgKFRl
c3RSdW5uZXIuX3J1bl90ZXN0X2NvbW1hbmQucGFyc2VfbGluZSk6CisgICAgICAgIChUZXN0UnVu
bmVyLl9ydW5fdGVzdF9jb21tYW5kLndhaXRwaWQpOgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVu
X3Rlc3RfY29tbWFuZC5yZXR1cm5fY29kZV9mcm9tX2V4aXRfc3RhdHVzKToKKyAgICAgICAgKFRl
c3RSdW5uZXIuX3J1bl90ZXN0X2dsaWIpOgorICAgICAgICAoVGVzdFJ1bm5lci5fZ2V0X3Rlc3Rz
X2Zyb21fZ29vZ2xlX3Rlc3Rfc3VpdGUpOgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX2dvb2ds
ZV90ZXN0KToKKyAgICAgICAgKFRlc3RSdW5uZXIuX3J1bl9nb29nbGVfdGVzdF9zdWl0ZSk6Cisg
ICAgICAgIChUZXN0UnVubmVyLmlzX2dsaWJfdGVzdCk6CisgICAgICAgIChUZXN0UnVubmVyLmlz
X2dvb2dsZV90ZXN0KToKKyAgICAgICAgKFRlc3RSdW5uZXIuX3J1bl90ZXN0KToKKyAgICAgICAg
KFRlc3RSdW5uZXIucnVuX3Rlc3RzKToKKyAgICAgICAgKGFkZF9vcHRpb25zKToKKyAgICAgICAg
KiBnbGliL2NvbW1vbi5weTogUmVuYW1lZCBmcm9tIFRvb2xzL2d0ay9jb21tb24ucHkuCisgICAg
ICAgIChnZXRfYnVpbGRfcGF0aC5pc192YWxpZF9idWlsZF9kaXJlY3RvcnkpOgorICAgICAgICAq
IGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgICogZ3RrL2poYnVpbGRyYzoKKyAgICAgICAg
KiBndGsveWNtX2V4dHJhX2NvbmYucHk6CisKKzIwMTctMDYtMjMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtXUEVdIEFkZCBlbnYgdmFyIFdQ
RV9VU0VfSEVBRExFU1NfVklFV19CQUNLRU5ECiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM3NzAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGEzZDNlNmYy
OGM0Li5mY2Q4ZmFmNTM0YiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3Rz
CisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtMSw2ICsxLDYgQEAKICMhL3Vz
ci9iaW4vZW52IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMu
TC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE3IElnYWxpYSBTLkwuCiAjCiAjIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIyLDUyICsyMiwxOSBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCByZQotZnJvbSBzaWduYWwgaW1w
b3J0IGFsYXJtLCBzaWduYWwsIFNJR0FMUk0sIFNJR0tJTEwsIFNJR1NFR1YKIGZyb20gZ2kucmVw
b3NpdG9yeSBpbXBvcnQgR2lvLCBHTGliCiAKIHRvcF9sZXZlbF9kaXJlY3RvcnkgPSBvcy5wYXRo
Lm5vcm1wYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAi
Li4iKSkKIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwg
IlRvb2xzIiwgImpoYnVpbGQiKSkKLXN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4odG9wX2xl
dmVsX2RpcmVjdG9yeSwgIlRvb2xzIiwgImd0ayIpKQorc3lzLnBhdGguYXBwZW5kKG9zLnBhdGgu
am9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ2xpYiIpKQogaW1wb3J0IGNvbW1v
bgogaW1wb3J0IGpoYnVpbGR1dGlscwotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQg
SG9zdAorZnJvbSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIsIFNraXBwZWRUZXN0
LCBhZGRfb3B0aW9ucwogCi1jbGFzcyBTa2lwcGVkVGVzdDoKLSAgICBFTlRJUkVfU1VJVEUgPSBO
b25lCitjbGFzcyBHdGtUZXN0UnVubmVyKFRlc3RSdW5uZXIpOgorICAgIFRlc3RSdW5uZXIuVEVT
VF9ESVJTID0gWyAiV2ViS2l0Mkd0ayIsICJXZWJLaXQyIiwgIkphdmFTY3JpcHRDb3JlIiwgIldU
RiIsICJXZWJDb3JlIiBdCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdCwgdGVzdF9jYXNl
LCByZWFzb24sIGJ1ZywgYnVpbGRfdHlwZT1Ob25lKToKLSAgICAgICAgc2VsZi50ZXN0ID0gdGVz
dAotICAgICAgICBzZWxmLnRlc3RfY2FzZSA9IHRlc3RfY2FzZQotICAgICAgICBzZWxmLnJlYXNv
biA9IHJlYXNvbgotICAgICAgICBzZWxmLmJ1ZyA9IGJ1ZwotICAgICAgICBzZWxmLmJ1aWxkX3R5
cGUgPSBidWlsZF90eXBlCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgc2tpcHBl
ZF90ZXN0X3N0ciA9ICIlcyIgJSBzZWxmLnRlc3QKLQotICAgICAgICBpZiBub3Qoc2VsZi5za2lw
X2VudGlyZV9zdWl0ZSgpKToKLSAgICAgICAgICAgIHNraXBwZWRfdGVzdF9zdHIgKz0gIiBbJXNd
IiAlIHNlbGYudGVzdF9jYXNlCi0KLSAgICAgICAgc2tpcHBlZF90ZXN0X3N0ciArPSAiOiAlcyAo
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPSVkKSIgJSAoc2VsZi5yZWFz
b24sIHNlbGYuYnVnKQotICAgICAgICByZXR1cm4gc2tpcHBlZF90ZXN0X3N0cgotCi0gICAgZGVm
IHNraXBfZW50aXJlX3N1aXRlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2Nhc2Ug
PT0gU2tpcHBlZFRlc3QuRU5USVJFX1NVSVRFCi0KLSAgICBkZWYgc2tpcF9mb3JfYnVpbGRfdHlw
ZShzZWxmLCBidWlsZF90eXBlKToKLSAgICAgICAgaWYgc2VsZi5idWlsZF90eXBlIGlzIE5vbmU6
Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZTsKLQotICAgICAgICByZXR1cm4gc2VsZi5idWlsZF90
eXBlID09IGJ1aWxkX3R5cGUKLQotY2xhc3MgVGVzdFRpbWVvdXQoRXhjZXB0aW9uKToKLSAgICBw
YXNzCi0KLWNsYXNzIFRlc3RSdW5uZXI6Ci0gICAgVEVTVF9ESVJTID0gWyAiV2ViS2l0Mkd0ayIs
ICJXZWJLaXQyIiwgIkphdmFTY3JpcHRDb3JlIiwgIldURiIsICJXZWJDb3JlIiBdCi0KLSAgICBT
S0lQUEVEID0gWworICAgIFRlc3RSdW5uZXIuU0tJUFBFRCA9IFsKICAgICAgICAgU2tpcHBlZFRl
c3QoIldlYktpdDJHdGsvVGVzdFVJQ2xpZW50IiwgIi93ZWJraXQyL1dlYktpdFdlYlZpZXcvbW91
c2UtdGFyZ2V0IiwgIlRlc3QgdGltZXMgb3V0IGFmdGVyIHIxNTA4OTAiLCAxMTc2ODkpLAogICAg
ICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQiLCAiL3dlYmtpdDIvV2Vi
S2l0V2ViVmlldy91c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIsICJUZXN0IHRpbWVzIG91
dCIsIDE1ODI1NyksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rlc3RVSUNsaWVu
dCIsICIvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L2F1ZGlvLXVzZXJtZWRpYS1wZXJtaXNzaW9uLXJl
cXVlc3QiLCAiVGVzdCB0aW1lcyBvdXQiLCAxNTgyNTcpLApAQCAtOTAsNyArNTcsNyBAQCBjbGFz
cyBUZXN0UnVubmVyOgogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIs
ICJXZWJLaXQyLkdlb2xvY2F0aW9uVHJhbnNpdGlvblRvTG93QWNjdXJhY3kiLCAiVGVzdCBjYXVz
ZXMgY3Jhc2ggb24gdGhlIG5leHQgdGVzdCIsIDEyNTA2OCksCiAgICAgXQogCi0gICAgU0xPVyA9
IFsKKyAgICBUZXN0UnVubmVyLlNMT1cgPSBbCiAgICAgICAgICJXVEZfTG9jay5Db250ZW5kZWRT
aG9ydFNlY3Rpb24iLAogICAgICAgICAiV1RGX0xvY2suQ29udGVuZGVkTG9uZ1NlY3Rpb24iLAog
ICAgICAgICAiV1RGX1dvcmRMb2NrLkNvbnRlbmRlZFNob3J0U2VjdGlvbiIsCkBAIC05OSw1NCAr
NjYsMTIgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICBdCiAKICAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb3B0aW9ucywgdGVzdHM9W10pOgotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwot
Ci0gICAgICAgIHNlbGYuX2J1aWxkX3R5cGUgPSAiRGVidWciIGlmIHNlbGYuX29wdGlvbnMuZGVi
dWcgZWxzZSAiUmVsZWFzZSIKLSAgICAgICAgY29tbW9uLnNldF9idWlsZF90eXBlcygoc2VsZi5f
YnVpbGRfdHlwZSwpKQotICAgICAgICBzZWxmLl9wb3J0ID0gSG9zdCgpLnBvcnRfZmFjdG9yeS5n
ZXQoImd0ayIpCi0gICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX2NyZWF0ZV9kcml2ZXIoKQot
Ci0gICAgICAgIHNlbGYuX3Byb2dyYW1zX3BhdGggPSBjb21tb24uYmluYXJ5X2J1aWxkX3BhdGgo
KQotICAgICAgICBzZWxmLl90ZXN0cyA9IHNlbGYuX2dldF90ZXN0cyh0ZXN0cykKLSAgICAgICAg
c2VsZi5fc2tpcHBlZF90ZXN0cyA9IFtza2lwcGVkIGZvciBza2lwcGVkIGluIFRlc3RSdW5uZXIu
U0tJUFBFRCBpZiBza2lwcGVkLnNraXBfZm9yX2J1aWxkX3R5cGUoc2VsZi5fYnVpbGRfdHlwZSld
Ci0gICAgICAgIHNlbGYuX2Rpc2FibGVkX3Rlc3RzID0gW10KKyAgICAgICAgc3VwZXIoR3RrVGVz
dFJ1bm5lciwgc2VsZikuX19pbml0X18oImd0ayIsIG9wdGlvbnMsIHRlc3RzKQogCiAgICAgICAg
ICMgVGhlc2UgU1BJIGRhZW1vbnMgbmVlZCB0byBiZSBhY3RpdmUgZm9yIHRoZSBhY2Nlc3NpYmls
aXR5IHRlc3RzIHRvIHdvcmsuCiAgICAgICAgIHNlbGYuX3NwaV9yZWdpc3RyeWQgPSBOb25lCiAg
ICAgICAgIHNlbGYuX3NwaV9idXNfbGF1bmNoZXIgPSBOb25lCiAKLSAgICBkZWYgX3Rlc3RfcHJv
Z3JhbXNfYmFzZV9kaXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5f
cHJvZ3JhbXNfcGF0aCwgIlRlc3RXZWJLaXRBUEkiKQotCi0gICAgZGVmIF9nZXRfdGVzdHNfZnJv
bV9kaXIoc2VsZiwgdGVzdF9kaXIpOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcih0ZXN0
X2Rpcik6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICB0ZXN0cyA9IFtdCi0gICAg
ICAgIGZvciB0ZXN0X2ZpbGUgaW4gb3MubGlzdGRpcih0ZXN0X2Rpcik6Ci0gICAgICAgICAgICBp
ZiBub3QgdGVzdF9maWxlLmxvd2VyKCkuc3RhcnRzd2l0aCgidGVzdCIpOgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdF9k
aXIsIHRlc3RfZmlsZSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHRlc3RfcGF0aCkg
YW5kIG9zLmFjY2Vzcyh0ZXN0X3BhdGgsIG9zLlhfT0spOgotICAgICAgICAgICAgICAgIHRlc3Rz
LmFwcGVuZCh0ZXN0X3BhdGgpCi0gICAgICAgIHJldHVybiB0ZXN0cwotCi0gICAgZGVmIF9nZXRf
dGVzdHMoc2VsZiwgaW5pdGlhbF90ZXN0cyk6Ci0gICAgICAgIHRlc3RzID0gW10KLSAgICAgICAg
Zm9yIHRlc3QgaW4gaW5pdGlhbF90ZXN0czoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIo
dGVzdCk6Ci0gICAgICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKHNlbGYuX2dldF90ZXN0c19mcm9t
X2Rpcih0ZXN0KSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVzdHMuYXBw
ZW5kKHRlc3QpCi0gICAgICAgIGlmIHRlc3RzOgotICAgICAgICAgICAgcmV0dXJuIHRlc3RzCi0K
LSAgICAgICAgdGVzdHMgPSBbXQotICAgICAgICBmb3IgdGVzdF9kaXIgaW4gc2VsZi5URVNUX0RJ
UlM6Ci0gICAgICAgICAgICBhYnNvbHV0ZV90ZXN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLl90
ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCksIHRlc3RfZGlyKQotICAgICAgICAgICAgdGVzdHMuZXh0
ZW5kKHNlbGYuX2dldF90ZXN0c19mcm9tX2RpcihhYnNvbHV0ZV90ZXN0X2RpcikpCi0gICAgICAg
IHJldHVybiB0ZXN0cwotCiAgICAgZGVmIF9sb29rdXBfYXRzcGkyX2JpbmFyeShzZWxmLCBmaWxl
bmFtZSk6CiAgICAgICAgIGV4ZWNfcHJlZml4ID0gY29tbW9uLnBrZ19jb25maWdfZmlsZV92YXJp
YWJsZSgnYXRzcGktMicsICdleGVjX3ByZWZpeCcpCiAgICAgICAgIGlmIG5vdCBleGVjX3ByZWZp
eDoKQEAgLTIwOCwxOCArMTMzLDggQEAgY2xhc3MgVGVzdFJ1bm5lcjoKIAogICAgICAgICByZXR1
cm4gVHJ1ZQogCi0gICAgZGVmIF9jcmVhdGVfZHJpdmVyKHNlbGYsIHBvcnRfb3B0aW9ucz1bXSk6
Ci0gICAgICAgIHNlbGYuX3BvcnQuX2Rpc3BsYXlfc2VydmVyID0gc2VsZi5fb3B0aW9ucy5kaXNw
bGF5X3NlcnZlcgotICAgICAgICBkcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIod29y
a2VyX251bWJlcj0wLCBub190aW1lb3V0PVRydWUpLl9tYWtlX2RyaXZlcihwaXhlbF90ZXN0cz1G
YWxzZSkKLSAgICAgICAgaWYgbm90IGRyaXZlci5jaGVja19kcml2ZXIoc2VsZi5fcG9ydCk6Ci0g
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkZhaWxlZCB0byBjaGVjayBkcml2ZXIgJXMi
ICVkcml2ZXIuX19jbGFzc19fLl9fbmFtZV9fKQotICAgICAgICByZXR1cm4gZHJpdmVyCi0KICAg
ICBkZWYgX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rl
c3RfZW52ID0gc2VsZi5fZHJpdmVyLl9zZXR1cF9lbnZpcm9uX2Zvcl90ZXN0KCkKLSAgICAgICAg
c2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9XRUJLSVQyX1JFU09VUkNFU19QQVRIIl0g
PSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xzIiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMi
LCAiV2ViS2l0MiIpCi0gICAgICAgIHNlbGYuX3Rlc3RfZW52WyJURVNUX1dFQktJVF9BUElfV0VC
S0lUMl9JTkpFQ1RFRF9CVU5ETEVfUEFUSCJdID0gY29tbW9uLmxpYnJhcnlfYnVpbGRfcGF0aCgp
Ci0gICAgICAgIHNlbGYuX3Rlc3RfZW52WyJXRUJLSVRfRVhFQ19QQVRIIl0gPSBzZWxmLl9wcm9n
cmFtc19wYXRoCisgICAgICAgIHN1cGVyKEd0a1Rlc3RSdW5uZXIsIHNlbGYpLl9zZXR1cF90ZXN0
aW5nX2Vudmlyb25tZW50KCkKIAogICAgICAgICAjIElmIHdlIGNhbm5vdCBzdGFydCB0aGUgYWNj
ZXNzaWJpbGl0eSBkYWVtb25zLCB3ZSBjYW4ganVzdCBza2lwIHRoZSBhY2Nlc3NpYmlsaXR5IHRl
c3RzLgogICAgICAgICBpZiBub3Qgc2VsZi5fc3RhcnRfYWNjZXNzaWJpbGl0eV9kYWVtb25zKCk6
CkBAIC0yMzIsMjMzICsxNDcsMTQgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgIHNl
bGYuX3NwaV9yZWdpc3RyeWQudGVybWluYXRlKCkKICAgICAgICAgaWYgc2VsZi5fc3BpX2J1c19s
YXVuY2hlcjoKICAgICAgICAgICAgIHNlbGYuX3NwaV9idXNfbGF1bmNoZXIudGVybWluYXRlKCkK
LSAgICAgICAgaWYgc2VsZi5fZHJpdmVyOgotICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnN0b3Ao
KQotCi0gICAgZGVmIF90ZXN0X2Nhc2VzX3RvX3NraXAoc2VsZiwgdGVzdF9wcm9ncmFtKToKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5za2lwcGVkX2FjdGlvbiAhPSAnc2tpcCc6Ci0gICAgICAg
ICAgICByZXR1cm4gW10KLQotICAgICAgICB0ZXN0X2Nhc2VzID0gW10KLSAgICAgICAgZm9yIHNr
aXBwZWQgaW4gc2VsZi5fc2tpcHBlZF90ZXN0czoKLSAgICAgICAgICAgIGlmIHRlc3RfcHJvZ3Jh
bS5lbmRzd2l0aChza2lwcGVkLnRlc3QpIGFuZCBub3Qgc2tpcHBlZC5za2lwX2VudGlyZV9zdWl0
ZSgpOgotICAgICAgICAgICAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHNraXBwZWQudGVzdF9jYXNl
KQotICAgICAgICByZXR1cm4gdGVzdF9jYXNlcwotCi0gICAgZGVmIF9zaG91bGRfcnVuX3Rlc3Rf
cHJvZ3JhbShzZWxmLCB0ZXN0X3Byb2dyYW0pOgotICAgICAgICBmb3IgZGlzYWJsZWRfdGVzdCBp
biBzZWxmLl9kaXNhYmxlZF90ZXN0czoKLSAgICAgICAgICAgIGlmIHRlc3RfcHJvZ3JhbS5lbmRz
d2l0aChkaXNhYmxlZF90ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnNraXBwZWRfYWN0aW9uICE9ICdza2lwJzoKLSAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgZm9yIHNraXBwZWQgaW4gc2VsZi5fc2tpcHBlZF90
ZXN0czoKLSAgICAgICAgICAgIGlmIHRlc3RfcHJvZ3JhbS5lbmRzd2l0aChza2lwcGVkLnRlc3Qp
IGFuZCBza2lwcGVkLnNraXBfZW50aXJlX3N1aXRlKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX2dldF9jaGlsZF9waWRfZnJv
bV90ZXN0X291dHB1dChzZWxmLCBvdXRwdXQpOgotICAgICAgICBpZiBub3Qgb3V0cHV0OgotICAg
ICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXChwaWQ9KD9Q
PGNoaWxkX3BpZD5bMC05XSspXCknLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAg
ICAgICAgICAgIHJldHVybiAtMQotICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdjaGls
ZF9waWQnKSkKLQotICAgIGRlZiBfa2lsbF9wcm9jZXNzKHNlbGYsIHBpZCk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIG9zLmtpbGwocGlkLCBTSUdLSUxMKQotICAgICAgICBleGNlcHQgT1NF
cnJvcjoKLSAgICAgICAgICAgICMgUHJvY2VzcyBhbHJlYWR5IGRpZWQuCi0gICAgICAgICAgICBw
YXNzCi0KLSAgICBkZWYgX3J1bl90ZXN0X2NvbW1hbmQoc2VsZiwgY29tbWFuZCwgdGltZW91dD0t
MSk6Ci0gICAgICAgIGRlZiBhbGFybV9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgotICAgICAgICAg
ICAgcmFpc2UgVGVzdFRpbWVvdXQKLQotICAgICAgICBjaGlsZF9waWQgPSBbLTFdCi0gICAgICAg
IGRlZiBwYXJzZV9saW5lKGxpbmUsIGNoaWxkX3BpZCA9IGNoaWxkX3BpZCk6Ci0gICAgICAgICAg
ICBpZiBjaGlsZF9waWRbMF0gPT0gLTE6Ci0gICAgICAgICAgICAgICAgY2hpbGRfcGlkWzBdID0g
c2VsZi5fZ2V0X2NoaWxkX3BpZF9mcm9tX3Rlc3Rfb3V0cHV0KGxpbmUpCi0KLSAgICAgICAgICAg
IHN5cy5zdGRvdXQud3JpdGUobGluZSkKLQotICAgICAgICBkZWYgd2FpdHBpZChwaWQpOgotICAg
ICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBvcy53YWl0cGlkKHBpZCwgMCkKLSAgICAgICAgICAgICAgICBleGNlcHQg
KE9TRXJyb3IsIElPRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8g
PT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgICAgICAgICByYWlzZQotCi0gICAgICAgIGRlZiByZXR1cm5fY29kZV9mcm9tX2V4aXRf
c3RhdHVzKHN0YXR1cyk6Ci0gICAgICAgICAgICBpZiBvcy5XSUZTSUdOQUxFRChzdGF0dXMpOgot
ICAgICAgICAgICAgICAgIHJldHVybiAtb3MuV1RFUk1TSUcoc3RhdHVzKQotICAgICAgICAgICAg
ZWxpZiBvcy5XSUZFWElURUQoc3RhdHVzKToKLSAgICAgICAgICAgICAgICByZXR1cm4gb3MuV0VY
SVRTVEFUVVMoc3RhdHVzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFNo
b3VsZCBuZXZlciBoYXBwZW4KLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlVu
a25vd24gY2hpbGQgZXhpdCBzdGF0dXMhIikKLQotICAgICAgICBwaWQsIGZkID0gb3MuZm9ya3B0
eSgpCi0gICAgICAgIGlmIHBpZCA9PSAwOgotICAgICAgICAgICAgb3MuZXhlY3ZwZShjb21tYW5k
WzBdLCBjb21tYW5kLCBzZWxmLl90ZXN0X2VudikKLSAgICAgICAgICAgIHN5cy5leGl0KDApCi0K
LSAgICAgICAgaWYgdGltZW91dCA+IDA6Ci0gICAgICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxh
cm1faGFuZGxlcikKLSAgICAgICAgICAgIGFsYXJtKHRpbWVvdXQpCi0KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgY29tbW9uLnBhcnNlX291dHB1dF9saW5lcyhmZCwgcGFyc2VfbGluZSkKLSAg
ICAgICAgICAgIGlmIHRpbWVvdXQgPiAwOgotICAgICAgICAgICAgICAgIGFsYXJtKDApCi0gICAg
ICAgIGV4Y2VwdCBUZXN0VGltZW91dDoKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2Vzcyhw
aWQpCi0gICAgICAgICAgICBpZiBjaGlsZF9waWRbMF0gPiAwOgotICAgICAgICAgICAgICAgIHNl
bGYuX2tpbGxfcHJvY2VzcyhjaGlsZF9waWRbMF0pCi0gICAgICAgICAgICByYWlzZQotCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGR1bW15LCBzdGF0dXMgPSB3YWl0cGlkKHBpZCkKLSAgICAg
ICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8u
RUNISUxEOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAjIFRoaXMgaGFwcGVu
cyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZwotICAgICAgICAgICAg
IyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3Vy
Ci0gICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdl
dCB0aGUgc3RhdHVzLgotICAgICAgICAgICAgc3RhdHVzID0gMAotCi0gICAgICAgIHJldHVybiBy
ZXR1cm5fY29kZV9mcm9tX2V4aXRfc3RhdHVzKHN0YXR1cykKLQotICAgIGRlZiBfcnVuX3Rlc3Rf
Z2xpYihzZWxmLCB0ZXN0X3Byb2dyYW0pOgotICAgICAgICB0ZXN0ZXJfY29tbWFuZCA9IFsnZ3Rl
c3RlcicsICctayddCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKLSAgICAgICAg
ICAgIHRlc3Rlcl9jb21tYW5kLmFwcGVuZCgnLS12ZXJib3NlJykKLSAgICAgICAgZm9yIHRlc3Rf
Y2FzZSBpbiBzZWxmLl90ZXN0X2Nhc2VzX3RvX3NraXAodGVzdF9wcm9ncmFtKToKLSAgICAgICAg
ICAgIHRlc3Rlcl9jb21tYW5kLmV4dGVuZChbJy1zJywgdGVzdF9jYXNlXSkKLSAgICAgICAgdGVz
dGVyX2NvbW1hbmQuYXBwZW5kKHRlc3RfcHJvZ3JhbSkKLSAgICAgICAgIyBUaGlzIHRpbWVvdXQg
aXMgc3VwcG9zZWQgdG8gYmUgcGVyIHRlc3QgY2FzZSwgYnV0IGluIHRoZSBjYXNlIG9mIEdMaWIg
dGVzdHMgaXQgYWZmZWN0cyBhbGwgdGhlIHRlc3RzIGNhc2VzIG9mCi0gICAgICAgICMgdGhlIHNh
bWUgdGVzdCBwcm9ncmFtLiBTb21lIHRlc3QgcHJvZ3JhbXMgbGlrZSBUZXN0TG9hZGVyQ2xpZW50
LCB0aGF0IGhhdmUgYSBsb3Qgb2YgdGVzdCBjYXNlcywgb2Z0ZW4gdGltZSBvdXQKLSAgICAgICAg
IyBpbiB0aGUgYm90cyBiZWNhdXNlIHRoZSB0aW1lb3V0IGlzIG5vdCBlbm91Z2ggdG8gcnVuIGFs
bCB0aGUgdGVzdHMgY2FzZXMuIFNvLCB3ZSB1c2UgYSBsb25nZXIgdGltZW91dCBmb3IgR0xpYgot
ICAgICAgICAjIHRlc3RzICh0aW1lb3V0ICogMikuCi0gICAgICAgIHRpbWVvdXQgPSBzZWxmLl9v
cHRpb25zLnRpbWVvdXQgKiAyCi0gICAgICAgIHRlc3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5i
YXNlbmFtZShvcy5wYXRoLmRpcm5hbWUodGVzdF9wcm9ncmFtKSksIG9zLnBhdGguYmFzZW5hbWUo
dGVzdF9wcm9ncmFtKSkKLSAgICAgICAgaWYgdGVzdCBpbiBUZXN0UnVubmVyLlNMT1c6Ci0gICAg
ICAgICAgICB0aW1lb3V0ICo9IDUKLQotICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RfY29t
bWFuZCh0ZXN0ZXJfY29tbWFuZCwgdGltZW91dCkKLQotICAgIGRlZiBfZ2V0X3Rlc3RzX2Zyb21f
Z29vZ2xlX3Rlc3Rfc3VpdGUoc2VsZiwgdGVzdF9wcm9ncmFtKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3Rlc3RfcHJvZ3JhbSwg
Jy0tZ3Rlc3RfbGlzdF90ZXN0cyddLCBlbnY9c2VsZi5fdGVzdF9lbnYpCi0gICAgICAgIGV4Y2Vw
dCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoIkVSUk9SOiBjb3VsZCBub3QgbGlzdCBhdmFpbGFibGUgdGVzdHMgZm9yIGJpbmFyeSAl
cy5cbiIgJSAodGVzdF9wcm9ncmFtKSkKLSAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQot
ICAgICAgICAgICAgcmV0dXJuIDEKLQotICAgICAgICBza2lwcGVkX3Rlc3RfY2FzZXMgPSBzZWxm
Ll90ZXN0X2Nhc2VzX3RvX3NraXAodGVzdF9wcm9ncmFtKQotCi0gICAgICAgIHRlc3RzID0gW10K
LSAgICAgICAgcHJlZml4ID0gTm9uZQotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXQo
J1xuJyk6Ci0gICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCcgICcpOgotICAgICAg
ICAgICAgICAgIHByZWZpeCA9IGxpbmUKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZXN0X25hbWUgPSBwcmVmaXggKyBsaW5lLnN0
cmlwKCkKLSAgICAgICAgICAgICAgICBpZiBub3QgdGVzdF9uYW1lIGluIHNraXBwZWRfdGVzdF9j
YXNlczoKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKHRlc3RfbmFtZSkKLSAgICAg
ICAgcmV0dXJuIHRlc3RzCi0KLSAgICBkZWYgX3J1bl9nb29nbGVfdGVzdChzZWxmLCB0ZXN0X3By
b2dyYW0sIHN1YnRlc3QpOgotICAgICAgICB0ZXN0X2NvbW1hbmQgPSBbdGVzdF9wcm9ncmFtLCAn
LS1ndGVzdF9maWx0ZXI9JXMnICUgKHN1YnRlc3QpXQotICAgICAgICB0aW1lb3V0ID0gc2VsZi5f
b3B0aW9ucy50aW1lb3V0Ci0gICAgICAgIGlmIHN1YnRlc3QgaW4gVGVzdFJ1bm5lci5TTE9XOgot
ICAgICAgICAgICAgdGltZW91dCAqPSA1Ci0KLSAgICAgICAgc3RhdHVzID0gc2VsZi5fcnVuX3Rl
c3RfY29tbWFuZCh0ZXN0X2NvbW1hbmQsIHRpbWVvdXQpCi0gICAgICAgIGlmIHN0YXR1cyA9PSAt
U0lHU0VHVjoKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIioqQ1JBU0gqKiAlc1xuIiAl
IHN1YnRlc3QpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJu
IHN0YXR1cwotCi0gICAgZGVmIF9ydW5fZ29vZ2xlX3Rlc3Rfc3VpdGUoc2VsZiwgdGVzdF9wcm9n
cmFtKToKLSAgICAgICAgcmV0Y29kZSA9IDAKLSAgICAgICAgZm9yIHN1YnRlc3QgaW4gc2VsZi5f
Z2V0X3Rlc3RzX2Zyb21fZ29vZ2xlX3Rlc3Rfc3VpdGUodGVzdF9wcm9ncmFtKToKLSAgICAgICAg
ICAgIGlmIHNlbGYuX3J1bl9nb29nbGVfdGVzdCh0ZXN0X3Byb2dyYW0sIHN1YnRlc3QpOgotICAg
ICAgICAgICAgICAgIHJldGNvZGUgPSAxCi0gICAgICAgIHJldHVybiByZXRjb2RlCi0KLSAgICBk
ZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfcHJvZ3JhbSk6Ci0gICAgICAgIGJhc2VkaXIgPSBvcy5w
YXRoLmJhc2VuYW1lKG9zLnBhdGguZGlybmFtZSh0ZXN0X3Byb2dyYW0pKQotICAgICAgICBpZiBi
YXNlZGlyIGluIFsiV2ViS2l0Mkd0ayIsICJXZWJLaXRHdGsiXToKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLl9ydW5fdGVzdF9nbGliKHRlc3RfcHJvZ3JhbSkKLQotICAgICAgICBpZiBiYXNlZGly
IGluIFsiV2ViS2l0MiIsICJKYXZhU2NyaXB0Q29yZSIsICJXVEYiLCAiV2ViQ29yZSIsICAiV2Vi
Q29yZUd0ayJdOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9nb29nbGVfdGVzdF9zdWl0
ZSh0ZXN0X3Byb2dyYW0pCi0KLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBydW5fdGVzdHMo
c2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0czoKLSAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoIkVSUk9SOiB0ZXN0cyBub3QgZm91bmQgaW4gJXMuXG4iICUgKHNlbGYuX3Rlc3Rf
cHJvZ3JhbXNfYmFzZV9kaXIoKSkpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAg
ICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX3NldHVwX3Rlc3Rpbmdf
ZW52aXJvbm1lbnQoKToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgIyBSZW1vdmUg
c2tpcHBlZCB0ZXN0cyBub3cgaW5zdGVhZCBvZiB3aGVuIHdlIGZpbmQgdGhlbSwgYmVjYXVzZQot
ICAgICAgICAjIHNvbWUgdGVzdHMgbWlnaHQgYmUgc2tpcHBlZCB3aGlsZSBzZXR0aW5nIHVwIHRo
ZSB0ZXN0IGVudmlyb25tZW50LgotICAgICAgICBzZWxmLl90ZXN0cyA9IFt0ZXN0IGZvciB0ZXN0
IGluIHNlbGYuX3Rlc3RzIGlmIHNlbGYuX3Nob3VsZF9ydW5fdGVzdF9wcm9ncmFtKHRlc3QpXQot
Ci0gICAgICAgIGNyYXNoZWRfdGVzdHMgPSBbXQotICAgICAgICBmYWlsZWRfdGVzdHMgPSBbXQot
ICAgICAgICB0aW1lZF9vdXRfdGVzdHMgPSBbXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBm
b3IgdGVzdCBpbiBzZWxmLl90ZXN0czoKLSAgICAgICAgICAgICAgICBleGl0X3N0YXR1c19jb2Rl
ID0gMAotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdGF0
dXNfY29kZSA9IHNlbGYuX3J1bl90ZXN0KHRlc3QpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFRl
c3RUaW1lb3V0OgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJURVNUOiAl
czogVElNRU9VVFxuIiAlIHRlc3QpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1
c2goKQotICAgICAgICAgICAgICAgICAgICB0aW1lZF9vdXRfdGVzdHMuYXBwZW5kKHRlc3QpCi0K
LSAgICAgICAgICAgICAgICBpZiBleGl0X3N0YXR1c19jb2RlID09IC1TSUdTRUdWOgotICAgICAg
ICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJURVNUOiAlczogQ1JBU0hFRFxuIiAlIHRl
c3QpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAg
ICAgICAgICBjcmFzaGVkX3Rlc3RzLmFwcGVuZCh0ZXN0KQotICAgICAgICAgICAgICAgIGVsaWYg
ZXhpdF9zdGF0dXNfY29kZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICBmYWlsZWRfdGVzdHMu
YXBwZW5kKHRlc3QpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl90ZWFyX2Rv
d25fdGVzdGluZ19lbnZpcm9ubWVudCgpCi0KLSAgICAgICAgaWYgZmFpbGVkX3Rlc3RzOgotICAg
ICAgICAgICAgbmFtZXMgPSBbdGVzdC5yZXBsYWNlKHNlbGYuX3Rlc3RfcHJvZ3JhbXNfYmFzZV9k
aXIoKSwgJycsIDEpIGZvciB0ZXN0IGluIGZhaWxlZF90ZXN0c10KLSAgICAgICAgICAgIHN5cy5z
dGRvdXQud3JpdGUoIlRlc3RzIGZhaWxlZCAoJWQpOiAlc1xuIiAlIChsZW4obmFtZXMpLCAiLCAi
LmpvaW4obmFtZXMpKSkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotCi0gICAgICAg
IGlmIGNyYXNoZWRfdGVzdHM6Ci0gICAgICAgICAgICBuYW1lcyA9IFt0ZXN0LnJlcGxhY2Uoc2Vs
Zi5fdGVzdF9wcm9ncmFtc19iYXNlX2RpcigpLCAnJywgMSkgZm9yIHRlc3QgaW4gY3Jhc2hlZF90
ZXN0c10KLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRlc3RzIHRoYXQgY3Jhc2hlZCAo
JWQpOiAlc1xuIiAlIChsZW4obmFtZXMpLCAiLCAiLmpvaW4obmFtZXMpKSkKLSAgICAgICAgICAg
IHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBzdXBlcihHdGtUZXN0UnVubmVyLCBzZWxmKS5f
dGVhcl9kb3duX3Rlc3RpbmdfZW52aXJvbm1lbnQoKQogCi0gICAgICAgIGlmIHRpbWVkX291dF90
ZXN0czoKLSAgICAgICAgICAgIG5hbWVzID0gW3Rlc3QucmVwbGFjZShzZWxmLl90ZXN0X3Byb2dy
YW1zX2Jhc2VfZGlyKCksICcnLCAxKSBmb3IgdGVzdCBpbiB0aW1lZF9vdXRfdGVzdHNdCi0gICAg
ICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJUZXN0cyB0aGF0IHRpbWVkIG91dCAoJWQpOiAlc1xu
IiAlIChsZW4obmFtZXMpLCAiLCAiLmpvaW4obmFtZXMpKSkKLSAgICAgICAgICAgIHN5cy5zdGRv
dXQuZmx1c2goKQorICAgIGRlZiBpc19nbGliX3Rlc3Qoc2VsZiwgdGVzdF9wcm9ncmFtKToKKyAg
ICAgICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKHRlc3RfcHJvZ3Jh
bSkpID09ICJXZWJLaXQyR3RrIgogCi0gICAgICAgIGlmIHNlbGYuX3NraXBwZWRfdGVzdHMgYW5k
IHNlbGYuX29wdGlvbnMuc2tpcHBlZF9hY3Rpb24gPT0gJ3NraXAnOgotICAgICAgICAgICAgc3lz
LnN0ZG91dC53cml0ZSgiVGVzdHMgc2tpcHBlZCAoJWQpOlxuJXNcbiIgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX3NraXBwZWRfdGVzdHMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIi5qb2luKFtzdHIoc2tpcHBlZCkgZm9yIHNraXBwZWQgaW4g
c2VsZi5fc2tpcHBlZF90ZXN0c10pKSkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQor
ICAgIGRlZiBpc19nb29nbGVfdGVzdChzZWxmLCB0ZXN0X3Byb2dyYW0pOgorICAgICAgICByZXR1
cm4gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLmRpcm5hbWUodGVzdF9wcm9ncmFtKSkgaW4gWyJX
ZWJLaXQyIiwgIkphdmFTY3JpcHRDb3JlIiwgIldURiIsICJXZWJDb3JlIiwgICJXZWJDb3JlR3Rr
Il0KIAotICAgICAgICByZXR1cm4gbGVuKGZhaWxlZF90ZXN0cykgKyBsZW4odGltZWRfb3V0X3Rl
c3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGlmIG5vdCBqaGJ1aWxkdXRp
bHMuZW50ZXJfamhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFpbGFibGUoImd0ayIpOgpAQCAtNDY3
LDIyICsxNjMsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICBwcmludCAi
KioqIgogCiAgICAgb3B0aW9uX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0n
dXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBbdGVzdC4uLl0nKQotICAgIG9wdGlvbl9wYXJzZXIuYWRk
X29wdGlvbignLXInLCAnLS1yZWxlYXNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncmVsZWFzZScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1J1biBpbiBSZWxlYXNlJykKLSAgICBvcHRpb25fcGFyc2VyLmFkZF9v
cHRpb24oJy1kJywgJy0tZGVidWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rp
b249J3N0b3JlX3RydWUnLCBkZXN0PSdkZWJ1ZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J1J1biBpbiBEZWJ1ZycpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCct
dicsICctLXZlcmJvc2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZXN0PSd2ZXJib3NlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nUnVuIGd0ZXN0ZXIgaW4gdmVyYm9zZSBtb2RlJykKLSAgICBvcHRpb25fcGFyc2VyLmFk
ZF9vcHRpb24oJy0tc2tpcHBlZCcsIGFjdGlvbj0nc3RvcmUnLCBkZXN0PSdza2lwcGVkX2FjdGlv
bicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9Wydza2lwJywgJ2lnbm9y
ZScsICdvbmx5J10sIGRlZmF1bHQ9J3NraXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRhdmFyPSdza2lwfGlnbm9yZXxvbmx5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nU3BlY2lmaWVzIGhvdyB0byB0cmVhdCB0aGUgc2tpcHBlZCB0ZXN0cycpCi0gICAg
b3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRpbWVvdXQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywgdHlwZT0naW50JywgZGVzdD0ndGltZW91
dCcsIGRlZmF1bHQ9MTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RpbWUg
aW4gc2Vjb25kcyB1bnRpbCBhIHRlc3QgdGltZXMgb3V0JykKKyAgICBhZGRfb3B0aW9ucyhvcHRp
b25fcGFyc2VyKTsKICAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzcGxheS1zZXJ2
ZXInLCBjaG9pY2VzPVsneHZmYicsICd4b3JnJywgJ3dlc3RvbicsICd3YXlsYW5kJ10sIGRlZmF1
bHQ9J3h2ZmInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPScieHZmYiI6IFVz
ZSBhIHZpcnR1YWxpemVkIFgxMSBzZXJ2ZXIuICJ4b3JnIjogVXNlIHRoZSBjdXJyZW50IFgxMSBz
ZXNzaW9uLiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJ3ZXN0b24iOiBV
c2UgYSB2aXJ0dWFsaXplZCBXZXN0b24gc2VydmVyLiAid2F5bGFuZCI6IFVzZSB0aGUgY3VycmVu
dCB3YXlsYW5kIHNlc3Npb24uJyksCkBAIC00OTAsNSArMTcxLDUgQEAgaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKIAogICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZP
LCBmb3JtYXQ9IiUobWVzc2FnZSlzIikKIAotICAgIHJ1bm5lciA9IFRlc3RSdW5uZXIob3B0aW9u
cywgYXJncykKKyAgICBydW5uZXIgPSBHdGtUZXN0UnVubmVyKG9wdGlvbnMsIGFyZ3MpCiAgICAg
c3lzLmV4aXQocnVubmVyLnJ1bl90ZXN0cygpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4td3BlLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4td3BlLXRlc3RzCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwLi40MjhiZTFiYjE0OAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLXdwZS10ZXN0cwpAQCAtMCwwICsxLDY3IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisjCisjIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisjIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitp
bXBvcnQgc3lzCitpbXBvcnQgb3B0cGFyc2UKKwordG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBh
dGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIs
ICIuLiIpKQorc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5
LCAiVG9vbHMiLCAiamhidWlsZCIpKQorc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbih0b3Bf
bGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ2xpYiIpKQoraW1wb3J0IGNvbW1vbgoraW1wb3J0
IGpoYnVpbGR1dGlscworZnJvbSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIsIFNr
aXBwZWRUZXN0LCBhZGRfb3B0aW9ucworCitjbGFzcyBXUEVUZXN0UnVubmVyKFRlc3RSdW5uZXIp
OgorICAgIFRlc3RSdW5uZXIuVEVTVF9ESVJTID0gWyAiV1BFIiwgIldURiIsICJXZWJDb3JlIiBd
CisKKyAgICBUZXN0UnVubmVyLlNMT1cgPSBbCisgICAgICAgICJXVEZfTG9jay5Db250ZW5kZWRT
aG9ydFNlY3Rpb24iLAorICAgICAgICAiV1RGX0xvY2suQ29udGVuZGVkTG9uZ1NlY3Rpb24iLAor
ICAgICAgICAiV1RGX1dvcmRMb2NrLkNvbnRlbmRlZFNob3J0U2VjdGlvbiIsCisgICAgICAgICJX
VEZfV29yZExvY2suQ29udGVuZGVkTG9uZ1NlY3Rpb24iLAorICAgIF0KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBvcHRpb25zLCB0ZXN0cz1bXSk6CisgICAgICAgIHN1cGVyKFdQRVRlc3RSdW5u
ZXIsIHNlbGYpLl9faW5pdF9fKCJ3cGUiLCBvcHRpb25zLCB0ZXN0cykKKworICAgIGRlZiBpc19n
bGliX3Rlc3Qoc2VsZiwgdGVzdF9wcm9ncmFtKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYmFz
ZW5hbWUob3MucGF0aC5kaXJuYW1lKHRlc3RfcHJvZ3JhbSkpID09ICJXUEUiCisKKyAgICBkZWYg
aXNfZ29vZ2xlX3Rlc3Qoc2VsZiwgdGVzdF9wcm9ncmFtKToKKyAgICAgICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKHRlc3RfcHJvZ3JhbSkpIGluIFsiV2ViS2l0MiIs
ICJKYXZhU2NyaXB0Q29yZSIsICJXVEYiLCAiV2ViQ29yZSIsICAiV2ViQ29yZUd0ayJdCisKKwor
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpZiBub3QgamhidWlsZHV0aWxzLmVudGVy
X2poYnVpbGRfZW52aXJvbm1lbnRfaWZfYXZhaWxhYmxlKCJ3cGUiKToKKyAgICAgICAgcHJpbnQg
IioqKiIKKyAgICAgICAgcHJpbnQgIioqKiBXYXJuaW5nOiBqaGJ1aWxkIGVudmlyb25tZW50IG5v
dCBwcmVzZW50LiBSdW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGJlZm9yZSBidWlsZC13ZWJraXQg
dG8gZW5zdXJlIHByb3BlciB0ZXN0aW5nLiIKKyAgICAgICAgcHJpbnQgIioqKiIKKworICAgIG9w
dGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9J3VzYWdlOiAlcHJvZyBb
b3B0aW9uc10gW3Rlc3QuLi5dJykKKyAgICBhZGRfb3B0aW9ucyhvcHRpb25fcGFyc2VyKTsKKyAg
ICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzcGxheS1zZXJ2ZXInLCBjaG9pY2VzPVsn
aGVhZGxlc3MnLCAnd2F5bGFuZCddLCBkZWZhdWx0PSdoZWFkbGVzcycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9JyJoZWFkbGVzcyI6IFVzZSBoZWFkbGVzcyB2aWV3IGJhY2tl
bmQuICJ3YXlsYW5kIjogVXNlIHRoZSBjdXJyZW50IHdheWxhbmQgc2Vzc2lvbi4nKSwKKyAgICBv
cHRpb25zLCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCBmb3JtYXQ9IiUobWVzc2FnZSlzIikKKwor
ICAgIHJ1bm5lciA9IFdQRVRlc3RSdW5uZXIob3B0aW9ucywgYXJncykKKyAgICBzeXMuZXhpdChy
dW5uZXIucnVuX3Rlc3RzKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvd3BlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQppbmRleCAzNDk2
YzFhNTk2NS4uM2NkNjIyYTYwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC93cGUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQpAQCAt
MzEsNiArMzEsOCBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25m
aWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0LmJh
c2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkucG9ydC5oZWFkbGVzc2RyaXZlciBpbXBvcnQg
SGVhZGxlc3NEcml2ZXIKIGZyb20gd2Via2l0cHkucG9ydC5saW51eF9nZXRfY3Jhc2hfbG9nIGlt
cG9ydCBHREJDcmFzaExvZ0dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5wb3J0Lndlc3RvbmRyaXZl
ciBpbXBvcnQgV2VzdG9uRHJpdmVyCitmcm9tIHdlYmtpdHB5LnBvcnQud2F5bGFuZGRyaXZlciBp
bXBvcnQgV2F5bGFuZERyaXZlcgogCiAKIGNsYXNzIFdQRVBvcnQoUG9ydCk6CkBAIC0zOCw2ICs0
MCw3IEBAIGNsYXNzIFdQRVBvcnQoUG9ydCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKICAgICAgICAgc3VwZXIoV1BFUG9ydCwgc2VsZikuX19pbml0X18oKmFy
Z3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLl9kaXNwbGF5X3NlcnZlciA9IHNlbGYuZ2V0X29w
dGlvbigiZGlzcGxheV9zZXJ2ZXIiKQogCiAgICAgICAgIGlmIHNlbGYuX3Nob3VsZF91c2Vfamhi
dWlsZCgpOgogICAgICAgICAgICAgc2VsZi5famhidWlsZF93cmFwcGVyID0gW3NlbGYucGF0aF9m
cm9tX3dlYmtpdF9iYXNlKCdUb29scycsICdqaGJ1aWxkJywgJ2poYnVpbGQtd3JhcHBlcicpLCAn
LS13cGUnLCAncnVuJ10KQEAgLTQ1LDYgKzQ4LDggQEAgY2xhc3MgV1BFUG9ydChQb3J0KToKIAog
ICAgIEBtZW1vaXplZAogICAgIGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLl9kaXNwbGF5X3NlcnZlciA9PSAid2F5bGFuZCI6CisgICAgICAgICAgICByZXR1cm4gV2F5
bGFuZERyaXZlcgogICAgICAgICByZXR1cm4gSGVhZGxlc3NEcml2ZXIKIAogICAgIGRlZiBkZWZh
dWx0X3RpbWVvdXRfbXMoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9nbGliL2FwaV90ZXN0X3J1
bm5lci5weSBiL1Rvb2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwLi5mMzRiYWM3MDFlOQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVyLnB5CkBAIC0wLDAgKzEsMzgzIEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE3IElnYWxpYSBT
LkwuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCitpbXBvcnQgc3VicHJvY2Vz
cworaW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBzeXMKK2ltcG9ydCByZQorZnJvbSBz
aWduYWwgaW1wb3J0IGFsYXJtLCBzaWduYWwsIFNJR0FMUk0sIFNJR0tJTEwsIFNJR1NFR1YKKwor
dG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIpKQorc3lzLnBhdGguYXBwZW5kKG9zLnBh
dGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ2xpYiIpKQoraW1wb3J0IGNv
bW1vbgorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorCisKK2NsYXNzIFNr
aXBwZWRUZXN0OgorICAgIEVOVElSRV9TVUlURSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0ZXN0LCB0ZXN0X2Nhc2UsIHJlYXNvbiwgYnVnLCBidWlsZF90eXBlPU5vbmUpOgorICAg
ICAgICBzZWxmLnRlc3QgPSB0ZXN0CisgICAgICAgIHNlbGYudGVzdF9jYXNlID0gdGVzdF9jYXNl
CisgICAgICAgIHNlbGYucmVhc29uID0gcmVhc29uCisgICAgICAgIHNlbGYuYnVnID0gYnVnCisg
ICAgICAgIHNlbGYuYnVpbGRfdHlwZSA9IGJ1aWxkX3R5cGUKKworICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgorICAgICAgICBza2lwcGVkX3Rlc3Rfc3RyID0gIiVzIiAlIHNlbGYudGVzdAorCisgICAg
ICAgIGlmIG5vdChzZWxmLnNraXBfZW50aXJlX3N1aXRlKCkpOgorICAgICAgICAgICAgc2tpcHBl
ZF90ZXN0X3N0ciArPSAiIFslc10iICUgc2VsZi50ZXN0X2Nhc2UKKworICAgICAgICBza2lwcGVk
X3Rlc3Rfc3RyICs9ICI6ICVzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9JWQpIiAlIChzZWxmLnJlYXNvbiwgc2VsZi5idWcpCisgICAgICAgIHJldHVybiBza2lwcGVk
X3Rlc3Rfc3RyCisKKyAgICBkZWYgc2tpcF9lbnRpcmVfc3VpdGUoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLnRlc3RfY2FzZSA9PSBTa2lwcGVkVGVzdC5FTlRJUkVfU1VJVEUKKworICAgIGRl
ZiBza2lwX2Zvcl9idWlsZF90eXBlKHNlbGYsIGJ1aWxkX3R5cGUpOgorICAgICAgICBpZiBzZWxm
LmJ1aWxkX3R5cGUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAg
cmV0dXJuIHNlbGYuYnVpbGRfdHlwZSA9PSBidWlsZF90eXBlCisKKworY2xhc3MgVGVzdFRpbWVv
dXQoRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgVGVzdFJ1bm5lcihvYmplY3QpOgor
ICAgIFRFU1RfRElSUyA9IFtdCisgICAgU0tJUFBFRCA9IFtdCisgICAgU0xPVyA9IFtdCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgdGVzdHM9W10pOgorICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucworCisgICAgICAgIHNlbGYuX2J1aWxkX3R5cGUgPSAiRGVi
dWciIGlmIHNlbGYuX29wdGlvbnMuZGVidWcgZWxzZSAiUmVsZWFzZSIKKyAgICAgICAgY29tbW9u
LnNldF9idWlsZF90eXBlcygoc2VsZi5fYnVpbGRfdHlwZSwpKQorICAgICAgICBzZWxmLl9wb3J0
ID0gSG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQocG9ydCkKKyAgICAgICAgc2VsZi5fZHJpdmVyID0g
c2VsZi5fY3JlYXRlX2RyaXZlcigpCisKKyAgICAgICAgc2VsZi5fcHJvZ3JhbXNfcGF0aCA9IGNv
bW1vbi5iaW5hcnlfYnVpbGRfcGF0aCgpCisgICAgICAgIHNlbGYuX3Rlc3RzID0gc2VsZi5fZ2V0
X3Rlc3RzKHRlc3RzKQorICAgICAgICBzZWxmLl9za2lwcGVkX3Rlc3RzID0gW3NraXBwZWQgZm9y
IHNraXBwZWQgaW4gVGVzdFJ1bm5lci5TS0lQUEVEIGlmIHNraXBwZWQuc2tpcF9mb3JfYnVpbGRf
dHlwZShzZWxmLl9idWlsZF90eXBlKV0KKyAgICAgICAgc2VsZi5fZGlzYWJsZWRfdGVzdHMgPSBb
XQorCisgICAgZGVmIF90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKHNlbGYpOgorICAgICAgICByZXR1
cm4gb3MucGF0aC5qb2luKHNlbGYuX3Byb2dyYW1zX3BhdGgsICJUZXN0V2ViS2l0QVBJIikKKwor
ICAgIGRlZiBfZ2V0X3Rlc3RzX2Zyb21fZGlyKHNlbGYsIHRlc3RfZGlyKToKKyAgICAgICAgaWYg
bm90IG9zLnBhdGguaXNkaXIodGVzdF9kaXIpOgorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAg
ICAgICAgdGVzdHMgPSBbXQorICAgICAgICBmb3IgdGVzdF9maWxlIGluIG9zLmxpc3RkaXIodGVz
dF9kaXIpOgorICAgICAgICAgICAgaWYgbm90IHRlc3RfZmlsZS5sb3dlcigpLnN0YXJ0c3dpdGgo
InRlc3QiKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdGVzdF9wYXRo
ID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCB0ZXN0X2ZpbGUpCisgICAgICAgICAgICBpZiBvcy5w
YXRoLmlzZmlsZSh0ZXN0X3BhdGgpIGFuZCBvcy5hY2Nlc3ModGVzdF9wYXRoLCBvcy5YX09LKToK
KyAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQodGVzdF9wYXRoKQorICAgICAgICByZXR1cm4g
dGVzdHMKKworICAgIGRlZiBfZ2V0X3Rlc3RzKHNlbGYsIGluaXRpYWxfdGVzdHMpOgorICAgICAg
ICB0ZXN0cyA9IFtdCisgICAgICAgIGZvciB0ZXN0IGluIGluaXRpYWxfdGVzdHM6CisgICAgICAg
ICAgICBpZiBvcy5wYXRoLmlzZGlyKHRlc3QpOgorICAgICAgICAgICAgICAgIHRlc3RzLmV4dGVu
ZChzZWxmLl9nZXRfdGVzdHNfZnJvbV9kaXIodGVzdCkpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHRlc3RzLmFwcGVuZCh0ZXN0KQorICAgICAgICBpZiB0ZXN0czoKKyAgICAg
ICAgICAgIHJldHVybiB0ZXN0cworCisgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgZm9yIHRl
c3RfZGlyIGluIHNlbGYuVEVTVF9ESVJTOgorICAgICAgICAgICAgYWJzb2x1dGVfdGVzdF9kaXIg
PSBvcy5wYXRoLmpvaW4oc2VsZi5fdGVzdF9wcm9ncmFtc19iYXNlX2RpcigpLCB0ZXN0X2RpcikK
KyAgICAgICAgICAgIHRlc3RzLmV4dGVuZChzZWxmLl9nZXRfdGVzdHNfZnJvbV9kaXIoYWJzb2x1
dGVfdGVzdF9kaXIpKQorICAgICAgICByZXR1cm4gdGVzdHMKKworICAgIGRlZiBfY3JlYXRlX2Ry
aXZlcihzZWxmLCBwb3J0X29wdGlvbnM9W10pOgorICAgICAgICBzZWxmLl9wb3J0Ll9kaXNwbGF5
X3NlcnZlciA9IHNlbGYuX29wdGlvbnMuZGlzcGxheV9zZXJ2ZXIKKyAgICAgICAgZHJpdmVyID0g
c2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MCwgbm9fdGltZW91dD1UcnVl
KS5fbWFrZV9kcml2ZXIocGl4ZWxfdGVzdHM9RmFsc2UpCisgICAgICAgIGlmIG5vdCBkcml2ZXIu
Y2hlY2tfZHJpdmVyKHNlbGYuX3BvcnQpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCJGYWlsZWQgdG8gY2hlY2sgZHJpdmVyICVzIiAlIGRyaXZlci5fX2NsYXNzX18uX19uYW1lX18p
CisgICAgICAgIHJldHVybiBkcml2ZXIKKworICAgIGRlZiBfc2V0dXBfdGVzdGluZ19lbnZpcm9u
bWVudChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9lbnYgPSBzZWxmLl9kcml2ZXIuX3NldHVw
X2Vudmlyb25fZm9yX3Rlc3QoKQorICAgICAgICBzZWxmLl90ZXN0X2VudlsiVEVTVF9XRUJLSVRf
QVBJX1dFQktJVDJfUkVTT1VSQ0VTX1BBVEgiXSA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9v
bHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIsICJXZWJLaXQyIikKKyAgICAgICAgc2VsZi5f
dGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9XRUJLSVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0g
PSBjb21tb24ubGlicmFyeV9idWlsZF9wYXRoKCkKKyAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldF
QktJVF9FWEVDX1BBVEgiXSA9IHNlbGYuX3Byb2dyYW1zX3BhdGgKKworICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgZGVmIF90ZWFyX2Rvd25fdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKKyAg
ICAgICAgaWYgc2VsZi5fZHJpdmVyOgorICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnN0b3AoKQor
CisgICAgZGVmIF90ZXN0X2Nhc2VzX3RvX3NraXAoc2VsZiwgdGVzdF9wcm9ncmFtKToKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5za2lwcGVkX2FjdGlvbiAhPSAnc2tpcCc6CisgICAgICAgICAg
ICByZXR1cm4gW10KKworICAgICAgICB0ZXN0X2Nhc2VzID0gW10KKyAgICAgICAgZm9yIHNraXBw
ZWQgaW4gc2VsZi5fc2tpcHBlZF90ZXN0czoKKyAgICAgICAgICAgIGlmIHRlc3RfcHJvZ3JhbS5l
bmRzd2l0aChza2lwcGVkLnRlc3QpIGFuZCBub3Qgc2tpcHBlZC5za2lwX2VudGlyZV9zdWl0ZSgp
OgorICAgICAgICAgICAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHNraXBwZWQudGVzdF9jYXNlKQor
ICAgICAgICByZXR1cm4gdGVzdF9jYXNlcworCisgICAgZGVmIF9zaG91bGRfcnVuX3Rlc3RfcHJv
Z3JhbShzZWxmLCB0ZXN0X3Byb2dyYW0pOgorICAgICAgICBmb3IgZGlzYWJsZWRfdGVzdCBpbiBz
ZWxmLl9kaXNhYmxlZF90ZXN0czoKKyAgICAgICAgICAgIGlmIHRlc3RfcHJvZ3JhbS5lbmRzd2l0
aChkaXNhYmxlZF90ZXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnNraXBwZWRfYWN0aW9uICE9ICdza2lwJzoKKyAgICAgICAgICAg
IHJldHVybiBUcnVlCisKKyAgICAgICAgZm9yIHNraXBwZWQgaW4gc2VsZi5fc2tpcHBlZF90ZXN0
czoKKyAgICAgICAgICAgIGlmIHRlc3RfcHJvZ3JhbS5lbmRzd2l0aChza2lwcGVkLnRlc3QpIGFu
ZCBza2lwcGVkLnNraXBfZW50aXJlX3N1aXRlKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2dldF9jaGlsZF9waWRfZnJvbV90
ZXN0X291dHB1dChzZWxmLCBvdXRwdXQpOgorICAgICAgICBpZiBub3Qgb3V0cHV0OgorICAgICAg
ICAgICAgcmV0dXJuIC0xCisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXChwaWQ9KD9QPGNo
aWxkX3BpZD5bMC05XSspXCknLCBvdXRwdXQpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAg
ICAgICAgIHJldHVybiAtMQorICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdjaGlsZF9w
aWQnKSkKKworICAgIGRlZiBfa2lsbF9wcm9jZXNzKHNlbGYsIHBpZCk6CisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBTSUdLSUxMKQorICAgICAgICBleGNlcHQgT1NFcnJv
cjoKKyAgICAgICAgICAgICMgUHJvY2VzcyBhbHJlYWR5IGRpZWQuCisgICAgICAgICAgICBwYXNz
CisKKyAgICBkZWYgX3J1bl90ZXN0X2NvbW1hbmQoc2VsZiwgY29tbWFuZCwgdGltZW91dD0tMSk6
CisgICAgICAgIGRlZiBhbGFybV9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAg
cmFpc2UgVGVzdFRpbWVvdXQKKworICAgICAgICBjaGlsZF9waWQgPSBbLTFdCisKKyAgICAgICAg
ZGVmIHBhcnNlX2xpbmUobGluZSwgY2hpbGRfcGlkPWNoaWxkX3BpZCk6CisgICAgICAgICAgICBp
ZiBjaGlsZF9waWRbMF0gPT0gLTE6CisgICAgICAgICAgICAgICAgY2hpbGRfcGlkWzBdID0gc2Vs
Zi5fZ2V0X2NoaWxkX3BpZF9mcm9tX3Rlc3Rfb3V0cHV0KGxpbmUpCisKKyAgICAgICAgICAgIHN5
cy5zdGRvdXQud3JpdGUobGluZSkKKworICAgICAgICBkZWYgd2FpdHBpZChwaWQpOgorICAgICAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBvcy53YWl0cGlkKHBpZCwgMCkKKyAgICAgICAgICAgICAgICBleGNlcHQgKE9T
RXJyb3IsIElPRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0g
ZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiByZXR1cm5fY29kZV9mcm9tX2V4aXRfc3Rh
dHVzKHN0YXR1cyk6CisgICAgICAgICAgICBpZiBvcy5XSUZTSUdOQUxFRChzdGF0dXMpOgorICAg
ICAgICAgICAgICAgIHJldHVybiAtb3MuV1RFUk1TSUcoc3RhdHVzKQorICAgICAgICAgICAgZWxp
ZiBvcy5XSUZFWElURUQoc3RhdHVzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuV0VYSVRT
VEFUVVMoc3RhdHVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFNob3Vs
ZCBuZXZlciBoYXBwZW4KKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlVua25v
d24gY2hpbGQgZXhpdCBzdGF0dXMhIikKKworICAgICAgICBwaWQsIGZkID0gb3MuZm9ya3B0eSgp
CisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgb3MuZXhlY3ZwZShjb21tYW5kWzBd
LCBjb21tYW5kLCBzZWxmLl90ZXN0X2VudikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCisKKyAg
ICAgICAgaWYgdGltZW91dCA+IDA6CisgICAgICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1f
aGFuZGxlcikKKyAgICAgICAgICAgIGFsYXJtKHRpbWVvdXQpCisKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgY29tbW9uLnBhcnNlX291dHB1dF9saW5lcyhmZCwgcGFyc2VfbGluZSkKKyAgICAg
ICAgICAgIGlmIHRpbWVvdXQgPiAwOgorICAgICAgICAgICAgICAgIGFsYXJtKDApCisgICAgICAg
IGV4Y2VwdCBUZXN0VGltZW91dDoKKyAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhwaWQp
CisgICAgICAgICAgICBpZiBjaGlsZF9waWRbMF0gPiAwOgorICAgICAgICAgICAgICAgIHNlbGYu
X2tpbGxfcHJvY2VzcyhjaGlsZF9waWRbMF0pCisgICAgICAgICAgICByYWlzZQorCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIGR1bW15LCBzdGF0dXMgPSB3YWl0cGlkKHBpZCkKKyAgICAgICAg
ZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNI
SUxEOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBp
ZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZworICAgICAgICAgICAgIyBm
b3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3VyCisg
ICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0
aGUgc3RhdHVzLgorICAgICAgICAgICAgc3RhdHVzID0gMAorCisgICAgICAgIHJldHVybiByZXR1
cm5fY29kZV9mcm9tX2V4aXRfc3RhdHVzKHN0YXR1cykKKworICAgIGRlZiBfcnVuX3Rlc3RfZ2xp
YihzZWxmLCB0ZXN0X3Byb2dyYW0pOgorICAgICAgICB0ZXN0ZXJfY29tbWFuZCA9IFsnZ3Rlc3Rl
cicsICctayddCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAg
IHRlc3Rlcl9jb21tYW5kLmFwcGVuZCgnLS12ZXJib3NlJykKKyAgICAgICAgZm9yIHRlc3RfY2Fz
ZSBpbiBzZWxmLl90ZXN0X2Nhc2VzX3RvX3NraXAodGVzdF9wcm9ncmFtKToKKyAgICAgICAgICAg
IHRlc3Rlcl9jb21tYW5kLmV4dGVuZChbJy1zJywgdGVzdF9jYXNlXSkKKyAgICAgICAgdGVzdGVy
X2NvbW1hbmQuYXBwZW5kKHRlc3RfcHJvZ3JhbSkKKyAgICAgICAgIyBUaGlzIHRpbWVvdXQgaXMg
c3VwcG9zZWQgdG8gYmUgcGVyIHRlc3QgY2FzZSwgYnV0IGluIHRoZSBjYXNlIG9mIEdMaWIgdGVz
dHMgaXQgYWZmZWN0cyBhbGwgdGhlIHRlc3RzIGNhc2VzIG9mCisgICAgICAgICMgdGhlIHNhbWUg
dGVzdCBwcm9ncmFtLiBTb21lIHRlc3QgcHJvZ3JhbXMgbGlrZSBUZXN0TG9hZGVyQ2xpZW50LCB0
aGF0IGhhdmUgYSBsb3Qgb2YgdGVzdCBjYXNlcywgb2Z0ZW4gdGltZSBvdXQKKyAgICAgICAgIyBp
biB0aGUgYm90cyBiZWNhdXNlIHRoZSB0aW1lb3V0IGlzIG5vdCBlbm91Z2ggdG8gcnVuIGFsbCB0
aGUgdGVzdHMgY2FzZXMuIFNvLCB3ZSB1c2UgYSBsb25nZXIgdGltZW91dCBmb3IgR0xpYgorICAg
ICAgICAjIHRlc3RzICh0aW1lb3V0ICogMikuCisgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9vcHRp
b25zLnRpbWVvdXQgKiAyCisgICAgICAgIHRlc3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNl
bmFtZShvcy5wYXRoLmRpcm5hbWUodGVzdF9wcm9ncmFtKSksIG9zLnBhdGguYmFzZW5hbWUodGVz
dF9wcm9ncmFtKSkKKyAgICAgICAgaWYgdGVzdCBpbiBUZXN0UnVubmVyLlNMT1c6CisgICAgICAg
ICAgICB0aW1lb3V0ICo9IDUKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RfY29tbWFu
ZCh0ZXN0ZXJfY29tbWFuZCwgdGltZW91dCkKKworICAgIGRlZiBfZ2V0X3Rlc3RzX2Zyb21fZ29v
Z2xlX3Rlc3Rfc3VpdGUoc2VsZiwgdGVzdF9wcm9ncmFtKToKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3Rlc3RfcHJvZ3JhbSwgJy0t
Z3Rlc3RfbGlzdF90ZXN0cyddLCBlbnY9c2VsZi5fdGVzdF9lbnYpCisgICAgICAgIGV4Y2VwdCBz
dWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoIkVSUk9SOiBjb3VsZCBub3QgbGlzdCBhdmFpbGFibGUgdGVzdHMgZm9yIGJpbmFyeSAlcy5c
biIgJSAodGVzdF9wcm9ncmFtKSkKKyAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAg
ICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBza2lwcGVkX3Rlc3RfY2FzZXMgPSBzZWxmLl90
ZXN0X2Nhc2VzX3RvX3NraXAodGVzdF9wcm9ncmFtKQorCisgICAgICAgIHRlc3RzID0gW10KKyAg
ICAgICAgcHJlZml4ID0gTm9uZQorICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXQoJ1xu
Jyk6CisgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCcgICcpOgorICAgICAgICAg
ICAgICAgIHByZWZpeCA9IGxpbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZXN0X25hbWUgPSBwcmVmaXggKyBsaW5lLnN0cmlw
KCkKKyAgICAgICAgICAgICAgICBpZiBub3QgdGVzdF9uYW1lIGluIHNraXBwZWRfdGVzdF9jYXNl
czoKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKHRlc3RfbmFtZSkKKyAgICAgICAg
cmV0dXJuIHRlc3RzCisKKyAgICBkZWYgX3J1bl9nb29nbGVfdGVzdChzZWxmLCB0ZXN0X3Byb2dy
YW0sIHN1YnRlc3QpOgorICAgICAgICB0ZXN0X2NvbW1hbmQgPSBbdGVzdF9wcm9ncmFtLCAnLS1n
dGVzdF9maWx0ZXI9JXMnICUgKHN1YnRlc3QpXQorICAgICAgICB0aW1lb3V0ID0gc2VsZi5fb3B0
aW9ucy50aW1lb3V0CisgICAgICAgIGlmIHN1YnRlc3QgaW4gVGVzdFJ1bm5lci5TTE9XOgorICAg
ICAgICAgICAgdGltZW91dCAqPSA1CisKKyAgICAgICAgc3RhdHVzID0gc2VsZi5fcnVuX3Rlc3Rf
Y29tbWFuZCh0ZXN0X2NvbW1hbmQsIHRpbWVvdXQpCisgICAgICAgIGlmIHN0YXR1cyA9PSAtU0lH
U0VHVjoKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIioqQ1JBU0gqKiAlc1xuIiAlIHN1
YnRlc3QpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIHN0
YXR1cworCisgICAgZGVmIF9ydW5fZ29vZ2xlX3Rlc3Rfc3VpdGUoc2VsZiwgdGVzdF9wcm9ncmFt
KToKKyAgICAgICAgcmV0Y29kZSA9IDAKKyAgICAgICAgZm9yIHN1YnRlc3QgaW4gc2VsZi5fZ2V0
X3Rlc3RzX2Zyb21fZ29vZ2xlX3Rlc3Rfc3VpdGUodGVzdF9wcm9ncmFtKToKKyAgICAgICAgICAg
IGlmIHNlbGYuX3J1bl9nb29nbGVfdGVzdCh0ZXN0X3Byb2dyYW0sIHN1YnRlc3QpOgorICAgICAg
ICAgICAgICAgIHJldGNvZGUgPSAxCisgICAgICAgIHJldHVybiByZXRjb2RlCisKKyAgICBkZWYg
aXNfZ2xpYl90ZXN0KHNlbGYsIHRlc3RfcHJvZ3JhbSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IKKworICAgIGRlZiBpc19nb29nbGVfdGVzdChzZWxmLCB0ZXN0X3Byb2dyYW0p
OgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgX3J1bl90ZXN0
KHNlbGYsIHRlc3RfcHJvZ3JhbSk6CisgICAgICAgIGlmIHNlbGYuaXNfZ2xpYl90ZXN0KHRlc3Rf
cHJvZ3JhbSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RfZ2xpYih0ZXN0X3By
b2dyYW0pCisKKyAgICAgICAgaWYgc2VsZi5pc19nb29nbGVfdGVzdCh0ZXN0X3Byb2dyYW0pOgor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9nb29nbGVfdGVzdF9zdWl0ZSh0ZXN0X3Byb2dy
YW0pCisKKyAgICAgICAgcmV0dXJuIDEKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZik6CisgICAg
ICAgIGlmIG5vdCBzZWxmLl90ZXN0czoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkVS
Uk9SOiB0ZXN0cyBub3QgZm91bmQgaW4gJXMuXG4iICUgKHNlbGYuX3Rlc3RfcHJvZ3JhbXNfYmFz
ZV9kaXIoKSkpCisgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIHJl
dHVybiAxCisKKyAgICAgICAgaWYgbm90IHNlbGYuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQo
KToKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgIyBSZW1vdmUgc2tpcHBlZCB0ZXN0
cyBub3cgaW5zdGVhZCBvZiB3aGVuIHdlIGZpbmQgdGhlbSwgYmVjYXVzZQorICAgICAgICAjIHNv
bWUgdGVzdHMgbWlnaHQgYmUgc2tpcHBlZCB3aGlsZSBzZXR0aW5nIHVwIHRoZSB0ZXN0IGVudmly
b25tZW50LgorICAgICAgICBzZWxmLl90ZXN0cyA9IFt0ZXN0IGZvciB0ZXN0IGluIHNlbGYuX3Rl
c3RzIGlmIHNlbGYuX3Nob3VsZF9ydW5fdGVzdF9wcm9ncmFtKHRlc3QpXQorCisgICAgICAgIGNy
YXNoZWRfdGVzdHMgPSBbXQorICAgICAgICBmYWlsZWRfdGVzdHMgPSBbXQorICAgICAgICB0aW1l
ZF9vdXRfdGVzdHMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiBz
ZWxmLl90ZXN0czoKKyAgICAgICAgICAgICAgICBleGl0X3N0YXR1c19jb2RlID0gMAorICAgICAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZXhpdF9zdGF0dXNfY29kZSA9IHNl
bGYuX3J1bl90ZXN0KHRlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IFRlc3RUaW1lb3V0Ogor
ICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJURVNUOiAlczogVElNRU9VVFxu
IiAlIHRlc3QpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAg
ICAgICAgICAgICAgICB0aW1lZF9vdXRfdGVzdHMuYXBwZW5kKHRlc3QpCisKKyAgICAgICAgICAg
ICAgICBpZiBleGl0X3N0YXR1c19jb2RlID09IC1TSUdTRUdWOgorICAgICAgICAgICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKCJURVNUOiAlczogQ1JBU0hFRFxuIiAlIHRlc3QpCisgICAgICAg
ICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICAgICAgICAgICAgICBjcmFz
aGVkX3Rlc3RzLmFwcGVuZCh0ZXN0KQorICAgICAgICAgICAgICAgIGVsaWYgZXhpdF9zdGF0dXNf
Y29kZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICBmYWlsZWRfdGVzdHMuYXBwZW5kKHRlc3Qp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl90ZWFyX2Rvd25fdGVzdGluZ19l
bnZpcm9ubWVudCgpCisKKyAgICAgICAgaWYgZmFpbGVkX3Rlc3RzOgorICAgICAgICAgICAgbmFt
ZXMgPSBbdGVzdC5yZXBsYWNlKHNlbGYuX3Rlc3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEp
IGZvciB0ZXN0IGluIGZhaWxlZF90ZXN0c10KKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUo
IlRlc3RzIGZhaWxlZCAoJWQpOiAlc1xuIiAlIChsZW4obmFtZXMpLCAiLCAiLmpvaW4obmFtZXMp
KSkKKyAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgICAgIGlmIGNyYXNoZWRf
dGVzdHM6CisgICAgICAgICAgICBuYW1lcyA9IFt0ZXN0LnJlcGxhY2Uoc2VsZi5fdGVzdF9wcm9n
cmFtc19iYXNlX2RpcigpLCAnJywgMSkgZm9yIHRlc3QgaW4gY3Jhc2hlZF90ZXN0c10KKyAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRlc3RzIHRoYXQgY3Jhc2hlZCAoJWQpOiAlc1xuIiAl
IChsZW4obmFtZXMpLCAiLCAiLmpvaW4obmFtZXMpKSkKKyAgICAgICAgICAgIHN5cy5zdGRvdXQu
Zmx1c2goKQorCisgICAgICAgIGlmIHRpbWVkX291dF90ZXN0czoKKyAgICAgICAgICAgIG5hbWVz
ID0gW3Rlc3QucmVwbGFjZShzZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCksICcnLCAxKSBm
b3IgdGVzdCBpbiB0aW1lZF9vdXRfdGVzdHNdCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KCJUZXN0cyB0aGF0IHRpbWVkIG91dCAoJWQpOiAlc1xuIiAlIChsZW4obmFtZXMpLCAiLCAiLmpv
aW4obmFtZXMpKSkKKyAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgICAgIGlm
IHNlbGYuX3NraXBwZWRfdGVzdHMgYW5kIHNlbGYuX29wdGlvbnMuc2tpcHBlZF9hY3Rpb24gPT0g
J3NraXAnOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiVGVzdHMgc2tpcHBlZCAoJWQp
OlxuJXNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX3NraXBw
ZWRfdGVzdHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIi5qb2luKFtzdHIo
c2tpcHBlZCkgZm9yIHNraXBwZWQgaW4gc2VsZi5fc2tpcHBlZF90ZXN0c10pKSkKKyAgICAgICAg
ICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgICAgIHJldHVybiBsZW4oZmFpbGVkX3Rlc3Rz
KSArIGxlbih0aW1lZF9vdXRfdGVzdHMpCisKKworZGVmIGFkZF9vcHRpb25zKG9wdGlvbl9wYXJz
ZXIpOgorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLXInLCAnLS1yZWxlYXNlJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncmVs
ZWFzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biBpbiBSZWxlYXNl
JykKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy1kJywgJy0tZGVidWcnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdkZWJ1Zycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biBpbiBEZWJ1ZycpCisgICAg
b3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCctdicsICctLXZlcmJvc2UnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSd2ZXJib3NlJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVuIGd0ZXN0ZXIgaW4gdmVyYm9zZSBt
b2RlJykKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy0tc2tpcHBlZCcsIGFjdGlvbj0n
c3RvcmUnLCBkZXN0PSdza2lwcGVkX2FjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNob2ljZXM9Wydza2lwJywgJ2lnbm9yZScsICdvbmx5J10sIGRlZmF1bHQ9J3NraXAnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSdza2lwfGlnbm9yZXxvbmx5JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmaWVzIGhvdyB0byB0cmVh
dCB0aGUgc2tpcHBlZCB0ZXN0cycpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCctdCcs
ICctLXRpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3Jl
JywgdHlwZT0naW50JywgZGVzdD0ndGltZW91dCcsIGRlZmF1bHQ9MTAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J1RpbWUgaW4gc2Vjb25kcyB1bnRpbCBhIHRlc3QgdGltZXMg
b3V0JykKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9jb21tb24ucHkgYi9Ub29scy9nbGliL2NvbW1v
bi5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBUb29scy9ndGsvY29tbW9uLnB5
CnJlbmFtZSB0byBUb29scy9nbGliL2NvbW1vbi5weQppbmRleCBmNTNjYzk1YWE2Ny4uOGE3YjJm
YjQ2NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9jb21tb24ucHkKKysrIGIvVG9vbHMvZ2xpYi9j
b21tb24ucHkKQEAgLTYxLDcgKzYxLDcgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUp
OgogCiAgICAgZGVmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShwYXRoKToKICAgICAgICAgcmV0
dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwYXRoLCAnQ01ha2VDYWNoZS50eHQnKSkg
b3IgXAotICAgICAgICAgICAgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHBhdGgsICdiaW4v
TWluaUJyb3dzZXInKSkKKyAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihw
YXRoLCAnYmluL1dlYktpdFRlc3RSdW5uZXInKSkKIAogICAgIGlmIGxlbihzeXMuYXJndlsxOl0p
ID4gMSBhbmQgb3MucGF0aC5leGlzdHMoc3lzLmFyZ3ZbLTFdKSBhbmQgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KHN5cy5hcmd2Wy0xXSk6CiAgICAgICAgIHJldHVybiBzeXMuYXJndlstMV0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUt
Z3RrZG9jCmluZGV4IDMzYjI4MjRmODA2Li44ZGI0OTNmNTQwMiAxMDA3NTUKLS0tIGEvVG9vbHMv
Z3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC0y
MCwxMyArMjAsMTYgQEAgZnJvbSBDb25maWdQYXJzZXIgaW1wb3J0IFNhZmVDb25maWdQYXJzZXIK
IAogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgY29tbW9uCiBpbXBvcnQg
Z2xvYgogaW1wb3J0IGd0a2RvYwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcy5wYXRoCiBpbXBv
cnQgc3lzCiAKK3RvcF9sZXZlbF9kaXJlY3RvcnkgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iKSkKK3N5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgIlRvb2xzIiwgImdsaWIiKSkK
K2ltcG9ydCBjb21tb24KKwogc3lzLnN0ZG91dCA9IGNvZGVjcy5nZXR3cml0ZXIoInV0Zi04Iiko
c3lzLnN0ZG91dCkKIHN5cy5zdGRlcnIgPSBjb2RlY3MuZ2V0d3JpdGVyKCJ1dGYtOCIpKHN5cy5z
dGRlcnIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9qaGJ1aWxkcmMgYi9Ub29scy9ndGsvamhi
dWlsZHJjCmluZGV4IDNlZDJjOWRhNzA0Li4wZTZiNWIwMTZjYiAxMDA2NDQKLS0tIGEvVG9vbHMv
Z3RrL2poYnVpbGRyYworKysgYi9Ub29scy9ndGsvamhidWlsZHJjCkBAIC0yMiw4ICsyMiw4IEBA
IHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgIi4uL2poYnVpbGQiKSApCiBpbXBvcnQgamhidWlsZHJjX2NvbW1vbgogamhidWlsZHJjX2Nv
bW1vbi5pbml0KGdsb2JhbHMoKSwgImd0ayIpIAogCi1fX2d0a190b29sc19kaXJlY3RvcnkgPSBv
cy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXN5cy5wYXRoID0gW19f
Z3RrX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAordG9wX2xldmVsX2RpcmVjdG9yeSA9IG9z
LnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIu
LiIsICIuLiIpKQorc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0
b3J5LCAiVG9vbHMiLCAiZ2xpYiIpKQogaW1wb3J0IGNvbW1vbgogCiAjIExMVk0gcmVxdWlyZXMg
dGhhdCBidWlsZGRpciAhPSBzcmNkaXIsIGFuZCBpdCdzIG5vdCBwb3NzaWJsZSB0byBkbyB0aGF0
IGluIGpoYnVpbGQgb25seQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL3ljbV9leHRyYV9jb25mLnB5
IGIvVG9vbHMvZ3RrL3ljbV9leHRyYV9jb25mLnB5CmluZGV4IDg3MWU4YWY4ZThkLi5mMmMyOGI5
ZWI1MyAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL3ljbV9leHRyYV9jb25mLnB5CisrKyBiL1Rvb2xz
L2d0ay95Y21fZXh0cmFfY29uZi5weQpAQCAtMzEsNyArMzEsOCBAQCBpZiBvcy5wYXRoLmlzbGlu
ayhvcmlnaW5hbF9maWxlKToKIGVsc2U6CiAgICAgX190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRo
LmRpcm5hbWUob3JpZ2luYWxfZmlsZSkKIAotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJz
cGF0aChfX3Rvb2xzX2RpcmVjdG9yeSkpCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5u
b3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKF9fdG9vbHNfZGlyZWN0b3J5KSwg
Ii4uIiwgIi4uIikpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9k
aXJlY3RvcnksICJUb29scyIsICJnbGliIikpCiBpbXBvcnQgY29tbW9uCiAKIAo=
</data>
<flag name="review"
          id="334603"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>