<?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>73553</bug_id>
          
          <creation_ts>2011-12-01 04:37:13 -0800</creation_ts>
          <short_desc>eliminate find_test_files from Port class</short_desc>
          <delta_ts>2023-03-22 16:32:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=254273</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512690</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-01 04:37:13 -0800</bug_when>
    <thetext>rebaseline.py and chromium_gpu.py use Port.find_test_files() the same way as it is used in Port.tests()
I&apos;d like to replace all calls to find_test_files with tests and eliminate find_tests_files.
Also I&apos;ll move static functions close to their usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512695</commentid>
    <comment_count>1</comment_count>
      <attachid>117400</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-01 04:49:14 -0800</bug_when>
    <thetext>Created attachment 117400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512698</commentid>
    <comment_count>2</comment_count>
      <attachid>117401</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-01 05:05:37 -0800</bug_when>
    <thetext>Created attachment 117401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513076</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-01 14:03:05 -0800</bug_when>
    <thetext>adding rniwa to this since he has also been hacking on port.tests() and reftest-related changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513590</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-02 00:44:36 -0800</bug_when>
    <thetext>Committed r101757: &lt;http://trac.webkit.org/changeset/101757&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790053</commentid>
    <comment_count>5</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-12-12 16:34:44 -0800</bug_when>
    <thetext>Just ran across this today:
Something seems amiss in base.py.

 	520	    def is_reference_html_file(filesystem, dirname, filename): 
 	521	        if filename.startswith(&apos;ref-&apos;) or filename.endswith(&apos;notref-&apos;): 
 	522	            return True


First off, it seems weird that we&apos;re using prefixes instead of suffixes. 
Seems like that wouldn&apos;t work so well given that all the test names are given meaning and could being with ref- arbitrarily.

Secondly, endsWith(notref-&apos;)
?

That seems a little off as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790055</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-12 16:38:56 -0800</bug_when>
    <thetext>ref- and notref- prefixes come from the w3c&apos;s naming conventions. I think you&apos;re correct about the endswith being a problem, though.

Are you finding any existing tests that do start with ref- that would cause a problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790064</commentid>
    <comment_count>7</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-12-12 16:43:17 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; ref- and notref- prefixes come from the w3c&apos;s naming conventions. I think you&apos;re correct about the endswith being a problem, though.

I&apos;ll go ahead and fix that up then.

&gt; Are you finding any existing tests that do start with ref- that would cause a problem?

I don&apos;t see any no. Just thinking it might be a concern in the future...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117400</attachid>
            <date>2011-12-01 04:49:14 -0800</date>
            <delta_ts>2011-12-01 05:05:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73553-20111201164912.patch</filename>
            <type>text/plain</type>
            <size>18292</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjU4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDJjNGQyNmZmNzNhMWMzMDE4OGJiY2I4ZjRmYmQ4ZDZm
NGJlMzhiOC4uMWY1OGU3OTczNzI5MGU4YmY4NTYxMjQ0OGJiYmQ0YzY3NmI3ZjU3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDExLTEyLTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBUb29scy9TY3JpcHRzOiBlbGltaW5hdGUgZmluZF90ZXN0X2ZpbGVzIGZyb20g
UG9ydCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczNTUzCisKKyAgICAgICAgcmViYXNlbGluZS5weSBhbmQgY2hyb21pdW1fZ3B1LnB5IHVz
ZSBQb3J0LmZpbmRfdGVzdF9maWxlcygpIHRoZSBzYW1lIHdheSBhcyBpdCBpcyB1c2VkIGluIFBv
cnQudGVzdHMoKQorICAgICAgICBJJ2QgbGlrZSB0byByZXBsYWNlIGFsbCBjYWxscyB0byBmaW5k
X3Rlc3RfZmlsZXMgd2l0aCB0ZXN0cyBhbmQgZWxpbWluYXRlIGZpbmRfdGVzdHNfZmlsZXMuCisg
ICAgICAgIEFsc28gSSdsbCBtb3ZlIF9pc190ZXN0X2ZpbGUoKSBhbmQgcmVsYXRlZCBmdW5jdGlv
bnMgY2xvc2UgdG8gUG9ydC50ZXN0cygpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5OgorICAgICAgICAoUG9ydC50ZXN0cyk6CisgICAgICAgIChQb3J0LmlzX3JlZmVyZW5j
ZV9odG1sX2ZpbGUpOgorICAgICAgICAoUG9ydC5faGFzX3N1cHBvcnRlZF9leHRlbnNpb24pOgor
ICAgICAgICAoUG9ydC5faXNfdGVzdF9maWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0VGVzdC50
ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZmlu
ZF9vbmVfdGVzdCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfZ2xvYik6CisgICAgICAg
IChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzKToKKyAgICAgICAg
KFBvcnRUZXN0LnRlc3RfZmluZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXNfMik6CisgICAgICAg
IChQb3J0VGVzdC50ZXN0X2lzX3Rlc3RfZmlsZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHk6CisgICAgICAgIChfZGVmYXVsdF90
ZXN0c19wYXRocyk6CisgICAgICAgIChDaHJvbWl1bUdwdUxpbnV4UG9ydC50ZXN0cyk6CisgICAg
ICAgIChDaHJvbWl1bUdwdUNnTWFjUG9ydC50ZXN0cyk6CisgICAgICAgIChDaHJvbWl1bUdwdU1h
Y1BvcnQudGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1HcHVUZXN0LnRl
c3RfZGVmYXVsdF90ZXN0c19wYXRocy50ZXN0X3BhdGhzKToKKyAgICAgICAgKENocm9taXVtR3B1
VGVzdC50ZXN0X2RlZmF1bHRfdGVzdHNfcGF0aHMpOgorICAgICAgICAoQ2hyb21pdW1HcHVUZXN0
LnRlc3RfdGVzdF9maWxlcy50ZXN0X3BhdGhzKToKKyAgICAgICAgKENocm9taXVtR3B1VGVzdCk6
CisgICAgICAgIChDaHJvbWl1bUdwdVRlc3QudGVzdF90ZXN0X2ZpbGVzKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weToKKyAgICAgICAgKGdldF90ZXN0c19ydW4uUmVjb3JkaW5nVGVzdERyaXZlci5ydW5f
dGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxp
bmUucHk6CisgICAgICAgIChPcHRpbWl6ZUJhc2VsaW5lcy5fb3B0aW1pemVfYmFzZWxpbmUpOgor
ICAgICAgICAoT3B0aW1pemVCYXNlbGluZXMuZXhlY3V0ZSk6CisgICAgICAgIChBbmFseXplQmFz
ZWxpbmVzLl9hbmFseXplX2Jhc2VsaW5lKToKKyAgICAgICAgKEFuYWx5emVCYXNlbGluZXMuZXhl
Y3V0ZSk6CisKIDIwMTEtMTEtMjEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIGVuYWJsZS13ZWJhdWRpbyB3ZWJzZXR0aW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZjJi
MGFhMWE2NzE0NjY3NzM2ZGYwNDVlZTlhZDdjNDdiMWViYjRkMy4uMzcyYjE2N2U5NGRjZTQ1YmE3
ODY5ZjI1Mzc4NDM3MTFkM2NmOTY1NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDYxLDEzICs0NjEsMzAgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0
dXJuIHRoZSBsaXN0IG9mIHRlc3RzIGZvdW5kLiIiIgotICAgICAgICAjIEZJWE1FOiBTaG91bGQg
cG9ydC5maW5kX3Rlc3RfZmlsZXMoKSByZXR1cm4gbm9ybWFsaXplZCwgcmVsYXRpdmUgdGVzdCBu
YW1lcz8KLSAgICAgICAgcmV0dXJuIHNldChbc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGYp
IGZvciBmIGluIHNlbGYuZmluZF90ZXN0X2ZpbGVzKHBhdGhzKV0pCiAKLSAgICBkZWYgZmluZF90
ZXN0X2ZpbGVzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBj
YXNlcywgc2tpcCB0aGVzZSBkaXJlY3RvcmllcwogICAgICAgICBza2lwcGVkX2RpcmVjdG9yaWVz
ID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291cmNlcycsICdzY3JpcHQtdGVzdHMnXSkKLSAg
ICAgICAgcmV0dXJuIGZpbmRfZmlsZXMuZmluZChzZWxmLmZpbGVzeXN0ZW0sIHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpLCBwYXRocywgc2tpcHBlZF9kaXJlY3RvcmllcywgX2lzX3Rlc3RfZmlsZSkK
KyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHBvcnQuX2ZpbmRfdGVzdF9maWxlcygpIHJldHVybiBu
b3JtYWxpemVkLCByZWxhdGl2ZSB0ZXN0IG5hbWVzPworICAgICAgICBmaWxlcyA9IGZpbmRfZmls
ZXMuZmluZChzZWxmLmZpbGVzeXN0ZW0sIHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCBwYXRocywg
c2tpcHBlZF9kaXJlY3RvcmllcywgUG9ydC5faXNfdGVzdF9maWxlKQorICAgICAgICByZXR1cm4g
c2V0KFtzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZikgZm9yIGYgaW4gZmlsZXNdKQorCisg
ICAgIyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgd2UgaW5jbHVkZSBhbnkgZmlsZSB3aXRo
IHRoZXNlIGV4dGVuc2lvbnMuCisgICAgX3N1cHBvcnRlZF9maWxlX2V4dGVuc2lvbnMgPSBzZXQo
WycuaHRtbCcsICcuc2h0bWwnLCAnLnhtbCcsICcueGh0bWwnLCAnLnBsJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5odG0nLCAnLnBocCcsICcuc3ZnJywgJy5taHQn
XSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShm
aWxlbmFtZSk6CisgICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVkLmh0
bWwnKSBvciBmaWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKQorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZXN5
c3RlbSwgZmlsZW5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiBmaWxlbmFtZSBpcyBv
bmUgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucyB3ZSB3YW50IHRvIHJ1biBhIHRlc3Qgb24uIiIiCisg
ICAgICAgIGV4dGVuc2lvbiA9IGZpbGVzeXN0ZW0uc3BsaXRleHQoZmlsZW5hbWUpWzFdCisgICAg
ICAgIHJldHVybiBleHRlbnNpb24gaW4gUG9ydC5fc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwor
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sIGRp
cm5hbWUsIGZpbGVuYW1lKToKKyAgICAgICAgcmV0dXJuIFBvcnQuX2hhc19zdXBwb3J0ZWRfZXh0
ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKSBhbmQgbm90IFBvcnQuaXNfcmVmZXJlbmNlX2h0
bWxfZmlsZShmaWxlbmFtZSkKIAogICAgIGRlZiB0ZXN0X2RpcnMoc2VsZik6CiAgICAgICAgICIi
IlJldHVybnMgdGhlIGxpc3Qgb2YgdG9wLWxldmVsIHRlc3QgZGlyZWN0b3JpZXMuIiIiCkBAIC05
OTksMjIgKzEwMTYsMyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIF9kcml2ZXJfY2xh
c3Moc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHBvcnQncyBkcml2ZXIgaW1wbGVtZW50
YXRpb24uIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1BvcnQuX2RyaXZl
cl9jbGFzcycpCi0KLQotIyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgd2UgaW5jbHVkZSBh
bnkgZmlsZSB3aXRoIHRoZXNlIGV4dGVuc2lvbnMuCi1fc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9u
cyA9IHNldChbJy5odG1sJywgJy5zaHRtbCcsICcueG1sJywgJy54aHRtbCcsICcucGwnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5odG0nLCAnLnBocCcsICcuc3ZnJywgJy5t
aHQnXSkKLQotCi1kZWYgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6Ci0gICAgcmV0
dXJuIGZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQuaHRtbCcpIG9yIGZpbGVuYW1lLmVuZHN3
aXRoKCctZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpCi0KLQotZGVmIF9oYXNfc3VwcG9ydGVkX2V4
dGVuc2lvbihmaWxlc3lzdGVtLCBmaWxlbmFtZSk6Ci0gICAgIiIiUmV0dXJuIHRydWUgaWYgZmls
ZW5hbWUgaXMgb25lIG9mIHRoZSBmaWxlIGV4dGVuc2lvbnMgd2Ugd2FudCB0byBydW4gYSB0ZXN0
IG9uLiIiIgotICAgIGV4dGVuc2lvbiA9IGZpbGVzeXN0ZW0uc3BsaXRleHQoZmlsZW5hbWUpWzFd
Ci0gICAgcmV0dXJuIGV4dGVuc2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwotCi0K
LWRlZiBfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKToKLSAgICBy
ZXR1cm4gX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKSBhbmQg
bm90IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5k
ZXggZTllMDcyMTk5YjE3YmRkNDM1MjgzYzQxNTAwMjMzM2E1NDAzNGJkYy4uNzRkY2M4NDUwYzM4
YjJlZDhkNzZjMDNlZjBlZDFhYmFiYzk0NzVjNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtNDIs
NyArNDIsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1w
b3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQg
TW9ja0hvc3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydCwg
RHJpdmVyLCBEcml2ZXJPdXRwdXQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFz
ZSBpbXBvcnQgX2lzX3Rlc3RfZmlsZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50
ZXN0IGltcG9ydCBUZXN0UG9ydAogCiBpbXBvcnQgY29uZmlnCkBAIC0yNzksMzYgKzI3OCwzNiBA
QCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZmluZF9u
b19wYXRoc19zcGVjaWZpZWQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCiAgICAg
ICAgIGxheW91dF90ZXN0c19kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICB0
ZXN0cyA9IHBvcnQuZmluZF90ZXN0X2ZpbGVzKFtdKQorICAgICAgICB0ZXN0cyA9IHBvcnQudGVz
dHMoW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHRlc3RzKSwgMCkKIAogICAg
IGRlZiB0ZXN0X2ZpbmRfb25lX3Rlc3Qoc2VsZik6CiAgICAgICAgIHBvcnQgPSBUZXN0UG9ydCgp
Ci0gICAgICAgIHRlc3RzID0gcG9ydC5maW5kX3Rlc3RfZmlsZXMoWydmYWlsdXJlcy9leHBlY3Rl
ZC9pbWFnZS5odG1sJ10pCisgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ2ZhaWx1cmVzL2V4
cGVjdGVkL2ltYWdlLmh0bWwnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGVzdHMp
LCAxKQogCiAgICAgZGVmIHRlc3RfZmluZF9nbG9iKHNlbGYpOgogICAgICAgICBwb3J0ID0gVGVz
dFBvcnQoKQotICAgICAgICB0ZXN0cyA9IHBvcnQuZmluZF90ZXN0X2ZpbGVzKFsnZmFpbHVyZXMv
ZXhwZWN0ZWQvaW0qJ10pCisgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ2ZhaWx1cmVzL2V4
cGVjdGVkL2ltKiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyksIDIpCiAK
ICAgICBkZWYgdGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3RvcmllcyhzZWxmKToKICAgICAg
ICAgcG9ydCA9IFRlc3RQb3J0KCkKLSAgICAgICAgdGVzdHMgPSBwb3J0LmZpbmRfdGVzdF9maWxl
cygndXNlcnNjcmlwdHMnKQorICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMoJ3VzZXJzY3JpcHRz
JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd1c2Vyc2NyaXB0cy9yZXNvdXJjZXMvaWZyYW1l
Lmh0bWwnIG5vdCBpbiB0ZXN0cykKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2Rp
cmVjdG9yaWVzXzIoc2VsZik6CiAgICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCi0gICAgICAgIHRl
c3RzID0gcG9ydC5maW5kX3Rlc3RfZmlsZXMoWyd1c2Vyc2NyaXB0cy9yZXNvdXJjZXMnXSkKKyAg
ICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFsndXNlcnNjcmlwdHMvcmVzb3VyY2VzJ10pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMsIHNldChbXSkpCiAKICAgICBkZWYgdGVzdF9pc190
ZXN0X2ZpbGUoc2VsZik6CiAgICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9v
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9pc190ZXN0X2ZpbGUoZmlsZXN5c3Rl
bSwgJycsICdmb28uc2h0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfaXNfdGVzdF9m
aWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9vLnBuZycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KF9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdmb28tZXhwZWN0ZWQuaHRtbCcpKQotICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKF9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdmb28t
ZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUG9ydC5f
aXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9vLmh0bWwnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKFBvcnQuX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zvby5zaHRtbCcp
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFBvcnQuX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVt
LCAnJywgJ2Zvby5wbmcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQb3J0Ll9pc190ZXN0
X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdmb28tZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKFBvcnQuX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zvby1leHBl
Y3RlZC1taXNtYXRjaC5odG1sJykpCiAKIAogY2xhc3MgVmlydHVhbFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9ncHUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2dwdS5weQppbmRleCAyNjYxMDMzNDFlNGQzNzQ0NzdlMzZjMDhhMWYw
MTJkMjgxMzcyMmU5Li4xMTY5ZDc2NDIxMzEyZmRjZGExZTgwMjAwZWRjN2ExMDY2ZmZmMTZkIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2dwdS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2dwdS5weQpAQCAtNzQsMzEgKzc0LDMwIEBAIGRlZiBfc2V0X2dwdV9vcHRpb25z
KHBvcnQsIGdyYXBoaWNzX3R5cGU9J2dwdScpOgogICAgICAgICBwb3J0Ll9vcHRpb25zLmJ1aWxk
ZXJfbmFtZSArPSAnIC0gR1BVJwogCiAKLWRlZiBfdGVzdHMocG9ydCwgcGF0aHMpOgorZGVmIF9k
ZWZhdWx0X3Rlc3RzX3BhdGhzKHBvcnQpOgorICAgIHBhdGhzID0gW10KKyAgICBpZiAocG9ydC5u
YW1lKCkgIT0gJ2Nocm9taXVtLWdwdS1tYWMtbGVvcGFyZCcgYW5kCisgICAgICAgIHBvcnQubmFt
ZSgpICE9ICdjaHJvbWl1bS1ncHUtY2ctbWFjLWxlb3BhcmQnKToKKyAgICAgICAgIyBPbmx5IHJ1
biB0ZXN0cyByZXF1aXJpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgb24gcGxhdGZvcm1zIHRo
YXQKKyAgICAgICAgIyBzdXBwb3J0IGl0LgorICAgICAgICAjIEZJWE1FOiB3ZSBzaG91bGQgYWRk
IHRoZSBhYm92ZSBwYXRocyBoZXJlIGFzIHdlbGwgYnV0IGxldCdzIHRlc3QKKyAgICAgICAgIyB0
aGUgd2F0ZXJzIHdpdGggbWVkaWEgZmlyc3QuCisgICAgICAgIHBhdGhzICs9IFsnbWVkaWEnXQor
CisgICAgaWYgbm90IHBvcnQubmFtZSgpLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLWdwdS1jZy1tYWMn
KToKKyAgICAgICAgIyBDYW52YXMgaXMgbm90IHlldCBhY2NlbGVyYXRlZCBvbiB0aGUgTWFjLCBz
byB0aGVyZSdzIG5vIHBvaW50CisgICAgICAgICMgaW4gcnVubmluZyB0aGUgdGVzdHMgdGhlcmUu
CisgICAgICAgIHBhdGhzICs9IFsnZmFzdC9jYW52YXMnLCAnY2FudmFzL3BoaWxpcCddCisKICAg
ICBpZiBub3QgcGF0aHM6Ci0gICAgICAgIHBhdGhzID0gW10KLSAgICAgICAgaWYgKHBvcnQubmFt
ZSgpICE9ICdjaHJvbWl1bS1ncHUtbWFjLWxlb3BhcmQnIGFuZAotICAgICAgICAgICAgcG9ydC5u
YW1lKCkgIT0gJ2Nocm9taXVtLWdwdS1jZy1tYWMtbGVvcGFyZCcpOgotICAgICAgICAgICAgIyBP
bmx5IHJ1biB0ZXN0cyByZXF1aXJpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgb24gcGxhdGZv
cm1zIHRoYXQKLSAgICAgICAgICAgICMgc3VwcG9ydCBpdC4KLSAgICAgICAgICAgICMgRklYTUU6
IHdlIHNob3VsZCBhZGQgdGhlIGFib3ZlIHBhdGhzIGhlcmUgYXMgd2VsbCBidXQgbGV0J3MgdGVz
dAotICAgICAgICAgICAgIyB0aGUgd2F0ZXJzIHdpdGggbWVkaWEgZmlyc3QuCi0gICAgICAgICAg
ICBwYXRocyArPSBbJ21lZGlhJ10KLQotICAgICAgICBpZiBub3QgcG9ydC5uYW1lKCkuc3RhcnRz
d2l0aCgnY2hyb21pdW0tZ3B1LWNnLW1hYycpOgotICAgICAgICAgICAgIyBDYW52YXMgaXMgbm90
IHlldCBhY2NlbGVyYXRlZCBvbiB0aGUgTWFjLCBzbyB0aGVyZSdzIG5vIHBvaW50Ci0gICAgICAg
ICAgICAjIGluIHJ1bm5pbmcgdGhlIHRlc3RzIHRoZXJlLgotICAgICAgICAgICAgcGF0aHMgKz0g
WydmYXN0L2NhbnZhcycsICdjYW52YXMvcGhpbGlwJ10KLQotICAgICAgICBpZiBub3QgcGF0aHM6
Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB1bnRpbCB3ZSBjYW4gdHVybiBv
ZiB0aGUgd2Via2l0X2dwdQotICAgICAgICAgICAgIyB0ZXN0cyBvbiB0aGUgYm90cy4gSWYgcGF0
aHMgaXMgZW1wdHksIHBvcnQuZmluZF90ZXN0X2ZpbGVzKCkKLSAgICAgICAgICAgICMgZmluZHMg
KmV2ZXJ5dGhpbmcqLiBIb3dldmVyLCB3ZSBoYXZlIHRvIHJldHVybiBzb21ldGhpbmcsCi0gICAg
ICAgICAgICAjIG9yIE5SV1QgdGhpbmtzIHRoZXJlJ3Mgc29tZXRoaW5nIHdyb25nLiBTbywgd2Ug
cmV0dXJuIGEgc2luZ2xlCi0gICAgICAgICAgICAjIHNob3J0IGRpcmVjdG9yeS4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ5OC4KLSAgICAgICAgICAgIHBh
dGhzID0gWydmYXN0L2h0bWwnXQotCi0gICAgcmV0dXJuIHNldChbcG9ydC5yZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lKGYpIGZvciBmIGluIHBvcnQuZmluZF90ZXN0X2ZpbGVzKHBhdGhzKV0pCisgICAg
ICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrIHVudGlsIHdlIGNhbiB0dXJuIG9mIHRoZSB3ZWJr
aXRfZ3B1CisgICAgICAgICMgdGVzdHMgb24gdGhlIGJvdHMuIElmIHBhdGhzIGlzIGVtcHR5LCBw
b3J0LnRlc3RzKCkKKyAgICAgICAgIyBmaW5kcyAqZXZlcnl0aGluZyouIEhvd2V2ZXIsIHdlIGhh
dmUgdG8gcmV0dXJuIHNvbWV0aGluZywKKyAgICAgICAgIyBvciBOUldUIHRoaW5rcyB0aGVyZSdz
IHNvbWV0aGluZyB3cm9uZy4gU28sIHdlIHJldHVybiBhIHNpbmdsZQorICAgICAgICAjIHNob3J0
IGRpcmVjdG9yeS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjQ5OC4KKyAgICAgICAgcGF0aHMgPSBbJ2Zhc3QvaHRtbCddCisKKyAgICByZXR1cm4gcGF0aHMK
IAogCiBjbGFzcyBDaHJvbWl1bUdwdUxpbnV4UG9ydChjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxp
bnV4UG9ydCk6CkBAIC0xMTIsNyArMTExLDggQEAgY2xhc3MgQ2hyb21pdW1HcHVMaW51eFBvcnQo
Y2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpOgogICAgICAgICAgICAgICAgIGNocm9t
aXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQog
CiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKLSAgICAgICAgcmV0dXJuIF90ZXN0cyhzZWxm
LCBwYXRocykKKyAgICAgICAgcGF0aHMgPSBwYXRocyBvciBfZGVmYXVsdF90ZXN0c19wYXRocyhz
ZWxmKQorICAgICAgICByZXR1cm4gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQudGVz
dHMoc2VsZiwgcGF0aHMpCiAKIAogY2xhc3MgQ2hyb21pdW1HcHVDZ01hY1BvcnQoY2hyb21pdW1f
bWFjLkNocm9taXVtTWFjUG9ydCk6CkBAIC0xMjUsNyArMTI1LDggQEAgY2xhc3MgQ2hyb21pdW1H
cHVDZ01hY1BvcnQoY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydCk6CiAgICAgICAgICAgICAg
ICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxm
KSkKIAogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6Ci0gICAgICAgIHJldHVybiBfdGVzdHMo
c2VsZiwgcGF0aHMpCisgICAgICAgIHBhdGhzID0gcGF0aHMgb3IgX2RlZmF1bHRfdGVzdHNfcGF0
aHMoc2VsZikKKyAgICAgICAgcmV0dXJuIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQudGVz
dHMoc2VsZiwgcGF0aHMpCiAKIAogY2xhc3MgQ2hyb21pdW1HcHVNYWNQb3J0KGNocm9taXVtX21h
Yy5DaHJvbWl1bU1hY1BvcnQpOgpAQCAtMTM4LDcgKzEzOSw4IEBAIGNsYXNzIENocm9taXVtR3B1
TWFjUG9ydChjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KToKICAgICAgICAgICAgICAgICBj
aHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQog
CiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKLSAgICAgICAgcmV0dXJuIF90ZXN0cyhzZWxm
LCBwYXRocykKKyAgICAgICAgcGF0aHMgPSBwYXRocyBvciBfZGVmYXVsdF90ZXN0c19wYXRocyhz
ZWxmKQorICAgICAgICByZXR1cm4gY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC50ZXN0cyhz
ZWxmLCBwYXRocykKIAogCiBjbGFzcyBDaHJvbWl1bUdwdVdpblBvcnQoY2hyb21pdW1fd2luLkNo
cm9taXVtV2luUG9ydCk6CkBAIC0xNTEsNCArMTUzLDUgQEAgY2xhc3MgQ2hyb21pdW1HcHVXaW5Q
b3J0KGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQpOgogICAgICAgICAgICAgICAgIGNocm9t
aXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZikpCiAKICAg
ICBkZWYgdGVzdHMoc2VsZiwgcGF0aHMpOgotICAgICAgICByZXR1cm4gX3Rlc3RzKHNlbGYsIHBh
dGhzKQorICAgICAgICBwYXRocyA9IHBhdGhzIG9yIF9kZWZhdWx0X3Rlc3RzX3BhdGhzKHNlbGYp
CisgICAgICAgIHJldHVybiBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0LnRlc3RzKHNlbGYs
IHBhdGhzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQppbmRleCAwNzk1OTgyMjQ0
ZmExY2EyODVkOTdmMmUyZjUzNjI0ZDQ0NDlmNzQ4Li5mNjc0YzQzNmQyMTQ3ODZhZTc2ODdlOWVl
MDI3YzFhNThjMzYyMTRlIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQpAQCAt
MzIsNiArMzIsNyBAQCBpbXBvcnQgY2hyb21pdW1fZ3B1CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sg
aW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBw
b3J0X3Rlc3RjYXNlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2Nr
IGltcG9ydCBNb2NrRmlsZVN5c3RlbQogCiAKIGNsYXNzIENocm9taXVtR3B1VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CkBAIC0xMTUsNiArMTE2LDM0IEBAIGNsYXNzIENocm9taXVtR3B1VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
J2Nocm9taXVtLWdwdS1tYWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZ3B1JywgcG9y
dC5ncmFwaGljc190eXBlKCkpCiAKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3Rlc3RzX3BhdGhzKHNl
bGYpOgorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorCisgICAgICAgIGRlZiB0ZXN0X3BhdGhz
KHBvcnRfbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gY2hyb21pdW1fZ3B1Ll9kZWZhdWx0X3Rl
c3RzX3BhdGhzKGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodGVzdF9wYXRocygnY2hyb21pdW0tZ3B1LWxpbnV4JyksIFsnbWVkaWEn
LCAnZmFzdC9jYW52YXMnLCAnY2FudmFzL3BoaWxpcCddKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRlc3RfcGF0aHMoJ2Nocm9taXVtLWdwdS1tYWMtbGVvcGFyZCcpLCBbJ2Zhc3QvY2FudmFz
JywgJ2NhbnZhcy9waGlsaXAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3BhdGhz
KCdjaHJvbWl1bS1ncHUtY2ctbWFjLWxlb3BhcmQnKSwgWydmYXN0L2h0bWwnXSkKKworICAgIGRl
ZiB0ZXN0X3Rlc3RfZmlsZXMoc2VsZik6CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAg
ICAgIGZpbGVzID0geworICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2Nh
bnZhcy9waGlsaXAvdGVzdC5odG1sJzogJycsCisgICAgICAgICAgICAnL21vY2stY2hlY2tvdXQv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvdGVzdC5odG1sJzogJycsCisgICAgICAgICAgICAnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvZmFzdC9odG1sL3Rlc3QuaHRtbCc6ICcnLAorICAgICAg
ICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL21lZGlhL3Rlc3QuaHRtbCc6ICcnLAor
ICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2Zvby9iYXIuaHRtbCc6ICcn
LAorICAgICAgICB9CisgICAgICAgIGhvc3QuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKGZp
bGVzKQorCisgICAgICAgIGRlZiB0ZXN0X3BhdGhzKHBvcnRfbmFtZSk6CisgICAgICAgICAgICBy
ZXR1cm4gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkudGVzdHMoW10pCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3BhdGhzKCdjaHJvbWl1bS1ncHUtbGludXgnKSwgc2V0
KFsnY2FudmFzL3BoaWxpcC90ZXN0Lmh0bWwnLCAnZmFzdC9jYW52YXMvdGVzdC5odG1sJywgJ21l
ZGlhL3Rlc3QuaHRtbCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3BhdGhzKCdj
aHJvbWl1bS1ncHUtbWFjLWxlb3BhcmQnKSwgc2V0KFsnY2FudmFzL3BoaWxpcC90ZXN0Lmh0bWwn
LCAnZmFzdC9jYW52YXMvdGVzdC5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRl
c3RfcGF0aHMoJ2Nocm9taXVtLWdwdS1jZy1tYWMtbGVvcGFyZCcpLCBzZXQoWydmYXN0L2h0bWwv
dGVzdC5odG1sJ10pKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgcG9ydF90
ZXN0Y2FzZS5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3Qu
cHkKaW5kZXggZjZhZGNmYzc5MWU4OTNiMDE5MzU3Y2Y3ZjEzYzNiY2U5MWJjMWI2MC4uNmJmZGM3
NTlkYmZkM2M2ZGY3MTA5ODk0MGNlYmFkNGYxN2M5MDUyNyAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKQEAgLTY1LDggKzY1LDggQEAgZnJvbSB3ZWJraXRw
eS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1
bl93ZWJraXRfdGVzdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBv
cnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQs
IFRlc3REcml2ZXIsIHVuaXRfdGVzdF9maWxlc3lzdGVtCi1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0LmJhc2UgaW1wb3J0IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUKIGZyb20gd2Via2l0
cHkucHl0aG9uMjQudmVyc2lvbmluZyBpbXBvcnQgY29tcGFyZV92ZXJzaW9uCiBmcm9tIHdlYmtp
dHB5LnRlc3Quc2tpcCBpbXBvcnQgc2tpcF9pZgogCkBAIC0xNjYsNyArMTY2LDcgQEAgZGVmIGdl
dF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRl
bl9iYXRjaGVzPUZhbHNlLAogICAgICAgICAgICAgIyBJbiBjYXNlIG9mIHJlZnRlc3QsIG9uZSB0
ZXN0IGNhbGxzIHRoZSBkcml2ZXIncyBydW5fdGVzdCgpIHR3aWNlLgogICAgICAgICAgICAgIyBX
ZSBzaG91bGQgbm90IGFkZCBhIHJlZmVyZW5jZSBodG1sIHVzZWQgYnkgcmVmdGVzdHMgdG8gdGVz
dHMgdW5sZXNzIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWwgcGFyYW1ldGVyCiAgICAgICAgICAgICAj
IGlzIGV4cGxpY2l0bHkgZ2l2ZW4uCi0gICAgICAgICAgICBpZiBpbmNsdWRlX3JlZmVyZW5jZV9o
dG1sIG9yIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKHRlc3RfaW5wdXQudGVzdF9uYW1lKToK
KyAgICAgICAgICAgIGlmIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWwgb3Igbm90IFBvcnQuaXNfcmVm
ZXJlbmNlX2h0bWxfZmlsZSh0ZXN0X2lucHV0LnRlc3RfbmFtZSk6CiAgICAgICAgICAgICAgICAg
c2VsZi5fY3VycmVudF90ZXN0X2JhdGNoLmFwcGVuZCh0ZXN0X25hbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gVGVzdERyaXZlci5ydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KQogCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5CmluZGV4IDVk
YjMzMzM1ZmJhNzNmYTg1NDQ0OTUzOGNjZTBjYWZmZDdjNzAzZWMuLjUxNWZmN2RmYTU4MWQxN2I0
OTY5OTUzMWI3MGQ1ZTFhYjRmMTQ2ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5CkBAIC0xMTEsMTQgKzExMSwxMSBAQCBjbGFz
cyBPcHRpbWl6ZUJhc2VsaW5lcyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fYmFzZWxpbmVfb3B0aW1pemVyLm9wdGltaXplKGJhc2VsaW5lX25h
bWUpOgogICAgICAgICAgICAgICAgIHByaW50ICJIdWVyaXN0aWNzIGZhaWxlZCB0byBvcHRpbWl6
ZSAlcyIgJSBiYXNlbGluZV9uYW1lCiAKLSAgICBkZWYgX3RvX3Rlc3RfbmFtZShzZWxmLCBmaWxl
X25hbWUpOiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5yZWxwYXRoKGZp
bGVfbmFtZSwgc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpCi0KICAgICBkZWYgZXhlY3V0
ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgc2VsZi5fYmFzZWxpbmVfb3B0
aW1pemVyID0gQmFzZWxpbmVPcHRpbWl6ZXIodG9vbCkKICAgICAgICAgc2VsZi5fcG9ydCA9IHRv
b2wucG9ydF9mYWN0b3J5LmdldCgiY2hyb21pdW0td2luLXdpbjciKSAgIyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgc2VsZWN0YWJsZS4KIAotICAgICAgICBmb3IgdGVzdF9uYW1lIGluIG1hcChzZWxm
Ll90b190ZXN0X25hbWUsIHNlbGYuX3BvcnQuZmluZF90ZXN0X2ZpbGVzKGFyZ3MpKToKKyAgICAg
ICAgZm9yIHRlc3RfbmFtZSBpbiBzZWxmLl9wb3J0LnRlc3RzKGFyZ3MpOgogICAgICAgICAgICAg
cHJpbnQgIk9wdGltaXppbmcgJXMuIiAlIHRlc3RfbmFtZQogICAgICAgICAgICAgc2VsZi5fb3B0
aW1pemVfYmFzZWxpbmUodGVzdF9uYW1lKQogCkBAIC0xNDEsMTQgKzEzOCwxMSBAQCBjbGFzcyBB
bmFseXplQmFzZWxpbmVzKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgICAg
IGRpcmVjdG9yaWVzX2J5X3Jlc3VsdCA9IHNlbGYuX2Jhc2VsaW5lX29wdGltaXplci5kaXJlY3Rv
cmllc19ieV9yZXN1bHQoYmFzZWxpbmVfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX3ByaW50KGJh
c2VsaW5lX25hbWUsIGRpcmVjdG9yaWVzX2J5X3Jlc3VsdCkKIAotICAgIGRlZiBfdG9fdGVzdF9u
YW1lKHNlbGYsIGZpbGVfbmFtZSk6IAotICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5maWxlc3lz
dGVtLnJlbHBhdGgoZmlsZV9uYW1lLCBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSkKLQog
ICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBzZWxm
Ll9iYXNlbGluZV9vcHRpbWl6ZXIgPSBCYXNlbGluZU9wdGltaXplcih0b29sKQogICAgICAgICBz
ZWxmLl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS13aW4td2luNyIpICAj
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzZWxlY3RhYmxlLgogCi0gICAgICAgIGZvciB0ZXN0X25h
bWUgaW4gbWFwKHNlbGYuX3RvX3Rlc3RfbmFtZSwgc2VsZi5fcG9ydC5maW5kX3Rlc3RfZmlsZXMo
YXJncykpOgorICAgICAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGYuX3BvcnQudGVzdHMoYXJncyk6
CiAgICAgICAgICAgICBzZWxmLl9hbmFseXplX2Jhc2VsaW5lKHRlc3RfbmFtZSkKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117401</attachid>
            <date>2011-12-01 05:05:37 -0800</date>
            <delta_ts>2011-12-01 14:02:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73553-20111201170535.patch</filename>
            <type>text/plain</type>
            <size>18203</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjU4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDJjNGQyNmZmNzNhMWMzMDE4OGJiY2I4ZjRmYmQ4ZDZm
NGJlMzhiOC4uMWY1OGU3OTczNzI5MGU4YmY4NTYxMjQ0OGJiYmQ0YzY3NmI3ZjU3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDExLTEyLTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBUb29scy9TY3JpcHRzOiBlbGltaW5hdGUgZmluZF90ZXN0X2ZpbGVzIGZyb20g
UG9ydCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczNTUzCisKKyAgICAgICAgcmViYXNlbGluZS5weSBhbmQgY2hyb21pdW1fZ3B1LnB5IHVz
ZSBQb3J0LmZpbmRfdGVzdF9maWxlcygpIHRoZSBzYW1lIHdheSBhcyBpdCBpcyB1c2VkIGluIFBv
cnQudGVzdHMoKQorICAgICAgICBJJ2QgbGlrZSB0byByZXBsYWNlIGFsbCBjYWxscyB0byBmaW5k
X3Rlc3RfZmlsZXMgd2l0aCB0ZXN0cyBhbmQgZWxpbWluYXRlIGZpbmRfdGVzdHNfZmlsZXMuCisg
ICAgICAgIEFsc28gSSdsbCBtb3ZlIF9pc190ZXN0X2ZpbGUoKSBhbmQgcmVsYXRlZCBmdW5jdGlv
bnMgY2xvc2UgdG8gUG9ydC50ZXN0cygpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5OgorICAgICAgICAoUG9ydC50ZXN0cyk6CisgICAgICAgIChQb3J0LmlzX3JlZmVyZW5j
ZV9odG1sX2ZpbGUpOgorICAgICAgICAoUG9ydC5faGFzX3N1cHBvcnRlZF9leHRlbnNpb24pOgor
ICAgICAgICAoUG9ydC5faXNfdGVzdF9maWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0VGVzdC50
ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZmlu
ZF9vbmVfdGVzdCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfZ2xvYik6CisgICAgICAg
IChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzKToKKyAgICAgICAg
KFBvcnRUZXN0LnRlc3RfZmluZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXNfMik6CisgICAgICAg
IChQb3J0VGVzdC50ZXN0X2lzX3Rlc3RfZmlsZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHk6CisgICAgICAgIChfZGVmYXVsdF90
ZXN0c19wYXRocyk6CisgICAgICAgIChDaHJvbWl1bUdwdUxpbnV4UG9ydC50ZXN0cyk6CisgICAg
ICAgIChDaHJvbWl1bUdwdUNnTWFjUG9ydC50ZXN0cyk6CisgICAgICAgIChDaHJvbWl1bUdwdU1h
Y1BvcnQudGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1HcHVUZXN0LnRl
c3RfZGVmYXVsdF90ZXN0c19wYXRocy50ZXN0X3BhdGhzKToKKyAgICAgICAgKENocm9taXVtR3B1
VGVzdC50ZXN0X2RlZmF1bHRfdGVzdHNfcGF0aHMpOgorICAgICAgICAoQ2hyb21pdW1HcHVUZXN0
LnRlc3RfdGVzdF9maWxlcy50ZXN0X3BhdGhzKToKKyAgICAgICAgKENocm9taXVtR3B1VGVzdCk6
CisgICAgICAgIChDaHJvbWl1bUdwdVRlc3QudGVzdF90ZXN0X2ZpbGVzKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weToKKyAgICAgICAgKGdldF90ZXN0c19ydW4uUmVjb3JkaW5nVGVzdERyaXZlci5ydW5f
dGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxp
bmUucHk6CisgICAgICAgIChPcHRpbWl6ZUJhc2VsaW5lcy5fb3B0aW1pemVfYmFzZWxpbmUpOgor
ICAgICAgICAoT3B0aW1pemVCYXNlbGluZXMuZXhlY3V0ZSk6CisgICAgICAgIChBbmFseXplQmFz
ZWxpbmVzLl9hbmFseXplX2Jhc2VsaW5lKToKKyAgICAgICAgKEFuYWx5emVCYXNlbGluZXMuZXhl
Y3V0ZSk6CisKIDIwMTEtMTEtMjEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIGVuYWJsZS13ZWJhdWRpbyB3ZWJzZXR0aW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZjJi
MGFhMWE2NzE0NjY3NzM2ZGYwNDVlZTlhZDdjNDdiMWViYjRkMy4uNjVhMDMwZTgwNDg4MDY0ZTk0
YTUzOTY5N2QxNDgyOWVhZTk5MTkxMiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDYxLDEzICs0NjEsMjkgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0
dXJuIHRoZSBsaXN0IG9mIHRlc3RzIGZvdW5kLiIiIgotICAgICAgICAjIEZJWE1FOiBTaG91bGQg
cG9ydC5maW5kX3Rlc3RfZmlsZXMoKSByZXR1cm4gbm9ybWFsaXplZCwgcmVsYXRpdmUgdGVzdCBu
YW1lcz8KLSAgICAgICAgcmV0dXJuIHNldChbc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGYp
IGZvciBmIGluIHNlbGYuZmluZF90ZXN0X2ZpbGVzKHBhdGhzKV0pCiAKLSAgICBkZWYgZmluZF90
ZXN0X2ZpbGVzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBj
YXNlcywgc2tpcCB0aGVzZSBkaXJlY3RvcmllcwogICAgICAgICBza2lwcGVkX2RpcmVjdG9yaWVz
ID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291cmNlcycsICdzY3JpcHQtdGVzdHMnXSkKLSAg
ICAgICAgcmV0dXJuIGZpbmRfZmlsZXMuZmluZChzZWxmLmZpbGVzeXN0ZW0sIHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpLCBwYXRocywgc2tpcHBlZF9kaXJlY3RvcmllcywgX2lzX3Rlc3RfZmlsZSkK
KyAgICAgICAgZmlsZXMgPSBmaW5kX2ZpbGVzLmZpbmQoc2VsZi5maWxlc3lzdGVtLCBzZWxmLmxh
eW91dF90ZXN0c19kaXIoKSwgcGF0aHMsIHNraXBwZWRfZGlyZWN0b3JpZXMsIFBvcnQuX2lzX3Rl
c3RfZmlsZSkKKyAgICAgICAgcmV0dXJuIHNldChbc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1l
KGYpIGZvciBmIGluIGZpbGVzXSkKKworICAgICMgV2hlbiBjb2xsZWN0aW5nIHRlc3QgY2FzZXMs
IHdlIGluY2x1ZGUgYW55IGZpbGUgd2l0aCB0aGVzZSBleHRlbnNpb25zLgorICAgIF9zdXBwb3J0
ZWRfZmlsZV9leHRlbnNpb25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnho
dG1sJywgJy5wbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuaHRt
JywgJy5waHAnLCAnLnN2ZycsICcubWh0J10pCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm
IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpOgorICAgICAgICByZXR1cm4gZmlsZW5h
bWUuZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBl
Y3RlZC1taXNtYXRjaC5odG1sJykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2hhc19z
dXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKToKKyAgICAgICAgIiIiUmV0
dXJuIHRydWUgaWYgZmlsZW5hbWUgaXMgb25lIG9mIHRoZSBmaWxlIGV4dGVuc2lvbnMgd2Ugd2Fu
dCB0byBydW4gYSB0ZXN0IG9uLiIiIgorICAgICAgICBleHRlbnNpb24gPSBmaWxlc3lzdGVtLnNw
bGl0ZXh0KGZpbGVuYW1lKVsxXQorICAgICAgICByZXR1cm4gZXh0ZW5zaW9uIGluIFBvcnQuX3N1
cHBvcnRlZF9maWxlX2V4dGVuc2lvbnMKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2lz
X3Rlc3RfZmlsZShmaWxlc3lzdGVtLCBkaXJuYW1lLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVy
biBQb3J0Ll9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlc3lzdGVtLCBmaWxlbmFtZSkgYW5k
IG5vdCBQb3J0LmlzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpCiAKICAgICBkZWYgdGVz
dF9kaXJzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBsaXN0IG9mIHRvcC1sZXZlbCB0
ZXN0IGRpcmVjdG9yaWVzLiIiIgpAQCAtOTk5LDIyICsxMDE1LDMgQEAgY2xhc3MgUG9ydChvYmpl
Y3QpOgogICAgIGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBwb3J0J3MgZHJpdmVyIGltcGxlbWVudGF0aW9uLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCdQb3J0Ll9kcml2ZXJfY2xhc3MnKQotCi0KLSMgV2hlbiBjb2xsZWN0aW5n
IHRlc3QgY2FzZXMsIHdlIGluY2x1ZGUgYW55IGZpbGUgd2l0aCB0aGVzZSBleHRlbnNpb25zLgot
X3N1cHBvcnRlZF9maWxlX2V4dGVuc2lvbnMgPSBzZXQoWycuaHRtbCcsICcuc2h0bWwnLCAnLnht
bCcsICcueGh0bWwnLCAnLnBsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcu
aHRtJywgJy5waHAnLCAnLnN2ZycsICcubWh0J10pCi0KLQotZGVmIGlzX3JlZmVyZW5jZV9odG1s
X2ZpbGUoZmlsZW5hbWUpOgotICAgIHJldHVybiBmaWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVk
Lmh0bWwnKSBvciBmaWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKQot
Ci0KLWRlZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZXN5c3RlbSwgZmlsZW5hbWUpOgot
ICAgICIiIlJldHVybiB0cnVlIGlmIGZpbGVuYW1lIGlzIG9uZSBvZiB0aGUgZmlsZSBleHRlbnNp
b25zIHdlIHdhbnQgdG8gcnVuIGEgdGVzdCBvbi4iIiIKLSAgICBleHRlbnNpb24gPSBmaWxlc3lz
dGVtLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQotICAgIHJldHVybiBleHRlbnNpb24gaW4gX3N1cHBv
cnRlZF9maWxlX2V4dGVuc2lvbnMKLQotCi1kZWYgX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCBk
aXJuYW1lLCBmaWxlbmFtZSk6Ci0gICAgcmV0dXJuIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihm
aWxlc3lzdGVtLCBmaWxlbmFtZSkgYW5kIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVu
YW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5CmluZGV4IGU5ZTA3MjE5OWIxN2JkZDQzNTI4M2M0MTUwMDIz
MzNhNTQwMzRiZGMuLjc0ZGNjODQ1MGMzOGIyZWQ4ZDc2YzAzZWYwZWQxYWJhYmM5NDc1YzQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTQyLDcgKzQyLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0Ci1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LmJhc2UgaW1wb3J0IF9pc190ZXN0X2ZpbGUKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKIAogaW1wb3J0IGNv
bmZpZwpAQCAtMjc5LDM2ICsyNzgsMzYgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgIGRlZiB0ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKHNlbGYpOgogICAgICAg
ICBwb3J0ID0gVGVzdFBvcnQoKQogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gcG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCkKLSAgICAgICAgdGVzdHMgPSBwb3J0LmZpbmRfdGVzdF9maWxlcyhbXSkK
KyAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFtdKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVx
dWFsKGxlbih0ZXN0cyksIDApCiAKICAgICBkZWYgdGVzdF9maW5kX29uZV90ZXN0KHNlbGYpOgog
ICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQotICAgICAgICB0ZXN0cyA9IHBvcnQuZmluZF90ZXN0
X2ZpbGVzKFsnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddKQorICAgICAgICB0ZXN0cyA9
IHBvcnQudGVzdHMoWydmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJ10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHRlc3RzKSwgMSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfZ2xvYihz
ZWxmKToKICAgICAgICAgcG9ydCA9IFRlc3RQb3J0KCkKLSAgICAgICAgdGVzdHMgPSBwb3J0LmZp
bmRfdGVzdF9maWxlcyhbJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltKiddKQorICAgICAgICB0ZXN0cyA9
IHBvcnQudGVzdHMoWydmYWlsdXJlcy9leHBlY3RlZC9pbSonXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4odGVzdHMpLCAyKQogCiAgICAgZGVmIHRlc3RfZmluZF93aXRoX3NraXBwZWRf
ZGlyZWN0b3JpZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCi0gICAgICAgIHRl
c3RzID0gcG9ydC5maW5kX3Rlc3RfZmlsZXMoJ3VzZXJzY3JpcHRzJykKKyAgICAgICAgdGVzdHMg
PSBwb3J0LnRlc3RzKCd1c2Vyc2NyaXB0cycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndXNl
cnNjcmlwdHMvcmVzb3VyY2VzL2lmcmFtZS5odG1sJyBub3QgaW4gdGVzdHMpCiAKICAgICBkZWYg
dGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllc18yKHNlbGYpOgogICAgICAgICBwb3J0
ID0gVGVzdFBvcnQoKQotICAgICAgICB0ZXN0cyA9IHBvcnQuZmluZF90ZXN0X2ZpbGVzKFsndXNl
cnNjcmlwdHMvcmVzb3VyY2VzJ10pCisgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ3VzZXJz
Y3JpcHRzL3Jlc291cmNlcyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBzZXQo
W10pKQogCiAgICAgZGVmIHRlc3RfaXNfdGVzdF9maWxlKHNlbGYpOgogICAgICAgICBmaWxlc3lz
dGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoX2lzX3Rlc3Rf
ZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zvby5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9vLnNodG1sJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zvby5wbmcnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAn
Zm9vLWV4cGVjdGVkLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfaXNfdGVzdF9m
aWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9vLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKFBvcnQuX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zv
by5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQb3J0Ll9pc190ZXN0X2ZpbGUoZmls
ZXN5c3RlbSwgJycsICdmb28uc2h0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQb3J0
Ll9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdmb28ucG5nJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoUG9ydC5faXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9vLWV4cGVj
dGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQb3J0Ll9pc190ZXN0X2ZpbGUo
ZmlsZXN5c3RlbSwgJycsICdmb28tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQogCiAKIGNsYXNz
IFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKaW5kZXggMjY2
MTAzMzQxZTRkMzc0NDc3ZTM2YzA4YTFmMDEyZDI4MTM3MjJlOS4uMTE2OWQ3NjQyMTMxMmZkY2Rh
MWU4MDIwMGVkYzdhMTA2NmZmZjE2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKQEAgLTc0LDMxICs3NCwz
MCBAQCBkZWYgX3NldF9ncHVfb3B0aW9ucyhwb3J0LCBncmFwaGljc190eXBlPSdncHUnKToKICAg
ICAgICAgcG9ydC5fb3B0aW9ucy5idWlsZGVyX25hbWUgKz0gJyAtIEdQVScKIAogCi1kZWYgX3Rl
c3RzKHBvcnQsIHBhdGhzKToKK2RlZiBfZGVmYXVsdF90ZXN0c19wYXRocyhwb3J0KToKKyAgICBw
YXRocyA9IFtdCisgICAgaWYgKHBvcnQubmFtZSgpICE9ICdjaHJvbWl1bS1ncHUtbWFjLWxlb3Bh
cmQnIGFuZAorICAgICAgICBwb3J0Lm5hbWUoKSAhPSAnY2hyb21pdW0tZ3B1LWNnLW1hYy1sZW9w
YXJkJyk6CisgICAgICAgICMgT25seSBydW4gdGVzdHMgcmVxdWlyaW5nIGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIG9uIHBsYXRmb3JtcyB0aGF0CisgICAgICAgICMgc3VwcG9ydCBpdC4KKyAgICAg
ICAgIyBGSVhNRTogd2Ugc2hvdWxkIGFkZCB0aGUgYWJvdmUgcGF0aHMgaGVyZSBhcyB3ZWxsIGJ1
dCBsZXQncyB0ZXN0CisgICAgICAgICMgdGhlIHdhdGVycyB3aXRoIG1lZGlhIGZpcnN0LgorICAg
ICAgICBwYXRocyArPSBbJ21lZGlhJ10KKworICAgIGlmIG5vdCBwb3J0Lm5hbWUoKS5zdGFydHN3
aXRoKCdjaHJvbWl1bS1ncHUtY2ctbWFjJyk6CisgICAgICAgICMgQ2FudmFzIGlzIG5vdCB5ZXQg
YWNjZWxlcmF0ZWQgb24gdGhlIE1hYywgc28gdGhlcmUncyBubyBwb2ludAorICAgICAgICAjIGlu
IHJ1bm5pbmcgdGhlIHRlc3RzIHRoZXJlLgorICAgICAgICBwYXRocyArPSBbJ2Zhc3QvY2FudmFz
JywgJ2NhbnZhcy9waGlsaXAnXQorCiAgICAgaWYgbm90IHBhdGhzOgotICAgICAgICBwYXRocyA9
IFtdCi0gICAgICAgIGlmIChwb3J0Lm5hbWUoKSAhPSAnY2hyb21pdW0tZ3B1LW1hYy1sZW9wYXJk
JyBhbmQKLSAgICAgICAgICAgIHBvcnQubmFtZSgpICE9ICdjaHJvbWl1bS1ncHUtY2ctbWFjLWxl
b3BhcmQnKToKLSAgICAgICAgICAgICMgT25seSBydW4gdGVzdHMgcmVxdWlyaW5nIGFjY2VsZXJh
dGVkIGNvbXBvc2l0aW5nIG9uIHBsYXRmb3JtcyB0aGF0Ci0gICAgICAgICAgICAjIHN1cHBvcnQg
aXQuCi0gICAgICAgICAgICAjIEZJWE1FOiB3ZSBzaG91bGQgYWRkIHRoZSBhYm92ZSBwYXRocyBo
ZXJlIGFzIHdlbGwgYnV0IGxldCdzIHRlc3QKLSAgICAgICAgICAgICMgdGhlIHdhdGVycyB3aXRo
IG1lZGlhIGZpcnN0LgotICAgICAgICAgICAgcGF0aHMgKz0gWydtZWRpYSddCi0KLSAgICAgICAg
aWYgbm90IHBvcnQubmFtZSgpLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLWdwdS1jZy1tYWMnKToKLSAg
ICAgICAgICAgICMgQ2FudmFzIGlzIG5vdCB5ZXQgYWNjZWxlcmF0ZWQgb24gdGhlIE1hYywgc28g
dGhlcmUncyBubyBwb2ludAotICAgICAgICAgICAgIyBpbiBydW5uaW5nIHRoZSB0ZXN0cyB0aGVy
ZS4KLSAgICAgICAgICAgIHBhdGhzICs9IFsnZmFzdC9jYW52YXMnLCAnY2FudmFzL3BoaWxpcCdd
Ci0KLSAgICAgICAgaWYgbm90IHBhdGhzOgotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBh
IGhhY2sgdW50aWwgd2UgY2FuIHR1cm4gb2YgdGhlIHdlYmtpdF9ncHUKLSAgICAgICAgICAgICMg
dGVzdHMgb24gdGhlIGJvdHMuIElmIHBhdGhzIGlzIGVtcHR5LCBwb3J0LmZpbmRfdGVzdF9maWxl
cygpCi0gICAgICAgICAgICAjIGZpbmRzICpldmVyeXRoaW5nKi4gSG93ZXZlciwgd2UgaGF2ZSB0
byByZXR1cm4gc29tZXRoaW5nLAotICAgICAgICAgICAgIyBvciBOUldUIHRoaW5rcyB0aGVyZSdz
IHNvbWV0aGluZyB3cm9uZy4gU28sIHdlIHJldHVybiBhIHNpbmdsZQotICAgICAgICAgICAgIyBz
aG9ydCBkaXJlY3RvcnkuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzI0OTguCi0gICAgICAgICAgICBwYXRocyA9IFsnZmFzdC9odG1sJ10KLQotICAgIHJldHVy
biBzZXQoW3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmKSBmb3IgZiBpbiBwb3J0LmZpbmRf
dGVzdF9maWxlcyhwYXRocyldKQorICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB1bnRp
bCB3ZSBjYW4gdHVybiBvZiB0aGUgd2Via2l0X2dwdQorICAgICAgICAjIHRlc3RzIG9uIHRoZSBi
b3RzLiBJZiBwYXRocyBpcyBlbXB0eSwgcG9ydC50ZXN0cygpCisgICAgICAgICMgZmluZHMgKmV2
ZXJ5dGhpbmcqLiBIb3dldmVyLCB3ZSBoYXZlIHRvIHJldHVybiBzb21ldGhpbmcsCisgICAgICAg
ICMgb3IgTlJXVCB0aGlua3MgdGhlcmUncyBzb21ldGhpbmcgd3JvbmcuIFNvLCB3ZSByZXR1cm4g
YSBzaW5nbGUKKyAgICAgICAgIyBzaG9ydCBkaXJlY3RvcnkuIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0OTguCisgICAgICAgIHBhdGhzID0gWydmYXN0L2h0
bWwnXQorCisgICAgcmV0dXJuIHBhdGhzCiAKIAogY2xhc3MgQ2hyb21pdW1HcHVMaW51eFBvcnQo
Y2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpOgpAQCAtMTEyLDcgKzExMSw4IEBAIGNs
YXNzIENocm9taXVtR3B1TGludXhQb3J0KGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0
KToKICAgICAgICAgICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydC5iYXNl
bGluZV9zZWFyY2hfcGF0aChzZWxmKSkKIAogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6Ci0g
ICAgICAgIHJldHVybiBfdGVzdHMoc2VsZiwgcGF0aHMpCisgICAgICAgIHBhdGhzID0gcGF0aHMg
b3IgX2RlZmF1bHRfdGVzdHNfcGF0aHMoc2VsZikKKyAgICAgICAgcmV0dXJuIGNocm9taXVtX2xp
bnV4LkNocm9taXVtTGludXhQb3J0LnRlc3RzKHNlbGYsIHBhdGhzKQogCiAKIGNsYXNzIENocm9t
aXVtR3B1Q2dNYWNQb3J0KGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQpOgpAQCAtMTI1LDcg
KzEyNSw4IEBAIGNsYXNzIENocm9taXVtR3B1Q2dNYWNQb3J0KGNocm9taXVtX21hYy5DaHJvbWl1
bU1hY1BvcnQpOgogICAgICAgICAgICAgICAgIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQu
YmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZikpCiAKICAgICBkZWYgdGVzdHMoc2VsZiwgcGF0aHMp
OgotICAgICAgICByZXR1cm4gX3Rlc3RzKHNlbGYsIHBhdGhzKQorICAgICAgICBwYXRocyA9IHBh
dGhzIG9yIF9kZWZhdWx0X3Rlc3RzX3BhdGhzKHNlbGYpCisgICAgICAgIHJldHVybiBjaHJvbWl1
bV9tYWMuQ2hyb21pdW1NYWNQb3J0LnRlc3RzKHNlbGYsIHBhdGhzKQogCiAKIGNsYXNzIENocm9t
aXVtR3B1TWFjUG9ydChjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KToKQEAgLTEzOCw3ICsx
MzksOCBAQCBjbGFzcyBDaHJvbWl1bUdwdU1hY1BvcnQoY2hyb21pdW1fbWFjLkNocm9taXVtTWFj
UG9ydCk6CiAgICAgICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5iYXNl
bGluZV9zZWFyY2hfcGF0aChzZWxmKSkKIAogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6Ci0g
ICAgICAgIHJldHVybiBfdGVzdHMoc2VsZiwgcGF0aHMpCisgICAgICAgIHBhdGhzID0gcGF0aHMg
b3IgX2RlZmF1bHRfdGVzdHNfcGF0aHMoc2VsZikKKyAgICAgICAgcmV0dXJuIGNocm9taXVtX21h
Yy5DaHJvbWl1bU1hY1BvcnQudGVzdHMoc2VsZiwgcGF0aHMpCiAKIAogY2xhc3MgQ2hyb21pdW1H
cHVXaW5Qb3J0KGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQpOgpAQCAtMTUxLDQgKzE1Myw1
IEBAIGNsYXNzIENocm9taXVtR3B1V2luUG9ydChjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0
KToKICAgICAgICAgICAgICAgICBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0LmJhc2VsaW5l
X3NlYXJjaF9wYXRoKHNlbGYpKQogCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKLSAgICAg
ICAgcmV0dXJuIF90ZXN0cyhzZWxmLCBwYXRocykKKyAgICAgICAgcGF0aHMgPSBwYXRocyBvciBf
ZGVmYXVsdF90ZXN0c19wYXRocyhzZWxmKQorICAgICAgICByZXR1cm4gY2hyb21pdW1fd2luLkNo
cm9taXVtV2luUG9ydC50ZXN0cyhzZWxmLCBwYXRocykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5p
dHRlc3QucHkKaW5kZXggMDc5NTk4MjI0NGZhMWNhMjg1ZDk3ZjJlMmY1MzYyNGQ0NDQ5Zjc0OC4u
ZjY3NGM0MzZkMjE0Nzg2YWU3Njg3ZTllZTAyN2MxYTU4YzM2MjE0ZSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9ncHVfdW5pdHRlc3QucHkKQEAgLTMyLDYgKzMyLDcgQEAgaW1wb3J0IGNocm9taXVtX2dw
dQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJvbSB3
ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIAogCiBjbGFz
cyBDaHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTE1LDYgKzExNiwzNCBA
QCBjbGFzcyBDaHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwb3J0
ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1ncHUtbWFjJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoJ2dwdScsIHBvcnQuZ3JhcGhpY3NfdHlwZSgpKQogCisgICAgZGVmIHRl
c3RfZGVmYXVsdF90ZXN0c19wYXRocyhzZWxmKToKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
KworICAgICAgICBkZWYgdGVzdF9wYXRocyhwb3J0X25hbWUpOgorICAgICAgICAgICAgcmV0dXJu
IGNocm9taXVtX2dwdS5fZGVmYXVsdF90ZXN0c19wYXRocyhob3N0LnBvcnRfZmFjdG9yeS5nZXQo
cG9ydF9uYW1lKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfcGF0aHMoJ2Nocm9t
aXVtLWdwdS1saW51eCcpLCBbJ21lZGlhJywgJ2Zhc3QvY2FudmFzJywgJ2NhbnZhcy9waGlsaXAn
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3BhdGhzKCdjaHJvbWl1bS1ncHUtbWFj
LWxlb3BhcmQnKSwgWydmYXN0L2NhbnZhcycsICdjYW52YXMvcGhpbGlwJ10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodGVzdF9wYXRocygnY2hyb21pdW0tZ3B1LWNnLW1hYy1sZW9wYXJkJyks
IFsnZmFzdC9odG1sJ10pCisKKyAgICBkZWYgdGVzdF90ZXN0X2ZpbGVzKHNlbGYpOgorICAgICAg
ICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBmaWxlcyA9IHsKKyAgICAgICAgICAgICcvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3QuaHRtbCc6ICcnLAorICAg
ICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Rlc3QuaHRt
bCc6ICcnLAorICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2Zhc3QvaHRt
bC90ZXN0Lmh0bWwnOiAnJywKKyAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy9tZWRpYS90ZXN0Lmh0bWwnOiAnJywKKyAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy9mb28vYmFyLmh0bWwnOiAnJywKKyAgICAgICAgfQorICAgICAgICBob3N0LmZpbGVz
eXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKKworICAgICAgICBkZWYgdGVzdF9wYXRocyhw
b3J0X25hbWUpOgorICAgICAgICAgICAgcmV0dXJuIGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0
X25hbWUpLnRlc3RzKFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9wYXRocygn
Y2hyb21pdW0tZ3B1LWxpbnV4JyksIHNldChbJ2NhbnZhcy9waGlsaXAvdGVzdC5odG1sJywgJ2Zh
c3QvY2FudmFzL3Rlc3QuaHRtbCcsICdtZWRpYS90ZXN0Lmh0bWwnXSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodGVzdF9wYXRocygnY2hyb21pdW0tZ3B1LW1hYy1sZW9wYXJkJyksIHNldChb
J2NhbnZhcy9waGlsaXAvdGVzdC5odG1sJywgJ2Zhc3QvY2FudmFzL3Rlc3QuaHRtbCddKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3BhdGhzKCdjaHJvbWl1bS1ncHUtY2ctbWFjLWxl
b3BhcmQnKSwgc2V0KFsnZmFzdC9odG1sL3Rlc3QuaHRtbCddKSkKKwogCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgIHBvcnRfdGVzdGNhc2UubWFpbigpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IGY2YWRjZmM3OTFlODkzYjAxOTM1N2Nm
N2YxM2MzYmNlOTFiYzFiNjAuLjZiZmRjNzU5ZGJmZDNjNmRmNzEwOTg5NDBjZWJhZDRmMTdjOTA1
MjcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CkBAIC02
NSw4ICs2NSw4IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hv
c3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCitmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVyLCB1bml0X3Rlc3RfZmlsZXN5c3Rl
bQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBpc19yZWZlcmVu
Y2VfaHRtbF9maWxlCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgaW1wb3J0IGNv
bXBhcmVfdmVyc2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAgaW1wb3J0IHNraXBfaWYKIApA
QCAtMTY2LDcgKzE2Niw3IEBAIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVz
dHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKICAgICAgICAgICAgICMg
SW4gY2FzZSBvZiByZWZ0ZXN0LCBvbmUgdGVzdCBjYWxscyB0aGUgZHJpdmVyJ3MgcnVuX3Rlc3Qo
KSB0d2ljZS4KICAgICAgICAgICAgICMgV2Ugc2hvdWxkIG5vdCBhZGQgYSByZWZlcmVuY2UgaHRt
bCB1c2VkIGJ5IHJlZnRlc3RzIHRvIHRlc3RzIHVubGVzcyBpbmNsdWRlX3JlZmVyZW5jZV9odG1s
IHBhcmFtZXRlcgogICAgICAgICAgICAgIyBpcyBleHBsaWNpdGx5IGdpdmVuLgotICAgICAgICAg
ICAgaWYgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbCBvciBub3QgaXNfcmVmZXJlbmNlX2h0bWxfZmls
ZSh0ZXN0X2lucHV0LnRlc3RfbmFtZSk6CisgICAgICAgICAgICBpZiBpbmNsdWRlX3JlZmVyZW5j
ZV9odG1sIG9yIG5vdCBQb3J0LmlzX3JlZmVyZW5jZV9odG1sX2ZpbGUodGVzdF9pbnB1dC50ZXN0
X25hbWUpOgogICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaC5hcHBlbmQo
dGVzdF9uYW1lKQogICAgICAgICAgICAgcmV0dXJuIFRlc3REcml2ZXIucnVuX3Rlc3Qoc2VsZiwg
dGVzdF9pbnB1dCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3JlYmFzZWxpbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcmViYXNlbGluZS5weQppbmRleCA1ZGIzMzMzNWZiYTczZmE4NTQ0NDk1MzhjY2UwY2FmZmQ3
YzcwM2VjLi41MTVmZjdkZmE1ODFkMTdiNDk2OTk1MzFiNzBkNWUxYWI0ZjE0NmU0IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQpA
QCAtMTExLDE0ICsxMTEsMTEgQEAgY2xhc3MgT3B0aW1pemVCYXNlbGluZXMoQWJzdHJhY3REZWNs
YXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Jhc2VsaW5lX29wdGlt
aXplci5vcHRpbWl6ZShiYXNlbGluZV9uYW1lKToKICAgICAgICAgICAgICAgICBwcmludCAiSHVl
cmlzdGljcyBmYWlsZWQgdG8gb3B0aW1pemUgJXMiICUgYmFzZWxpbmVfbmFtZQogCi0gICAgZGVm
IF90b190ZXN0X25hbWUoc2VsZiwgZmlsZV9uYW1lKTogCi0gICAgICAgIHJldHVybiBzZWxmLl90
b29sLmZpbGVzeXN0ZW0ucmVscGF0aChmaWxlX25hbWUsIHNlbGYuX3BvcnQubGF5b3V0X3Rlc3Rz
X2RpcigpKQotCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAg
ICAgICAgIHNlbGYuX2Jhc2VsaW5lX29wdGltaXplciA9IEJhc2VsaW5lT3B0aW1pemVyKHRvb2wp
CiAgICAgICAgIHNlbGYuX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXQoImNocm9taXVtLXdp
bi13aW43IikgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHNlbGVjdGFibGUuCiAKLSAgICAgICAg
Zm9yIHRlc3RfbmFtZSBpbiBtYXAoc2VsZi5fdG9fdGVzdF9uYW1lLCBzZWxmLl9wb3J0LmZpbmRf
dGVzdF9maWxlcyhhcmdzKSk6CisgICAgICAgIGZvciB0ZXN0X25hbWUgaW4gc2VsZi5fcG9ydC50
ZXN0cyhhcmdzKToKICAgICAgICAgICAgIHByaW50ICJPcHRpbWl6aW5nICVzLiIgJSB0ZXN0X25h
bWUKICAgICAgICAgICAgIHNlbGYuX29wdGltaXplX2Jhc2VsaW5lKHRlc3RfbmFtZSkKIApAQCAt
MTQxLDE0ICsxMzgsMTEgQEAgY2xhc3MgQW5hbHl6ZUJhc2VsaW5lcyhBYnN0cmFjdERlY2xhcmF0
aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICBkaXJlY3Rvcmllc19ieV9yZXN1bHQgPSBzZWxmLl9i
YXNlbGluZV9vcHRpbWl6ZXIuZGlyZWN0b3JpZXNfYnlfcmVzdWx0KGJhc2VsaW5lX25hbWUpCiAg
ICAgICAgICAgICBzZWxmLl9wcmludChiYXNlbGluZV9uYW1lLCBkaXJlY3Rvcmllc19ieV9yZXN1
bHQpCiAKLSAgICBkZWYgX3RvX3Rlc3RfbmFtZShzZWxmLCBmaWxlX25hbWUpOiAKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5yZWxwYXRoKGZpbGVfbmFtZSwgc2VsZi5fcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCkpCi0KICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBh
cmdzLCB0b29sKToKICAgICAgICAgc2VsZi5fYmFzZWxpbmVfb3B0aW1pemVyID0gQmFzZWxpbmVP
cHRpbWl6ZXIodG9vbCkKICAgICAgICAgc2VsZi5fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5Lmdl
dCgiY2hyb21pdW0td2luLXdpbjciKSAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgc2VsZWN0YWJs
ZS4KIAotICAgICAgICBmb3IgdGVzdF9uYW1lIGluIG1hcChzZWxmLl90b190ZXN0X25hbWUsIHNl
bGYuX3BvcnQuZmluZF90ZXN0X2ZpbGVzKGFyZ3MpKToKKyAgICAgICAgZm9yIHRlc3RfbmFtZSBp
biBzZWxmLl9wb3J0LnRlc3RzKGFyZ3MpOgogICAgICAgICAgICAgc2VsZi5fYW5hbHl6ZV9iYXNl
bGluZSh0ZXN0X25hbWUpCiAKIAo=
</data>
<flag name="review"
          id="116813"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>