<?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>78952</bug_id>
          
          <creation_ts>2012-02-17 19:00:42 -0800</creation_ts>
          <short_desc>webkitpy: remove webkitpy.common.array_stream</short_desc>
          <delta_ts>2012-02-18 15:52:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559693</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-17 19:00:42 -0800</bug_when>
    <thetext>webkitpy: remove webkitpy.common.array_stream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559694</commentid>
    <comment_count>1</comment_count>
      <attachid>127684</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-17 19:04:15 -0800</bug_when>
    <thetext>Created attachment 127684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559695</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-17 19:05:29 -0800</bug_when>
    <thetext>This change is also a prelude to cleaning up the layout_tests/views/printing code and the metered_stream code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559700</commentid>
    <comment_count>3</comment_count>
      <attachid>127684</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-17 19:25:50 -0800</bug_when>
    <thetext>Comment on attachment 127684
Patch

Excellent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559834</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-18 15:52:10 -0800</bug_when>
    <thetext>Committed r108175: &lt;http://trac.webkit.org/changeset/108175&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127684</attachid>
            <date>2012-02-17 19:04:15 -0800</date>
            <delta_ts>2012-02-17 19:25:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78952-20120217190414.patch</filename>
            <type>text/plain</type>
            <size>52802</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MTQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGI1ZGVlYTU1NjU0MzUwM2RlZjY1NjkyYjhlYjdkZmQ4
MzlkODc5Yi4uMGU5OGU1MjNmZGJlNDg3OTk4Mjc5NjBkN2EyZTE4NzE4OGZlOWE2ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkw
IEBACiAyMDEyLTAyLTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiByZW1vdmUgd2Via2l0cHkuY29tbW9uLmFycmF5X3N0cmVhbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg5NTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJucyBvdXQgYXJy
YXlfc3RyZWFtIGRpZG4ndCByZWFsbHkgZG8gYW55dGhpbmcgdGhhdCBTdHJpbmdJTworICAgICAg
ICBkaWRuJ3QgZG8gKGF0IGxlYXN0IGFzIG9mIFB5dGhvbiAyLjYpLiBUaGlzIGNoYW5nZSByZW1v
dmVzIGl0CisgICAgICAgIGFuZCB1cGRhdGVzIGFsbCBvZiB0aGUgY2FsbGVycy4gV2hlcmUgcG9z
c2libGUsIEkgY2hhbmdlZCB0aGUKKyAgICAgICAgdGVzdCBhc3NlcnRpb25zIGluIG9yZGVyIHRv
IGNhcHR1cmUgdGhlIGludGVudCBtb3JlIGNsZWFybHksCisgICAgICAgIGUuZy4sIGluc3RlYWQg
b2YgY2FsbGluZyBzZWxmLmFzc2VydFRydWUoJ2ZvbycgaW4gc3RyZWFtLmdldCgpKSwKKyAgICAg
ICAgd2UgaGF2ZSBzZWxmLmFzc2VydENvbnRhaW5zTGluZShzdHJlYW0sICdmb28nKSwgYW5kIGlu
c3RlYWQgb2YKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cmVhbS5lbXB0eSgpKSwgd2UgaGF2
ZSBzZWxmLmFzc2VydEVtcHR5KHN0cmVhbSkgLQorICAgICAgICB0aGUgbGF0dGVyIGlzbid0IHRo
YXQgbXVjaCBtb3JlIHJlYWRhYmxlLCBidXQgU3RyaW5nSU8gZG9lc24ndAorICAgICAgICBleHBv
cnQgYW4gZW1wdHkoKSBtZXRob2QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9hcnJheV9zdHJlYW0ucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vYXJyYXlfc3RyZWFtX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5OgorICAgICAgICAocGFzc2luZ19ydW4pOgorICAgICAgICAocnVuX2FuZF9jYXB0dXJlKToK
KyAgICAgICAgKFN0cmVhbVRlc3RpbmdNaXhpbik6CisgICAgICAgIChTdHJlYW1UZXN0aW5nTWl4
aW4uYXNzZXJ0Q29udGFpbnMpOgorICAgICAgICAoU3RyZWFtVGVzdGluZ01peGluLmFzc2VydENv
bnRhaW5zTGluZSk6CisgICAgICAgIChTdHJlYW1UZXN0aW5nTWl4aW4uYXNzZXJ0RW1wdHkpOgor
ICAgICAgICAoU3RyZWFtVGVzdGluZ01peGluLmFzc2VydE5vdEVtcHR5KToKKyAgICAgICAgKExp
bnRUZXN0KToKKyAgICAgICAgKExpbnRUZXN0LnRlc3RfbGludF90ZXN0X2ZpbGVzKToKKyAgICAg
ICAgKExpbnRUZXN0LnRlc3RfbGludF90ZXN0X2ZpbGVzX19lcnJvcnMpOgorICAgICAgICAoTWFp
blRlc3QpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9jaGlsZF9wcm9jZXNzXzEpOgorICAgICAg
ICAoTWFpblRlc3QudGVzdF9jaGlsZF9wcm9jZXNzZXNfMik6CisgICAgICAgIChNYWluVGVzdC50
ZXN0X2NoaWxkX3Byb2Nlc3Nlc19taW4pOgorICAgICAgICAoTWFpblRlc3QudGVzdF9oZWxwX3By
aW50aW5nKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfaHVuZ190aHJlYWQpOgorICAgICAgICAo
TWFpblRlc3QudGVzdF9ub190ZXN0c19mb3VuZCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X25v
X3Rlc3RzX2ZvdW5kXzIpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9yZXBlYXRfZWFjaF9pdGVy
YXRpb25zX251bV90ZXN0cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Rlc3RfbGlzdCk6Cisg
ICAgICAgIChNYWluVGVzdC50ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMpOgorICAgICAgICAoTWFp
blRlc3QudGVzdF93b3JrZXJfbW9kZWxfX2lubGluZV93aXRoX2NoaWxkX3Byb2Nlc3Nlcyk6Cisg
ICAgICAgIChNYWluVGVzdC50ZXN0X2FkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5KToKKyAg
ICAgICAgKFJlYmFzZWxpbmVUZXN0KToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0LmFzc2VydEJh
c2VsaW5lcyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC50ZXN0X3Jlc2V0X3Jlc3VsdHMpOgor
ICAgICAgICAoUmViYXNlbGluZVRlc3QudGVzdF9taXNzaW5nX3Jlc3VsdHMpOgorICAgICAgICAo
UmViYXNlbGluZVRlc3QudGVzdF9uZXdfYmFzZWxpbmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5OgorICAgICAgICAoTWV0
ZXJlZFN0cmVhbS51cGRhdGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdE1ldGVy
ZWRTdHJlYW0udGVzdF9yZWd1bGFyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RVdGlsaXR5
RnVuY3Rpb25zLmFzc2VydEVtcHR5KToKKyAgICAgICAgKFRlc3RVdGlsaXR5RnVuY3Rpb25zKToK
KyAgICAgICAgKFRlc3RVdGlsaXR5RnVuY3Rpb25zLmFzc2VydE5vdEVtcHR5KToKKyAgICAgICAg
KFRlc3RVdGlsaXR5RnVuY3Rpb25zLmFzc2VydFdyaXR0ZW4pOgorICAgICAgICAoVGVzdFV0aWxp
dHlGdW5jdGlvbnMudGVzdF9jb25maWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChUZXN0cHJpbnRl
ci5hc3NlcnRFbXB0eSk6CisgICAgICAgIChUZXN0cHJpbnRlcik6CisgICAgICAgIChUZXN0cHJp
bnRlci5hc3NlcnROb3RFbXB0eSk6CisgICAgICAgIChUZXN0cHJpbnRlci5hc3NlcnRXcml0dGVu
KToKKyAgICAgICAgKFRlc3RwcmludGVyLnJlc2V0KToKKyAgICAgICAgKFRlc3RwcmludGVyLmdl
dF9wcmludGVyKToKKyAgICAgICAgKFRlc3RwcmludGVyLnRlc3RfaGVscF9wcmludGVyKToKKyAg
ICAgICAgKFRlc3RwcmludGVyLmRvX3N3aXRjaF90ZXN0cy5kb19oZWxwZXIpOgorICAgICAgICAo
VGVzdHByaW50ZXIudGVzdF9wcmludF9vbmVfbGluZV9zdW1tYXJ5KToKKyAgICAgICAgKFRlc3Rw
cmludGVyLnRlc3RfcHJpbnRfdGVzdF9yZXN1bHQpOgorICAgICAgICAoVGVzdHByaW50ZXIudGVz
dF9wcmludF9wcm9ncmVzcyk6CisgICAgICAgIChUZXN0cHJpbnRlci50ZXN0X3dyaXRlX25vdGhp
bmcpOgorICAgICAgICAoVGVzdHByaW50ZXIudGVzdF93cml0ZV9taXNjKToKKyAgICAgICAgKFRl
c3RwcmludGVyLnRlc3Rfd3JpdGVfZXZlcnl0aGluZyk6CisgICAgICAgIChUZXN0cHJpbnRlci50
ZXN0X3dyaXRlX3ZlcmJvc2UpOgorICAgICAgICAoVGVzdHByaW50ZXIudGVzdF9wcmludF91bmV4
cGVjdGVkX3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTWFpblRlc3QuYXNz
ZXJ0V3JpdHRlbik6CisgICAgICAgIChjcmVhdGVfcnVubmVyKToKKyAgICAgICAgKHRlc3RfcnVu
X3Rlc3Rfc2V0KToKKyAgICAgICAgKHRlc3RfcnVuX3Rlc3Rfc2V0X2tpbGxzX2RydF9wZXJfcnVu
KToKKyAgICAgICAgKHRlc3RfcnVuX3Rlc3Rfc2V0X2Zvcl9wYXJzZXJfdGVzdHMpOgorICAgICAg
ICAodGVzdF9ydW5fdGVzdF9zZXRfd2l0aF9qc29uX291dHB1dCk6CisgICAgICAgICh0ZXN0X3J1
bl90ZXN0X3NldF93aXRoX2pzb25fc291cmNlKToKKyAgICAgICAgKHRlc3RfcnVuX3Rlc3Rfc2V0
X3dpdGhfbXVsdGlwbGVfcmVwb3NpdG9yaWVzKToKKyAgICAgICAgKHRlc3RfdXBsb2FkX2pzb24p
OgorCisyMDEyLTAyLTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIFRoZSBuZXcgcnVuLXdlYmtpdC10ZXN0cyBuZWVkcyB0byBkdW1wIG91dCBwaXhlbCBo
YXNoIGZhaWx1cmVzIGV2ZW4gaWYgdGhlIHBpeGVsIHRlc3QgcGFzc2VzLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NDQKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXJyYXlfc3RyZWFtLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vYXJyYXlfc3RyZWFtLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZDJjNDM5MjUzYTQ0ZGM4NGQ2MmYyNGQxNDc2YmNiZmFjMzYyMjY4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2FycmF5X3N0cmVhbS5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiUGFja2FnZSB0
aGF0IHByaXZhdGUgYW4gYXJyYXktYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgYSBzdHJlYW0uIiIi
Ci0KLQotY2xhc3MgQXJyYXlTdHJlYW0ob2JqZWN0KToKLSAgICAiIiJTaW1wbGUgY2xhc3MgdGhh
dCBpbXBsbWVtZW50cyBhIHN0cmVhbSBpbnRlcmZhY2Ugb24gdG9wIG9mIGFuIGFycmF5LgotCi0g
ICAgVGhpcyBpcyB1c2VkIHByaW1hcmlseSBieSB1bml0IHRlc3QgY2xhc3NlcyB0byBtb2NrIG91
dHB1dCBzdHJlYW1zLiBJdAotICAgIHBlcmZvcm1zIGEgc2ltaWxhciBmdW5jdGlvbiB0byBTdHJp
bmdJTywgYnV0IChhKSBpdCBpcyB3cml0ZS1vbmx5LCBhbmQKLSAgICAoYikgaXQgY2FuIGJlIHVz
ZWQgdG8gcmV0cmlldmUgZWFjaCBpbmRpdmlkdWFsIHdyaXRlKCk7IFN0cmluZ0lPIAotICAgIGNv
bmNhdGVuYXRlcyBhbGwgb2YgdGhlIHdyaXRlcyB0b2dldGhlci4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCB0dHk9RmFsc2UpOgotICAgICAgICBzZWxmLl9jb250ZW50cyA9IFtd
Ci0gICAgICAgIHNlbGYuX3R0eSA9IHR0eQotCi0gICAgZGVmIHdyaXRlKHNlbGYsIG1zZyk6Ci0g
ICAgICAgICIiIkltcGxlbWVudCBzdHJlYW0ud3JpdGUoKSBieSBhcHBlbmRpbmcgdG8gdGhlIHN0
cmVhbSdzIGNvbnRlbnRzLiIiIgotICAgICAgICBzZWxmLl9jb250ZW50cy5hcHBlbmQobXNnKQot
Ci0gICAgZGVmIGdldChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiBh
IHN0cmVhbSAoYXMgYW4gYXJyYXkpLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudHMK
LQotICAgIGRlZiByZXNldChzZWxmKToKLSAgICAgICAgIiIiRW1wdHkgdGhlIHN0cmVhbS4iIiIK
LSAgICAgICAgc2VsZi5fY29udGVudHMgPSBbXQotCi0gICAgZGVmIGVtcHR5KHNlbGYpOgotICAg
ICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgc3RyZWFtIGlzIGVtcHR5LiIiIgotICAgICAgICBy
ZXR1cm4gKGxlbihzZWxmLl9jb250ZW50cykgPT0gMCkKLQotICAgIGRlZiBmbHVzaChzZWxmKToK
LSAgICAgICAgIiIiRmx1c2ggdGhlIHN0cmVhbSAoYSBuby1vcCBpbXBsZW1lbnRlZCBmb3IgY29t
cGF0aWJpbGl0eSkuIiIiCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
LSAgICAgICAgcmV0dXJuICc8QXJyYXlTdHJlYW06ICcgKyBzdHIoc2VsZi5fY29udGVudHMpICsg
Jz4nCi0KLSAgICBkZWYgaXNhdHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdHR5CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hcnJheV9zdHJlYW1fdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hcnJheV9zdHJlYW1fdW5p
dHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhOWIzNGExN2JlOTk5NGU0
NmM3NzE5YWEwNzNkN2Y2YmVmNzE5NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXJyYXlfc3RyZWFt
X3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotIyEvdXNyL2Jpbi9w
eXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3RzIGZvciBhcnJheV9zdHJlYW0u
cHkuIiIiCi0KLWltcG9ydCBwZGIKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5hcnJheV9zdHJlYW0gaW1wb3J0IEFycmF5U3RyZWFtCi0KLQotY2xhc3MgQXJyYXlTdHJl
YW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0RW1wdHkoc2VsZiwgYV9z
dHJlYW0pOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoYV9zdHJlYW0uZW1wdHkoKSkKLQotICAg
IGRlZiBhc3NlcnROb3RFbXB0eShzZWxmLCBhX3N0cmVhbSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoYV9zdHJlYW0uZW1wdHkoKSkKLQotICAgIGRlZiBhc3NlcnRDb250ZW50c01hdGNoKHNl
bGYsIGFfc3RyZWFtLCBjb250ZW50cyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGFfc3Ry
ZWFtLmdldCgpLCBjb250ZW50cykKLQotICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKLSAgICAg
ICAgYSA9IEFycmF5U3RyZWFtKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShhKQotICAgICAg
ICBzZWxmLmFzc2VydENvbnRlbnRzTWF0Y2goYSwgW10pCi0KLSAgICAgICAgYS5mbHVzaCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoYSkKLSAgICAgICAgc2VsZi5hc3NlcnRDb250ZW50c01h
dGNoKGEsIFtdKQotCi0gICAgICAgIGEud3JpdGUoImZvbyIpCi0gICAgICAgIGEud3JpdGUoImJh
ciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoYSkKLSAgICAgICAgc2VsZi5hc3NlcnRD
b250ZW50c01hdGNoKGEsIFsiZm9vIiwgImJhciJdKQotCi0gICAgICAgIGEuZmx1c2goKQotICAg
ICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0Q29udGVudHNN
YXRjaChhLCBbImZvbyIsICJiYXIiXSkKLQotICAgICAgICBhLnJlc2V0KCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFbXB0eShhKQotICAgICAgICBzZWxmLmFzc2VydENvbnRlbnRzTWF0Y2goYSwgW10p
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3RyKGEpLCAiPEFycmF5U3RyZWFtOiBbXT4i
KQotCi0gICAgICAgIGEud3JpdGUoImZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHko
YSkKLSAgICAgICAgc2VsZi5hc3NlcnRDb250ZW50c01hdGNoKGEsIFsiZm9vIl0pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHN0cihhKSwgIjxBcnJheVN0cmVhbTogWydmb28nXT4iKQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19p
bnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQppbmRleCA4NzkzZjM3Mjc0MTViZWQz
MzFkMjNiYzgwZGU1Mjc1MzZiNjAzMjEyLi42Njg3NmNjOGM4ODAzMGZhNTg5MTI5NWI0NGZmOGEw
MWE1OWYzNWNjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5w
eQpAQCAtMzUsNiArMzUsNyBAQCBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBR
dWV1ZQogaW1wb3J0IHJlCitpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzeXMKIGltcG9ydCB0aHJl
YWQKIGltcG9ydCB0aW1lCkBAIC00Nyw3ICs0OCw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgcGF0aAogIyAoYnVnIDYzODQ2KS4KIFNIT1VMRF9URVNUX1BST0NFU1NFUyA9
IHN5cy5wbGF0Zm9ybSBub3QgaW4gKCdjeWd3aW4nLCAnd2luMzInKQogCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxv
Z3NfdW5pdHRlc3QgaW1wb3J0IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CkBAIC05MCwxMCArOTAsMTAg
QEAgZGVmIHBhc3NpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3Jk
X3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2wKICAgICBpZiBub3QgcG9ydF9vYmo6CiAgICAgICAg
IGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRf
ZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucykK
LSAgICBidWlsZGJvdF9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQotICAgIHJl
Z3VsYXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICBidWlsZGJvdF9v
dXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgcmVndWxhcl9vdXRwdXQgPSBTdHJpbmdJ
Ty5TdHJpbmdJTygpCiAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5ydW4ocG9ydF9vYmosIG9w
dGlvbnMsIHBhcnNlZF9hcmdzLCBidWlsZGJvdF9vdXRwdXQ9YnVpbGRib3Rfb3V0cHV0LCByZWd1
bGFyX291dHB1dD1yZWd1bGFyX291dHB1dCkKLSAgICByZXR1cm4gcmVzID09IDAgYW5kIHJlZ3Vs
YXJfb3V0cHV0LmVtcHR5KCkgYW5kIGJ1aWxkYm90X291dHB1dC5lbXB0eSgpCisgICAgcmV0dXJu
IHJlcyA9PSAwIGFuZCBub3QgcmVndWxhcl9vdXRwdXQuZ2V0dmFsdWUoKSBhbmQgbm90IGJ1aWxk
Ym90X291dHB1dC5nZXR2YWx1ZSgpCiAKIAogZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9u
ZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVkPUZh
bHNlLCBob3N0PU5vbmUsIG5ld19yZXN1bHRzPUZhbHNlKToKQEAgLTExMyw4ICsxMTMsOCBAQCBk
ZWYgcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncyk6CiAgICAg
b2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgIHRyeToKICAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBidWlsZGJvdF9vdXRwdXQgPSBhcnJheV9zdHJlYW0u
QXJyYXlTdHJlYW0oKQotICAgICAgICByZWd1bGFyX291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJh
eVN0cmVhbSgpCisgICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkK
KyAgICAgICAgcmVndWxhcl9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCiAgICAgICAgIHJl
cyA9IHJ1bl93ZWJraXRfdGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRib3Rfb3V0cHV0PWJ1aWxk
Ym90X291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndWxhcl9v
dXRwdXQ9cmVndWxhcl9vdXRwdXQpCkBAIC0xNzgsNyArMTc4LDIxIEBAIGRlZiBnZXRfdGVzdHNf
cnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hl
cz1GYWxzZSwKIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQgPSAxMgogCiAKLWNsYXNzIExpbnRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFN0cmVhbVRlc3RpbmdNaXhpbihvYmplY3QpOgor
ICAgIGRlZiBhc3NlcnRDb250YWlucyhzZWxmLCBzdHJlYW0sIHN0cmluZyk6CisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzdHJpbmcgaW4gc3RyZWFtLmdldHZhbHVlKCkpCisKKyAgICBkZWYgYXNz
ZXJ0Q29udGFpbnNMaW5lKHNlbGYsIHN0cmVhbSwgc3RyaW5nKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHN0cmluZyBpbiBzdHJlYW0uYnVmbGlzdCkKKworICAgIGRlZiBhc3NlcnRFbXB0eShz
ZWxmLCBzdHJlYW0pOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0cmVhbS5nZXR2YWx1ZSgp
KQorCisgICAgZGVmIGFzc2VydE5vdEVtcHR5KHNlbGYsIHN0cmVhbSk6CisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzdHJlYW0uZ2V0dmFsdWUoKSkKKworCitjbGFzcyBMaW50VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSwgU3RyZWFtVGVzdGluZ01peGluKToKICAgICBkZWYgdGVzdF9hbGxfY29uZmln
dXJhdGlvbnMoc2VsZik6CiAKICAgICAgICAgY2xhc3MgRmFrZVBvcnQob2JqZWN0KToKQEAgLTIz
Myw4ICsyNDcsOCBAQCBjbGFzcyBMaW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHRlc3RfbGludF90ZXN0X2ZpbGVzKHNlbGYpOgogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2Vy
ID0gbG9nZ2luZ19ydW4oWyctLWxpbnQtdGVzdC1maWxlcyddKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5lbXB0eSgpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnTGludCBzdWNjZWVkZWQnIGluIG1zZyBmb3IgbXNn
IGluIGVyci5nZXQoKV0pKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAg
c2VsZi5hc3NlcnRDb250YWlucyhlcnIsICdMaW50IHN1Y2NlZWRlZCcpCiAKICAgICBkZWYgdGVz
dF9saW50X3Rlc3RfZmlsZXNfX2Vycm9ycyhzZWxmKToKICAgICAgICAgb3B0aW9ucywgcGFyc2Vk
X2FyZ3MgPSBwYXJzZV9hcmdzKFsnLS1saW50LXRlc3QtZmlsZXMnXSkKQEAgLTI0NCwxMSArMjU4
LDExIEBAIGNsYXNzIExpbnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmVzLCBv
dXQsIGVyciA9IHJ1bl9hbmRfY2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3Mp
CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIC0xKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUob3V0LmVtcHR5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydMaW50IGZh
aWxlZCcgaW4gbXNnIGZvciBtc2cgaW4gZXJyLmdldCgpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RW1wdHkob3V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnTGludCBmYWlsZWQnIGlu
IG1zZyBmb3IgbXNnIGluIGVyci5idWZsaXN0XSkpCiAKIAotY2xhc3MgTWFpblRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVRl
c3RpbmdNaXhpbik6CiAgICAgZGVmIHRlc3RfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcoc2VsZik6
CiAgICAgICAgICMgVGhpcyBqdXN0IHRlc3RzIHRoYXQgd2UgcmVjb2duaXplIHRoZSBjb21tYW5k
IGxpbmUgYXJncwogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLWFjY2Vs
ZXJhdGVkLXZpZGVvJ10pKQpAQCAtMjcxLDcgKzI4NSw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaWYgU0hPVUxEX1RFU1RfUFJPQ0VTU0VTOgogICAgICAg
ICAgICAgXywgXywgcmVndWxhcl9vdXRwdXQsIF8gPSBsb2dnaW5nX3J1bigKICAgICAgICAgICAg
ICAgICBbJy0tcHJpbnQnLCAnY29uZmlnJywgJy0td29ya2VyLW1vZGVsJywgJ3Byb2Nlc3Nlcycs
ICctLWNoaWxkLXByb2Nlc3NlcycsICcxJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
YW55KFsnUnVubmluZyAxICcgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFyX291dHB1dC5nZXQo
KV0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShbJ1J1bm5pbmcgMSAnIGluIGxp
bmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuYnVmbGlzdF0pKQogCiAgICAgZGVmIHRlc3Rf
Y2hpbGRfcHJvY2Vzc2VzXzIoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IHNlZW1zIHRvIGZh
aWwgb24gd2luMzIuCkBAIC0yODAsMTQgKzI5NCwxNCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGlmIFNIT1VMRF9URVNUX1BST0NFU1NFUzoKICAgICAgICAg
ICAgIF8sIF8sIHJlZ3VsYXJfb3V0cHV0LCBfID0gbG9nZ2luZ19ydW4oCiAgICAgICAgICAgICAg
ICAgWyctLXByaW50JywgJ2NvbmZpZycsICctLXdvcmtlci1tb2RlbCcsICdwcm9jZXNzZXMnLCAn
LS1jaGlsZC1wcm9jZXNzZXMnLCAnMiddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFu
eShbJ1J1bm5pbmcgMiAnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuZ2V0KCld
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5nIDIgJyBpbiBsaW5l
IGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmJ1Zmxpc3RdKSkKIAogICAgIGRlZiB0ZXN0X2No
aWxkX3Byb2Nlc3Nlc19taW4oc2VsZik6CiAgICAgICAgIGlmIFNIT1VMRF9URVNUX1BST0NFU1NF
UzoKICAgICAgICAgICAgIF8sIF8sIHJlZ3VsYXJfb3V0cHV0LCBfID0gbG9nZ2luZ19ydW4oCiAg
ICAgICAgICAgICAgICAgWyctLXByaW50JywgJ2NvbmZpZycsICctLXdvcmtlci1tb2RlbCcsICdw
cm9jZXNzZXMnLCAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMicsICdwYXNzZXMnXSwKICAgICAgICAg
ICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGFueShbJ1J1bm5pbmcgMSAnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuZ2V0
KCldKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5nIDEgJyBpbiBs
aW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmJ1Zmxpc3RdKSkKIAogICAgIGRlZiB0ZXN0
X2RyeXJ1bihzZWxmKToKICAgICAgICAgYmF0Y2hfdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihb
Jy0tZHJ5LXJ1biddKQpAQCAtMzIyLDE2ICszMzYsMTYgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2hlbHBfcHJpbnRpbmcoc2VsZik6CiAgICAgICAg
IHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0taGVscC1wcmludGluZyddKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG91dC5lbXB0eSgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVyci5lbXB0eSgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShl
cnIpCiAKICAgICBkZWYgdGVzdF9odW5nX3RocmVhZChzZWxmKToKICAgICAgICAgcmVzLCBvdXQs
IGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS1ydW4tc2luZ2x5JywgJy0tdGltZS1vdXQtbXM9
NTAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVz
L2V4cGVjdGVkL2hhbmcuaHRtbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXMsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVtcHR5KCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHko
b3V0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKIAogICAgIGRlZiB0ZXN0X2tl
eWJvYXJkX2ludGVycnVwdChzZWxmKToKICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBhbHNvIHRl
c3RzIHJ1bm5pbmcgYSB0ZXN0IG1hcmtlZCBhcyBTS0lQIGlmCkBAIC0zNDcsMTQgKzM2MSwxNCBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfbm9fdGVz
dHNfZm91bmQoc2VsZik6CiAgICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1
bihbJ3Jlc291cmNlcyddLCB0ZXN0c19pbmNsdWRlZD1UcnVlKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCdObyB0ZXN0cyB0byBydW4uXG4nIGluIGVyci5nZXQoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFp
bnNMaW5lKGVyciwgJ05vIHRlc3RzIHRvIHJ1bi5cbicpCiAKICAgICBkZWYgdGVzdF9ub190ZXN0
c19mb3VuZF8yKHNlbGYpOgogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19y
dW4oWydmb28nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXMsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0LmVtcHR5KCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgnTm8gdGVzdHMgdG8gcnVuLlxuJyBpbiBlcnIuZ2V0KCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zTGlu
ZShlcnIsICdObyB0ZXN0cyB0byBydW4uXG4nKQogCiAgICAgZGVmIHRlc3RfcmFuZG9taXplX29y
ZGVyKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiB2ZXJpZnkgb3JkZXIgd2FzIHNodWZmbGVkCkBA
IC0zOTMsOCArNDA3LDggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXByaW50JywgJ2V2ZXJ5dGhp
bmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvdGV4
dC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCddLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCBy
ZWNvcmRfcmVzdWx0cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoIj0+IFJlc3VsdHM6
IDgvMTYgdGVzdHMgcGFzc2VkICg1MC4wJSlcbiIgaW4gb3V0LmdldCgpKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoZXJyLmdldCgpWy0yXSA9PSAiQWxsIDE2IHRlc3RzIHJhbiBhcyBleHBlY3Rl
ZC5cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNMaW5lKG91dCwgIj0+IFJlc3VsdHM6
IDgvMTYgdGVzdHMgcGFzc2VkICg1MC4wJSlcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFp
bnNMaW5lKGVyciwgIkFsbCAxNiB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQuXG4iKQogCiAgICAgZGVm
IHRlc3RfcnVuX2NodW5rKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBhY3R1YWxseSBz
ZWxlY3QgdGhlIHJpZ2h0IGNodW5rCkBAIC00NzUsNyArNDg5LDcgQEAgY2xhc3MgTWFpblRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2lu
Z19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShlcnIuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCiAKICAgICBk
ZWYgdGVzdF90ZXN0X2xpc3Rfd2l0aF9wcmVmaXgoc2VsZik6CiAgICAgICAgIGhvc3QgPSBNb2Nr
SG9zdCgpCkBAIC00OTAsOCArNTA0LDggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4odGVzdHNfaW5j
bHVkZWQ9VHJ1ZSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgdW5leHBlY3RlZF90
ZXN0c19jb3VudCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RF
bXB0eShvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHVzZXIub3BlbmVkX3VybHMsIFtwYXRoLmFic3BhdGhfdG9fdXJpKCcvdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sJyldKQogCiAgICAgZGVmIHRlc3RfbWlz
c2luZ19hbmRfdW5leHBlY3RlZF9yZXN1bHRzKHNlbGYpOgpAQCAtNzQxLDcgKzc1NSw3IEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmVzLCBvdXQsIGVyciwg
dXNlciA9IGxvZ2dpbmdfcnVuKFsnLS13b3JrZXItbW9kZWwnLCAnaW5saW5lJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jaGlsZC1wcm9jZXNzZXMnLCAn
MiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCctLXdvcmtlci1tb2RlbD1pbmxpbmUgb3ZlcnJpZGVzIC0tY2hpbGQtcHJvY2Vzc2Vz
XG4nIGluIGVyci5nZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc0xpbmUoZXJyLCAn
LS13b3JrZXItbW9kZWw9aW5saW5lIG92ZXJyaWRlcyAtLWNoaWxkLXByb2Nlc3Nlc1xuJykKIAog
ICAgIGRlZiB0ZXN0X3dvcmtlcl9tb2RlbF9fcHJvY2Vzc2VzKHNlbGYpOgogICAgICAgICBpZiBT
SE9VTERfVEVTVF9QUk9DRVNTRVM6CkBAIC03OTUsNyArODA5LDcgQEAgY2xhc3MgTWFpblRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4o
WyctLWFkZGl0aW9uYWwtcGxhdGZvcm0tZGlyZWN0b3J5JywgJy90bXAvZm9vJywgJy0tYWRkaXRp
b25hbC1wbGF0Zm9ybS1kaXJlY3RvcnknLCAnL3RtcC9iYXInXSkpCiAKICAgICAgICAgcmVzLCBi
dWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLWFk
ZGl0aW9uYWwtcGxhdGZvcm0tZGlyZWN0b3J5JywgJ2ZvbyddKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoJy0tYWRkaXRpb25hbC1wbGF0Zm9ybS1kaXJlY3Rvcnk9Zm9vIGlzIGlnbm9yZWQgc2lu
Y2UgaXQgaXMgbm90IGFic29sdXRlXG4nIGluIHJlZ3VsYXJfb3V0cHV0LmdldCgpKQorICAgICAg
ICBzZWxmLmFzc2VydENvbnRhaW5zTGluZShyZWd1bGFyX291dHB1dCwgJy0tYWRkaXRpb25hbC1w
bGF0Zm9ybS1kaXJlY3Rvcnk9Zm9vIGlzIGlnbm9yZWQgc2luY2UgaXQgaXMgbm90IGFic29sdXRl
XG4nKQogCiAgICAgZGVmIHRlc3Rfbm9faHR0cF9hbmRfZm9yY2Uoc2VsZik6CiAgICAgICAgICMg
U2VlIHRlc3RfcnVuX2ZvcmNlLCB1c2luZyAtLWZvcmNlIHJhaXNlcyBhbiBleGNlcHRpb24uCkBA
IC04NjEsMTQgKzg3NSwxNCBAQCBjbGFzcyBFbmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICAgICAgeyJleHBlY3RlZCI6ICJQQVNTIiwgInJlZl9maWxlIjogInJlZnRlc3Rz
L2Zvby9tYXRjaGluZy1yZWYuaHRtbCIsICJhY3R1YWwiOiAiSU1BR0UiLCAiaXNfbWlzbWF0Y2hf
cmVmdGVzdCI6IFRydWV9KQogCiAKLWNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKK2NsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UZXN0
aW5nTWl4aW4pOgogICAgIGRlZiBhc3NlcnRCYXNlbGluZXMoc2VsZiwgZmlsZV9saXN0LCBmaWxl
LCBleHRlbnNpb25zLCBlcnIpOgogICAgICAgICAiYXNzZXJ0IHRoYXQgdGhlIGZpbGVfbGlzdCBj
b250YWlucyB0aGUgYmFzZWxpbmVzLiIiIgogICAgICAgICBmb3IgZXh0IGluIGV4dGVuc2lvbnM6
CiAgICAgICAgICAgICBiYXNlbGluZSA9IGZpbGUgKyAiLWV4cGVjdGVkIiArIGV4dAogICAgICAg
ICAgICAgYmFzZWxpbmVfbXNnID0gJ1dyaXRpbmcgbmV3IGV4cGVjdGVkIHJlc3VsdCAiJXMiXG4n
ICUgYmFzZWxpbmVbMTpdCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KGYuZmluZChi
YXNlbGluZSkgIT0gLTEgZm9yIGYgaW4gZmlsZV9saXN0KSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShiYXNlbGluZV9tc2cgaW4gZXJyLmdldCgpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRDb250YWluc0xpbmUoZXJyLCBiYXNlbGluZV9tc2cpCiAKICAgICAjIEZJWE1FOiBBZGQgdGVz
dHMgdG8gZW5zdXJlIHRoYXQgd2UncmUgKm5vdCogd3JpdGluZyBiYXNlbGluZXMgd2hlbiB3ZSdy
ZSBub3QKICAgICAjIHN1cHBvc2VkIHRvIGJlLgpAQCAtODg1LDcgKzg5OSw3IEBAIGNsYXNzIFJl
YmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZmlsZV9saXN0ID0gaG9z
dC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygpCiAgICAgICAgIGZpbGVfbGlzdC5yZW1v
dmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHJlcywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5lbXB0
eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZmlsZV9saXN0KSwgNCkKICAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmls
ZV9saXN0LCAiL3Bhc3Nlcy9pbWFnZSIsIFsiLnR4dCIsICIucG5nIl0sIGVycikKICAgICAgICAg
c2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LCAiL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3Np
bmdfaW1hZ2UiLCBbIi50eHQiLCAiLnBuZyJdLCBlcnIpCkBAIC05MDMsNyArOTE3LDcgQEAgY2xh
c3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmaWxlX2xpc3Qg
PSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkKICAgICAgICAgZmlsZV9saXN0
LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAwKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91
dC5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KG91dCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZmlsZV9saXN0KSwgNikKICAgICAgICAgc2VsZi5hc3NlcnRCYXNl
bGluZXMoZmlsZV9saXN0LCAiL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0IiwgWyIu
dHh0Il0sIGVycikKICAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LCAiL3Bs
YXRmb3JtL3Rlc3QtbWFjLWxlb3BhcmQvZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX2ltYWdl
IiwgWyIucG5nIl0sIGVycikKQEAgLTkyMSw3ICs5MzUsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZpbGVfbGlzdCA9IGhvc3QuZmlsZXN5c3Rl
bS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhyZXMsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZp
bGVfbGlzdCksIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVzKGZpbGVfbGlzdCwKICAg
ICAgICAgICAgICIvcGxhdGZvcm0vdGVzdC1tYWMtbGVvcGFyZC9wYXNzZXMvaW1hZ2UiLCBbIi50
eHQiLCAiLnBuZyJdLCBlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5CmluZGV4IGEzYzJkZjQ0MTA2
OTRkMTYwZTIzMzM1ZTllNTBiZWFmMjM4ZDVhZjIuLmI1YzIzM2IxMDZhNzNlMDRhNjM1NDA0MzRl
NTJmZDU0YTZkYWI5YjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5CkBAIC02NywxMCArNjcsNiBA
QCBjbGFzcyBNZXRlcmVkU3RyZWFtOgogICAgICAgICAiIiJXcml0ZSBhIG1lc3NhZ2UgdGhhdCB3
aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHN1YnNlcXVlbnQgdXBkYXRlKCkgb3Igd3JpdGUoKSBjYWxs
cy4iIiIKICAgICAgICAgc2VsZi5fb3ZlcndyaXRlKHR4dCkKIAotICAgIGRlZiBmbHVzaChzZWxm
KToKLSAgICAgICAgIyBUaGlzIHNlZW1zIHRvIGJlIG5lZWRlZCBvbiBQeXRob24gMi41IGZvciBz
b21lIHJlYXNvbi4KLSAgICAgICAgc2VsZi5fc3RyZWFtLmZsdXNoKCkKLQogICAgIGRlZiBfb3Zl
cndyaXRlKHNlbGYsIHR4dCk6CiAgICAgICAgICMgUHJpbnQgdGhlIG5lY2Vzc2FyeSBudW1iZXIg
b2YgYmFja3NwYWNlcyB0byBlcmFzZSB0aGUgcHJldmlvdXMKICAgICAgICAgIyBtZXNzYWdlLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0
ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQppbmRleCA3ZmQwYjgyNGI2M2I3
NDRlYTQwZDQ5ZmEwZWJjN2MyMTNlODRjMDJkLi4zNTljZmNmNjBmMTM5MzQzMGRiY2QzYWYxYzdi
MTA5MmRlZGQxMzI5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQpA
QCAtMjcsMzEgKzI3LDMxIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBv
cnQgU3RyaW5nSU8KIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5hcnJh
eV9zdHJlYW0gaW1wb3J0IEFycmF5U3RyZWFtCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52
aWV3cy5tZXRlcmVkX3N0cmVhbSBpbXBvcnQgTWV0ZXJlZFN0cmVhbQogCiAKIGNsYXNzIFRlc3RN
ZXRlcmVkU3RyZWFtKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWd1bGFyKHNl
bGYpOgotICAgICAgICBhID0gQXJyYXlTdHJlYW0oKQotICAgICAgICBtID0gTWV0ZXJlZFN0cmVh
bShzdHJlYW09YSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEuZW1wdHkoKSkKKyAgICAgICAg
YSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAgICAgICAgbSA9IE1ldGVyZWRTdHJlYW0oYSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShhLmdldHZhbHVlKCkpCiAKICAgICAgICAgIyBiYXNpYyB0
ZXN0CiAgICAgICAgIG0ud3JpdGUoImZvbyIpCiAgICAgICAgIGV4cCA9IFsnZm9vJ10KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoYS5nZXQoKSwgZXhwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhhLmJ1Zmxpc3QsIGV4cCkKIAogICAgICAgICAjIG5vdyBjaGVjayB0aGF0IGEgc2Vjb25k
IHdyaXRlKCkgZG9lcyBub3Qgb3ZlcndyaXRlIHRoZSBmaXJzdC4KICAgICAgICAgbS53cml0ZSgi
YmFyIikKICAgICAgICAgZXhwLmFwcGVuZCgnYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoYS5nZXQoKSwgZXhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3QsIGV4
cCkKIAogICAgICAgICBtLnVwZGF0ZSgiYmF0dGVyIikKICAgICAgICAgZXhwLmFwcGVuZCgnYmF0
dGVyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYS5nZXQoKSwgZXhwKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3QsIGV4cCkKIAogICAgICAgICAjIFRoZSBuZXh0IHVw
ZGF0ZSgpIHNob3VsZCBvdmVyd3JpdGUgdGhlIGxhc3RlIHVwZGF0ZSgpIGJ1dCBub3QgdGhlCiAg
ICAgICAgICMgb3RoZXIgdGV4dC4gTm90ZSB0aGF0IHRoZSBjdXJzb3IgaXMgZWZmZWN0aXZlbHkg
cG9zaXRpb25lZCBhdCB0aGUKQEAgLTU5LDIyICs1OSwyMyBAQCBjbGFzcyBUZXN0TWV0ZXJlZFN0
cmVhbSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG0udXBkYXRlKCJmb28iKQogICAgICAg
ICBleHAuYXBwZW5kKCdcYlxiXGJcYlxiXGIgICAgICBcYlxiXGJcYlxiXGInKQogICAgICAgICBl
eHAuYXBwZW5kKCdmb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmdldCgpLCBleHAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgZXhwKQogCiAgICAgICAgICMg
bm93IGNoZWNrIHRoYXQgYSB3cml0ZSgpIGRvZXMgb3ZlcndyaXRlIHRoZSB1cGRhdGUKICAgICAg
ICAgbS53cml0ZSgiZm9vIikKICAgICAgICAgZXhwLmFwcGVuZCgnXGJcYlxiICAgXGJcYlxiJykK
ICAgICAgICAgZXhwLmFwcGVuZCgnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYS5n
ZXQoKSwgZXhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3QsIGV4cCkKIAog
ICAgICAgICAjIE5vdyB0ZXN0IHRoYXQgd2Ugb25seSBiYWNrIHVwIHRvIHRoZSBtb3N0IHJlY2Vu
dCBuZXdsaW5lLgogCiAgICAgICAgICMgTm90ZSBhbHNvIHRoYXQgd2UgZG8gbm90IGJhY2sgdXAg
dG8gZXJhc2UgdGhlIG1vc3QgcmVjZW50IHdyaXRlKCksCiAgICAgICAgICMgaS5lLiwgd3JpdGUo
KXMgZG8gbm90IGdldCBlcmFzZWQuCi0gICAgICAgIGEucmVzZXQoKQorICAgICAgICBhID0gU3Ry
aW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBtID0gTWV0ZXJlZFN0cmVhbShhKQogICAgICAgICBt
LnVwZGF0ZSgiZm9vXG5iYXIiKQogICAgICAgICBtLnVwZGF0ZSgiYmF6IikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoYS5nZXQoKSwgWydmb29cbmJhcicsICdcYlxiXGIgICBcYlxiXGInLCAn
YmF6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgWydmb29cbmJhcics
ICdcYlxiXGIgICBcYlxiXGInLCAnYmF6J10pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKaW5kZXggMDkxNmU4ZWY2MzhiNjk2Njc1MTEx
ZDNiNTc3ZmJjZTVkY2JlMmE5OC4uNjg5OWQyYzVkNGNkYjA0NTI3MDljZDRkZjBlZDk2OTFmYzVi
YWY3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmll
d3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKQEAgLTMxLDEwICszMSwxMCBAQAog
CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgU3RyaW5nSU8KIGltcG9y
dCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGFy
cmF5X3N0cmVhbQogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKQEAgLTU0
LDI0ICs1NCwzMyBAQCBkZWYgZ2V0X29wdGlvbnMoYXJncyk6CiAKIAogY2xhc3MgVGVzdFV0aWxp
dHlGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRFbXB0eShzZWxm
LCBzdHJlYW0pOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0cmVhbS5nZXR2YWx1ZSgpKQor
CisgICAgZGVmIGFzc2VydE5vdEVtcHR5KHNlbGYsIHN0cmVhbSk6CisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShzdHJlYW0uZ2V0dmFsdWUoKSkKKworICAgIGRlZiBhc3NlcnRXcml0dGVuKHNlbGYs
IHN0cmVhbSwgY29udGVudHMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdHJlYW0uYnVm
bGlzdCwgY29udGVudHMpCisKICAgICBkZWYgdGVzdF9jb25maWd1cmVfbG9nZ2luZyhzZWxmKToK
ICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldF9vcHRpb25zKFtdKQotICAgICAgICBzdHJlYW0g
PSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQorICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTy5T
dHJpbmdJTygpCiAgICAgICAgIGhhbmRsZXIgPSBwcmludGluZy5fY29uZmlndXJlX2xvZ2dpbmco
c3RyZWFtLCBvcHRpb25zLnZlcmJvc2UpCiAgICAgICAgIGxvZ2dpbmcuaW5mbygidGhpcyBzaG91
bGQgYmUgbG9nZ2VkIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uZW1wdHkoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShzdHJlYW0pCiAKLSAgICAgICAgc3RyZWFtLnJl
c2V0KCkKKyAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAgICAgICBsb2dn
aW5nLmRlYnVnKCJ0aGlzIHNob3VsZCBub3QgYmUgbG9nZ2VkIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHN0cmVhbS5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KHN0cmVhbSkK
IAogICAgICAgICBwcmludGluZy5fcmVzdG9yZV9sb2dnaW5nKGhhbmRsZXIpCiAKLSAgICAgICAg
c3RyZWFtLnJlc2V0KCkKKyAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAg
ICAgICBvcHRpb25zLCBhcmdzID0gZ2V0X29wdGlvbnMoWyctLXZlcmJvc2UnXSkKICAgICAgICAg
aGFuZGxlciA9IHByaW50aW5nLl9jb25maWd1cmVfbG9nZ2luZyhzdHJlYW0sIG9wdGlvbnMudmVy
Ym9zZSkKICAgICAgICAgbG9nZ2luZy5kZWJ1ZygidGhpcyBzaG91bGQgYmUgbG9nZ2VkIikKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnROb3RFbXB0eShzdHJlYW0pCiAgICAgICAgIHByaW50aW5nLl9yZXN0b3JlX2xvZ2dpbmcoaGFu
ZGxlcikKIAogICAgIGRlZiB0ZXN0X3ByaW50X29wdGlvbnMoc2VsZik6CkBAIC0xMTAsNiArMTE5
LDE5IEBAIGNsYXNzIFRlc3RVdGlsaXR5RnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAog
CiBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRF
bXB0eShzZWxmLCBzdHJlYW0pOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0cmVhbS5nZXR2
YWx1ZSgpKQorCisgICAgZGVmIGFzc2VydE5vdEVtcHR5KHNlbGYsIHN0cmVhbSk6CisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0uZ2V0dmFsdWUoKSkKKworICAgIGRlZiBhc3NlcnRXcml0
dGVuKHNlbGYsIHN0cmVhbSwgY29udGVudHMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
dHJlYW0uYnVmbGlzdCwgY29udGVudHMpCisKKyAgICBkZWYgcmVzZXQoc2VsZiwgc3RyZWFtKToK
KyAgICAgICAgc3RyZWFtLmJ1Zmxpc3QgPSBbXQorICAgICAgICBzdHJlYW0uYnVmID0gJycKKwog
ICAgIGRlZiBnZXRfcHJpbnRlcihzZWxmLCBhcmdzPU5vbmUsIHR0eT1GYWxzZSk6CiAgICAgICAg
IGFyZ3MgPSBhcmdzIG9yIFtdCiAgICAgICAgIHByaW50aW5nX29wdGlvbnMgPSBwcmludGluZy5w
cmludF9vcHRpb25zKCkKQEAgLTExOSw4ICsxNDEsOSBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3Rvcnku
Z2V0KCd0ZXN0Jywgb3B0aW9ucykKICAgICAgICAgbnByb2MgPSAyCiAKLSAgICAgICAgcmVndWxh
cl9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0odHR5PXR0eSkKLSAgICAgICAgYnVp
bGRib3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAgcmVndWxh
cl9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHJlZ3VsYXJfb3V0cHV0Lmlz
YXR0eSA9IGxhbWJkYTogdHR5CisgICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0
cmluZ0lPKCkKICAgICAgICAgcHJpbnRlciA9IHByaW50aW5nLlByaW50ZXIoc2VsZi5fcG9ydCwg
b3B0aW9ucywgcmVndWxhcl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkYm90X291dHB1dCwgY29uZmlndXJlX2xvZ2dpbmc9VHJ1ZSkKICAgICAgICAgcmV0
dXJuIHByaW50ZXIsIHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQKQEAgLTE1MSwxNiAr
MTc0LDE2IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICMgVGhpcyByb3V0aW5lIHNob3VsZCBwcmludCBzb21ldGhpbmcgdG8gc3Rkb3V0LiB0ZXN0aW5n
IHdoYXQgaXQgaXMKICAgICAgICAgIyBpcyBraW5kIG9mIHBvaW50bGVzcy4KICAgICAgICAgcHJp
bnRlci5oZWxwX3ByaW50aW5nKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIuZW1wdHko
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5lbXB0eSgpKQorICAgICAgICBzZWxmLmFz
c2VydE5vdEVtcHR5KGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCiAKICAgICBk
ZWYgZG9fc3dpdGNoX3Rlc3RzKHNlbGYsIG1ldGhvZF9uYW1lLCBzd2l0Y2gsIHRvX2J1aWxkYm90
LAogICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0naGVsbG8nLCBleHBfZXJyPU5vbmUs
IGV4cF9ib3Q9Tm9uZSk6CiAgICAgICAgIGRlZiBkb19oZWxwZXIobWV0aG9kX25hbWUsIHN3aXRj
aCwgbWVzc2FnZSwgZXhwX2VyciwgZXhwX2JvdCk6CiAgICAgICAgICAgICBwcmludGVyLCBlcnIs
IGJvdCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50Jywgc3dpdGNoXSwgdHR5PVRydWUpCiAg
ICAgICAgICAgICBnZXRhdHRyKHByaW50ZXIsIG1ldGhvZF9uYW1lKShtZXNzYWdlKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZ2V0KCksIGV4cF9lcnIpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJvdC5nZXQoKSwgZXhwX2JvdCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXJyLmJ1Zmxpc3QsIGV4cF9lcnIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJvdC5idWZsaXN0LCBleHBfYm90KQogCiAgICAgICAgIGlmIHRvX2J1aWxkYm90OgogICAg
ICAgICAgICAgaWYgZXhwX2VyciBpcyBOb25lOgpAQCAtMjExLDMxICsyMzQsMjcgQEAgY2xhc3Mg
IFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wcmludF9vbmVf
bGluZV9zdW1tYXJ5KHNlbGYpOgogICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0
X3ByaW50ZXIoWyctLXByaW50JywgJ25vdGhpbmcnXSkKICAgICAgICAgcHJpbnRlci5wcmludF9v
bmVfbGluZV9zdW1tYXJ5KDEsIDEsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIuZW1w
dHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKICAgICAgICAgcHJpbnRlciwg
ZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdvbmUtbGluZS1zdW1tYXJ5
J10pCiAgICAgICAgIHByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeSgxLCAxLCAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhlcnIuZ2V0KCksIFsiQWxsIDEgdGVzdHMgcmFuIGFzIGV4
cGVjdGVkLlxuIiwgIlxuIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0V3JpdHRlbihlcnIsIFsiQWxs
IDEgdGVzdHMgcmFuIGFzIGV4cGVjdGVkLlxuIiwgIlxuIl0pCiAKICAgICAgICAgcHJpbnRlciwg
ZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdldmVyeXRoaW5nJ10pCiAg
ICAgICAgIHByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeSgxLCAxLCAwKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhlcnIuZ2V0KCksIFsiQWxsIDEgdGVzdHMgcmFuIGFzIGV4cGVjdGVk
LlxuIiwgIlxuIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0V3JpdHRlbihlcnIsIFsiQWxsIDEgdGVz
dHMgcmFuIGFzIGV4cGVjdGVkLlxuIiwgIlxuIl0pCiAKLSAgICAgICAgZXJyLnJlc2V0KCkKKyAg
ICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdl
dmVyeXRoaW5nJ10pCiAgICAgICAgIHByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeSgyLCAx
LCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlcnIuZ2V0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIFsiMSB0ZXN0IHJhbiBhcyBleHBlY3RlZCwgMSBkaWRuJ3Q6XG4iLCAiXG4i
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRXcml0dGVuKGVyciwgWyIxIHRlc3QgcmFuIGFzIGV4cGVj
dGVkLCAxIGRpZG4ndDpcbiIsICJcbiJdKQogCi0gICAgICAgIGVyci5yZXNldCgpCisgICAgICAg
IHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tcHJpbnQnLCAnZXZlcnl0
aGluZyddKQogICAgICAgICBwcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkoMywgMiwgMSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXJyLmdldCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBbIjIgdGVzdHMgcmFuIGFzIGV4cGVjdGVkLCAxIGRpZG4ndDpcbiIsICJcbiJdKQor
ICAgICAgICBzZWxmLmFzc2VydFdyaXR0ZW4oZXJyLCBbIjIgdGVzdHMgcmFuIGFzIGV4cGVjdGVk
LCAxIGRpZG4ndDpcbiIsICJcbiJdKQogCi0gICAgICAgIGVyci5yZXNldCgpCisgICAgICAgIHBy
aW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tcHJpbnQnLCAnZXZlcnl0aGlu
ZyddKQogICAgICAgICBwcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkoMywgMiwgMCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXJyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJ1xuJywgIjIgdGVzdHMgcmFuIGFzIGV4cGVjdGVkICgxIGRpZG4ndCBydW4pLlxuIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQorICAgICAgICBzZWxmLmFzc2VydFdy
aXR0ZW4oZXJyLCBbJ1xuJywgIjIgdGVzdHMgcmFuIGFzIGV4cGVjdGVkICgxIGRpZG4ndCBydW4p
LlxuIiwgJ1xuJ10pCiAKIAogICAgIGRlZiB0ZXN0X3ByaW50X3Rlc3RfcmVzdWx0KHNlbGYpOgpA
QCAtMjUzLDU1ICsyNzIsNTUgQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5nZXRfcmVzdWx0KCdwYXNzZXMvaW1hZ2UuaHRtbCcp
CiAgICAgICAgIHByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZD1GYWxz
ZSwgZXhwX3N0cj0nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rfc3Ry
PScnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVtcHR5KCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RW1wdHkoZXJyKQogCiAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRf
cHJpbnRlcihbJy0tcHJpbnQnLCAndW5leHBlY3RlZCddKQogICAgICAgICBwcmludGVyLnByaW50
X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQ9VHJ1ZSwgZXhwX3N0cj0nJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rfc3RyPScnKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoZXJyLmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQogICAgICAg
ICBwcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQ9RmFsc2UsIGV4cF9z
dHI9JycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290X3N0cj0nJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXJyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJyAgcGFzc2VzL2ltYWdlLmh0bWwgLT4gdW5leHBlY3RlZCBwYXNzXG4nXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRXcml0dGVuKGVyciwgWycgIHBhc3Nlcy9pbWFnZS5odG1sIC0+IHVuZXhw
ZWN0ZWQgcGFzc1xuJ10pCiAKICAgICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9w
cmludGVyKFsnLS1wcmludCcsICdldmVyeXRoaW5nJ10pCiAgICAgICAgIHByaW50ZXIucHJpbnRf
dGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZD1UcnVlLCBleHBfc3RyPScnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdF9zdHI9JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShlcnIuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKICAgICAg
ICAgcHJpbnRlci5wcmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkPUZhbHNlLCBleHBf
c3RyPScnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdF9zdHI9JycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGVyci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgWycgIHBhc3Nlcy9pbWFnZS5odG1sIC0+IHVuZXhwZWN0ZWQgcGFzc1xuJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0V3JpdHRlbihlcnIsIFsnICBwYXNzZXMvaW1hZ2UuaHRtbCAtPiB1bmV4
cGVjdGVkIHBhc3NcbiddKQogCiAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRf
cHJpbnRlcihbJy0tcHJpbnQnLCAnbm90aGluZyddKQogICAgICAgICBwcmludGVyLnByaW50X3Rl
c3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQ9RmFsc2UsIGV4cF9zdHI9JycsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ290X3N0cj0nJykKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGVyci5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KGVycikKIAogICAgICAg
ICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UtdW5leHBlY3Rl
ZCddKQogICAgICAgICBwcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQ9
VHJ1ZSwgZXhwX3N0cj0nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rf
c3RyPScnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVtcHR5KCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RW1wdHkoZXJyKQogCiAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5n
ZXRfcHJpbnRlcihbJy0tcHJpbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0cmFjZS11bmV4cGVjdGVkJ10pCiAgICAgICAgIHByaW50ZXIucHJpbnRf
dGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZD1GYWxzZSwgZXhwX3N0cj0nJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rfc3RyPScnKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKGVyci5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKIAog
ICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UtdW5l
eHBlY3RlZCddKQogICAgICAgICByZXN1bHQgPSBzZWxmLmdldF9yZXN1bHQoInBhc3Nlcy90ZXh0
Lmh0bWwiKQogICAgICAgICBwcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0
ZWQ9RmFsc2UsIGV4cF9zdHI9JycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z290X3N0cj0nJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCiAKLSAgICAgICAgZXJyLnJlc2V0KCkKKyAgICAg
ICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlLXVuZXhwZWN0
ZWQnXSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5nZXRfcmVzdWx0KCJwYXNzZXMvdGV4dC5odG1s
IikKICAgICAgICAgcHJpbnRlci5wcmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkPUZh
bHNlLCBleHBfc3RyPScnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdF9z
dHI9JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQogCiAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2Vs
Zi5nZXRfcHJpbnRlcihbJy0tcHJpbnQnLCAndHJhY2UtZXZlcnl0aGluZyddKQogICAgICAgICBy
ZXN1bHQgPSBzZWxmLmdldF9yZXN1bHQoJ3Bhc3Nlcy9pbWFnZS5odG1sJykKQEAgLTMxNiw5ICsz
MzUsMTAgQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
cmVzdWx0ID0gc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdl
Lmh0bWwnKQogICAgICAgICBwcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0
ZWQ9VHJ1ZSwgZXhwX3N0cj0nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
b3Rfc3RyPScnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVyci5lbXB0eSgpKQorICAgICAg
ICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKIAotICAgICAgICBlcnIucmVzZXQoKQorICAgICAg
ICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ3RyYWNl
LWV2ZXJ5dGhpbmcnXSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5nZXRfcmVzdWx0KCdwYXNzZXMv
aW1hZ2UuaHRtbCcpCiAgICAgICAgIHByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBl
eHBlY3RlZD1GYWxzZSwgZXhwX3N0cj0nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnb3Rfc3RyPScnKQogCkBAIC0zMzIsMTIgKzM1MiwxMiBAQCBjbGFzcyAgVGVzdHByaW50
ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgICMgRmlyc3QsIHRlc3QgdGhhdCB3ZSBw
cmludCBub3RoaW5nLgogICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwg
cGF0aHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGVyci5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKICAgICAgICAgcHJpbnRlci5wcmludF9w
cm9ncmVzcyhycywgVHJ1ZSwgcGF0aHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1w
dHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5lbXB0eSgpKQorICAgICAgICBzZWxm
LmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKICAgICAg
ICAgc2VsZi50aW1lcyA9IFsxLCAyLCAxMiwgMTMsIDE0LCAyMywgMzNdCiAKQEAgLTM1Miw2OSAr
MzcyLDcxIEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ29u
ZS1saW5lLXByb2dyZXNzJ10pCiAgICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJz
LCBGYWxzZSwgcGF0aHMpCiAgICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBG
YWxzZSwgcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0LmVtcHR5KCkpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVtcHR5KCkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQogCiAg
ICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0LmVtcHR5KCkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGVyci5lbXB0eSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQp
CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKIAotICAgICAgICAgICAgZXJy
LnJlc2V0KCkKLSAgICAgICAgICAgIG91dC5yZXNldCgpCisgICAgICAgICAgICBzZWxmLnJlc2V0
KGVycikKKyAgICAgICAgICAgIHNlbGYucmVzZXQob3V0KQogICAgICAgICAgICAgcHJpbnRlci5w
cmludF9wcm9ncmVzcyhycywgVHJ1ZSwgcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUob3V0LmVtcHR5KCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVtcHR5KCkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RW1wdHkoZXJyKQogCiAgICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBU
cnVlLCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQog
CiAgICAgICAgICAgICAjIE5vdyByZWNvbmZpZ3VyZSB0aGUgcHJpbnRlciB0byB0ZXN0IHByaW50
aW5nIHRvIGEgVFRZIGluc3RlYWQgb2YgYSBmaWxlLgogICAgICAgICAgICAgc2VsZi50aW1lcyA9
IFsxLCAxLjAxLCAyLCAzXQogICAgICAgICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdl
dF9wcmludGVyKFsnLS1wcmludCcsICdvbmUtbGluZS1wcm9ncmVzcyddLCB0dHk9VHJ1ZSkKICAg
ICAgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKICAgICAg
ICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShlcnIuZW1wdHkoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKICAgICAgICAgICAgIHByaW50ZXIucHJp
bnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShvdXQuZW1wdHkoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0Tm90RW1wdHkoZXJyKQogCi0gICAgICAgICAgICBlcnIucmVzZXQoKQotICAgICAgICAgICAg
b3V0LnJlc2V0KCkKKyAgICAgICAgICAgIHNlbGYucmVzZXQoZXJyKQorICAgICAgICAgICAgc2Vs
Zi5yZXNldChvdXQpCiAgICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBUcnVl
LCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVtcHR5KG91dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQogICAg
ICAgICBmaW5hbGx5OgogICAgICAgICAgICAgdGltZS50aW1lID0gb3JpZ190aW1lCiAKICAgICBk
ZWYgdGVzdF93cml0ZV9ub3RoaW5nKHNlbGYpOgogICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9
IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ25vdGhpbmcnXSkKICAgICAgICAgcHJpbnRl
ci53cml0ZSgiZm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5lbXB0eSgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVtcHR5KGVycikKIAogICAgIGRlZiB0ZXN0X3dyaXRlX21pc2Moc2Vs
Zik6CiAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tcHJp
bnQnLCAnbWlzYyddKQogICAgICAgICBwcmludGVyLndyaXRlKCJmb28iKQotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKGVyci5lbXB0eSgpKQotICAgICAgICBlcnIucmVzZXQoKQorICAgICAgICBz
ZWxmLmFzc2VydE5vdEVtcHR5KGVycikKKworICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNl
bGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ21pc2MnXSkKICAgICAgICAgcHJpbnRlci53cml0
ZSgiZm9vIiwgImNvbmZpZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIuZW1wdHkoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKICAgICBkZWYgdGVzdF93cml0ZV9ldmVy
eXRoaW5nKHNlbGYpOgogICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50
ZXIoWyctLXByaW50JywgJ2V2ZXJ5dGhpbmcnXSkKICAgICAgICAgcHJpbnRlci53cml0ZSgiZm9v
IikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKLSAgICAgICAgZXJyLnJl
c2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCisKKyAgICAgICAgcHJpbnRl
ciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdldmVyeXRoaW5nJ10p
CiAgICAgICAgIHByaW50ZXIud3JpdGUoImZvbyIsICJjb25maWciKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGVyci5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikK
IAogICAgIGRlZiB0ZXN0X3dyaXRlX3ZlcmJvc2Uoc2VsZik6CiAgICAgICAgIHByaW50ZXIsIGVy
ciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tdmVyYm9zZSddKQogICAgICAgICBwcmludGVy
LndyaXRlKCJmb28iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGVyci5lbXB0eSgpIGFu
ZCAiZm9vIiBpbiBlcnIuZ2V0KClbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1w
dHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJmb28iIGluIGVyci5idWZsaXN0WzBdKQor
ICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKIAogICAgIGRlZiB0ZXN0X3ByaW50X3VuZXhw
ZWN0ZWRfcmVzdWx0cyhzZWxmKToKICAgICAgICAgIyBUaGlzIHJvdXRpbmUgaXMgdGhlIG9ubHkg
b25lIHRoYXQgcHJpbnRzIHN0dWZmIHRoYXQgdGhlIGJvdHMKQEAgLTQ3MCw2OCArNDkyLDYwIEBA
IGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHByaW50ZXIs
IGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tcHJpbnQnLCAnbm90aGluZyddKQogICAg
ICAgICB1ciA9IGdldF91bmV4cGVjdGVkX3Jlc3VsdHMoZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9
RmFsc2UsIGZsYWt5PUZhbHNlKQogICAgICAgICBwcmludGVyLnByaW50X3VuZXhwZWN0ZWRfcmVz
dWx0cyh1cikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5lbXB0eSgpKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUob3V0LmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJy
KQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKIAogICAgICAgICBwcmludGVyLCBlcnIs
IG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ3VuZXhwZWN0ZWQtcmVzdWx0cydd
KQogCiAgICAgICAgICMgdGVzdCBldmVyeXRoaW5nIHJ1bm5pbmcgYXMgZXhwZWN0ZWQKICAgICAg
ICAgdXIgPSBnZXRfdW5leHBlY3RlZF9yZXN1bHRzKGV4cGVjdGVkPVRydWUsIHBhc3Npbmc9RmFs
c2UsIGZsYWt5PUZhbHNlKQogICAgICAgICBwcmludGVyLnByaW50X3VuZXhwZWN0ZWRfcmVzdWx0
cyh1cikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5lbXB0eSgpKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUob3V0LmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQor
ICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKIAogICAgICAgICAjIHRlc3QgZmFpbHVyZXMK
LSAgICAgICAgZXJyLnJlc2V0KCkKLSAgICAgICAgb3V0LnJlc2V0KCkKKyAgICAgICAgcHJpbnRl
ciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICd1bmV4cGVjdGVkLXJl
c3VsdHMnXSkKICAgICAgICAgdXIgPSBnZXRfdW5leHBlY3RlZF9yZXN1bHRzKGV4cGVjdGVkPUZh
bHNlLCBwYXNzaW5nPUZhbHNlLCBmbGFreT1GYWxzZSkKICAgICAgICAgcHJpbnRlci5wcmludF91
bmV4cGVjdGVkX3Jlc3VsdHModXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIuZW1wdHko
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFbXB0eShlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkob3V0KQogCiAgICAg
ICAgICMgdGVzdCB1bmV4cGVjdGVkIGZsYWt5Ci0gICAgICAgIGVyci5yZXNldCgpCi0gICAgICAg
IG91dC5yZXNldCgpCisgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRl
cihbJy0tcHJpbnQnLCAndW5leHBlY3RlZC1yZXN1bHRzJ10pCiAgICAgICAgIHVyID0gZ2V0X3Vu
ZXhwZWN0ZWRfcmVzdWx0cyhleHBlY3RlZD1GYWxzZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9VHJ1
ZSkKICAgICAgICAgcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModXIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShlcnIuZW1wdHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShv
dXQuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCisgICAgICAgIHNlbGYu
YXNzZXJ0Tm90RW1wdHkob3V0KQogCi0gICAgICAgIGVyci5yZXNldCgpCi0gICAgICAgIG91dC5y
ZXNldCgpCiAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0t
cHJpbnQnLCAnZXZlcnl0aGluZyddKQogICAgICAgICB1ciA9IGdldF91bmV4cGVjdGVkX3Jlc3Vs
dHMoZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9RmFsc2UsIGZsYWt5PUZhbHNlKQogICAgICAgICBw
cmludGVyLnByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyh1cikKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGVyci5lbXB0eSgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dC5lbXB0eSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVtcHR5KGVycikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0
eShvdXQpCiAKICAgICAgICAgZXhwZWN0YXRpb25zID0gIiIiCiBCVUdYIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvY3Jhc2guaHRtbCA9IENSQVNICiBCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91
dC5odG1sID0gVElNRU9VVAogIiIiCi0gICAgICAgIGVyci5yZXNldCgpCi0gICAgICAgIG91dC5y
ZXNldCgpCisgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0t
cHJpbnQnLCAndW5leHBlY3RlZC1yZXN1bHRzJ10pCiAgICAgICAgIHVyID0gZ2V0X3VuZXhwZWN0
ZWRfcmVzdWx0cyhleHBlY3RlZD1GYWxzZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2UpCiAg
ICAgICAgIHByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHVyKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoZXJyLmVtcHR5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVt
cHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQorICAgICAgICBzZWxmLmFzc2Vy
dE5vdEVtcHR5KG91dCkKIAotICAgICAgICBlcnIucmVzZXQoKQotICAgICAgICBvdXQucmVzZXQo
KQorICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50
JywgJ3VuZXhwZWN0ZWQtcmVzdWx0cyddKQogICAgICAgICB1ciA9IGdldF91bmV4cGVjdGVkX3Jl
c3VsdHMoZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9VHJ1ZSwgZmxha3k9RmFsc2UpCiAgICAgICAg
IHByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHVyKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoZXJyLmVtcHR5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVtcHR5KCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVt
cHR5KG91dCkKIAogICAgICAgICAjIFRlc3QgaGFuZGxpbmcgb2YgLS12ZXJib3NlIGFzIHdlbGwu
Ci0gICAgICAgIGVyci5yZXNldCgpCi0gICAgICAgIG91dC5yZXNldCgpCiAgICAgICAgIHByaW50
ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tdmVyYm9zZSddKQogICAgICAgICB1
ciA9IGdldF91bmV4cGVjdGVkX3Jlc3VsdHMoZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9RmFsc2Us
IGZsYWt5PUZhbHNlKQogICAgICAgICBwcmludGVyLnByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyh1
cikKICAgICAgICAgIyBGSVhNRTogZGVidWcgb3V0cHV0IGZyb20gdGhlIHBvcnQgYW5kIHNjbSBv
YmplY3RzIG1heSBvciBtYXkgbm90IGdvCiAgICAgICAgICMgdG8gc3RkZXJyLCBzbyB0aGVyZSdz
IG5vIHBvaW50IGluIHRlc3RpbmcgaXRzIGNvbnRlbnRzIGhlcmUuCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uob3V0LmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkob3V0KQog
CiAgICAgZGVmIHRlc3RfcHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzX2J1aWxkYm90KHNlbGYpOgog
ICAgICAgICAjIEZJWE1FOiBUZXN0IHRoYXQgcHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKCkgcHJv
ZHVjZXMgdGhlIHByaW50ZXIgdGhlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0
LnB5CmluZGV4IDdhMDQ3OTZmOWRiNTJiNzdjNDU0MGRiMGE1YTJhMTcxMTg0OWQ2OTYuLmUxOTQw
NzJjM2YzYzk3YWExMzg3ODE3MWQwMWE5NTNjMGJkMWQ0NDAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX3VuaXR0ZXN0LnB5CkBAIC0zMyw3ICszMyw2IEBAIGltcG9ydCBTdHJpbmdJTwog
aW1wb3J0IGpzb24KIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBv
cnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1v
Y2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9y
dCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKQEAgLTQ0LDYgKzQzLDkgQEAgZnJvbSB3ZWJraXRweS5w
ZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdHNydW5uZXIgaW1wb3J0IFBlcmZUZXN0c1J1bm5lcgog
CiAKIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0V3Jp
dHRlbihzZWxmLCBzdHJlYW0sIGNvbnRlbnRzKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
c3RyZWFtLmJ1Zmxpc3QsIGNvbnRlbnRzKQorCiAgICAgY2xhc3MgVGVzdERyaXZlcjoKICAgICAg
ICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGRyaXZlcl9pbnB1dCk6CiAgICAgICAgICAgICB0ZXh0ID0g
JycKQEAgLTEwOCw4ICsxMTAsOCBAQCBtYXggMTEyMAogICAgICAgICAgICAgIiIiZG8gbm90aGlu
ZyIiIgogCiAgICAgZGVmIGNyZWF0ZV9ydW5uZXIoc2VsZiwgYnVpbGRib3Rfb3V0cHV0PU5vbmUs
IGFyZ3M9W10sIHJlZ3VsYXJfb3V0cHV0PU5vbmUsIGRyaXZlcl9jbGFzcz1UZXN0RHJpdmVyKToK
LSAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYnVpbGRib3Rfb3V0cHV0IG9yIGFycmF5X3N0cmVh
bS5BcnJheVN0cmVhbSgpCi0gICAgICAgIHJlZ3VsYXJfb3V0cHV0ID0gcmVndWxhcl9vdXRwdXQg
b3IgYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0g
YnVpbGRib3Rfb3V0cHV0IG9yIFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAgICAgICAgcmVndWxhcl9v
dXRwdXQgPSByZWd1bGFyX291dHB1dCBvciBTdHJpbmdJTy5TdHJpbmdJTygpCiAKICAgICAgICAg
b3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBQZXJmVGVzdHNSdW5uZXIuX3BhcnNlX2FyZ3MoYXJncykK
ICAgICAgICAgdGVzdF9wb3J0ID0gVGVzdFBvcnQoaG9zdD1Nb2NrSG9zdCgpLCBvcHRpb25zPW9w
dGlvbnMpCkBAIC0xNDUsMTUgKzE0NywxNCBAQCBtYXggMTEyMAogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHNlbGYucnVuX3Rlc3QoJ2NyYXNoLmh0bWwnKSkKIAogICAgIGRlZiB0ZXN0X3J1bl90
ZXN0X3NldChzZWxmKToKLSAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFy
cmF5U3RyZWFtKCkKKyAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8o
KQogICAgICAgICBydW5uZXIgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYnVpbGRib3Rfb3V0cHV0KQog
ICAgICAgICBkaXJuYW1lID0gcnVubmVyLl9iYXNlX3BhdGggKyAnL2luc3BlY3Rvci8nCiAgICAg
ICAgIHRlc3RzID0gW2Rpcm5hbWUgKyAncGFzcy5odG1sJywgZGlybmFtZSArICdzaWxlbnQuaHRt
bCcsIGRpcm5hbWUgKyAnZmFpbGVkLmh0bWwnLAogICAgICAgICAgICAgZGlybmFtZSArICd0b25n
dWV5Lmh0bWwnLCBkaXJuYW1lICsgJ3RpbWVvdXQuaHRtbCcsIGRpcm5hbWUgKyAnY3Jhc2guaHRt
bCddCiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gcnVubmVyLl9ydW5fdGVzdHNf
c2V0KHRlc3RzLCBydW5uZXIuX3BvcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5leHBl
Y3RlZF9yZXN1bHRfY291bnQsIGxlbih0ZXN0cykgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihidWlsZGJvdF9vdXRwdXQuZ2V0KCkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkYm90X291dHB1dC5nZXQoKVswXSwgJ1JFU1VMVCBncm91cF9uYW1lOiB0ZXN0X25h
bWU9IDQyIG1zXG4nKQorICAgICAgICBzZWxmLmFzc2VydFdyaXR0ZW4oYnVpbGRib3Rfb3V0cHV0
LCBbJ1JFU1VMVCBncm91cF9uYW1lOiB0ZXN0X25hbWU9IDQyIG1zXG4nXSkKIAogICAgIGRlZiB0
ZXN0X3J1bl90ZXN0X3NldF9raWxsc19kcnRfcGVyX3J1bihzZWxmKToKIApAQCAtMTYzLDcgKzE2
NCw3IEBAIG1heCAxMTIwCiAgICAgICAgICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgICAg
ICAgICBUZXN0RHJpdmVyV2l0aFN0b3BDb3VudC5zdG9wX2NvdW50ICs9IDEKIAotICAgICAgICBi
dWlsZGJvdF9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQorICAgICAgICBidWls
ZGJvdF9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCiAgICAgICAgIHJ1bm5lciA9IHNlbGYu
Y3JlYXRlX3J1bm5lcihidWlsZGJvdF9vdXRwdXQsIGRyaXZlcl9jbGFzcz1UZXN0RHJpdmVyV2l0
aFN0b3BDb3VudCkKIAogICAgICAgICBkaXJuYW1lID0gcnVubmVyLl9iYXNlX3BhdGggKyAnL2lu
c3BlY3Rvci8nCkBAIC0xODAsNyArMTgxLDcgQEAgbWF4IDExMjAKICAgICAgICAgICAgIGRlZiBz
dGFydChzZWxmKToKICAgICAgICAgICAgICAgICBUZXN0RHJpdmVyV2l0aFN0YXJ0Q291bnQuc3Rh
cnRfY291bnQgKz0gMQogCi0gICAgICAgIGJ1aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5B
cnJheVN0cmVhbSgpCisgICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lP
KCkKICAgICAgICAgcnVubmVyID0gc2VsZi5jcmVhdGVfcnVubmVyKGJ1aWxkYm90X291dHB1dCwg
YXJncz1bIi0tcGF1c2UtYmVmb3JlLXRlc3RpbmciXSwgZHJpdmVyX2NsYXNzPVRlc3REcml2ZXJX
aXRoU3RhcnRDb3VudCkKIAogICAgICAgICBkaXJuYW1lID0gcnVubmVyLl9iYXNlX3BhdGggKyAn
L2luc3BlY3Rvci8nCkBAIC0xOTcsMjcgKzE5OCwyNiBAQCBtYXggMTEyMAogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsb2dzLCAiUnVubmluZyBpbnNwZWN0b3IvcGFzcy5odG1sICgxIG9m
IDEpXG5cbiIpCiAKICAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXRfZm9yX3BhcnNlcl90ZXN0cyhz
ZWxmKToKLSAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFt
KCkKKyAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAgICAg
ICBydW5uZXIgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYnVpbGRib3Rfb3V0cHV0KQogICAgICAgICB0
ZXN0cyA9IFtydW5uZXIuX2Jhc2VfcGF0aCArICcvQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBw
ZXIuaHRtbCcsIHJ1bm5lci5fYmFzZV9wYXRoICsgJy9QYXJzZXIvc29tZS1wYXJzZXIuaHRtbCdd
CiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gcnVubmVyLl9ydW5fdGVzdHNfc2V0
KHRlc3RzLCBydW5uZXIuX3BvcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5leHBlY3Rl
ZF9yZXN1bHRfY291bnQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0
cHV0LmdldCgpWzBdLCAnUkVTVUxUIEJpbmRpbmdzOiBldmVudC10YXJnZXQtd3JhcHBlcj0gMTQ4
OS4wNSBtc1xuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGJvdF9vdXRwdXQuZ2V0
KClbMV0sICdtZWRpYW49IDE0ODcuMCBtcywgc3RkZXY9IDE0LjQ2IG1zLCBtaW49IDE0NzEuMCBt
cywgbWF4PSAxNTEwLjAgbXNcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rf
b3V0cHV0LmdldCgpWzJdLCAnUkVTVUxUIFBhcnNlcjogc29tZS1wYXJzZXI9IDExMDAuMCBtc1xu
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGJvdF9vdXRwdXQuZ2V0KClbM10sICdt
ZWRpYW49IDExMDEuMCBtcywgc3RkZXY9IDExLjAgbXMsIG1pbj0gMTA4MC4wIG1zLCBtYXg9IDEx
MjAuMCBtc1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRXcml0dGVuKGJ1aWxkYm90X291dHB1dCwg
WydSRVNVTFQgQmluZGluZ3M6IGV2ZW50LXRhcmdldC13cmFwcGVyPSAxNDg5LjA1IG1zXG4nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGlhbj0gMTQ4
Ny4wIG1zLCBzdGRldj0gMTQuNDYgbXMsIG1pbj0gMTQ3MS4wIG1zLCBtYXg9IDE1MTAuMCBtc1xu
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRVNVTFQg
UGFyc2VyOiBzb21lLXBhcnNlcj0gMTEwMC4wIG1zXG4nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGlhbj0gMTEwMS4wIG1zLCBzdGRldj0gMTEuMCBt
cywgbWluPSAxMDgwLjAgbXMsIG1heD0gMTEyMC4wIG1zXG4nXSkKIAogICAgIGRlZiB0ZXN0X3J1
bl90ZXN0X3NldF93aXRoX2pzb25fb3V0cHV0KHNlbGYpOgotICAgICAgICBidWlsZGJvdF9vdXRw
dXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQorICAgICAgICBidWlsZGJvdF9vdXRwdXQg
PSBTdHJpbmdJTy5TdHJpbmdJTygpCiAgICAgICAgIHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5l
cihidWlsZGJvdF9vdXRwdXQsIGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tv
dXQvb3V0cHV0Lmpzb24nXSkKICAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNb
cnVubmVyLl9iYXNlX3BhdGggKyAnL2luc3BlY3Rvci9wYXNzLmh0bWwnXSA9IFRydWUKICAgICAg
ICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbcnVubmVyLl9iYXNlX3BhdGggKyAnL0Jp
bmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwnXSA9IFRydWUKICAgICAgICAgcnVubmVy
Ll90aW1lc3RhbXAgPSAxMjM0NTY3ODkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIu
cnVuKCksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1aWxkYm90X291dHB1dC5n
ZXQoKSksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0cHV0LmdldCgp
WzBdLCAnUkVTVUxUIEJpbmRpbmdzOiBldmVudC10YXJnZXQtd3JhcHBlcj0gMTQ4OS4wNSBtc1xu
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGJvdF9vdXRwdXQuZ2V0KClbMV0sICdt
ZWRpYW49IDE0ODcuMCBtcywgc3RkZXY9IDE0LjQ2IG1zLCBtaW49IDE0NzEuMCBtcywgbWF4PSAx
NTEwLjAgbXNcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0cHV0Lmdl
dCgpWzJdLCAnUkVTVUxUIGdyb3VwX25hbWU6IHRlc3RfbmFtZT0gNDIgbXNcbicpCisgICAgICAg
IHNlbGYuYXNzZXJ0V3JpdHRlbihidWlsZGJvdF9vdXRwdXQsIFsnUkVTVUxUIEJpbmRpbmdzOiBl
dmVudC10YXJnZXQtd3JhcHBlcj0gMTQ4OS4wNSBtc1xuJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpYW49IDE0ODcuMCBtcywgc3RkZXY9IDE0LjQ2
IG1zLCBtaW49IDE0NzEuMCBtcywgbWF4PSAxNTEwLjAgbXNcbicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUkVTVUxUIGdyb3VwX25hbWU6IHRlc3RfbmFt
ZT0gNDIgbXNcbiddKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2FkcyhydW5u
ZXIuX2hvc3QuZmlsZXN5c3RlbS5maWxlc1snL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nXSks
IHsKICAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJyZXN1bHRzIjoKQEAgLTIy
Niw3ICsyMjYsNyBAQCBtYXggMTEyMAogICAgICAgICAgICAgIndlYmtpdC1yZXZpc2lvbiI6IDU2
Nzh9KQogCiAgICAgZGVmIHRlc3RfcnVuX3Rlc3Rfc2V0X3dpdGhfanNvbl9zb3VyY2Uoc2VsZik6
Ci0gICAgICAgIGJ1aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCisg
ICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKICAgICAgICAgcnVu
bmVyID0gc2VsZi5jcmVhdGVfcnVubmVyKGJ1aWxkYm90X291dHB1dCwgYXJncz1bJy0tb3V0cHV0
LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNvbicsCiAgICAgICAgICAgICAnLS1z
b3VyY2UtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L3NvdXJjZS5qc29uJ10pCiAgICAgICAgIHJ1
bm5lci5faG9zdC5maWxlc3lzdGVtLmZpbGVzWycvbW9jay1jaGVja291dC9zb3VyY2UuanNvbidd
ID0gJ3sia2V5IjogInZhbHVlIn0nCkBAIC0yMzQsMTAgKzIzNCw5IEBAIG1heCAxMTIwCiAgICAg
ICAgIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLmZpbGVzW3J1bm5lci5fYmFzZV9wYXRoICsgJy9C
aW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sJ10gPSBUcnVlCiAgICAgICAgIHJ1bm5l
ci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVy
LnJ1bigpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihidWlsZGJvdF9vdXRwdXQu
Z2V0KCkpLCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkYm90X291dHB1dC5nZXQo
KVswXSwgJ1JFU1VMVCBCaW5kaW5nczogZXZlbnQtdGFyZ2V0LXdyYXBwZXI9IDE0ODkuMDUgbXNc
bicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0cHV0LmdldCgpWzFdLCAn
bWVkaWFuPSAxNDg3LjAgbXMsIHN0ZGV2PSAxNC40NiBtcywgbWluPSAxNDcxLjAgbXMsIG1heD0g
MTUxMC4wIG1zXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkYm90X291dHB1dC5n
ZXQoKVsyXSwgJ1JFU1VMVCBncm91cF9uYW1lOiB0ZXN0X25hbWU9IDQyIG1zXG4nKQorICAgICAg
ICBzZWxmLmFzc2VydFdyaXR0ZW4oYnVpbGRib3Rfb3V0cHV0LCBbJ1JFU1VMVCBCaW5kaW5nczog
ZXZlbnQtdGFyZ2V0LXdyYXBwZXI9IDE0ODkuMDUgbXNcbicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVkaWFuPSAxNDg3LjAgbXMsIHN0ZGV2PSAxNC40
NiBtcywgbWluPSAxNDcxLjAgbXMsIG1heD0gMTUxMC4wIG1zXG4nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JFU1VMVCBncm91cF9uYW1lOiB0ZXN0X25h
bWU9IDQyIG1zXG4nXSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMocnVu
bmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10p
LCB7CiAgICAgICAgICAgICAidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVzdWx0cyI6CkBAIC0y
NDcsNyArMjQ2LDcgQEAgbWF4IDExMjAKICAgICAgICAgICAgICJrZXkiOiAidmFsdWUifSkKIAog
ICAgIGRlZiB0ZXN0X3J1bl90ZXN0X3NldF93aXRoX211bHRpcGxlX3JlcG9zaXRvcmllcyhzZWxm
KToKLSAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkK
KyAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAgICAgICBy
dW5uZXIgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYnVpbGRib3Rfb3V0cHV0LCBhcmdzPVsnLS1vdXRw
dXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10pCiAgICAgICAgIHJ1bm5l
ci5faG9zdC5maWxlc3lzdGVtLmZpbGVzW3J1bm5lci5fYmFzZV9wYXRoICsgJy9pbnNwZWN0b3Iv
cGFzcy5odG1sJ10gPSBUcnVlCiAgICAgICAgIHJ1bm5lci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5
CkBAIC0yODQsNyArMjgzLDcgQEAgbWF4IDExMjAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
dW5uZXIucnVuKCksIC0zKQogCiAgICAgZGVmIHRlc3RfdXBsb2FkX2pzb24oc2VsZik6Ci0gICAg
ICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAg
cmVndWxhcl9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCiAgICAgICAgIHJ1bm5lciA9IHNl
bGYuY3JlYXRlX3J1bm5lcihyZWd1bGFyX291dHB1dD1yZWd1bGFyX291dHB1dCkKICAgICAgICAg
cnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L3NvbWUuanNvbidd
ID0gJ3NvbWUgY29udGVudCcKIAo=
</data>
<flag name="review"
          id="129885"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>