<?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>94638</bug_id>
          
          <creation_ts>2012-08-21 15:16:37 -0700</creation_ts>
          <short_desc>Merge TestExpectationSerializer into TestExpectationLine</short_desc>
          <delta_ts>2012-08-22 12:32:08 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89161</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>701170</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-21 15:16:37 -0700</bug_when>
    <thetext>Having a separate class to parse and serialize test expectation doesn&apos;t seem to buy us much.
Just let TestExpectationLine serialize itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701175</commentid>
    <comment_count>1</comment_count>
      <attachid>159778</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-21 15:21:54 -0700</bug_when>
    <thetext>Created attachment 159778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701346</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-08-21 17:16:59 -0700</bug_when>
    <thetext>I thought it was a fairly clean separation of responsibilities. TestExpectationLine is already pretty big. Why do you feel like combining is a good idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701430</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-21 18:17:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I thought it was a fairly clean separation of responsibilities. TestExpectationLine is already pretty big. Why do you feel like combining is a good idea?

TestExpecations has only 3 functions, two of which are one-liner.

The problem is that TestExpectationLine exposes too much of its internal. It basically doesn&apos;t have any encapsulation, and that makes the refactoring to add the support for new format harder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702087</commentid>
    <comment_count>4</comment_count>
      <attachid>159778</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-08-22 11:22:26 -0700</bug_when>
    <thetext>Comment on attachment 159778
Patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702204</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-22 12:32:08 -0700</bug_when>
    <thetext>Committed r126334: &lt;http://trac.webkit.org/changeset/126334&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159778</attachid>
            <date>2012-08-21 15:21:54 -0700</date>
            <delta_ts>2012-08-22 11:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94638-20120821152153.patch</filename>
            <type>text/plain</type>
            <size>36833</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyNjE5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUyIEBACisyMDEyLTA4LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1lcmdlIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIgaW50byBUZXN0RXhwZWN0
YXRpb25MaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NDYzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIGFsbCBtZXRob2RzIGV4Y2VwdCwgbGlzdF90b19zdHJpbmcgd2hpY2ggd2FzIG1vdmVk
IHRvIFRlc3RFeHBlY3RhdGlvbnMKKyAgICAgICAgZnJvbSBUZXN0RXhwZWN0YXRpb25TZXJpYWxp
emVyIHRvIFRlc3RFeHBlY3RhdGlvbkxpbmUgYW5kIHJlbW92ZWQgVGVzdEV4cGVjdGF0aW9uU2Vy
aWFsaXplci4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL3Rlc3RfZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKFRl
c3RFeHBlY3RhdGlvbkVkaXRvclRlc3RzLmFzc2VydF9yZW1vdmVfcm91bmR0cmlwKToKKyAgICAg
ICAgKFRlc3RFeHBlY3RhdGlvbkVkaXRvclRlc3RzLmFzc2VydF91cGRhdGVfcm91bmR0cmlwKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBl
Y3RhdGlvbnMucHk6CisgICAgICAgIChQYXJzZUVycm9yLl9fcmVwcl9fKToKKyAgICAgICAgKFRl
c3RFeHBlY3RhdGlvbkxpbmUpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uTGluZS5jcmVhdGVf
cGFzc2luZ19leHBlY3RhdGlvbik6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25MaW5lLnRvX3N0
cmluZyk6IE1vdmVkIGZyb20gVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci4KKyAgICAgICAgKFRl
c3RFeHBlY3RhdGlvbkxpbmUudG9fY3N2KTogRGl0dG8uCisgICAgICAgIChUZXN0RXhwZWN0YXRp
b25MaW5lLl9zZXJpYWxpemVfcGFyc2VkX2V4cGVjdGF0aW9ucyk6IERpdHRvLgorICAgICAgICAo
VGVzdEV4cGVjdGF0aW9uTGluZS5fc2VyaWFsaXplX3BhcnNlZF9tb2RpZmllcnMpOiBEaXR0by4K
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbkxpbmUuX2Zvcm1hdF9saW5lKToKKyAgICAgICAgKFRl
c3RFeHBlY3RhdGlvbnMucmVtb3ZlX2NvbmZpZ3VyYXRpb25fZnJvbV90ZXN0KToKKyAgICAgICAg
KFRlc3RFeHBlY3RhdGlvbnMucmVtb3ZlX3JlYmFzZWxpbmVkX3Rlc3RzKToKKyAgICAgICAgKFRl
c3RFeHBlY3RhdGlvbnMuYWRkX3NraXBwZWRfdGVzdHMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0
aW9ucyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zLmxpc3RfdG9fc3RyaW5nKTogTW92ZWQg
ZnJvbSBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9u
cy5saXN0X3RvX3N0cmluZy5zZXJpYWxpemUpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9ucy5s
aXN0X3RvX3N0cmluZy5ub25lc19vdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAg
KFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6YXRpb25UZXN0cyk6IFJlbmFtZWQgZnJvbSBUZXN0RXhw
ZWN0YXRpb25TZXJpYWxpemVyVGVzdHMuCisgICAgICAgIChUZXN0RXhwZWN0YXRpb25TZXJpYWxp
emF0aW9uVGVzdHMuX19pbml0X18pOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXph
dGlvblRlc3RzLmFzc2VydF9yb3VuZF90cmlwKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblNl
cmlhbGl6YXRpb25UZXN0cy5hc3NlcnRfbGlzdF9yb3VuZF90cmlwKToKKyAgICAgICAgKFRlc3RF
eHBlY3RhdGlvblNlcmlhbGl6YXRpb25UZXN0cy50ZXN0X3VucGFyc2VkX3RvX3N0cmluZyk6Cisg
ICAgICAgIChUZXN0RXhwZWN0YXRpb25TZXJpYWxpemF0aW9uVGVzdHMudGVzdF91bnBhcnNlZF9s
aXN0X3RvX3N0cmluZyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25TZXJpYWxpemF0aW9uVGVz
dHMudGVzdF9wYXJzZWRfdG9fc3RyaW5nKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblNlcmlh
bGl6YXRpb25UZXN0cy50ZXN0X3NlcmlhbGl6ZV9wYXJzZWRfZXhwZWN0YXRpb25zKToKKyAgICAg
ICAgKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6YXRpb25UZXN0cy50ZXN0X3NlcmlhbGl6ZV9wYXJz
ZWRfbW9kaWZpZXJfc3RyaW5nKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6YXRp
b25UZXN0cy50ZXN0X2Zvcm1hdF9saW5lKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblNlcmlh
bGl6YXRpb25UZXN0cy50ZXN0X3JlY29uc3RpdHV0ZV9vbmx5X3RoZXNlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAo
T3B0aW1pemVFeHBlY3RhdGlvbnMuZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHk6CisgICAgICAgIChQcmludEV4cGVjdGF0aW9ucy5l
eGVjdXRlKToKKyAgICAgICAgKFByaW50RXhwZWN0YXRpb25zLl9mb3JtYXRfbGluZXMpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weToK
KyAgICAgICAgKEdhcmRlbmluZ0V4cGVjdGF0aW9uc1VwZGF0ZXIudXBkYXRlX2V4cGVjdGF0aW9u
cyk6CisKIDIwMTItMDgtMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RvcmUgQ1N0cmluZyBkYXRhIGluIHRoZSBDU3RyaW5nQnVmZmVyIHRvIGF2
b2lkIHRoZSBkb3VibGUgaW5kaXJlY3Rpb24KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy90ZXN0X2V4cGVjdGF0aW9uc19lZGl0b3JfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDEyNjE4MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3Rlc3RfZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtODgsNyArODgsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25FZGl0b3JUZXN0cyh1bml0dGVz
CiAgICAgICAgIGVkaXRvciA9IFRlc3RFeHBlY3RhdGlvbnNFZGl0b3IoZXhwZWN0YXRpb25fbGlu
ZXMsIE1vY2tCdWdNYW5hZ2VyKCkpCiAgICAgICAgIGVkaXRvci5yZW1vdmVfZXhwZWN0YXRpb24o
dGVzdCwgdGVzdF9jb25maWdfc2V0LCByZW1vdmVfZmxha2VzKQogICAgICAgICBjb252ZXJ0ZXIg
PSBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcihzZWxmLnRlc3RfcG9ydC5hbGxfdGVzdF9jb25m
aWd1cmF0aW9ucygpLCBzZWxmLnRlc3RfcG9ydC5jb25maWd1cmF0aW9uX3NwZWNpZmllcl9tYWNy
b3MoKSkKLSAgICAgICAgcmVzdWx0ID0gVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3Rv
X3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKQorICAgICAgICByZXN1bHQgPSBU
ZXN0RXhwZWN0YXRpb25zLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0
ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWRfc3RyaW5nKQog
CiAgICAgZGVmIGFzc2VydF91cGRhdGVfcm91bmR0cmlwKHNlbGYsIGluX3N0cmluZywgdGVzdCwg
ZXhwZWN0YXRpb25fc2V0LCBleHBlY3RlZF9zdHJpbmcsIGV4cGVjdGVkX3VwZGF0ZV9jb3VudCwg
cmVtb3ZlX2ZsYWtlcz1GYWxzZSwgcGFyc2VkX2J1Z19tb2RpZmllcnM9Tm9uZSwgdGVzdF9jb25m
aWdzPU5vbmUpOgpAQCAtMTAwLDcgKzEwMCw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbkVkaXRv
clRlc3RzKHVuaXR0ZXMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cGRhdGVkX2V4cGVj
dGF0aW9uX2xpbmUgaW4gZXhwZWN0YXRpb25fbGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGxlbih1cGRhdGVkX2V4cGVjdGF0aW9uX2xpbmVzKSwgZXhwZWN0ZWRfdXBkYXRlX2NvdW50
KQogICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcihzZWxmLnRl
c3RfcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpLCBzZWxmLnRlc3RfcG9ydC5jb25maWd1
cmF0aW9uX3NwZWNpZmllcl9tYWNyb3MoKSkKLSAgICAgICAgcmVzdWx0ID0gVGVzdEV4cGVjdGF0
aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVy
KQorICAgICAgICByZXN1bHQgPSBUZXN0RXhwZWN0YXRpb25zLmxpc3RfdG9fc3RyaW5nKGV4cGVj
dGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Vs
dCwgZXhwZWN0ZWRfc3RyaW5nKQogCiAgICAgZGVmIHRlc3RfcmVtb3ZlX2V4cGVjdGF0aW9uKHNl
bGYpOgpAQCAtMTg4LDM1ICsxODgsMzUgQEAgQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQv
YXVkaW8uaHRtbAogICAgICAgICB0ZXN0ID0gImZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0
bWwiCiAKICAgICAgICAgZWRpdG9yLnJlbW92ZV9leHBlY3RhdGlvbih0ZXN0LCBzZXQoW1Rlc3RD
b25maWd1cmF0aW9uKCd4cCcsICd4ODYnLCAncmVsZWFzZScpXSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIubGlzdF90b19zdHJpbmcoZXhwZWN0
YXRpb25fbGluZXMsIGNvbnZlcnRlciksICIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhU
ZXN0RXhwZWN0YXRpb25zLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0
ZXIpLCAiIiIKIEJVR1gxIFhQIERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRt
bCA9IElNQUdFCiBCVUdYMSBWSVNUQSBXSU43IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQu
aHRtbCA9IElNQUdFCiBCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0g
SU1BR0UiIiIpCiAKICAgICAgICAgZWRpdG9yLnJlbW92ZV9leHBlY3RhdGlvbih0ZXN0LCBzZXQo
W1Rlc3RDb25maWd1cmF0aW9uKCd4cCcsICd4ODYnLCAnZGVidWcnKV0pKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4
cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoVGVzdEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29u
dmVydGVyKSwgIiIiCiBCVUdYMSBWSVNUQSBXSU43IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9h
cmQuaHRtbCA9IElNQUdFCiBCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1s
ID0gSU1BR0UiIiIpCiAKICAgICAgICAgZWRpdG9yLnJlbW92ZV9leHBlY3RhdGlvbih0ZXN0LCBz
ZXQoW1Rlc3RDb25maWd1cmF0aW9uKCd2aXN0YScsICd4ODYnLCAnZGVidWcnKSwgVGVzdENvbmZp
Z3VyYXRpb24oJ3dpbjcnLCAneDg2JywgJ3JlbGVhc2UnKV0pKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0
aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVz
dEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVy
KSwgIiIiCiBCVUdYMSBWSVNUQSBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQu
aHRtbCA9IElNQUdFCiBCVUdYMSBXSU43IERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9h
cmQuaHRtbCA9IElNQUdFCiBCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1s
ID0gSU1BR0UiIiIpCiAKICAgICAgICAgZWRpdG9yLnJlbW92ZV9leHBlY3RhdGlvbih0ZXN0LCBz
ZXQoW1Rlc3RDb25maWd1cmF0aW9uKCd2aXN0YScsICd4ODYnLCAnZGVidWcnKSwgVGVzdENvbmZp
Z3VyYXRpb24oJ3Zpc3RhJywgJ3g4NicsICdyZWxlYXNlJyldKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3Rh
dGlvbl9saW5lcywgY29udmVydGVyKSwgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRl
c3RFeHBlY3RhdGlvbnMubGlzdF90b19zdHJpbmcoZXhwZWN0YXRpb25fbGluZXMsIGNvbnZlcnRl
ciksICIiIgogQlVHWDEgV0lONyBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0
bWwgPSBJTUFHRQogQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElN
QUdFIiIiKQogCiAgICAgICAgIGVkaXRvci5yZW1vdmVfZXhwZWN0YXRpb24odGVzdCwgc2V0KHNl
bGYudGVzdF9wb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVj
dGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
VGVzdEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVy
dGVyKSwgIiIiCiBCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1B
R0UiIiIpCiAKICAgICAgICAgdGVzdCA9ICJmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sIgog
CiAgICAgICAgIGVkaXRvci5yZW1vdmVfZXhwZWN0YXRpb24odGVzdCwgc2V0KHNlbGYudGVzdF9w
b3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xp
bmVzLCBjb252ZXJ0ZXIpLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4cGVj
dGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKSwgIiIp
CiAKICAgICBkZWYgdGVzdF91cGRhdGVfZXhwZWN0YXRpb24oc2VsZik6CiAgICAgICAgIHNlbGYu
YXNzZXJ0X3VwZGF0ZV9yb3VuZHRyaXAoIiIiCkBAIC0zMDYsMzUgKzMwNiwzNSBAQCBCVUdYMiBX
SU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sCiAgICAgICAgIHRlc3QgPSAiZmFpbHVy
ZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCIKIAogICAgICAgICBlZGl0b3IudXBkYXRlX2V4cGVj
dGF0aW9uKHRlc3QsIHNldChbVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdyZWxlYXNl
JyldKSwgc2V0KFtJTUFHRV9QTFVTX1RFWFRdKSwgWydCVUdfVVBEQVRFMSddKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5n
KGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoVGVzdEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywg
Y29udmVydGVyKSwgIiIiCiBCVUdYMSBYUCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLmh0bWwgPSBJTUFHRQogQlVHWDEgVklTVEEgV0lONyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tl
eWJvYXJkLmh0bWwgPSBJTUFHRQogQlVHX1VQREFURTEgWFAgUkVMRUFTRSA6IGZhaWx1cmVzL2V4
cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRStURVhUCiBCVUdYMiBXSU4gOiBmYWlsdXJlcy9l
eHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCiAKICAgICAgICAgZWRpdG9yLnVwZGF0ZV9l
eHBlY3RhdGlvbih0ZXN0LCBzZXQoW1Rlc3RDb25maWd1cmF0aW9uKCd4cCcsICd4ODYnLCAnZGVi
dWcnKV0pLCBzZXQoW1RFWFRdKSwgWydCVUdfVVBEQVRFMiddKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0
aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVz
dEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVy
KSwgIiIiCiBCVUdYMSBWSVNUQSBXSU43IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRt
bCA9IElNQUdFCiBCVUdfVVBEQVRFMiBYUCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLmh0bWwgPSBURVhUCiBCVUdfVVBEQVRFMSBYUCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFK1RFWFQKIEJVR1gyIFdJTiA6IGZhaWx1cmVzL2V4cGVj
dGVkL2F1ZGlvLmh0bWwgPSBJTUFHRSIiIikKIAogICAgICAgICBlZGl0b3IudXBkYXRlX2V4cGVj
dGF0aW9uKHRlc3QsIHNlbGYuV0lOX1JFTEVBU0VfQ09ORklHUywgc2V0KFtDUkFTSF0pLCBbJ0JV
R19VUERBVEUzJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RFeHBlY3RhdGlvblNl
cmlhbGl6ZXIubGlzdF90b19zdHJpbmcoZXhwZWN0YXRpb25fbGluZXMsIGNvbnZlcnRlciksICIi
IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0RXhwZWN0YXRpb25zLmxpc3RfdG9fc3Ry
aW5nKGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKIEJVR1gxIFZJU1RBIFdJTjcg
REVCVUcgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKIEJVR19VUERB
VEUyIFhQIERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IFRFWFQKIEJV
R19VUERBVEUzIFdJTiBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9
IENSQVNICiBCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0Ui
IiIpCiAKICAgICAgICAgZWRpdG9yLnVwZGF0ZV9leHBlY3RhdGlvbih0ZXN0LCBzZWxmLlJFTEVB
U0VfQ09ORklHUywgc2V0KFtJTUFHRV9QTFVTX1RFWFRdKSwgWydCVUdfVVBEQVRFNCddKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9f
c3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9s
aW5lcywgY29udmVydGVyKSwgIiIiCiBCVUdYMSBWSVNUQSBXSU43IERFQlVHIDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCiBCVUdfVVBEQVRFMiBYUCBERUJVRyA6IGZh
aWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBURVhUCiBCVUdfVVBEQVRFNCBSRUxFQVNF
IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFK1RFWFQKIEJVR1gyIFdJ
TiA6IGZhaWx1cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwgPSBJTUFHRSIiIikKIAogICAgICAgICBl
ZGl0b3IudXBkYXRlX2V4cGVjdGF0aW9uKHRlc3QsIHNldChzZWxmLnRlc3RfcG9ydC5hbGxfdGVz
dF9jb25maWd1cmF0aW9ucygpKSwgc2V0KFtUSU1FT1VUXSksIFsnQlVHX1VQREFURTUnXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3Rv
X3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKSwgIiIiCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKFRlc3RFeHBlY3RhdGlvbnMubGlzdF90b19zdHJpbmcoZXhwZWN0YXRpb25f
bGluZXMsIGNvbnZlcnRlciksICIiIgogQlVHX1VQREFURTUgOiBmYWlsdXJlcy9leHBlY3RlZC9r
ZXlib2FyZC5odG1sID0gVElNRU9VVAogQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVk
aW8uaHRtbCA9IElNQUdFIiIiKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5
CShyZXZpc2lvbiAxMjYxODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTYxLDgzICs2
MSw2IEBAIGNsYXNzIFBhcnNlRXJyb3IoRXhjZXB0aW9uKToKICAgICAgICAgcmV0dXJuICdQYXJz
ZUVycm9yKHdhcm5pbmdzPSVzKScgJSBzZWxmLndhcm5pbmdzCiAKIAotY2xhc3MgVGVzdEV4cGVj
dGF0aW9uU2VyaWFsaXplcihvYmplY3QpOgotICAgICIiIlByb3ZpZGVzIG1lYW5zIG9mIHNlcmlh
bGl6aW5nIFRlc3RFeHBlY3RhdGlvbkxpbmUgaW5zdGFuY2VzLiIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyPU5vbmUpOgotICAgICAgICBzZWxm
Ll90ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyID0gdGVzdF9jb25maWd1cmF0aW9uX2NvbnZl
cnRlcgotICAgICAgICBzZWxmLl9wYXJzZWRfZXhwZWN0YXRpb25fdG9fc3RyaW5nID0gZGljdChb
W3BhcnNlZF9leHBlY3RhdGlvbiwgZXhwZWN0YXRpb25fc3RyaW5nXSBmb3IgZXhwZWN0YXRpb25f
c3RyaW5nLCBwYXJzZWRfZXhwZWN0YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9ucy5FWFBFQ1RBVElP
TlMuaXRlbXMoKV0pCi0KLSAgICBkZWYgdG9fc3RyaW5nKHNlbGYsIGV4cGVjdGF0aW9uX2xpbmUs
IGluY2x1ZGVfbW9kaWZpZXJzPVRydWUsIGluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUsIGluY2x1
ZGVfY29tbWVudD1UcnVlKToKLSAgICAgICAgaWYgZXhwZWN0YXRpb25fbGluZS5pc19pbnZhbGlk
KCk6Ci0gICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25fbGluZS5vcmlnaW5hbF9zdHJpbmcg
b3IgJycKLQotICAgICAgICBpZiBleHBlY3RhdGlvbl9saW5lLm5hbWUgaXMgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybiAnJyBpZiBleHBlY3RhdGlvbl9saW5lLmNvbW1lbnQgaXMgTm9uZSBlbHNl
ICIvLyVzIiAlIGV4cGVjdGF0aW9uX2xpbmUuY29tbWVudAotCi0gICAgICAgIGlmIHNlbGYuX3Rl
c3RfY29uZmlndXJhdGlvbl9jb252ZXJ0ZXIgYW5kIGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1
Z19tb2RpZmllcnM6Ci0gICAgICAgICAgICBzcGVjaWZpZXJzX2xpc3QgPSBzZWxmLl90ZXN0X2Nv
bmZpZ3VyYXRpb25fY29udmVydGVyLnRvX3NwZWNpZmllcnNfbGlzdChleHBlY3RhdGlvbl9saW5l
Lm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zKQotICAgICAgICAgICAgcmVzdWx0ID0gW10KLSAgICAg
ICAgICAgIGZvciBzcGVjaWZpZXJzIGluIHNwZWNpZmllcnNfbGlzdDoKLSAgICAgICAgICAgICAg
ICBtb2RpZmllcnMgPSBzZWxmLl9wYXJzZWRfbW9kaWZpZXJfc3RyaW5nKGV4cGVjdGF0aW9uX2xp
bmUsIHNwZWNpZmllcnMpCi0gICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fcGFy
c2VkX2V4cGVjdGF0aW9uc19zdHJpbmcoZXhwZWN0YXRpb25fbGluZSkKLSAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHNlbGYuX2Zvcm1hdF9yZXN1bHQobW9kaWZpZXJzLCBleHBlY3RhdGlv
bl9saW5lLm5hbWUsIGV4cGVjdGF0aW9ucywgZXhwZWN0YXRpb25fbGluZS5jb21tZW50KSkKLSAg
ICAgICAgICAgIHJldHVybiAiXG4iLmpvaW4ocmVzdWx0KSBpZiByZXN1bHQgZWxzZSBOb25lCi0K
LSAgICAgICAgcmV0dXJuIHNlbGYuX2Zvcm1hdF9yZXN1bHQoIiAiLmpvaW4oZXhwZWN0YXRpb25f
bGluZS5tb2RpZmllcnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbl9saW5lLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
Ii5qb2luKGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5jb21tZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX21vZGlmaWVycywgaW5jbHVkZV9leHBlY3Rh
dGlvbnMsIGluY2x1ZGVfY29tbWVudCkKLQotICAgIGRlZiB0b19jc3Yoc2VsZiwgZXhwZWN0YXRp
b25fbGluZSk6Ci0gICAgICAgICMgTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBpbmNsdWRlIHRoZSBj
b21tZW50cy4KLSAgICAgICAgcmV0dXJuICclcywlcywlcycgJSAoZXhwZWN0YXRpb25fbGluZS5u
YW1lLCAnICcuam9pbihleHBlY3RhdGlvbl9saW5lLm1vZGlmaWVycyksICcgJy5qb2luKGV4cGVj
dGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zKSkKLQotICAgIGRlZiBfcGFyc2VkX2V4cGVjdGF0aW9u
c19zdHJpbmcoc2VsZiwgZXhwZWN0YXRpb25fbGluZSk6Ci0gICAgICAgIHJlc3VsdCA9IFtdCi0g
ICAgICAgIGZvciBpbmRleCBpbiBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OX09SREVSOgot
ICAgICAgICAgICAgaWYgaW5kZXggaW4gZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfZXhwZWN0YXRp
b25zOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc2VsZi5fcGFyc2VkX2V4cGVjdGF0
aW9uX3RvX3N0cmluZ1tpbmRleF0pCi0gICAgICAgIHJldHVybiAnICcuam9pbihyZXN1bHQpCi0K
LSAgICBkZWYgX3BhcnNlZF9tb2RpZmllcl9zdHJpbmcoc2VsZiwgZXhwZWN0YXRpb25fbGluZSwg
c3BlY2lmaWVycyk6Ci0gICAgICAgIGFzc2VydChzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb25fY29u
dmVydGVyKQotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICBpZiBleHBlY3RhdGlvbl9saW5l
LnBhcnNlZF9idWdfbW9kaWZpZXJzOgotICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChzb3J0ZWQo
ZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfYnVnX21vZGlmaWVycykpCi0gICAgICAgIHJlc3VsdC5l
eHRlbmQoc29ydGVkKGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX21vZGlmaWVycykpCi0gICAgICAg
IHJlc3VsdC5leHRlbmQoc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uX2NvbnZlcnRlci5zcGVjaWZp
ZXJfc29ydGVyKCkuc29ydF9zcGVjaWZpZXJzKHNwZWNpZmllcnMpKQotICAgICAgICByZXR1cm4g
JyAnLmpvaW4ocmVzdWx0KQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9mb3JtYXRfcmVz
dWx0KGNscywgbW9kaWZpZXJzLCBuYW1lLCBleHBlY3RhdGlvbnMsIGNvbW1lbnQsIGluY2x1ZGVf
bW9kaWZpZXJzPVRydWUsIGluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUsIGluY2x1ZGVfY29tbWVu
dD1UcnVlKToKLSAgICAgICAgcmVzdWx0ID0gJycKLSAgICAgICAgaWYgaW5jbHVkZV9tb2RpZmll
cnM6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJyVzIDogJyAlIG1vZGlmaWVycy51cHBlcigpCi0g
ICAgICAgIHJlc3VsdCArPSBuYW1lCi0gICAgICAgIGlmIGluY2x1ZGVfZXhwZWN0YXRpb25zOgot
ICAgICAgICAgICAgcmVzdWx0ICs9ICcgPSAlcycgJSBleHBlY3RhdGlvbnMudXBwZXIoKQotICAg
ICAgICBpZiBpbmNsdWRlX2NvbW1lbnQgYW5kIGNvbW1lbnQgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICByZXN1bHQgKz0gIiAvLyVzIiAlIGNvbW1lbnQKLSAgICAgICAgcmV0dXJuIHJlc3VsdAot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGxpc3RfdG9fc3RyaW5nKGNscywgZXhwZWN0YXRp
b25fbGluZXMsIHRlc3RfY29uZmlndXJhdGlvbl9jb252ZXJ0ZXI9Tm9uZSwgcmVjb25zdGl0dXRl
X29ubHlfdGhlc2U9Tm9uZSk6Ci0gICAgICAgIHNlcmlhbGl6ZXIgPSBjbHModGVzdF9jb25maWd1
cmF0aW9uX2NvbnZlcnRlcikKLQotICAgICAgICBkZWYgc2VyaWFsaXplKGV4cGVjdGF0aW9uX2xp
bmUpOgotICAgICAgICAgICAgIyBJZiByZWNvbnN0aXR1dGVfb25seV90aGVzZSBpcyBhbiBlbXB0
eSBsaXN0LCB3ZSB3YW50IHRvIHJldHVybiBvcmlnaW5hbF9zdHJpbmcuCi0gICAgICAgICAgICAj
IFNvIHdlIG5lZWQgdG8gY29tcGFyZSByZWNvbnN0aXR1dGVfb25seV90aGVzZSB0byBOb25lLCBu
b3QganVzdCBjaGVjayBpZiBpdCdzIGZhbHNleS4KLSAgICAgICAgICAgIGlmIHJlY29uc3RpdHV0
ZV9vbmx5X3RoZXNlIGlzIE5vbmUgb3IgZXhwZWN0YXRpb25fbGluZSBpbiByZWNvbnN0aXR1dGVf
b25seV90aGVzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplci50b19zdHJpbmco
ZXhwZWN0YXRpb25fbGluZSkKLSAgICAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbl9saW5lLm9y
aWdpbmFsX3N0cmluZwotCi0gICAgICAgIGRlZiBub25lc19vdXQoZXhwZWN0YXRpb25fbGluZSk6
Ci0gICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25fbGluZSBpcyBub3QgTm9uZQotCi0gICAg
ICAgIHJldHVybiAiXG4iLmpvaW4oZmlsdGVyKG5vbmVzX291dCwgbWFwKHNlcmlhbGl6ZSwgZXhw
ZWN0YXRpb25fbGluZXMpKSkKLQotCiBjbGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXIob2JqZWN0
KToKICAgICAiIiJQcm92aWRlcyBwYXJzaW5nIGZhY2lsaXRpZXMgZm9yIGxpbmVzIGluIHRoZSB0
ZXN0X2V4cGVjdGF0aW9uLnR4dCBmaWxlLiIiIgogCkBAIC0zNTIsOCArMjc1LDggQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uTGluZShvYmplY3QpOgogICAgIGRlZiBpc19mbGFreShzZWxmKToKICAg
ICAgICAgcmV0dXJuIGxlbihzZWxmLnBhcnNlZF9leHBlY3RhdGlvbnMpID4gMQogCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIGNyZWF0ZV9wYXNzaW5nX2V4cGVjdGF0aW9uKGNscywgdGVzdCk6
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjcmVhdGVfcGFzc2luZ19leHBlY3RhdGlvbih0
ZXN0KToKICAgICAgICAgZXhwZWN0YXRpb25fbGluZSA9IFRlc3RFeHBlY3RhdGlvbkxpbmUoKQog
ICAgICAgICBleHBlY3RhdGlvbl9saW5lLm5hbWUgPSB0ZXN0CiAgICAgICAgIGV4cGVjdGF0aW9u
X2xpbmUucGF0aCA9IHRlc3QKQEAgLTM2Miw2ICsyODUsNTggQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uTGluZShvYmplY3QpOgogICAgICAgICBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX3Rlc3Rz
ID0gW3Rlc3RdCiAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbl9saW5lCiAKKyAgICBkZWYgdG9f
c3RyaW5nKHNlbGYsIHRlc3RfY29uZmlndXJhdGlvbl9jb252ZXJ0ZXIsIGluY2x1ZGVfbW9kaWZp
ZXJzPVRydWUsIGluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUsIGluY2x1ZGVfY29tbWVudD1UcnVl
KToKKyAgICAgICAgcGFyc2VkX2V4cGVjdGF0aW9uX3RvX3N0cmluZyA9IGRpY3QoW1twYXJzZWRf
ZXhwZWN0YXRpb24sIGV4cGVjdGF0aW9uX3N0cmluZ10gZm9yIGV4cGVjdGF0aW9uX3N0cmluZywg
cGFyc2VkX2V4cGVjdGF0aW9uIGluIFRlc3RFeHBlY3RhdGlvbnMuRVhQRUNUQVRJT05TLml0ZW1z
KCldKQorCisgICAgICAgIGlmIHNlbGYuaXNfaW52YWxpZCgpOgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYub3JpZ2luYWxfc3RyaW5nIG9yICcnCisKKyAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5v
bmU6CisgICAgICAgICAgICByZXR1cm4gJycgaWYgc2VsZi5jb21tZW50IGlzIE5vbmUgZWxzZSAi
Ly8lcyIgJSBzZWxmLmNvbW1lbnQKKworICAgICAgICBpZiB0ZXN0X2NvbmZpZ3VyYXRpb25fY29u
dmVydGVyIGFuZCBzZWxmLnBhcnNlZF9idWdfbW9kaWZpZXJzOgorICAgICAgICAgICAgc3BlY2lm
aWVyc19saXN0ID0gdGVzdF9jb25maWd1cmF0aW9uX2NvbnZlcnRlci50b19zcGVjaWZpZXJzX2xp
c3Qoc2VsZi5tYXRjaGluZ19jb25maWd1cmF0aW9ucykKKyAgICAgICAgICAgIHJlc3VsdCA9IFtd
CisgICAgICAgICAgICBmb3Igc3BlY2lmaWVycyBpbiBzcGVjaWZpZXJzX2xpc3Q6CisgICAgICAg
ICAgICAgICAgbW9kaWZpZXJzID0gc2VsZi5fc2VyaWFsaXplX3BhcnNlZF9tb2RpZmllcnModGVz
dF9jb25maWd1cmF0aW9uX2NvbnZlcnRlciwgc3BlY2lmaWVycykKKyAgICAgICAgICAgICAgICBl
eHBlY3RhdGlvbnMgPSBzZWxmLl9zZXJpYWxpemVfcGFyc2VkX2V4cGVjdGF0aW9ucyhwYXJzZWRf
ZXhwZWN0YXRpb25fdG9fc3RyaW5nKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc2Vs
Zi5fZm9ybWF0X2xpbmUobW9kaWZpZXJzLCBzZWxmLm5hbWUsIGV4cGVjdGF0aW9ucywgc2VsZi5j
b21tZW50KSkKKyAgICAgICAgICAgIHJldHVybiAiXG4iLmpvaW4ocmVzdWx0KSBpZiByZXN1bHQg
ZWxzZSBOb25lCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Zvcm1hdF9saW5lKCIgIi5qb2luKHNl
bGYubW9kaWZpZXJzKSwgc2VsZi5uYW1lLCAiICIuam9pbihzZWxmLmV4cGVjdGF0aW9ucyksIHNl
bGYuY29tbWVudCwKKyAgICAgICAgICAgIGluY2x1ZGVfbW9kaWZpZXJzLCBpbmNsdWRlX2V4cGVj
dGF0aW9ucywgaW5jbHVkZV9jb21tZW50KQorCisgICAgZGVmIHRvX2NzdihzZWxmKToKKyAgICAg
ICAgIyBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IGluY2x1ZGUgdGhlIGNvbW1lbnRzLgorICAgICAg
ICByZXR1cm4gJyVzLCVzLCVzJyAlIChzZWxmLm5hbWUsICcgJy5qb2luKHNlbGYubW9kaWZpZXJz
KSwgJyAnLmpvaW4oc2VsZi5leHBlY3RhdGlvbnMpKQorCisgICAgZGVmIF9zZXJpYWxpemVfcGFy
c2VkX2V4cGVjdGF0aW9ucyhzZWxmLCBwYXJzZWRfZXhwZWN0YXRpb25fdG9fc3RyaW5nKToKKyAg
ICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIGluZGV4IGluIFRlc3RFeHBlY3RhdGlvbnMu
RVhQRUNUQVRJT05fT1JERVI6CisgICAgICAgICAgICBpZiBpbmRleCBpbiBzZWxmLnBhcnNlZF9l
eHBlY3RhdGlvbnM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJzZWRfZXhwZWN0
YXRpb25fdG9fc3RyaW5nW2luZGV4XSkKKyAgICAgICAgcmV0dXJuICcgJy5qb2luKHJlc3VsdCkK
KworICAgIGRlZiBfc2VyaWFsaXplX3BhcnNlZF9tb2RpZmllcnMoc2VsZiwgdGVzdF9jb25maWd1
cmF0aW9uX2NvbnZlcnRlciwgc3BlY2lmaWVycyk6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAg
ICAgIGlmIHNlbGYucGFyc2VkX2J1Z19tb2RpZmllcnM6CisgICAgICAgICAgICByZXN1bHQuZXh0
ZW5kKHNvcnRlZChzZWxmLnBhcnNlZF9idWdfbW9kaWZpZXJzKSkKKyAgICAgICAgcmVzdWx0LmV4
dGVuZChzb3J0ZWQoc2VsZi5wYXJzZWRfbW9kaWZpZXJzKSkKKyAgICAgICAgcmVzdWx0LmV4dGVu
ZCh0ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyLnNwZWNpZmllcl9zb3J0ZXIoKS5zb3J0X3Nw
ZWNpZmllcnMoc3BlY2lmaWVycykpCisgICAgICAgIHJldHVybiAnICcuam9pbihyZXN1bHQpCisK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9mb3JtYXRfbGluZShtb2RpZmllcnMsIG5hbWUs
IGV4cGVjdGF0aW9ucywgY29tbWVudCwgaW5jbHVkZV9tb2RpZmllcnM9VHJ1ZSwgaW5jbHVkZV9l
eHBlY3RhdGlvbnM9VHJ1ZSwgaW5jbHVkZV9jb21tZW50PVRydWUpOgorICAgICAgICByZXN1bHQg
PSAnJworICAgICAgICBpZiBpbmNsdWRlX21vZGlmaWVyczoKKyAgICAgICAgICAgIHJlc3VsdCAr
PSAnJXMgOiAnICUgbW9kaWZpZXJzLnVwcGVyKCkKKyAgICAgICAgcmVzdWx0ICs9IG5hbWUKKyAg
ICAgICAgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICByZXN1bHQgKz0gJyA9
ICVzJyAlIGV4cGVjdGF0aW9ucy51cHBlcigpCisgICAgICAgIGlmIGluY2x1ZGVfY29tbWVudCBh
bmQgY29tbWVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdCArPSAiIC8vJXMiICUg
Y29tbWVudAorICAgICAgICByZXR1cm4gcmVzdWx0CisKIAogIyBGSVhNRTogUmVmYWN0b3IgQVBJ
IHRvIGJlIGEgcHJvcGVyIENSVUQuCiBjbGFzcyBUZXN0RXhwZWN0YXRpb25zTW9kZWwob2JqZWN0
KToKQEAgLTg0Miw3ICs4MTcsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6CiAg
ICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBleHBlY3RhdGlvbnNfdG9fcmVtb3ZlOgogICAgICAg
ICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLnJlbW92ZShleHBlY3RhdGlvbikKIAotICAgICAgICBy
ZXR1cm4gVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhzZWxmLl9leHBl
Y3RhdGlvbnMsIHNlbGYuX3BhcnNlci5fdGVzdF9jb25maWd1cmF0aW9uX2NvbnZlcnRlciwgbW9k
aWZpZWRfZXhwZWN0YXRpb25zKQorICAgICAgICByZXR1cm4gc2VsZi5saXN0X3RvX3N0cmluZyhz
ZWxmLl9leHBlY3RhdGlvbnMsIHNlbGYuX3BhcnNlci5fdGVzdF9jb25maWd1cmF0aW9uX2NvbnZl
cnRlciwgbW9kaWZpZWRfZXhwZWN0YXRpb25zKQogCiAgICAgZGVmIHJlbW92ZV9yZWJhc2VsaW5l
ZF90ZXN0cyhzZWxmLCBleGNlcHRfdGhlc2VfdGVzdHMsIGZpbGVuYW1lKToKICAgICAgICAgIiIi
UmV0dXJucyBhIGNvcHkgb2YgdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUgZmlsZSB3aXRoIHRoZSB0
ZXN0cyByZW1vdmVkLiIiIgpAQCAtODUyLDcgKzgyNyw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlv
bnMob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICdyZWJhc2VsaW5lJyBpbiBleHBl
Y3RhdGlvbi5wYXJzZWRfbW9kaWZpZXJzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZW5hbWUgPT0gZXhwZWN0YXRpb24uZmlsZW5hbWUpCiAKLSAgICAgICAgcmV0dXJuIFRlc3RFeHBl
Y3RhdGlvblNlcmlhbGl6ZXIubGlzdF90b19zdHJpbmcoZmlsdGVyKHdpdGhvdXRfcmViYXNlbGlu
ZV9tb2RpZmllciwgc2VsZi5fZXhwZWN0YXRpb25zKSkKKyAgICAgICAgcmV0dXJuIHNlbGYubGlz
dF90b19zdHJpbmcoZmlsdGVyKHdpdGhvdXRfcmViYXNlbGluZV9tb2RpZmllciwgc2VsZi5fZXhw
ZWN0YXRpb25zKSkKIAogICAgIGRlZiBfYWRkX2V4cGVjdGF0aW9ucyhzZWxmLCBleHBlY3RhdGlv
bl9saXN0KToKICAgICAgICAgZm9yIGV4cGVjdGF0aW9uX2xpbmUgaW4gZXhwZWN0YXRpb25fbGlz
dDoKQEAgLTg3MiwzICs4NDcsMTcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhvYmplY3QpOgog
ICAgICAgICBmb3IgdGVzdF9uYW1lIGluIHRlc3RzX3RvX3NraXA6CiAgICAgICAgICAgICBleHBl
Y3RhdGlvbl9saW5lID0gc2VsZi5fcGFyc2VyLmV4cGVjdGF0aW9uX2Zvcl9za2lwcGVkX3Rlc3Qo
dGVzdF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fbW9kZWwuYWRkX2V4cGVjdGF0aW9uX2xpbmUo
ZXhwZWN0YXRpb25fbGluZSwgaW5fc2tpcHBlZD1UcnVlKQorCisgICAgQHN0YXRpY21ldGhvZAor
ICAgIGRlZiBsaXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgdGVzdF9jb25maWd1cmF0
aW9uX2NvbnZlcnRlcj1Ob25lLCByZWNvbnN0aXR1dGVfb25seV90aGVzZT1Ob25lKToKKyAgICAg
ICAgZGVmIHNlcmlhbGl6ZShleHBlY3RhdGlvbl9saW5lKToKKyAgICAgICAgICAgICMgSWYgcmVj
b25zdGl0dXRlX29ubHlfdGhlc2UgaXMgYW4gZW1wdHkgbGlzdCwgd2Ugd2FudCB0byByZXR1cm4g
b3JpZ2luYWxfc3RyaW5nLgorICAgICAgICAgICAgIyBTbyB3ZSBuZWVkIHRvIGNvbXBhcmUgcmVj
b25zdGl0dXRlX29ubHlfdGhlc2UgdG8gTm9uZSwgbm90IGp1c3QgY2hlY2sgaWYgaXQncyBmYWxz
ZXkuCisgICAgICAgICAgICBpZiByZWNvbnN0aXR1dGVfb25seV90aGVzZSBpcyBOb25lIG9yIGV4
cGVjdGF0aW9uX2xpbmUgaW4gcmVjb25zdGl0dXRlX29ubHlfdGhlc2U6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUudG9fc3RyaW5nKHRlc3RfY29uZmlndXJhdGlvbl9j
b252ZXJ0ZXIpCisgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25fbGluZS5vcmlnaW5hbF9z
dHJpbmcKKworICAgICAgICBkZWYgbm9uZXNfb3V0KGV4cGVjdGF0aW9uX2xpbmUpOgorICAgICAg
ICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUgaXMgbm90IE5vbmUKKworICAgICAgICByZXR1
cm4gIlxuIi5qb2luKGZpbHRlcihub25lc19vdXQsIG1hcChzZXJpYWxpemUsIGV4cGVjdGF0aW9u
X2xpbmVzKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAxMjYxODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTU0NCwxMiArNTQ0LDExIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3Rz
KHVuaXR0ZXMKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RhdGlvbl9saW5lLmlzX2lu
dmFsaWQoKSkKIAogCi1jbGFzcyBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyVGVzdHModW5pdHRl
c3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXphdGlvblRlc3RzKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1bmMpOgogICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICB0ZXN0X3BvcnQgPSBob3N0LnBvcnRfZmFj
dG9yeS5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkKICAgICAgICAgc2VsZi5fY29udmVydGVyID0g
VGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIodGVzdF9wb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRp
b25zKCksIHRlc3RfcG9ydC5jb25maWd1cmF0aW9uX3NwZWNpZmllcl9tYWNyb3MoKSkKLSAgICAg
ICAgc2VsZi5fc2VyaWFsaXplciA9IFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIoc2VsZi5fY29u
dmVydGVyKQogICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0RnVu
YykKIAogICAgIGRlZiBfdG9rZW5pemUoc2VsZiwgbGluZSk6CkBAIC01NTksNyArNTU4LDcgQEAg
Y2xhc3MgVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplclRlc3RzKHVuaQogICAgICAgICBleHBlY3Rh
dGlvbiA9IHNlbGYuX3Rva2VuaXplKGluX3N0cmluZykKICAgICAgICAgaWYgZXhwZWN0ZWRfc3Ry
aW5nIGlzIE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBpbl9zdHJpbmcKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdHJpbmcsIHNlbGYuX3NlcmlhbGl6ZXIu
dG9fc3RyaW5nKGV4cGVjdGF0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF9zdHJpbmcsIGV4cGVjdGF0aW9uLnRvX3N0cmluZyhzZWxmLl9jb252ZXJ0ZXIpKQogCiAgICAg
ZGVmIGFzc2VydF9saXN0X3JvdW5kX3RyaXAoc2VsZiwgaW5fc3RyaW5nLCBleHBlY3RlZF9zdHJp
bmc9Tm9uZSk6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCkBAIC01NjcsMjkgKzU2NiwyOCBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyVGVzdHModW5pCiAgICAgICAgIGV4cGVj
dGF0aW9ucyA9IHBhcnNlci5wYXJzZSgncGF0aCcsIGluX3N0cmluZykKICAgICAgICAgaWYgZXhw
ZWN0ZWRfc3RyaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBpbl9z
dHJpbmcKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdHJpbmcsIFRlc3RFeHBl
Y3RhdGlvblNlcmlhbGl6ZXIubGlzdF90b19zdHJpbmcoZXhwZWN0YXRpb25zLCBzZWxmLl9jb252
ZXJ0ZXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0cmluZywgVGVzdEV4
cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbnMsIHNlbGYuX2NvbnZlcnRlcikp
CiAKICAgICBkZWYgdGVzdF91bnBhcnNlZF90b19zdHJpbmcoc2VsZik6CiAgICAgICAgIGV4cGVj
dGF0aW9uID0gVGVzdEV4cGVjdGF0aW9uTGluZSgpCi0gICAgICAgIHNlcmlhbGl6ZXIgPSBUZXN0
RXhwZWN0YXRpb25TZXJpYWxpemVyKCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlh
bGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0YXRpb24udG9fc3RyaW5nKHNlbGYuX2NvbnZlcnRlciksICcnKQogICAgICAgICBl
eHBlY3RhdGlvbi5jb21tZW50ID0gJ1F1eC4nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
aWFsaXplci50b19zdHJpbmcoZXhwZWN0YXRpb24pLCAnLy9RdXguJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RhdGlvbi50b19zdHJpbmcoc2VsZi5fY29udmVydGVyKSwgJy8vUXV4
LicpCiAgICAgICAgIGV4cGVjdGF0aW9uLm5hbWUgPSAnYmFyJwotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlcmlhbGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uKSwgJyA6IGJhciA9ICAvL1F1
eC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLnRvX3N0cmluZyhzZWxm
Ll9jb252ZXJ0ZXIpLCAnIDogYmFyID0gIC8vUXV4LicpCiAgICAgICAgIGV4cGVjdGF0aW9uLm1v
ZGlmaWVycyA9IFsnZm9vJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVyLnRv
X3N0cmluZyhleHBlY3RhdGlvbiksICdGT08gOiBiYXIgPSAgLy9RdXguJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi50b19zdHJpbmcoc2VsZi5fY29udmVydGVyKSwgJ0ZP
TyA6IGJhciA9ICAvL1F1eC4nKQogICAgICAgICBleHBlY3RhdGlvbi5leHBlY3RhdGlvbnMgPSBb
J2JBeiddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplci50b19zdHJpbmcoZXhw
ZWN0YXRpb24pLCAnRk9PIDogYmFyID0gQkFaIC8vUXV4LicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0YXRpb24udG9fc3RyaW5nKHNlbGYuX2NvbnZlcnRlciksICdGT08gOiBiYXIg
PSBCQVogLy9RdXguJykKICAgICAgICAgZXhwZWN0YXRpb24uZXhwZWN0YXRpb25zID0gWydiQXox
JywgJ2JhWjInXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZXIudG9fc3RyaW5n
KGV4cGVjdGF0aW9uKSwgJ0ZPTyA6IGJhciA9IEJBWjEgQkFaMiAvL1F1eC4nKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLnRvX3N0cmluZyhzZWxmLl9jb252ZXJ0ZXIpLCAn
Rk9PIDogYmFyID0gQkFaMSBCQVoyIC8vUXV4LicpCiAgICAgICAgIGV4cGVjdGF0aW9uLm1vZGlm
aWVycyA9IFsnZm9vMScsICdmb08yJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxp
emVyLnRvX3N0cmluZyhleHBlY3RhdGlvbiksICdGT08xIEZPTzIgOiBiYXIgPSBCQVoxIEJBWjIg
Ly9RdXguJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi50b19zdHJpbmco
c2VsZi5fY29udmVydGVyKSwgJ0ZPTzEgRk9PMiA6IGJhciA9IEJBWjEgQkFaMiAvL1F1eC4nKQog
ICAgICAgICBleHBlY3RhdGlvbi53YXJuaW5ncy5hcHBlbmQoJ09oIHRoZSBob3Jyb3IuJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVyLnRvX3N0cmluZyhleHBlY3RhdGlvbiks
ICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLnRvX3N0cmluZyhzZWxm
Ll9jb252ZXJ0ZXIpLCAnJykKICAgICAgICAgZXhwZWN0YXRpb24ub3JpZ2luYWxfc3RyaW5nID0g
J1llcyBpdCBpcyEnCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplci50b19zdHJp
bmcoZXhwZWN0YXRpb24pLCAnWWVzIGl0IGlzIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0YXRpb24udG9fc3RyaW5nKHNlbGYuX2NvbnZlcnRlciksICdZZXMgaXQgaXMhJykKIAog
ICAgIGRlZiB0ZXN0X3VucGFyc2VkX2xpc3RfdG9fc3RyaW5nKHNlbGYpOgogICAgICAgICBleHBl
Y3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvbkxpbmUoKQpAQCAtNTk3LDQ5ICs1OTUsNTAgQEAgY2xh
c3MgVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplclRlc3RzKHVuaQogICAgICAgICBleHBlY3RhdGlv
bi5uYW1lID0gJ2JhcicKICAgICAgICAgZXhwZWN0YXRpb24ubW9kaWZpZXJzID0gWydmb28nXQog
ICAgICAgICBleHBlY3RhdGlvbi5leHBlY3RhdGlvbnMgPSBbJ2JBejEnLCAnYmFaMiddCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0
cmluZyhbZXhwZWN0YXRpb25dKSwgJ0ZPTyA6IGJhciA9IEJBWjEgQkFaMiAvL1F1eC4nKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RFeHBlY3RhdGlvbnMubGlzdF90b19zdHJpbmcoW2V4
cGVjdGF0aW9uXSksICdGT08gOiBiYXIgPSBCQVoxIEJBWjIgLy9RdXguJykKIAogICAgIGRlZiB0
ZXN0X3BhcnNlZF90b19zdHJpbmcoc2VsZik6CiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUgPSBU
ZXN0RXhwZWN0YXRpb25MaW5lKCkKICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfYnVn
X21vZGlmaWVycyA9IFsnQlVHWCddCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUubmFtZSA9ICd0
ZXN0L25hbWUvZm9yL3JlYWx6Lmh0bWwnCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUucGFyc2Vk
X2V4cGVjdGF0aW9ucyA9IHNldChbSU1BR0VdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuX3NlcmlhbGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmUpLCBOb25lKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uX2xpbmUudG9fc3RyaW5nKHNlbGYuX2NvbnZl
cnRlciksIE5vbmUpCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmlndXJh
dGlvbnMgPSBzZXQoW1Rlc3RDb25maWd1cmF0aW9uKCd4cCcsICd4ODYnLCAncmVsZWFzZScpXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zZXJpYWxpemVyLnRvX3N0cmluZyhleHBl
Y3RhdGlvbl9saW5lKSwgJ0JVR1ggWFAgUkVMRUFTRSA6IHRlc3QvbmFtZS9mb3IvcmVhbHouaHRt
bCA9IElNQUdFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbl9saW5lLnRv
X3N0cmluZyhzZWxmLl9jb252ZXJ0ZXIpLCAnQlVHWCBYUCBSRUxFQVNFIDogdGVzdC9uYW1lL2Zv
ci9yZWFsei5odG1sID0gSU1BR0UnKQogICAgICAgICBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5n
X2NvbmZpZ3VyYXRpb25zID0gc2V0KFtUZXN0Q29uZmlndXJhdGlvbigneHAnLCAneDg2JywgJ3Jl
bGVhc2UnKSwgVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdkZWJ1ZycpXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zZXJpYWxpemVyLnRvX3N0cmluZyhleHBlY3RhdGlv
bl9saW5lKSwgJ0JVR1ggWFAgOiB0ZXN0L25hbWUvZm9yL3JlYWx6Lmh0bWwgPSBJTUFHRScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb25fbGluZS50b19zdHJpbmcoc2VsZi5f
Y29udmVydGVyKSwgJ0JVR1ggWFAgOiB0ZXN0L25hbWUvZm9yL3JlYWx6Lmh0bWwgPSBJTUFHRScp
CiAKLSAgICBkZWYgdGVzdF9wYXJzZWRfZXhwZWN0YXRpb25zX3N0cmluZyhzZWxmKToKKyAgICBk
ZWYgdGVzdF9zZXJpYWxpemVfcGFyc2VkX2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgZXhw
ZWN0YXRpb25fbGluZSA9IFRlc3RFeHBlY3RhdGlvbkxpbmUoKQogICAgICAgICBleHBlY3RhdGlv
bl9saW5lLnBhcnNlZF9leHBlY3RhdGlvbnMgPSBzZXQoW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5fc2VyaWFsaXplci5fcGFyc2VkX2V4cGVjdGF0aW9uc19zdHJpbmcoZXhwZWN0
YXRpb25fbGluZSksICcnKQorICAgICAgICBwYXJzZWRfZXhwZWN0YXRpb25fdG9fc3RyaW5nID0g
ZGljdChbW3BhcnNlZF9leHBlY3RhdGlvbiwgZXhwZWN0YXRpb25fc3RyaW5nXSBmb3IgZXhwZWN0
YXRpb25fc3RyaW5nLCBwYXJzZWRfZXhwZWN0YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9ucy5FWFBF
Q1RBVElPTlMuaXRlbXMoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb25f
bGluZS5fc2VyaWFsaXplX3BhcnNlZF9leHBlY3RhdGlvbnMocGFyc2VkX2V4cGVjdGF0aW9uX3Rv
X3N0cmluZyksICcnKQogICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9leHBlY3RhdGlv
bnMgPSBzZXQoW0lNQUdFX1BMVVNfVEVYVF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5fc2VyaWFsaXplci5fcGFyc2VkX2V4cGVjdGF0aW9uc19zdHJpbmcoZXhwZWN0YXRpb25fbGlu
ZSksICdpbWFnZSt0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbl9s
aW5lLl9zZXJpYWxpemVfcGFyc2VkX2V4cGVjdGF0aW9ucyhwYXJzZWRfZXhwZWN0YXRpb25fdG9f
c3RyaW5nKSwgJ2ltYWdlK3RleHQnKQogICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9l
eHBlY3RhdGlvbnMgPSBzZXQoW1BBU1MsIElNQUdFXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLl9zZXJpYWxpemVyLl9wYXJzZWRfZXhwZWN0YXRpb25zX3N0cmluZyhleHBlY3RhdGlv
bl9saW5lKSwgJ3Bhc3MgaW1hZ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0
aW9uX2xpbmUuX3NlcmlhbGl6ZV9wYXJzZWRfZXhwZWN0YXRpb25zKHBhcnNlZF9leHBlY3RhdGlv
bl90b19zdHJpbmcpLCAncGFzcyBpbWFnZScpCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUucGFy
c2VkX2V4cGVjdGF0aW9ucyA9IHNldChbVEVYVCwgUEFTU10pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5fc2VyaWFsaXplci5fcGFyc2VkX2V4cGVjdGF0aW9uc19zdHJpbmcoZXhwZWN0
YXRpb25fbGluZSksICdwYXNzIHRleHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVj
dGF0aW9uX2xpbmUuX3NlcmlhbGl6ZV9wYXJzZWRfZXhwZWN0YXRpb25zKHBhcnNlZF9leHBlY3Rh
dGlvbl90b19zdHJpbmcpLCAncGFzcyB0ZXh0JykKIAotICAgIGRlZiB0ZXN0X3BhcnNlZF9tb2Rp
Zmllcl9zdHJpbmcoc2VsZik6CisgICAgZGVmIHRlc3Rfc2VyaWFsaXplX3BhcnNlZF9tb2RpZmll
cl9zdHJpbmcoc2VsZik6CiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUgPSBUZXN0RXhwZWN0YXRp
b25MaW5lKCkKICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfYnVnX21vZGlmaWVycyA9
IFsnZ2FyZGVuLW8tbWF0aWMnXQogICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9tb2Rp
ZmllcnMgPSBbJ2ZvcicsICd0aGUnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Nl
cmlhbGl6ZXIuX3BhcnNlZF9tb2RpZmllcl9zdHJpbmcoZXhwZWN0YXRpb25fbGluZSwgW10pLCAn
Z2FyZGVuLW8tbWF0aWMgZm9yIHRoZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5f
c2VyaWFsaXplci5fcGFyc2VkX21vZGlmaWVyX3N0cmluZyhleHBlY3RhdGlvbl9saW5lLCBbJ3dp
biddKSwgJ2dhcmRlbi1vLW1hdGljIGZvciB0aGUgd2luJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RhdGlvbl9saW5lLl9zZXJpYWxpemVfcGFyc2VkX21vZGlmaWVycyhzZWxmLl9j
b252ZXJ0ZXIsIFtdKSwgJ2dhcmRlbi1vLW1hdGljIGZvciB0aGUnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV4cGVjdGF0aW9uX2xpbmUuX3NlcmlhbGl6ZV9wYXJzZWRfbW9kaWZpZXJzKHNl
bGYuX2NvbnZlcnRlciwgWyd3aW4nXSksICdnYXJkZW4tby1tYXRpYyBmb3IgdGhlIHdpbicpCiAg
ICAgICAgIGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMgPSBbXQogICAgICAg
ICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9tb2RpZmllcnMgPSBbXQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYuX3NlcmlhbGl6ZXIuX3BhcnNlZF9tb2RpZmllcl9zdHJpbmcoZXhwZWN0
YXRpb25fbGluZSwgW10pLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zZXJp
YWxpemVyLl9wYXJzZWRfbW9kaWZpZXJfc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmUsIFsnd2luJ10p
LCAnd2luJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbl9saW5lLl9zZXJp
YWxpemVfcGFyc2VkX21vZGlmaWVycyhzZWxmLl9jb252ZXJ0ZXIsIFtdKSwgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb25fbGluZS5fc2VyaWFsaXplX3BhcnNlZF9tb2Rp
ZmllcnMoc2VsZi5fY29udmVydGVyLCBbJ3dpbiddKSwgJ3dpbicpCiAgICAgICAgIGV4cGVjdGF0
aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMgPSBbJ2dhcmRlbi1vLW1hdGljJywgJ3RvdGFs
JywgJ2lzJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zZXJpYWxpemVyLl9wYXJz
ZWRfbW9kaWZpZXJfc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmUsIFsnd2luJ10pLCAnZ2FyZGVuLW8t
bWF0aWMgaXMgdG90YWwgd2luJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlv
bl9saW5lLl9zZXJpYWxpemVfcGFyc2VkX21vZGlmaWVycyhzZWxmLl9jb252ZXJ0ZXIsIFsnd2lu
J10pLCAnZ2FyZGVuLW8tbWF0aWMgaXMgdG90YWwgd2luJykKICAgICAgICAgZXhwZWN0YXRpb25f
bGluZS5wYXJzZWRfYnVnX21vZGlmaWVycyA9IFtdCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUu
cGFyc2VkX21vZGlmaWVycyA9IFsnZ2FyZGVuLW8tbWF0aWMnLCAndG90YWwnLCAnaXMnXQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3NlcmlhbGl6ZXIuX3BhcnNlZF9tb2RpZmllcl9z
dHJpbmcoZXhwZWN0YXRpb25fbGluZSwgWyd3aW4nXSksICdnYXJkZW4tby1tYXRpYyBpcyB0b3Rh
bCB3aW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uX2xpbmUuX3Nlcmlh
bGl6ZV9wYXJzZWRfbW9kaWZpZXJzKHNlbGYuX2NvbnZlcnRlciwgWyd3aW4nXSksICdnYXJkZW4t
by1tYXRpYyBpcyB0b3RhbCB3aW4nKQogCi0gICAgZGVmIHRlc3RfZm9ybWF0X3Jlc3VsdChzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLl9m
b3JtYXRfcmVzdWx0KCdtb2RpZmllcnMnLCAnbmFtZScsICdleHBlY3RhdGlvbnMnLCAnY29tbWVu
dCcpLCAnTU9ESUZJRVJTIDogbmFtZSA9IEVYUEVDVEFUSU9OUyAvL2NvbW1lbnQnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIuX2Zvcm1hdF9yZXN1
bHQoJ21vZGlmaWVycycsICduYW1lJywgJ2V4cGVjdGF0aW9ucycsIE5vbmUpLCAnTU9ESUZJRVJT
IDogbmFtZSA9IEVYUEVDVEFUSU9OUycpCisgICAgZGVmIHRlc3RfZm9ybWF0X2xpbmUoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdEV4cGVjdGF0aW9uTGluZS5fZm9ybWF0X2xp
bmUoJ21vZGlmaWVycycsICduYW1lJywgJ2V4cGVjdGF0aW9ucycsICdjb21tZW50JyksICdNT0RJ
RklFUlMgOiBuYW1lID0gRVhQRUNUQVRJT05TIC8vY29tbWVudCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoVGVzdEV4cGVjdGF0aW9uTGluZS5fZm9ybWF0X2xpbmUoJ21vZGlmaWVycycsICdu
YW1lJywgJ2V4cGVjdGF0aW9ucycsIE5vbmUpLCAnTU9ESUZJRVJTIDogbmFtZSA9IEVYUEVDVEFU
SU9OUycpCiAKICAgICBkZWYgdGVzdF9zdHJpbmdfcm91bmR0cmlwKHNlbGYpOgogICAgICAgICBz
ZWxmLmFzc2VydF9yb3VuZF90cmlwKCcnKQpAQCAtNjkwLDkgKzY4OSw5IEBAIGNsYXNzIFRlc3RF
eHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cyh1bmkKIAogICAgICAgICBhZGRfbGluZShzZXQoW1Rl
c3RDb25maWd1cmF0aW9uKCd4cCcsICd4ODYnLCAncmVsZWFzZScpXSksIFRydWUpCiAgICAgICAg
IGFkZF9saW5lKHNldChbVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdyZWxlYXNlJyks
IFRlc3RDb25maWd1cmF0aW9uKCd4cCcsICd4ODYnLCAnZGVidWcnKV0pLCBGYWxzZSkKLSAgICAg
ICAgc2VyaWFsaXplZCA9IFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIubGlzdF90b19zdHJpbmco
bGluZXMsIHNlbGYuX2NvbnZlcnRlcikKKyAgICAgICAgc2VyaWFsaXplZCA9IFRlc3RFeHBlY3Rh
dGlvbnMubGlzdF90b19zdHJpbmcobGluZXMsIHNlbGYuX2NvbnZlcnRlcikKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2VyaWFsaXplZCwgIkJVR1ggWFAgUkVMRUFTRSA6IFlheSA9IElNQUdF
XG5CVUdYIFhQIDogWWF5ID0gSU1BR0UiKQotICAgICAgICBzZXJpYWxpemVkID0gVGVzdEV4cGVj
dGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhsaW5lcywgc2VsZi5fY29udmVydGVyLCBy
ZWNvbnN0aXR1dGVfb25seV90aGVzZT1yZWNvbnN0aXR1dGVfb25seV90aGVzZSkKKyAgICAgICAg
c2VyaWFsaXplZCA9IFRlc3RFeHBlY3RhdGlvbnMubGlzdF90b19zdHJpbmcobGluZXMsIHNlbGYu
X2NvbnZlcnRlciwgcmVjb25zdGl0dXRlX29ubHlfdGhlc2U9cmVjb25zdGl0dXRlX29ubHlfdGhl
c2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlcmlhbGl6ZWQsICJCVUdYIFhQIFJFTEVB
U0UgOiBZYXkgPSBJTUFHRVxuTmF5IikKIAogICAgIGRlZiB0ZXN0X3N0cmluZ193aGl0ZXNwYWNl
X3N0cmlwcGluZyhzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9leHBlY3RhdGlvbnMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2V4cGVjdGF0aW9ucy5weQkocmV2aXNpb24gMTI2MTgzKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2V4cGVjdGF0aW9ucy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsOCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmln
dXJhdGlvbkNvbnZlcnRlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3Rf
ZXhwZWN0YXRpb25zIGltcG9ydCBUZXN0RXhwZWN0YXRpb25QYXJzZXIsIFRlc3RFeHBlY3RhdGlv
blNlcmlhbGl6ZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVj
dGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9uUGFyc2VyCitmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnMK
IGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBBYnN0cmFjdERlY2xh
cmF0aXZlQ29tbWFuZAogCiAKQEAgLTQwLDQgKzQxLDQgQEAgY2xhc3MgT3B0aW1pemVFeHBlY3Rh
dGlvbnMoQWJzdHJhY3REZWNsYQogICAgICAgICBwYXJzZXIgPSBUZXN0RXhwZWN0YXRpb25QYXJz
ZXIocG9ydCwgW10sIGFsbG93X3JlYmFzZWxpbmVfbW9kaWZpZXI9RmFsc2UpCiAgICAgICAgIGV4
cGVjdGF0aW9uX2xpbmVzID0gcGFyc2VyLnBhcnNlKHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSkK
ICAgICAgICAgY29udmVydGVyID0gVGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIocG9ydC5hbGxf
dGVzdF9jb25maWd1cmF0aW9ucygpLCBwb3J0LmNvbmZpZ3VyYXRpb25fc3BlY2lmaWVyX21hY3Jv
cygpKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBvcnQucGF0aF90
b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIubGlz
dF90b19zdHJpbmcoZXhwZWN0YXRpb25fbGluZXMsIGNvbnZlcnRlcikpCisgICAgICAgIHRvb2wu
ZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25z
X2ZpbGUoKSwgVGVzdEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5l
cywgY29udmVydGVyKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWVyaWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWVyaWVzLnB5CShyZXZpc2lvbiAxMjYxODMpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgCiBmcm9tIHdl
YmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnRvb2wu
bXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCBU
ZXN0RXhwZWN0YXRpb25zLCBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3Rh
dGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfb3B0aW9u
cwogCiAKQEAgLTQ2NSw3ICs0NjUsNiBAQCBjbGFzcyBQcmludEV4cGVjdGF0aW9ucyhBYnN0cmFj
dERlY2xhcmF0CiAgICAgICAgICAgICBkZWZhdWx0X3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5n
ZXQob3B0aW9ucz1vcHRpb25zKQogICAgICAgICAgICAgcG9ydF9uYW1lcyA9IFtkZWZhdWx0X3Bv
cnQubmFtZSgpXQogCi0gICAgICAgIHNlcmlhbGl6ZXIgPSBUZXN0RXhwZWN0YXRpb25TZXJpYWxp
emVyKCkKICAgICAgICAgdGVzdHMgPSBkZWZhdWx0X3BvcnQudGVzdHMoYXJncykKICAgICAgICAg
Zm9yIHBvcnRfbmFtZSBpbiBwb3J0X25hbWVzOgogICAgICAgICAgICAgbW9kZWwgPSBzZWxmLl9t
b2RlbChvcHRpb25zLCBwb3J0X25hbWUsIHRlc3RzKQpAQCAtNDczLDcgKzQ3Miw3IEBAIGNsYXNz
IFByaW50RXhwZWN0YXRpb25zKEFic3RyYWN0RGVjbGFyYXQKICAgICAgICAgICAgIGxpbmVzID0g
W21vZGVsLmdldF9leHBlY3RhdGlvbl9saW5lKHRlc3QpIGZvciB0ZXN0IGluIHNvcnRlZCh0ZXN0
c190b19wcmludCldCiAgICAgICAgICAgICBpZiBwb3J0X25hbWUgIT0gcG9ydF9uYW1lc1swXToK
ICAgICAgICAgICAgICAgICBwcmludAotICAgICAgICAgICAgcHJpbnQgJ1xuJy5qb2luKHNlbGYu
X2Zvcm1hdF9saW5lcyhvcHRpb25zLCBwb3J0X25hbWUsIHNlcmlhbGl6ZXIsIGxpbmVzKSkKKyAg
ICAgICAgICAgIHByaW50ICdcbicuam9pbihzZWxmLl9mb3JtYXRfbGluZXMob3B0aW9ucywgcG9y
dF9uYW1lLCBsaW5lcykpCiAKICAgICBkZWYgX2ZpbHRlcl90ZXN0cyhzZWxmLCBvcHRpb25zLCBt
b2RlbCwgdGVzdHMpOgogICAgICAgICBmaWx0ZXJlZF90ZXN0cyA9IHNldCgpCkBAIC00ODcsMTcg
KzQ4NiwxNyBAQCBjbGFzcyBQcmludEV4cGVjdGF0aW9ucyhBYnN0cmFjdERlY2xhcmF0CiAgICAg
ICAgICAgICBmaWx0ZXJlZF90ZXN0cy5kaWZmZXJlbmNlX3VwZGF0ZShtb2RlbC5nZXRfdGVzdF9z
ZXRfZm9yX2tleXdvcmQoa2V5d29yZCkpCiAgICAgICAgIHJldHVybiBmaWx0ZXJlZF90ZXN0cwog
Ci0gICAgZGVmIF9mb3JtYXRfbGluZXMoc2VsZiwgb3B0aW9ucywgcG9ydF9uYW1lLCBzZXJpYWxp
emVyLCBsaW5lcyk6CisgICAgZGVmIF9mb3JtYXRfbGluZXMoc2VsZiwgb3B0aW9ucywgcG9ydF9u
YW1lLCBsaW5lcyk6CiAgICAgICAgIG91dHB1dCA9IFtdCiAgICAgICAgIGlmIG9wdGlvbnMuY3N2
OgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgb3V0cHV0
LmFwcGVuZCgiJXMsJXMiICUgKHBvcnRfbmFtZSwgc2VyaWFsaXplci50b19jc3YobGluZSkpKQor
ICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIiVzLCVzIiAlIChwb3J0X25hbWUsIGxpbmUu
dG9fY3N2KCkpKQogICAgICAgICBlbGlmIGxpbmVzOgogICAgICAgICAgICAgaW5jbHVkZV9tb2Rp
ZmllcnMgPSBvcHRpb25zLmZ1bGwKICAgICAgICAgICAgIGluY2x1ZGVfZXhwZWN0YXRpb25zID0g
b3B0aW9ucy5mdWxsIG9yIGxlbihvcHRpb25zLmluY2x1ZGVfa2V5d29yZCkgIT0gMSBvciBsZW4o
b3B0aW9ucy5leGNsdWRlX2tleXdvcmQpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCIvLyBG
b3IgJXMiICUgcG9ydF9uYW1lKQogICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAg
ICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiJXMiICUgc2VyaWFsaXplci50b19zdHJpbmcobGlu
ZSwgaW5jbHVkZV9tb2RpZmllcnMsIGluY2x1ZGVfZXhwZWN0YXRpb25zLCBpbmNsdWRlX2NvbW1l
bnQ9RmFsc2UpKQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIiVzIiAlIGxpbmUudG9f
c3RyaW5nKE5vbmUsIGluY2x1ZGVfbW9kaWZpZXJzLCBpbmNsdWRlX2V4cGVjdGF0aW9ucywgaW5j
bHVkZV9jb21tZW50PUZhbHNlKSkKICAgICAgICAgcmV0dXJuIG91dHB1dAogCiAgICAgZGVmIF9t
b2RlbChzZWxmLCBvcHRpb25zLCBwb3J0X25hbWUsIHRlc3RzKToKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkJ
KHJldmlzaW9uIDEyNjE4MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJz
L2dhcmRlbmluZ3NlcnZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBpbXBv
cnQgb3MKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJv
bSB3ZWJraXRweS50b29sLnNlcnZlcnMucmVmbGVjdGlvbmhhbmRsZXIgaW1wb3J0IFJlZmxlY3Rp
b25IYW5kbGVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0X2V4
cGVjdGF0aW9uc19lZGl0b3IgaW1wb3J0IEJ1Z01hbmFnZXIsIFRlc3RFeHBlY3RhdGlvbnNFZGl0
b3IKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0aW9ucyBp
bXBvcnQgVGVzdEV4cGVjdGF0aW9uUGFyc2VyLCBUZXN0RXhwZWN0YXRpb25zLCBUZXN0RXhwZWN0
YXRpb25TZXJpYWxpemVyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9l
eHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvblBhcnNlciwgVGVzdEV4cGVjdGF0aW9u
cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBp
bXBvcnQgVGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiAKQEAgLTgyLDcgKzgyLDcgQEAgY2xhc3MgR2FyZGVu
aW5nRXhwZWN0YXRpb25zVXBkYXRlcihCdWdNYQogICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0g
ZmFpbHVyZV9pbmZvWydidWlsZGVyTmFtZSddCiAgICAgICAgICAgICBhZmZlY3RlZF90ZXN0X2Nv
bmZpZ3VyYXRpb25fc2V0ID0gc2VsZi5fZXh0cmFwb2xhdG9yLmV4dHJhcG9sYXRlX3Rlc3RfY29u
ZmlndXJhdGlvbnMoYnVpbGRlcl9uYW1lKQogICAgICAgICAgICAgdXBkYXRlZF9leHBlY3RhdGlv
bl9saW5lcy5leHRlbmQoZWRpdG9yLnVwZGF0ZV9leHBlY3RhdGlvbih0ZXN0X25hbWUsIGFmZmVj
dGVkX3Rlc3RfY29uZmlndXJhdGlvbl9zZXQsIGV4cGVjdGF0aW9uX3NldCkpCi0gICAgICAgIHNl
bGYuX3Rvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoc2VsZi5fcGF0aF90b190ZXN0X2V4
cGVjdGF0aW9uc19maWxlLCBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5n
KGV4cGVjdGF0aW9uX2xpbmVzLCBzZWxmLl9jb252ZXJ0ZXIsIHJlY29uc3RpdHV0ZV9vbmx5X3Ro
ZXNlPXVwZGF0ZWRfZXhwZWN0YXRpb25fbGluZXMpKQorICAgICAgICBzZWxmLl90b29sLmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNlbGYuX3BhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmls
ZSwgVGVzdEV4cGVjdGF0aW9ucy5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgc2Vs
Zi5fY29udmVydGVyLCByZWNvbnN0aXR1dGVfb25seV90aGVzZT11cGRhdGVkX2V4cGVjdGF0aW9u
X2xpbmVzKSkKIAogCiBjbGFzcyBHYXJkZW5pbmdIVFRQU2VydmVyKEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIpOgo=
</data>
<flag name="review"
          id="170183"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>