<?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>80016</bug_id>
          
          <creation_ts>2012-03-01 01:40:25 -0800</creation_ts>
          <short_desc>Perf-o-matic: generate dashboard images for 30, 90, and 365 days</short_desc>
          <delta_ts>2012-03-01 13:55:53 -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>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>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568474</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 01:40:25 -0800</bug_when>
    <thetext>Right now perf-o-matic only generates images for 7 days, and changing the displayDays results in an error. We should generate 30, 90, and 365 days graphs occasionally as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568477</commentid>
    <comment_count>1</comment_count>
      <attachid>129665</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 01:51:51 -0800</bug_when>
    <thetext>Created attachment 129665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568479</commentid>
    <comment_count>2</comment_count>
      <attachid>129667</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 01:54:08 -0800</bug_when>
    <thetext>Created attachment 129667
Removed logging in RunsChartHandler since it&apos;ll be too long for 90/365 days</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568483</commentid>
    <comment_count>3</comment_count>
      <attachid>129667</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 01:56:28 -0800</bug_when>
    <thetext>Comment on attachment 129667
Removed logging in RunsChartHandler since it&apos;ll be too long for 90/365 days

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

&gt; Websites/webkit-perf.appspot.com/controller.py:-171
&gt; -        self.response.out.write(&apos;Fetched http://chart.googleapis.com/chart?%s&apos; % urllib.urlencode(params))
&gt; -

Note: this will be too big to print for 90 &amp; 365 days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568878</commentid>
    <comment_count>4</comment_count>
      <attachid>129667</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-01 13:50:40 -0800</bug_when>
    <thetext>Comment on attachment 129667
Removed logging in RunsChartHandler since it&apos;ll be too long for 90/365 days

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568891</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 13:55:53 -0800</bug_when>
    <thetext>Committed r109418: &lt;http://trac.webkit.org/changeset/109418&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129665</attachid>
            <date>2012-03-01 01:51:51 -0800</date>
            <delta_ts>2012-03-01 01:54:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80016-20120301015150.patch</filename>
            <type>text/plain</type>
            <size>35140</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTMy
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAz
LTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBlcmYtby1t
YXRpYzogZ2VuZXJhdGUgZGFzaGJvYXJkIGltYWdlcyBmb3IgMzAsIDkwLCBhbmQgMzY1IGRheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBh
YmlsaXR5IHRvIGdlbmVyYXRlIGdyYXBocyBmb3IgMzAsIDkwLCBhbmQgMzY1IGRheSBncmFwaHMg
YnV0IG9ubHkgb2NjYXNpb25hbGx5CisgICAgICAgIGFjY29yZGluZyB0byB0aGUgaGV1cmlzdGlj
cyBpbiBEYXNoYm9hcmRJbWFnZS5uZWVkc191cGRhdGUuCisKKyAgICAgICAgQWxzbyBmaXggYSBi
dWcgaW4gUnVucy5jaGFydF9wYXJhbXMgdGhhdCB5LWF4aXMgZ3JpZCB3YXMgc2V0IHRvIGFuIGlu
Y29ycmVjdCB2YWx1ZS4KKyAKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90
LmNvbS9jb250cm9sbGVyLnB5OgorICAgICAgICAoc2NoZWR1bGVfcnVuc191cGRhdGUpOgorICAg
ICAgICAoUnVuc0NoYXJ0SGFuZGxlci5wb3N0KToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQt
cGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnMucHk6CisgICAgICAgIChSdW5zLmNoYXJ0
X3BhcmFtcyk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanNv
bl9nZW5lcmF0b3JzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUnVuc1Rlc3QudGVzdF9jaGFydF9w
YXJhbXNfd2l0aF92YWx1ZSk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3Bv
dC5jb20vbW9kZWxzLnB5OgorICAgICAgICAoRGFzaGJvYXJkSW1hZ2UpOgorICAgICAgICAoRGFz
aGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRlKToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVy
Zi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHk6CisgICAgICAgIChIZWxwZXJUZXN0cy5f
YXNzZXJ0X3RoZXJlX2lzX2V4YWN0bHlfb25lX2lkX2hvbGRlcl9hbmRfbWF0Y2hlcyk6CisgICAg
ICAgIChIZWxwZXJUZXN0cy50ZXN0X2NyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNf
aWRfaG9sZGVyLmV4ZWN1dGUpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9jcmVhdGVfaW5f
dHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcik6CisgICAgICAgIChIZWxwZXJUZXN0
cy50ZXN0X2ZhaWxpbmdfaW5fY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9o
b2xkZXIpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9yYWlzaW5nX2luX2NyZWF0ZV9pbl90
cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKToKKyAgICAgICAgKEhlbHBlclRlc3Rz
LnRlc3RfZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIuZXhlY3V0ZSk6CisgICAg
ICAgIChIZWxwZXJUZXN0cy50ZXN0X2RlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNfaWRfaG9sZGVy
KToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfbW9kZWxfZnJvbV9udW1lcmljX2lkLmV4ZWN1
dGUpOgorICAgICAgICAoSGVscGVyVGVzdHMpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9t
b2RlbF9mcm9tX251bWVyaWNfaWQpOgorICAgICAgICAoQnJhbmNoVGVzdHMudGVzdF9jcmVhdGVf
aWZfcG9zc2libGUpOgorICAgICAgICAoUGxhdGZvcm1UZXN0cy50ZXN0X2NyZWF0ZV9pZl9wb3Nz
aWJsZSk6CisgICAgICAgIChCdWlsZGVyVGVzdHMudGVzdF9jcmVhdGUpOgorICAgICAgICAoQnVp
bGRlclRlc3RzLnRlc3RfdXBkYXRlX3Bhc3N3b3JkKToKKyAgICAgICAgKEJ1aWxkZXJUZXN0cy50
ZXN0X2hhc2hlZF9wYXNzd29yZCk6CisgICAgICAgIChCdWlsZGVyVGVzdHMudGVzdF9hdXRoZW50
aWNhdGUpOgorICAgICAgICAoX2NyZWF0ZV9zb21lX2J1aWxkZXIpOgorICAgICAgICAoX2NyZWF0
ZV9idWlsZCk6CisgICAgICAgIChCdWlsZFRlc3RzLnRlc3RfZ2V0X29yX2luc2VydF9mcm9tX2xv
Zyk6CisgICAgICAgIChUZXN0TW9kZWxUZXN0cy50ZXN0X3VwZGF0ZV9vcl9pbnNlcnQpOgorICAg
ICAgICAoVGVzdE1vZGVsVGVzdHMudGVzdF91cGRhdGVfb3JfaW5zZXJ0X3RvX3VwZGF0ZSk6Cisg
ICAgICAgIChUZXN0TW9kZWxUZXN0cy50ZXN0X21lcmdlKToKKyAgICAgICAgKFRlc3RSZXN1bHRU
ZXN0cy50ZXN0X2dldF9vcl9pbnNlcnRfdmFsdWUpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3Rz
LnRlc3RfZ2V0X29yX2luc2VydF9zdGF0X3ZhbHVlKToKKyAgICAgICAgKFRlc3RSZXN1bHRUZXN0
cy50ZXN0X3JlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZSk6CisgICAgICAgIChUZXN0UmVzdWx0
VGVzdHMudGVzdF9yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWVfd2l0aF9zdGF0X3ZhbHVlKToK
KyAgICAgICAgKFRlc3RSZXN1bHRUZXN0cy50ZXN0X3JlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFt
ZV9vdmVycmlkZXNfY29uZmxpY3RpbmdfcmVzdWx0KToKKyAgICAgICAgKFJlcG9ydExvZ1Rlc3Rz
Ll9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCk6CisgICAgICAgIChSZXBvcnRMb2dUZXN0cy50ZXN0
X2J1aWxkZXIpOgorICAgICAgICAoUmVwb3J0TG9nVGVzdHMudGVzdF9icmFuY2gpOgorICAgICAg
ICAoUmVwb3J0TG9nVGVzdHMudGVzdF9wbGF0Zm9ybSk6CisgICAgICAgIChQZXJzaXN0ZW50Q2Fj
aGVUZXN0cy5fYXNzZXJ0X3BlcnNpc3RlbnRfY2FjaGUpOgorICAgICAgICAoUGVyc2lzdGVudENh
Y2hlVGVzdHMudGVzdF9zZXQpOgorICAgICAgICAoUGVyc2lzdGVudENhY2hlVGVzdHMudGVzdF9n
ZXQpOgorICAgICAgICAoRGFzaGJvYXJkSW1hZ2VUZXN0cyk6CisgICAgICAgIChEYXNoYm9hcmRJ
bWFnZVRlc3RzLnRlc3RfbmVlZHNfdXBkYXRlKToKKwogMjAxMi0wMi0yOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJmLW8tbWF0aWMgYnVpbGQgZml4LiBB
bHNvIHRvZ2dsZSB0aGUgc3dpdGNoIHRvIHN0YXJ0IHVzaW5nIHBpbmcgaW1hZ2VzIG9uIHRoZSBk
YXNoYm9hcmQgYWZ0ZXIgcjEwOTE5MC4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNw
b3QuY29tL2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYu
YXBwc3BvdC5jb20vY29udHJvbGxlci5weQkocmV2aXNpb24gMTA5MzIwKQorKysgV2Vic2l0ZXMv
d2Via2l0LXBlcmYuYXBwc3BvdC5jb20vY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxv
Z2dpbmcKIGltcG9ydCB1cmxsaWIKIGltcG9ydCB3ZWJhcHAyCiBmcm9tIGdvb2dsZS5hcHBlbmdp
bmUuYXBpIGltcG9ydCB0YXNrcXVldWUKQEAgLTk5LDggKzEwMCwxMCBAQCBkZWYgY2FjaGVfcnVu
cyh0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmCiAKIGRlZiBzY2hlZHVsZV9ydW5zX3VwZGF0ZSh0
ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkKToKICAgICB0YXNrcXVldWUuYWRkKHVybD0n
L2FwaS90ZXN0L3J1bnMvdXBkYXRlJywgcGFyYW1zPXsnaWQnOiB0ZXN0X2lkLCAnYnJhbmNoaWQn
OiBicmFuY2hfaWQsICdwbGF0Zm9ybWlkJzogcGxhdGZvcm1faWR9KQotICAgIHRhc2txdWV1ZS5h
ZGQodXJsPScvYXBpL3Rlc3QvcnVucy9jaGFydCcsIHBhcmFtcz17J2lkJzogdGVzdF9pZCwgJ2Jy
YW5jaGlkJzogYnJhbmNoX2lkLCAncGxhdGZvcm1pZCc6IHBsYXRmb3JtX2lkLAotICAgICAgICAn
ZGlzcGxheURheXMnOiA3fSkKKyAgICBmb3IgZGlzcGxheV9kYXlzIGluIFs3LCAzMCwgOTAsIDM2
NV06CisgICAgICAgIGlmIERhc2hib2FyZEltYWdlLm5lZWRzX3VwZGF0ZShicmFuY2hfaWQsIHRl
c3RfaWQsIHBsYXRmb3JtX2lkLCBkaXNwbGF5X2RheXMpOgorICAgICAgICAgICAgdGFza3F1ZXVl
LmFkZCh1cmw9Jy9hcGkvdGVzdC9ydW5zL2NoYXJ0JywgcGFyYW1zPXsnaWQnOiB0ZXN0X2lkLCAn
YnJhbmNoaWQnOiBicmFuY2hfaWQsICdwbGF0Zm9ybWlkJzogcGxhdGZvcm1faWQsCisgICAgICAg
ICAgICAgICAgJ2Rpc3BsYXlEYXlzJzogZGlzcGxheV9kYXlzfSkKIAogCiBkZWYgX2dldF90ZXN0
X2JyYW5jaF9wbGF0Zm9ybV9pZHMoaGFuZGxlcik6CkBAIC0xNjcsNyArMTcwLDcgQEAgY2xhc3Mg
UnVuc0NoYXJ0SGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYQogICAgICAgICBEYXNoYm9hcmRJbWFn
ZShrZXlfbmFtZT1EYXNoYm9hcmRJbWFnZS5rZXlfbmFtZShicmFuY2guaWQsIHBsYXRmb3JtLmlk
LCB0ZXN0LmlkLCBkaXNwbGF5X2RheXMpLAogICAgICAgICAgICAgaW1hZ2U9ZGFzaGJvYXJkX2No
YXJ0X2ZpbGUucmVhZCgpKS5wdXQoKQogCi0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRl
KCdGZXRjaGVkIGh0dHA6Ly9jaGFydC5nb29nbGVhcGlzLmNvbS9jaGFydD8lcycgJSB1cmxsaWIu
dXJsZW5jb2RlKHBhcmFtcykpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRmV0Y2hlZCBodHRwOi8v
Y2hhcnQuZ29vZ2xlYXBpcy5jb20vY2hhcnQ/JXMnICUgdXJsbGliLnVybGVuY29kZShwYXJhbXMp
KQogCiAKIGNsYXNzIERhc2hib2FyZEltYWdlSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYW5kbGVy
KToKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9y
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9qc29u
X2dlbmVyYXRvcnMucHkJKHJldmlzaW9uIDEwOTMxOSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJm
LmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9ycy5weQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcg
KzE4Miw3IEBAIGNsYXNzIFJ1bnMoSlNPTkdlbmVyYXRvckJhc2UpOgogICAgICAgICAgICAgJ2Rh
dGVfcmFuZ2UnOiBOb25lLCAgIyBOZXZlciB1c2VkIGJ5IGNvbW1vbi5qcy4KICAgICAgICAgICAg
ICdzdGF0JzogJ29rJ30KIAotICAgIGRlZiBjaGFydF9wYXJhbXMoc2VsZiwgZGlzcGxheV9kYXlz
LCBub3c9ZGF0ZXRpbWUubm93KCkpOgorICAgIGRlZiBjaGFydF9wYXJhbXMoc2VsZiwgZGlzcGxh
eV9kYXlzLCBub3c9ZGF0ZXRpbWUubm93KCkucmVwbGFjZShob3VyPTEyLCBtaW51dGU9MCwgc2Vj
b25kPTAsIG1pY3Jvc2Vjb25kPTApKToKICAgICAgICAgY2hhcnRfZGF0YV94ID0gW10KICAgICAg
ICAgY2hhcnRfZGF0YV95ID0gW10KICAgICAgICAgZW5kX3RpbWUgPSBub3cKQEAgLTE5NiwxMSAr
MTk2LDEwIEBAIGNsYXNzIFJ1bnMoSlNPTkdlbmVyYXRvckJhc2UpOgogICAgICAgICAgICAgY2hh
cnRfZGF0YV94LmFwcGVuZCh0aW1lc3RhbXApCiAgICAgICAgICAgICBjaGFydF9kYXRhX3kuYXBw
ZW5kKHJlc3VsdC52YWx1ZSkKIAotICAgICAgICBkYXRlcyA9IFtlbmRfdGltZSArIHRpbWVkZWx0
YShkYXkgLSBkaXNwbGF5X2RheXMpIGZvciBkYXkgaW4gcmFuZ2UoMCwgZGlzcGxheV9kYXlzICsg
MSldCisgICAgICAgIGRhdGVzID0gW2VuZF90aW1lIC0gdGltZWRlbHRhKGRpc3BsYXlfZGF5cyAv
IDcuMCAqICg3IC0gaSkpIGZvciBpIGluIHJhbmdlKDAsIDgpXQogCiAgICAgICAgIHlfbWF4ID0g
bWF4KGNoYXJ0X2RhdGFfeSkgKiAxLjEKLSAgICAgICAgeV9ncmlkX3N0ZXAgPSB5X21heCAvIDUK
LSAgICAgICAgeV9heGlzX2xhYmVsX3N0ZXAgPSBpbnQoeV9ncmlkX3N0ZXAgKyAwLjUpICAjIFRo
aXMgd29uJ3Qgd29yayBmb3IgZGVjaW1hbCBudW1iZXJzCisgICAgICAgIHlfYXhpc19sYWJlbF9z
dGVwID0gaW50KHlfbWF4IC8gNSArIDAuNSkgICMgVGhpcyB3b24ndCB3b3JrIGZvciBkZWNpbWFs
IG51bWJlcnMKIAogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgJ2NodCc6ICdseHknLCAg
IyBTcGVjaWZ5IHdpdGggWCBhbmQgWSBjb29yZGluYXRlcwpAQCAtMjExLDcgKzIxMCw3IEBAIGNs
YXNzIFJ1bnMoSlNPTkdlbmVyYXRvckJhc2UpOgogICAgICAgICAgICAgJ2NoeHMnOiAnMSw2NzY3
NjcsMTEuMTY3LDAsbCw2NzY3NjcnLCAgIyBZLWF4aXMgbGFiZWw6IDEsY29sb3IsZm9udC1zaXpl
LGNlbnRlcmQgb24gdGljayxheGlzIGxpbmUvbm8gdGlja3MsIHRpY2sgY29sb3IKICAgICAgICAg
ICAgICdjaHMnOiAnMzYweDI0MCcsICAjIEltYWdlIHNpemU6IDM2MHB4IGJ5IDI0MHB4CiAgICAg
ICAgICAgICAnY2hjbyc6ICdmZjAwMDAnLCAgIyBQbG90IGxpbmUgY29sb3IKLSAgICAgICAgICAg
ICdjaGcnOiAnJWYsJWYsMCwwJyAlICgxMDAgLyAobGVuKGRhdGVzKSAtIDEpLCB5X2dyaWRfc3Rl
cCksICAjIFgsIFkgZ3JpZCBsaW5lIHN0ZXAgc2l6ZXMgLSBtYXggZm9yIFggaXMgMTAwLgorICAg
ICAgICAgICAgJ2NoZyc6ICclZiwyMCwwLDAnICUgKDEwMCAvIChsZW4oZGF0ZXMpIC0gMSkpLCAg
IyBYLCBZIGdyaWQgbGluZSBzdGVwIHNpemVzIC0gbWF4IGlzIDEwMC4KICAgICAgICAgICAgICdj
aGxzJzogJzMnLCAgIyBMaW5lIHRoaWNrbmVzcwogICAgICAgICAgICAgJ2NoZic6ICdiZyxzLGVm
ZjZmZCcsICAjIFRyYW5zcGFyZW50IGJhY2tncm91bmQKICAgICAgICAgICAgICdjaGQnOiAndDon
ICsgJywnLmpvaW4oW3N0cih4KSBmb3IgeCBpbiBjaGFydF9kYXRhX3hdKSArICd8JyArICcsJy5q
b2luKFtzdHIoeSkgZm9yIHkgaW4gY2hhcnRfZGF0YV95XSksICAjIFgsIFkgZGF0YQpJbmRleDog
V2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanNvbl9nZW5lcmF0b3JzX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25f
Z2VuZXJhdG9yc191bml0dGVzdC5weQkocmV2aXNpb24gMTA5MzE5KQorKysgV2Vic2l0ZXMvd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20vanNvbl9nZW5lcmF0b3JzX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMzAsOCArMzMwLDE3IEBAIGNsYXNzIFJ1bnNUZXN0KERhdGFTdG9yZVRlc3Rz
QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh4
X21heCksIGVuZF90aW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlfbWluLCAwKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHlfbWF4LCBpbnQoNTIgKiAxLjEpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNwbGl0X2FzX2ludChwYXJhbXNbJ2NoZyddKSwgW2ludCgxMDAgLyA3KSwg
aW50KDUyICogMS4xIC8gNSksIDAsIDBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0
X2FzX2ludChwYXJhbXNbJ2NoZyddKSwgW2ludCgxMDAgLyA3KSwgMjAsIDAsIDBdKQogCisgICAg
ICAgIHBhcmFtcyA9IFJ1bnMoc29tZV9icmFuY2gsIHNvbWVfcGxhdGZvcm0sICdzb21lLXRlc3Qn
KS5jaGFydF9wYXJhbXMoMTQsIGVuZF90aW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cmFtc1snY2h4bCddLCAnMDp8RmViIDE0fEZlYiAxNnxGZWIgMTh8RmViIDIwfEZlYiAyMnxGZWIg
MjR8RmViIDI2fEZlYiAyOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRfYXNfaW50
KHBhcmFtc1snY2h4ciddKSwgWzEsIDAsIDU3LCBpbnQoNTIgKiAxLjEgLyA1ICsgMC41KV0pCisg
ICAgICAgIHhfbWluLCB4X21heCwgeV9taW4sIHlfbWF4ID0gc3BsaXRfYXNfaW50KHBhcmFtc1sn
Y2hkcyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lLmZyb210aW1lc3RhbXAo
eF9taW4pLCBkYXRldGltZSgyMDExLCAyLCAxNCwgMTIsIDAsIDApKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGV0aW1lLmZyb210aW1lc3RhbXAoeF9tYXgpLCBlbmRfdGltZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh5X21pbiwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5
X21heCwgaW50KDUyICogMS4xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdF9hc19p
bnQocGFyYW1zWydjaGcnXSksIFtpbnQoMTAwIC8gNyksIDIwLCAwLCAwXSkKIAogCiBpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5j
b20vbW9kZWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3Qu
Y29tL21vZGVscy5weQkocmV2aXNpb24gMTA5MzE5KQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYu
YXBwc3BvdC5jb20vbW9kZWxzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMSBAQAog
CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGpzb24KK2ltcG9ydCBtYXRoCiBpbXBvcnQgcmUKIAog
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVk
ZWx0YQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgZGIKIGZyb20gZ29vZ2xlLmFw
cGVuZ2luZS5hcGkgaW1wb3J0IG1lbWNhY2hlCiBmcm9tIHRpbWUgaW1wb3J0IG1rdGltZQpAQCAt
MzI2LDYgKzMyOCwxNiBAQCBjbGFzcyBQZXJzaXN0ZW50Q2FjaGUoZGIuTW9kZWwpOgogCiBjbGFz
cyBEYXNoYm9hcmRJbWFnZShkYi5Nb2RlbCk6CiAgICAgaW1hZ2UgPSBkYi5CbG9iUHJvcGVydHko
cmVxdWlyZWQ9VHJ1ZSkKKyAgICBjcmVhdGVkQXQgPSBkYi5EYXRlVGltZVByb3BlcnR5KHJlcXVp
cmVkPVRydWUsIGF1dG9fbm93PVRydWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbmVl
ZHNfdXBkYXRlKGNscywgYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCwgdGVzdF9pZCwgZGlzcGxheV9k
YXlzLCBub3c9ZGF0ZXRpbWUubm93KCkpOgorICAgICAgICBpZiBkaXNwbGF5X2RheXMgPCAxMDoK
KyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGltYWdlID0gRGFzaGJvYXJkSW1hZ2Uu
Z2V0X2J5X2tleV9uYW1lKGNscy5rZXlfbmFtZShicmFuY2hfaWQsIHBsYXRmb3JtX2lkLCB0ZXN0
X2lkLCBkaXNwbGF5X2RheXMpKQorICAgICAgICBkdXJhdGlvbiA9IG1hdGguc3FydChkaXNwbGF5
X2RheXMpIC8gMTAKKyAgICAgICAgIyBlLmcuIDEzIGhvdXJzIGZvciAzMCBkYXlzLCAyMyBob3Vy
cyBmb3IgOTAgZGF5cywgYW5kIDQ2IGhvdXJzIGZvciAzNjUgZGF5cworICAgICAgICByZXR1cm4g
bm90IGltYWdlIG9yIGltYWdlLmNyZWF0ZWRBdCA8IG5vdyAtIHRpbWVkZWx0YShkdXJhdGlvbikK
IAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYga2V5X25hbWUoYnJhbmNoX2lkLCBwbGF0Zm9y
bV9pZCwgdGVzdF9pZCwgZGlzcGxheV9kYXlzKToKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJm
LmFwcHNwb3QuY29tL21vZGVsc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93
ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEwOTMx
OSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDI1IEBAIGltcG9ydCBtb2RlbHMKIGltcG9y
dCB1bml0dGVzdAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBkYXRldGlt
ZSBpbXBvcnQgdGltZWRlbHRhCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCBtZW1j
YWNoZQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgdGVzdGJlZAogZnJvbSB0aW1l
IGltcG9ydCBta3RpbWUKIAorZnJvbSBtb2RlbHMgaW1wb3J0IE51bWVyaWNJZEhvbGRlcgorZnJv
bSBtb2RlbHMgaW1wb3J0IEJyYW5jaAorZnJvbSBtb2RlbHMgaW1wb3J0IFBsYXRmb3JtCitmcm9t
IG1vZGVscyBpbXBvcnQgQnVpbGRlcgorZnJvbSBtb2RlbHMgaW1wb3J0IEJ1aWxkCitmcm9tIG1v
ZGVscyBpbXBvcnQgVGVzdAorZnJvbSBtb2RlbHMgaW1wb3J0IFRlc3RSZXN1bHQKK2Zyb20gbW9k
ZWxzIGltcG9ydCBSZXBvcnRMb2cKK2Zyb20gbW9kZWxzIGltcG9ydCBQZXJzaXN0ZW50Q2FjaGUK
K2Zyb20gbW9kZWxzIGltcG9ydCBEYXNoYm9hcmRJbWFnZQorZnJvbSBtb2RlbHMgaW1wb3J0IGNy
ZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyCitmcm9tIG1vZGVscyBp
bXBvcnQgZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIKK2Zyb20gbW9kZWxzIGlt
cG9ydCBtb2RlbF9mcm9tX251bWVyaWNfaWQKKwogCiBjbGFzcyBEYXRhU3RvcmVUZXN0c0Jhc2Uo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTY1LDcgKzgwLDcg
QEAgY2xhc3MgRGF0YVN0b3JlVGVzdHNCYXNlKHVuaXR0ZXN0LlRlc3RDYQogCiBjbGFzcyBIZWxw
ZXJUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgIGRlZiBfYXNzZXJ0X3RoZXJlX2lzX2V4
YWN0bHlfb25lX2lkX2hvbGRlcl9hbmRfbWF0Y2hlcyhzZWxmLCBpZCk6Ci0gICAgICAgIGlkX2hv
bGRlcnMgPSBtb2RlbHMuTnVtZXJpY0lkSG9sZGVyLmFsbCgpLmZldGNoKDUpCisgICAgICAgIGlk
X2hvbGRlcnMgPSBOdW1lcmljSWRIb2xkZXIuYWxsKCkuZmV0Y2goNSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oaWRfaG9sZGVycyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShp
ZF9ob2xkZXJzWzBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkX2hvbGRlcnNbMF0ua2V5
KCkuaWQoKSwgaWQpCkBAIC03MywxNCArODgsMTQgQEAgY2xhc3MgSGVscGVyVGVzdHMoRGF0YVN0
b3JlVGVzdHNCYXNlKToKICAgICBkZWYgdGVzdF9jcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9u
dW1lcmljX2lkX2hvbGRlcihzZWxmKToKIAogICAgICAgICBkZWYgZXhlY3V0ZShpZCk6Ci0gICAg
ICAgICAgICByZXR1cm4gbW9kZWxzLkJyYW5jaChpZD1pZCwgbmFtZT0nc29tZSBicmFuY2gnLCBr
ZXlfbmFtZT0nc29tZS1icmFuY2gnKS5wdXQoKQorICAgICAgICAgICAgcmV0dXJuIEJyYW5jaChp
ZD1pZCwgbmFtZT0nc29tZSBicmFuY2gnLCBrZXlfbmFtZT0nc29tZS1icmFuY2gnKS5wdXQoKQog
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuQnJhbmNoKQot
ICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLk51bWVyaWNJZEhv
bGRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKEJyYW5jaCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKE51bWVyaWNJZEhvbGRlcikKIAot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kZWxzLmNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRo
X251bWVyaWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3Jl
YXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoZXhlY3V0ZSkpCiAKLSAg
ICAgICAgYnJhbmNoZXMgPSBtb2RlbHMuQnJhbmNoLmFsbCgpLmZldGNoKDUpCisgICAgICAgIGJy
YW5jaGVzID0gQnJhbmNoLmFsbCgpLmZldGNoKDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGJyYW5jaGVzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlc1swXS5u
YW1lLCAnc29tZSBicmFuY2gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJyYW5jaGVzWzBd
LmtleSgpLm5hbWUoKSwgJ3NvbWUtYnJhbmNoJykKQEAgLTkyLDEzICsxMDcsMTMgQEAgY2xhc3Mg
SGVscGVyVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICAgICAgZGVmIGV4ZWN1dGUoaWQp
OgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNO
b0luc3RhbmNlT2YobW9kZWxzLkJyYW5jaCkKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9J
bnN0YW5jZU9mKG1vZGVscy5OdW1lcmljSWRIb2xkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VGhl
cmVJc05vSW5zdGFuY2VPZihCcmFuY2gpCisgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5z
dGFuY2VPZihOdW1lcmljSWRIb2xkZXIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2Rl
bHMuY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoZXhlY3V0ZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVt
ZXJpY19pZF9ob2xkZXIoZXhlY3V0ZSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9J
bnN0YW5jZU9mKG1vZGVscy5CcmFuY2gpCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5z
dGFuY2VPZihtb2RlbHMuTnVtZXJpY0lkSG9sZGVyKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJl
SXNOb0luc3RhbmNlT2YoQnJhbmNoKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3Rh
bmNlT2YoTnVtZXJpY0lkSG9sZGVyKQogCiAgICAgZGVmIHRlc3RfcmFpc2luZ19pbl9jcmVhdGVf
aW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcihzZWxmKToKIApAQCAtMTA2LDEx
MSArMTIxLDExMSBAQCBjbGFzcyBIZWxwZXJUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuQnJhbmNoKQotICAgICAg
ICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLk51bWVyaWNJZEhvbGRlcikK
KyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKEJyYW5jaCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKE51bWVyaWNJZEhvbGRlcikKIAotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vZGVscy5jcmVhdGVfaW5fdHJhbnNhY3Rp
b25fd2l0aF9udW1lcmljX2lkX2hvbGRlciwgKGV4ZWN1dGUpKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhUeXBlRXJyb3IsIGNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRf
aG9sZGVyLCAoZXhlY3V0ZSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5j
ZU9mKG1vZGVscy5CcmFuY2gpCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VP
Zihtb2RlbHMuTnVtZXJpY0lkSG9sZGVyKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0lu
c3RhbmNlT2YoQnJhbmNoKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2Yo
TnVtZXJpY0lkSG9sZGVyKQogCiAgICAgZGVmIHRlc3RfZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJp
Y19pZF9ob2xkZXIoc2VsZik6CiAKICAgICAgICAgZGVmIGV4ZWN1dGUoaWQpOgotICAgICAgICAg
ICAgcmV0dXJuIG1vZGVscy5CcmFuY2goaWQ9aWQsIG5hbWU9J3NvbWUgYnJhbmNoJywga2V5X25h
bWU9J3NvbWUtYnJhbmNoJykucHV0KCkKKyAgICAgICAgICAgIHJldHVybiBCcmFuY2goaWQ9aWQs
IG5hbWU9J3NvbWUgYnJhbmNoJywga2V5X25hbWU9J3NvbWUtYnJhbmNoJykucHV0KCkKIAotICAg
ICAgICBicmFuY2ggPSBtb2RlbHMuQnJhbmNoLmdldChtb2RlbHMuY3JlYXRlX2luX3RyYW5zYWN0
aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoZXhlY3V0ZSkpCisgICAgICAgIGJyYW5jaCA9IEJy
YW5jaC5nZXQoY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoZXhl
Y3V0ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKGJyYW5jaCkKIAotICAgICAg
ICBtb2RlbHMuZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoYnJhbmNoKQorICAg
ICAgICBkZWxldGVfbW9kZWxfd2l0aF9udW1lcmljX2lkX2hvbGRlcihicmFuY2gpCiAKLSAgICAg
ICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5CcmFuY2gpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuTnVtZXJpY0lkSG9sZGVyKQor
ICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YoQnJhbmNoKQorICAgICAgICBz
ZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YoTnVtZXJpY0lkSG9sZGVyKQogCiAgICAgZGVm
IHRlc3RfbW9kZWxfZnJvbV9udW1lcmljX2lkKHNlbGYpOgogCiAgICAgICAgIGRlZiBleGVjdXRl
KGlkKToKLSAgICAgICAgICAgIHJldHVybiBtb2RlbHMuQnJhbmNoKGlkPWlkLCBuYW1lPSdzb21l
IGJyYW5jaCcsIGtleV9uYW1lPSdzb21lLWJyYW5jaCcpLnB1dCgpCisgICAgICAgICAgICByZXR1
cm4gQnJhbmNoKGlkPWlkLCBuYW1lPSdzb21lIGJyYW5jaCcsIGtleV9uYW1lPSdzb21lLWJyYW5j
aCcpLnB1dCgpCiAKLSAgICAgICAgYnJhbmNoID0gbW9kZWxzLkJyYW5jaC5nZXQobW9kZWxzLmNy
ZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQorICAg
ICAgICBicmFuY2ggPSBCcmFuY2guZ2V0KGNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVy
aWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxz
Lm1vZGVsX2Zyb21fbnVtZXJpY19pZChicmFuY2guaWQsIG1vZGVscy5CcmFuY2gpLmtleSgpLCBi
cmFuY2gua2V5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxzLm1vZGVsX2Zyb21f
bnVtZXJpY19pZChicmFuY2guaWQgKyAxLCBtb2RlbHMuQnJhbmNoKSwgTm9uZSkKLSAgICAgICAg
bW9kZWxzLmRlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNfaWRfaG9sZGVyKGJyYW5jaCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbHMubW9kZWxfZnJvbV9udW1lcmljX2lkKGJyYW5jaC5p
ZCwgbW9kZWxzLkJyYW5jaCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxf
ZnJvbV9udW1lcmljX2lkKGJyYW5jaC5pZCwgQnJhbmNoKS5rZXkoKSwgYnJhbmNoLmtleSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsX2Zyb21fbnVtZXJpY19pZChicmFuY2guaWQg
KyAxLCBCcmFuY2gpLCBOb25lKQorICAgICAgICBkZWxldGVfbW9kZWxfd2l0aF9udW1lcmljX2lk
X2hvbGRlcihicmFuY2gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxfZnJvbV9udW1l
cmljX2lkKGJyYW5jaC5pZCwgQnJhbmNoKSwgTm9uZSkKIAogCiBjbGFzcyBCcmFuY2hUZXN0cyhE
YXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgIGRlZiB0ZXN0X2NyZWF0ZV9pZl9wb3NzaWJsZShzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5CcmFuY2gp
CisgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihCcmFuY2gpCiAKLSAgICAg
ICAgYnJhbmNoID0gbW9kZWxzLkJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNo
JywgJ3NvbWUgYnJhbmNoJykKKyAgICAgICAgYnJhbmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3Nz
aWJsZSgnc29tZS1icmFuY2gnLCAnc29tZSBicmFuY2gnKQogICAgICAgICBzZWxmLmFzc2VydFRy
dWUoYnJhbmNoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnJhbmNoLmtleSgpLm5hbWUoKSwg
J3NvbWUtYnJhbmNoJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJyYW5jaC5uYW1lLCAnc29t
ZSBicmFuY2gnKQogICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShicmFuY2gpCiAKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2RlbHMuQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgn
c29tZS1icmFuY2gnLCAnc29tZSBvdGhlciBicmFuY2gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShCcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdzb21lIG90aGVy
IGJyYW5jaCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnJhbmNoLm5hbWUsICdzb21lIGJy
YW5jaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKGJyYW5jaCkKIAogCiBjbGFz
cyBQbGF0Zm9ybVRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgZGVmIHRlc3RfY3JlYXRl
X2lmX3Bvc3NpYmxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNl
T2YobW9kZWxzLlBsYXRmb3JtKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNl
T2YoUGxhdGZvcm0pCiAKLSAgICAgICAgcGxhdGZvcm0gPSBtb2RlbHMuUGxhdGZvcm0uY3JlYXRl
X2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRmb3JtJywgJ3NvbWUgcGxhdGZvcm0nKQorICAgICAgICBw
bGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdz
b21lIHBsYXRmb3JtJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBsYXRmb3JtKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGxhdGZvcm0ua2V5KCkubmFtZSgpLCAnc29tZS1wbGF0Zm9ybScp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbGF0Zm9ybS5uYW1lLCAnc29tZSBwbGF0Zm9ybScp
CiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHBsYXRmb3JtKQogCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobW9kZWxzLlBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1w
bGF0Zm9ybScsICdzb21lIG90aGVyIHBsYXRmb3JtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRmb3JtJywgJ3NvbWUgb3Ro
ZXIgcGxhdGZvcm0nKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBsYXRmb3JtLm5hbWUsICdz
b21lIHBsYXRmb3JtJykKICAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocGxhdGZvcm0p
CiAKIAogY2xhc3MgQnVpbGRlclRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgZGVmIHRl
c3RfY3JlYXRlKHNlbGYpOgotICAgICAgICBidWlsZGVyX2tleSA9IG1vZGVscy5CdWlsZGVyLmNy
ZWF0ZSgnc29tZSBidWlsZGVyJywgJ3NvbWUgcGFzc3dvcmQnKQorICAgICAgICBidWlsZGVyX2tl
eSA9IEJ1aWxkZXIuY3JlYXRlKCdzb21lIGJ1aWxkZXInLCAnc29tZSBwYXNzd29yZCcpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyX2tleSkKLSAgICAgICAgYnVpbGRlciA9IG1vZGVs
cy5CdWlsZGVyLmdldChidWlsZGVyX2tleSkKKyAgICAgICAgYnVpbGRlciA9IEJ1aWxkZXIuZ2V0
KGJ1aWxkZXJfa2V5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIua2V5KCkubmFt
ZSgpLCAnc29tZSBidWlsZGVyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLm5h
bWUsICdzb21lIGJ1aWxkZXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFz
c3dvcmQsIG1vZGVscy5CdWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhc3N3b3JkLCBCdWlsZGVyLl9oYXNo
ZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSkKIAogICAgIGRlZiB0ZXN0X3VwZGF0ZV9wYXNz
d29yZChzZWxmKToKLSAgICAgICAgYnVpbGRlciA9IG1vZGVscy5CdWlsZGVyLmdldChtb2RlbHMu
QnVpbGRlci5jcmVhdGUoJ3NvbWUgYnVpbGRlcicsICdzb21lIHBhc3N3b3JkJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYXNzd29yZCwgbW9kZWxzLkJ1aWxkZXIuX2hhc2hl
ZF9wYXNzd29yZCgnc29tZSBwYXNzd29yZCcpKQorICAgICAgICBidWlsZGVyID0gQnVpbGRlci5n
ZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUgYnVpbGRlcicsICdzb21lIHBhc3N3b3JkJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYXNzd29yZCwgQnVpbGRlci5faGFzaGVkX3Bh
c3N3b3JkKCdzb21lIHBhc3N3b3JkJykpCiAgICAgICAgIGJ1aWxkZXIudXBkYXRlX3Bhc3N3b3Jk
KCdvdGhlciBwYXNzd29yZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYXNz
d29yZCwgbW9kZWxzLkJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnb3RoZXIgcGFzc3dvcmQnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhc3N3b3JkLCBCdWlsZGVyLl9oYXNo
ZWRfcGFzc3dvcmQoJ290aGVyIHBhc3N3b3JkJykpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgaXQn
cyBzYXZlZAotICAgICAgICBidWlsZGVyID0gbW9kZWxzLkJ1aWxkZXIuZ2V0KGJ1aWxkZXIua2V5
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYXNzd29yZCwgbW9kZWxzLkJ1
aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnb3RoZXIgcGFzc3dvcmQnKSkKKyAgICAgICAgYnVpbGRl
ciA9IEJ1aWxkZXIuZ2V0KGJ1aWxkZXIua2V5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVpbGRlci5wYXNzd29yZCwgQnVpbGRlci5faGFzaGVkX3Bhc3N3b3JkKCdvdGhlciBwYXNzd29y
ZCcpKQogCiAgICAgZGVmIHRlc3RfaGFzaGVkX3Bhc3N3b3JkKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKG1vZGVscy5CdWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFz
c3dvcmQnKSwgJ3NvbWUgcGFzc3dvcmQnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdzb21l
IHBhc3N3b3JkJyBpbiBtb2RlbHMuQnVpbGRlci5faGFzaGVkX3Bhc3N3b3JkKCdzb21lIHBhc3N3
b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vZGVscy5CdWlsZGVyLl9oYXNo
ZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSksIDY0KQorICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKEJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnc29tZSBwYXNzd29yZCcpLCAnc29tZSBw
YXNzd29yZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3NvbWUgcGFzc3dvcmQnIGluIEJ1
aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnc29tZSBwYXNzd29yZCcpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihCdWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSks
IDY0KQogCiAgICAgZGVmIHRlc3RfYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICBidWlsZGVy
ID0gbW9kZWxzLkJ1aWxkZXIuZ2V0KG1vZGVscy5CdWlsZGVyLmNyZWF0ZSgnc29tZSBidWlsZGVy
JywgJ3NvbWUgcGFzc3dvcmQnKSkKKyAgICAgICAgYnVpbGRlciA9IEJ1aWxkZXIuZ2V0KEJ1aWxk
ZXIuY3JlYXRlKCdzb21lIGJ1aWxkZXInLCAnc29tZSBwYXNzd29yZCcpKQogICAgICAgICBzZWxm
LmFzc2VydFRydWUoYnVpbGRlci5hdXRoZW50aWNhdGUoJ3NvbWUgcGFzc3dvcmQnKSkKICAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLmF1dGhlbnRpY2F0ZSgnYmFkIHBhc3N3b3JkJykp
CiAKIAogZGVmIF9jcmVhdGVfc29tZV9idWlsZGVyKCk6Ci0gICAgYnJhbmNoID0gbW9kZWxzLkJy
YW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKLSAg
ICBwbGF0Zm9ybSA9IG1vZGVscy5QbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxh
dGZvcm0nLCAnU29tZSBQbGF0Zm9ybScpCi0gICAgYnVpbGRlcl9rZXkgPSBtb2RlbHMuQnVpbGRl
ci5jcmVhdGUoJ3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKQotICAgIHJldHVybiBicmFu
Y2gsIHBsYXRmb3JtLCBtb2RlbHMuQnVpbGRlci5nZXQoYnVpbGRlcl9rZXkpCisgICAgYnJhbmNo
ID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFuY2gn
KQorICAgIHBsYXRmb3JtID0gUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRm
b3JtJywgJ1NvbWUgUGxhdGZvcm0nKQorICAgIGJ1aWxkZXJfa2V5ID0gQnVpbGRlci5jcmVhdGUo
J3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKQorICAgIHJldHVybiBicmFuY2gsIHBsYXRm
b3JtLCBCdWlsZGVyLmdldChidWlsZGVyX2tleSkKIAogCiBkZWYgX2NyZWF0ZV9idWlsZChicmFu
Y2gsIHBsYXRmb3JtLCBidWlsZGVyLCBrZXlfbmFtZT0nc29tZS1idWlsZCcpOgotICAgIGJ1aWxk
X2tleSA9IG1vZGVscy5CdWlsZChrZXlfbmFtZT1rZXlfbmFtZSwgYnJhbmNoPWJyYW5jaCwgcGxh
dGZvcm09cGxhdGZvcm0sIGJ1aWxkZXI9YnVpbGRlciwKKyAgICBidWlsZF9rZXkgPSBCdWlsZChr
ZXlfbmFtZT1rZXlfbmFtZSwgYnJhbmNoPWJyYW5jaCwgcGxhdGZvcm09cGxhdGZvcm0sIGJ1aWxk
ZXI9YnVpbGRlciwKICAgICAgICAgYnVpbGROdW1iZXI9MSwgcmV2aXNpb249MTAwLCB0aW1lc3Rh
bXA9ZGF0ZXRpbWUubm93KCkpLnB1dCgpCi0gICAgcmV0dXJuIG1vZGVscy5CdWlsZC5nZXQoYnVp
bGRfa2V5KQorICAgIHJldHVybiBCdWlsZC5nZXQoYnVpbGRfa2V5KQogCiAKIGNsYXNzIEJ1aWxk
VGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKQEAgLTIxOCwxMyArMjMzLDEzIEBAIGNsYXNzIEJ1
aWxkVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICAgICAgYnJhbmNoLCBwbGF0Zm9ybSwg
YnVpbGRlciA9IF9jcmVhdGVfc29tZV9idWlsZGVyKCkKIAogICAgICAgICB0aW1lc3RhbXAgPSBk
YXRldGltZS5ub3coKS5yZXBsYWNlKG1pY3Jvc2Vjb25kPTApCi0gICAgICAgIGxvZyA9IG1vZGVs
cy5SZXBvcnRMb2codGltZXN0YW1wPXRpbWVzdGFtcCwgaGVhZGVycz0nc29tZSBoZWFkZXJzJywK
KyAgICAgICAgbG9nID0gUmVwb3J0TG9nKHRpbWVzdGFtcD10aW1lc3RhbXAsIGhlYWRlcnM9J3Nv
bWUgaGVhZGVycycsCiAgICAgICAgICAgICBwYXlsb2FkPSd7ImJyYW5jaCI6ICJzb21lLWJyYW5j
aCIsICJwbGF0Zm9ybSI6ICJzb21lLXBsYXRmb3JtIiwgImJ1aWxkZXItbmFtZSI6ICJzb21lLWJ1
aWxkZXIiLCcgKwogICAgICAgICAgICAgICAgICciYnVpbGQtbnVtYmVyIjogMTIzLCAid2Via2l0
LXJldmlzaW9uIjogNDU2LCAidGltZXN0YW1wIjogJWR9JyAlIGludChta3RpbWUodGltZXN0YW1w
LnRpbWV0dXBsZSgpKSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9m
KG1vZGVscy5CdWlsZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKEJ1
aWxkKQogCi0gICAgICAgIGJ1aWxkID0gbW9kZWxzLkJ1aWxkLmdldF9vcl9pbnNlcnRfZnJvbV9s
b2cobG9nKQorICAgICAgICBidWlsZCA9IEJ1aWxkLmdldF9vcl9pbnNlcnRfZnJvbV9sb2cobG9n
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVpbGQuYnJhbmNoLmtleSgpLCBicmFuY2gua2V5KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVpbGQucGxhdGZvcm0ua2V5KCksIHBsYXRmb3JtLmtleSgpKQpAQCAtMjM5LDQzICsy
NTQsNDMgQEAgY2xhc3MgQnVpbGRUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogCiBjbGFzcyBU
ZXN0TW9kZWxUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgIGRlZiB0ZXN0X3VwZGF0ZV9v
cl9pbnNlcnQoc2VsZik6Ci0gICAgICAgIGJyYW5jaCA9IG1vZGVscy5CcmFuY2guY3JlYXRlX2lm
X3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCi0gICAgICAgIHBsYXRmb3Jt
ID0gbW9kZWxzLlBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdT
b21lIFBsYXRmb3JtJykKKyAgICAgICAgYnJhbmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJs
ZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFuY2gnKQorICAgICAgICBwbGF0Zm9ybSA9IFBsYXRm
b3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykK
IAotICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3QpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihUZXN0KQogCi0gICAgICAgIHRl
c3QgPSBtb2RlbHMuVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBicmFuY2gsIHBs
YXRmb3JtKQorICAgICAgICB0ZXN0ID0gVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3Qn
LCBicmFuY2gsIHBsYXRmb3JtKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0LmJyYW5jaGVzLCBbYnJhbmNoLmtleSgpXSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0LnBsYXRmb3JtcywgW3BsYXRmb3JtLmtleSgpXSkKICAg
ICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UodGVzdCkKIAogICAgIGRlZiB0ZXN0X3VwZGF0
ZV9vcl9pbnNlcnRfdG9fdXBkYXRlKHNlbGYpOgotICAgICAgICBicmFuY2ggPSBtb2RlbHMuQnJh
bmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFuY2gnKQotICAg
ICAgICBwbGF0Zm9ybSA9IG1vZGVscy5QbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUt
cGxhdGZvcm0nLCAnU29tZSBQbGF0Zm9ybScpCi0gICAgICAgIHRlc3QgPSBtb2RlbHMuVGVzdC51
cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBicmFuY2gsIHBsYXRmb3JtKQorICAgICAgICBi
cmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJy
YW5jaCcpCisgICAgICAgIHBsYXRmb3JtID0gUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdz
b21lLXBsYXRmb3JtJywgJ1NvbWUgUGxhdGZvcm0nKQorICAgICAgICB0ZXN0ID0gVGVzdC51cGRh
dGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBicmFuY2gsIHBsYXRmb3JtKQogICAgICAgICBzZWxm
LmFzc2VydE9ubHlJbnN0YW5jZSh0ZXN0KQogCi0gICAgICAgIG90aGVyX2JyYW5jaCA9IG1vZGVs
cy5CcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdvdGhlci1icmFuY2gnLCAnT3RoZXIgQnJhbmNo
JykKLSAgICAgICAgb3RoZXJfcGxhdGZvcm0gPSBtb2RlbHMuUGxhdGZvcm0uY3JlYXRlX2lmX3Bv
c3NpYmxlKCdvdGhlci1wbGF0Zm9ybScsICdPdGhlciBQbGF0Zm9ybScpCi0gICAgICAgIHRlc3Qg
PSBtb2RlbHMuVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBvdGhlcl9icmFuY2gs
IG90aGVyX3BsYXRmb3JtKQorICAgICAgICBvdGhlcl9icmFuY2ggPSBCcmFuY2guY3JlYXRlX2lm
X3Bvc3NpYmxlKCdvdGhlci1icmFuY2gnLCAnT3RoZXIgQnJhbmNoJykKKyAgICAgICAgb3RoZXJf
cGxhdGZvcm0gPSBQbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ290aGVyLXBsYXRmb3JtJywg
J090aGVyIFBsYXRmb3JtJykKKyAgICAgICAgdGVzdCA9IFRlc3QudXBkYXRlX29yX2luc2VydCgn
c29tZS10ZXN0Jywgb3RoZXJfYnJhbmNoLCBvdGhlcl9wbGF0Zm9ybSkKICAgICAgICAgc2VsZi5h
c3NlcnRPbmx5SW5zdGFuY2UodGVzdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbFVub3JkZXJl
ZExpc3QodGVzdC5icmFuY2hlcywgW2JyYW5jaC5rZXkoKSwgb3RoZXJfYnJhbmNoLmtleSgpXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbFVub3JkZXJlZExpc3QodGVzdC5wbGF0Zm9ybXMsIFtw
bGF0Zm9ybS5rZXkoKSwgb3RoZXJfcGxhdGZvcm0ua2V5KCldKQogCi0gICAgICAgIHRlc3QgPSBt
b2RlbHMuVGVzdC5nZXQodGVzdC5rZXkoKSkKKyAgICAgICAgdGVzdCA9IFRlc3QuZ2V0KHRlc3Qu
a2V5KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxVbm9yZGVyZWRMaXN0KHRlc3QuYnJhbmNo
ZXMsIFticmFuY2gua2V5KCksIG90aGVyX2JyYW5jaC5rZXkoKV0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxVbm9yZGVyZWRMaXN0KHRlc3QucGxhdGZvcm1zLCBbcGxhdGZvcm0ua2V5KCksIG90
aGVyX3BsYXRmb3JtLmtleSgpXSkKIAogICAgIGRlZiB0ZXN0X21lcmdlKHNlbGYpOgogICAgICAg
ICBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQogICAg
ICAgICBzb21lX2J1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVy
KQotICAgICAgICBzb21lX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRf
ZnJvbV9wYXJzZWRfanNvbignc29tZS10ZXN0Jywgc29tZV9idWlsZCwgNTApCi0gICAgICAgIHNv
bWVfdGVzdCA9IG1vZGVscy5UZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3NvbWUtdGVzdCcsIGJyYW5j
aCwgcGxhdGZvcm0pCisgICAgICAgIHNvbWVfcmVzdWx0ID0gVGVzdFJlc3VsdC5nZXRfb3JfaW5z
ZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIHNvbWVfYnVpbGQsIDUwKQorICAgICAg
ICBzb21lX3Rlc3QgPSBUZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3NvbWUtdGVzdCcsIGJyYW5jaCwg
cGxhdGZvcm0pCiAKICAgICAgICAgb3RoZXJfYnVpbGQgPSBfY3JlYXRlX2J1aWxkKGJyYW5jaCwg
cGxhdGZvcm0sIGJ1aWxkZXIsICdvdGhlci1idWlsZCcpCi0gICAgICAgIG90aGVyX3Jlc3VsdCA9
IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignb3RoZXIt
dGVzdCcsIG90aGVyX2J1aWxkLCAzMCkKLSAgICAgICAgb3RoZXJfdGVzdCA9IG1vZGVscy5UZXN0
LnVwZGF0ZV9vcl9pbnNlcnQoJ290aGVyLXRlc3QnLCBicmFuY2gsIHBsYXRmb3JtKQorICAgICAg
ICBvdGhlcl9yZXN1bHQgPSBUZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNv
bignb3RoZXItdGVzdCcsIG90aGVyX2J1aWxkLCAzMCkKKyAgICAgICAgb3RoZXJfdGVzdCA9IFRl
c3QudXBkYXRlX29yX2luc2VydCgnb3RoZXItdGVzdCcsIGJyYW5jaCwgcGxhdGZvcm0pCiAKICAg
ICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2VzKFtzb21lX3Jlc3VsdCwgb3RoZXJfcmVzdWx0
XSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzb21lX3Jlc3VsdC5rZXkoKSwgb3RoZXJf
cmVzdWx0LmtleSgpKQpAQCAtMjg1LDcgKzMwMCw3IEBAIGNsYXNzIFRlc3RNb2RlbFRlc3RzKERh
dGFTdG9yZVRlc3RzQmFzZSkKICAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2VzKFtzb21l
X3Rlc3QsIG90aGVyX3Rlc3RdKQogCiAgICAgICAgIHNvbWVfdGVzdC5tZXJnZShvdGhlcl90ZXN0
KQotICAgICAgICByZXN1bHRzX2Zvcl9zb21lX3Rlc3QgPSBtb2RlbHMuVGVzdFJlc3VsdC5hbGwo
KQorICAgICAgICByZXN1bHRzX2Zvcl9zb21lX3Rlc3QgPSBUZXN0UmVzdWx0LmFsbCgpCiAgICAg
ICAgIHJlc3VsdHNfZm9yX3NvbWVfdGVzdC5maWx0ZXIoJ25hbWUgPScsICdzb21lLXRlc3QnKQog
ICAgICAgICByZXN1bHRzX2Zvcl9zb21lX3Rlc3QgPSByZXN1bHRzX2Zvcl9zb21lX3Rlc3QuZmV0
Y2goNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0c19mb3Jfc29tZV90ZXN0
KSwgMikKQEAgLTMwMyw4ICszMTgsOCBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdHMoRGF0YVN0b3Jl
VGVzdHNCYXNlCiAgICAgZGVmIHRlc3RfZ2V0X29yX2luc2VydF92YWx1ZShzZWxmKToKICAgICAg
ICAgYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlciA9IF9jcmVhdGVfc29tZV9idWlsZGVyKCkKICAg
ICAgICAgYnVpbGQgPSBfY3JlYXRlX2J1aWxkKGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuVGVzdFJlc3VsdCkK
LSAgICAgICAgcmVzdWx0ID0gbW9kZWxzLlRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3Bh
cnNlZF9qc29uKCdzb21lLXRlc3QnLCBidWlsZCwgNTApCisgICAgICAgIHNlbGYuYXNzZXJ0VGhl
cmVJc05vSW5zdGFuY2VPZihUZXN0UmVzdWx0KQorICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0
LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignc29tZS10ZXN0JywgYnVpbGQsIDUwKQog
ICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShyZXN1bHQpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzdWx0Lm5hbWUsICdzb21lLXRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3VsdC5idWlsZC5rZXkoKSwgYnVpbGQua2V5KCkpCkBAIC0zMTcsOCArMzMyLDggQEAg
Y2xhc3MgVGVzdFJlc3VsdFRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZQogICAgIGRlZiB0ZXN0X2dl
dF9vcl9pbnNlcnRfc3RhdF92YWx1ZShzZWxmKToKICAgICAgICAgYnJhbmNoLCBwbGF0Zm9ybSwg
YnVpbGRlciA9IF9jcmVhdGVfc29tZV9idWlsZGVyKCkKICAgICAgICAgYnVpbGQgPSBfY3JlYXRl
X2J1aWxkKGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhl
cmVJc05vSW5zdGFuY2VPZihtb2RlbHMuVGVzdFJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gbW9k
ZWxzLlRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKCdzb21lLXRlc3Qn
LCBidWlsZCwKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKFRlc3RSZXN1
bHQpCisgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNl
ZF9qc29uKCdzb21lLXRlc3QnLCBidWlsZCwKICAgICAgICAgICAgIHsiYXZnIjogNDAsICJtZWRp
YW4iOiAiNDAuMSIsICJzdGRldiI6IDMuMjUsICJtaW4iOiAzMC41LCAibWF4IjogNDV9KQogICAg
ICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShyZXN1bHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzdWx0Lm5hbWUsICdzb21lLXRlc3QnKQpAQCAtMzMyLDggKzM0Nyw4IEBAIGNsYXNz
IFRlc3RSZXN1bHRUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UKICAgICBkZWYgdGVzdF9yZXBsYWNl
X3RvX2NoYW5nZV90ZXN0X25hbWUoc2VsZik6CiAgICAgICAgIGJyYW5jaCwgcGxhdGZvcm0sIGJ1
aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCiAgICAgICAgIGJ1aWxkID0gX2NyZWF0ZV9i
dWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyKQotICAgICAgICBzZWxmLmFzc2VydFRoZXJl
SXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3RSZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IG1vZGVs
cy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignc29tZS10ZXN0Jywg
YnVpbGQsIDUwKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YoVGVzdFJl
c3VsdCkKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFy
c2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxkLCA1MCkKICAgICAgICAgc2VsZi5hc3NlcnRPbmx5
SW5zdGFuY2UocmVzdWx0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5uYW1lLCAn
c29tZS10ZXN0JykKIApAQCAtMzUyLDggKzM2Nyw4IEBAIGNsYXNzIFRlc3RSZXN1bHRUZXN0cyhE
YXRhU3RvcmVUZXN0c0Jhc2UKICAgICBkZWYgdGVzdF9yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25h
bWVfd2l0aF9zdGF0X3ZhbHVlKHNlbGYpOgogICAgICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWls
ZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQogICAgICAgICBidWlsZCA9IF9jcmVhdGVfYnVp
bGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlz
Tm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0KQotICAgICAgICByZXN1bHQgPSBtb2RlbHMu
VGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1
aWxkLAorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YoVGVzdFJlc3VsdCkK
KyAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pz
b24oJ3NvbWUtdGVzdCcsIGJ1aWxkLAogICAgICAgICAgICAgeyJhdmciOiA0MCwgIm1lZGlhbiI6
ICI0MC4xIiwgInN0ZGV2IjogMy4yNSwgIm1pbiI6IDMwLjUsICJtYXgiOiA0NX0pCiAgICAgICAg
IHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJlc3VsdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXN1bHQubmFtZSwgJ3NvbWUtdGVzdCcpCkBAIC0zNzQsMjMgKzM4OSwyMyBAQCBjbGFzcyBU
ZXN0UmVzdWx0VGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlCiAgICAgZGVmIHRlc3RfcmVwbGFjZV90
b19jaGFuZ2VfdGVzdF9uYW1lX292ZXJyaWRlc19jb25mbGljdGluZ19yZXN1bHQoc2VsZik6CiAg
ICAgICAgIGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigp
CiAgICAgICAgIGJ1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVy
KQotICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3RSZXN1
bHQpCi0gICAgICAgIHJlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJv
bV9wYXJzZWRfanNvbignc29tZS10ZXN0JywgYnVpbGQsIDIwKQorICAgICAgICBzZWxmLmFzc2Vy
dFRoZXJlSXNOb0luc3RhbmNlT2YoVGVzdFJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJl
c3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxkLCAy
MCkKICAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocmVzdWx0KQogCi0gICAgICAgIGNv
bmZsaWN0aW5nX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9w
YXJzZWRfanNvbignb3RoZXItdGVzdCcsIGJ1aWxkLCAxMCkKKyAgICAgICAgY29uZmxpY3Rpbmdf
cmVzdWx0ID0gVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ290aGVy
LXRlc3QnLCBidWlsZCwgMTApCiAKICAgICAgICAgbmV3X3Jlc3VsdCA9IHJlc3VsdC5yZXBsYWNl
X3RvX2NoYW5nZV90ZXN0X25hbWUoJ290aGVyLXRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKHJlc3VsdCwgbmV3X3Jlc3VsdCkKICAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFu
Y2UobmV3X3Jlc3VsdCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19yZXN1bHQubmFt
ZSwgJ290aGVyLXRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVscy5UZXN0UmVz
dWx0LmdldChjb25mbGljdGluZ19yZXN1bHQua2V5KCkpLnZhbHVlLCAyMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChUZXN0UmVzdWx0LmdldChjb25mbGljdGluZ19yZXN1bHQua2V5KCkpLnZh
bHVlLCAyMCkKIAogCiBjbGFzcyBSZXBvcnRMb2dUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgog
ICAgIGRlZiBfY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAg
IHJldHVybiBtb2RlbHMuUmVwb3J0TG9nKHRpbWVzdGFtcD1kYXRldGltZS5ub3coKSwgaGVhZGVy
cz0nc29tZSBoZWFkZXJzJywgcGF5bG9hZD1wYXlsb2FkKQorICAgICAgICByZXR1cm4gUmVwb3J0
TG9nKHRpbWVzdGFtcD1kYXRldGltZS5ub3coKSwgaGVhZGVycz0nc29tZSBoZWFkZXJzJywgcGF5
bG9hZD1wYXlsb2FkKQogCiAgICAgZGVmIHRlc3RfcGFyc2VkX3BheWxvYWQoc2VsZik6CiAgICAg
ICAgIGxvZyA9IHNlbGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKCcnKQpAQCAtNDI0LDcgKzQz
OSw3IEBAIGNsYXNzIFJlcG9ydExvZ1Rlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSkKICAgICAgICAg
bG9nID0gc2VsZi5fY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoJ3siYnVpbGRlci1uYW1lIjogIiVz
In0nICUgYnVpbGRlcl9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5idWlsZGVy
KCksIE5vbmUpCiAKLSAgICAgICAgYnVpbGRlcl9rZXkgPSBtb2RlbHMuQnVpbGRlci5jcmVhdGUo
YnVpbGRlcl9uYW1lLCAnc29tZSBwYXNzd29yZCcpCisgICAgICAgIGJ1aWxkZXJfa2V5ID0gQnVp
bGRlci5jcmVhdGUoYnVpbGRlcl9uYW1lLCAnc29tZSBwYXNzd29yZCcpCiAgICAgICAgIGxvZyA9
IHNlbGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKCd7ImJ1aWxkZXItbmFtZSI6ICIlcyJ9JyAl
IGJ1aWxkZXJfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cuYnVpbGRlcigpLmtl
eSgpLCBidWlsZGVyX2tleSkKIApAQCAtNDM1LDcgKzQ1MCw3IEBAIGNsYXNzIFJlcG9ydExvZ1Rl
c3RzKERhdGFTdG9yZVRlc3RzQmFzZSkKICAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193
aXRoX3BheWxvYWQoJ3siYnJhbmNoIjogInNvbWUtYnJhbmNoIn0nKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxvZy5icmFuY2goKSwgTm9uZSkKIAotICAgICAgICBicmFuY2ggPSBtb2RlbHMu
QnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgic29tZS1icmFuY2giLCAiU29tZSBCcmFuY2giKQor
ICAgICAgICBicmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCJzb21lLWJyYW5jaCIs
ICJTb21lIEJyYW5jaCIpCiAgICAgICAgIGxvZyA9IHNlbGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXls
b2FkKCd7ImJyYW5jaCI6ICJzb21lLWJyYW5jaCJ9JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsb2cuYnJhbmNoKCkua2V5KCksIGJyYW5jaC5rZXkoKSkKIApAQCAtNDQ2LDcgKzQ2MSw3IEBA
IGNsYXNzIFJlcG9ydExvZ1Rlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSkKICAgICAgICAgbG9nID0g
c2VsZi5fY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoJ3sicGxhdGZvcm0iOiAic29tZS1wbGF0Zm9y
bSJ9JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cucGxhdGZvcm0oKSwgTm9uZSkKIAot
ICAgICAgICBwbGF0Zm9ybSA9IG1vZGVscy5QbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoInNv
bWUtcGxhdGZvcm0iLCAiU29tZSBQbGF0Zm9ybSIpCisgICAgICAgIHBsYXRmb3JtID0gUGxhdGZv
cm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCJzb21lLXBsYXRmb3JtIiwgIlNvbWUgUGxhdGZvcm0iKQog
ICAgICAgICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgneyJwbGF0Zm9ybSI6
ICJzb21lLXBsYXRmb3JtIn0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5wbGF0Zm9y
bSgpLmtleSgpLCBwbGF0Zm9ybS5rZXkoKSkKIApAQCAtNDgwLDMxICs0OTUsNjIgQEAgY2xhc3Mg
UGVyc2lzdGVudENhY2hlVGVzdHMoRGF0YVN0b3JlVGVzdAogICAgICAgICBzZWxmLnRlc3RiZWQu
aW5pdF9tZW1jYWNoZV9zdHViKCkKIAogICAgIGRlZiBfYXNzZXJ0X3BlcnNpc3RlbnRfY2FjaGUo
c2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVscy5QZXJz
aXN0ZW50Q2FjaGUuZ2V0X2J5X2tleV9uYW1lKG5hbWUpLnZhbHVlLCB2YWx1ZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQZXJzaXN0ZW50Q2FjaGUuZ2V0X2J5X2tleV9uYW1lKG5hbWUpLnZh
bHVlLCB2YWx1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1jYWNoZS5nZXQobmFtZSks
IHZhbHVlKQogCiAgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRo
ZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLlBlcnNpc3RlbnRDYWNoZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKFBlcnNpc3RlbnRDYWNoZSkKIAotICAgICAgICBtb2Rl
bHMuUGVyc2lzdGVudENhY2hlLnNldF9jYWNoZSgnc29tZS1jYWNoZScsICdzb21lIGRhdGEnKQor
ICAgICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0X2NhY2hlKCdzb21lLWNhY2hlJywgJ3NvbWUgZGF0
YScpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9wZXJzaXN0ZW50X2NhY2hlKCdzb21lLWNhY2hlJywg
J3NvbWUgZGF0YScpCiAKLSAgICAgICAgbW9kZWxzLlBlcnNpc3RlbnRDYWNoZS5zZXRfY2FjaGUo
J3NvbWUtY2FjaGUnLCAnc29tZSBvdGhlciBkYXRhJykKKyAgICAgICAgUGVyc2lzdGVudENhY2hl
LnNldF9jYWNoZSgnc29tZS1jYWNoZScsICdzb21lIG90aGVyIGRhdGEnKQogCiAgICAgICAgIHNl
bGYuX2Fzc2VydF9wZXJzaXN0ZW50X2NhY2hlKCdzb21lLWNhY2hlJywgJ3NvbWUgb3RoZXIgZGF0
YScpCiAKICAgICBkZWYgdGVzdF9nZXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bWVtY2FjaGUuZ2V0KCdzb21lLWNhY2hlJyksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobW9kZWxzLlBlcnNpc3RlbnRDYWNoZS5nZXRfY2FjaGUoJ3NvbWUtY2FjaGUnKSwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJzaXN0ZW50Q2FjaGUuZ2V0X2NhY2hlKCdzb21l
LWNhY2hlJyksIE5vbmUpCiAKLSAgICAgICAgbW9kZWxzLlBlcnNpc3RlbnRDYWNoZS5zZXRfY2Fj
aGUoJ3NvbWUtY2FjaGUnLCAnc29tZSBkYXRhJykKKyAgICAgICAgUGVyc2lzdGVudENhY2hlLnNl
dF9jYWNoZSgnc29tZS1jYWNoZScsICdzb21lIGRhdGEnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobWVtY2FjaGUuZ2V0KCdzb21lLWNhY2hlJyksICdzb21lIGRhdGEnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuZ2V0X2NhY2hlKCdzb21lLWNh
Y2hlJyksICdzb21lIGRhdGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBlcnNpc3RlbnRD
YWNoZS5nZXRfY2FjaGUoJ3NvbWUtY2FjaGUnKSwgJ3NvbWUgZGF0YScpCiAKICAgICAgICAgbWVt
Y2FjaGUuZGVsZXRlKCdzb21lLWNhY2hlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1j
YWNoZS5nZXQoJ3NvbWUtY2FjaGUnKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
b2RlbHMuUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZSgnc29tZS1jYWNoZScpLCAnc29tZSBkYXRh
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJzaXN0ZW50Q2FjaGUuZ2V0X2NhY2hlKCdz
b21lLWNhY2hlJyksICdzb21lIGRhdGEnKQorCisKK2NsYXNzIERhc2hib2FyZEltYWdlVGVzdHMo
RGF0YVN0b3JlVGVzdHNCYXNlKToKKyAgICBkZWYgdGVzdF9uZWVkc191cGRhdGUoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEYXNoYm9hcmRJbWFnZS5uZWVkc191cGRhdGUoMSwgMiwg
MywgNykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEYXNoYm9hcmRJbWFnZS5uZWVkc191cGRh
dGUoMSwgMiwgMywgMzApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoRGFzaGJvYXJkSW1hZ2Uu
bmVlZHNfdXBkYXRlKDEsIDIsIDMsIDYwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERhc2hi
b2FyZEltYWdlLm5lZWRzX3VwZGF0ZSgxLCAyLCAzLCAzNjUpKQorCisgICAgICAgIGltYWdlID0g
RGFzaGJvYXJkSW1hZ2Uoa2V5X25hbWU9RGFzaGJvYXJkSW1hZ2Uua2V5X25hbWUoMSwgMiwgMywg
NyksIGltYWdlPSdibGFoJykKKyAgICAgICAgaW1hZ2UucHV0KCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRPbmx5SW5zdGFuY2UoaW1hZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEYXNoYm9hcmRJ
bWFnZS5uZWVkc191cGRhdGUoMSwgMiwgMywgNykpCisKKyAgICAgICAgRGFzaGJvYXJkSW1hZ2Uo
a2V5X25hbWU9RGFzaGJvYXJkSW1hZ2Uua2V5X25hbWUoMSwgMiwgMywgMzApLCBpbWFnZT0nYmxh
aCcpLnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRGFzaGJvYXJkSW1hZ2UubmVlZHNf
dXBkYXRlKDEsIDIsIDMsIDMwLCBkYXRldGltZS5ub3coKSArIHRpbWVkZWx0YSgwLCAxMCkpKQor
CisgICAgICAgIERhc2hib2FyZEltYWdlKGtleV9uYW1lPURhc2hib2FyZEltYWdlLmtleV9uYW1l
KDEsIDIsIDQsIDMwKSwgaW1hZ2U9J2JsYWgnKS5wdXQoKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoRGFzaGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRlKDEsIDIsIDQsIDMwLCBkYXRldGltZS5ub3co
KSArIHRpbWVkZWx0YSgxKSkpCisKKyAgICAgICAgRGFzaGJvYXJkSW1hZ2Uoa2V5X25hbWU9RGFz
aGJvYXJkSW1hZ2Uua2V5X25hbWUoMSwgMiwgMywgOTApLCBpbWFnZT0nYmxhaCcpLnB1dCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRGFzaGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRlKDEsIDIs
IDMsIDkwLCBkYXRldGltZS5ub3coKSArIHRpbWVkZWx0YSgwLCAyMCkpKQorCisgICAgICAgIERh
c2hib2FyZEltYWdlKGtleV9uYW1lPURhc2hib2FyZEltYWdlLmtleV9uYW1lKDEsIDIsIDQsIDkw
KSwgaW1hZ2U9J2JsYWgnKS5wdXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoRGFzaGJvYXJk
SW1hZ2UubmVlZHNfdXBkYXRlKDEsIDIsIDQsIDkwLCBkYXRldGltZS5ub3coKSArIHRpbWVkZWx0
YSgxKSkpCisKKyAgICAgICAgRGFzaGJvYXJkSW1hZ2Uoa2V5X25hbWU9RGFzaGJvYXJkSW1hZ2Uu
a2V5X25hbWUoMSwgMiwgMywgMzY1KSwgaW1hZ2U9J2JsYWgnKS5wdXQoKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKERhc2hib2FyZEltYWdlLm5lZWRzX3VwZGF0ZSgxLCAyLCAzLCAzNjUsIGRh
dGV0aW1lLm5vdygpICsgdGltZWRlbHRhKDEpKSkKKworICAgICAgICBEYXNoYm9hcmRJbWFnZShr
ZXlfbmFtZT1EYXNoYm9hcmRJbWFnZS5rZXlfbmFtZSgxLCAyLCA0LCAzNjUpLCBpbWFnZT0nYmxh
aCcpLnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEYXNoYm9hcmRJbWFnZS5uZWVkc191
cGRhdGUoMSwgMiwgNCwgMzY1LCBkYXRldGltZS5ub3coKSArIHRpbWVkZWx0YSgxMCkpKQogCiAK
IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129667</attachid>
            <date>2012-03-01 01:54:08 -0800</date>
            <delta_ts>2012-03-01 13:50:40 -0800</delta_ts>
            <desc>Removed logging in RunsChartHandler since it&apos;ll be too long for 90/365 days</desc>
            <filename>bug-80016-20120301015407.patch</filename>
            <type>text/plain</type>
            <size>34853</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTMy
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAz
LTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBlcmYtby1t
YXRpYzogZ2VuZXJhdGUgZGFzaGJvYXJkIGltYWdlcyBmb3IgMzAsIDkwLCBhbmQgMzY1IGRheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBh
YmlsaXR5IHRvIGdlbmVyYXRlIGdyYXBocyBmb3IgMzAsIDkwLCBhbmQgMzY1IGRheSBncmFwaHMg
YnV0IG9ubHkgb2NjYXNpb25hbGx5CisgICAgICAgIGFjY29yZGluZyB0byB0aGUgaGV1cmlzdGlj
cyBpbiBEYXNoYm9hcmRJbWFnZS5uZWVkc191cGRhdGUuCisKKyAgICAgICAgQWxzbyBmaXggYSBi
dWcgaW4gUnVucy5jaGFydF9wYXJhbXMgdGhhdCB5LWF4aXMgZ3JpZCB3YXMgc2V0IHRvIGFuIGlu
Y29ycmVjdCB2YWx1ZS4KKyAKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90
LmNvbS9jb250cm9sbGVyLnB5OgorICAgICAgICAoc2NoZWR1bGVfcnVuc191cGRhdGUpOgorICAg
ICAgICAoUnVuc0NoYXJ0SGFuZGxlci5wb3N0KToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQt
cGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnMucHk6CisgICAgICAgIChSdW5zLmNoYXJ0
X3BhcmFtcyk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanNv
bl9nZW5lcmF0b3JzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUnVuc1Rlc3QudGVzdF9jaGFydF9w
YXJhbXNfd2l0aF92YWx1ZSk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3Bv
dC5jb20vbW9kZWxzLnB5OgorICAgICAgICAoRGFzaGJvYXJkSW1hZ2UpOgorICAgICAgICAoRGFz
aGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRlKToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVy
Zi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHk6CisgICAgICAgIChIZWxwZXJUZXN0cy5f
YXNzZXJ0X3RoZXJlX2lzX2V4YWN0bHlfb25lX2lkX2hvbGRlcl9hbmRfbWF0Y2hlcyk6CisgICAg
ICAgIChIZWxwZXJUZXN0cy50ZXN0X2NyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNf
aWRfaG9sZGVyLmV4ZWN1dGUpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9jcmVhdGVfaW5f
dHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcik6CisgICAgICAgIChIZWxwZXJUZXN0
cy50ZXN0X2ZhaWxpbmdfaW5fY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9o
b2xkZXIpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9yYWlzaW5nX2luX2NyZWF0ZV9pbl90
cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKToKKyAgICAgICAgKEhlbHBlclRlc3Rz
LnRlc3RfZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIuZXhlY3V0ZSk6CisgICAg
ICAgIChIZWxwZXJUZXN0cy50ZXN0X2RlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNfaWRfaG9sZGVy
KToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfbW9kZWxfZnJvbV9udW1lcmljX2lkLmV4ZWN1
dGUpOgorICAgICAgICAoSGVscGVyVGVzdHMpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9t
b2RlbF9mcm9tX251bWVyaWNfaWQpOgorICAgICAgICAoQnJhbmNoVGVzdHMudGVzdF9jcmVhdGVf
aWZfcG9zc2libGUpOgorICAgICAgICAoUGxhdGZvcm1UZXN0cy50ZXN0X2NyZWF0ZV9pZl9wb3Nz
aWJsZSk6CisgICAgICAgIChCdWlsZGVyVGVzdHMudGVzdF9jcmVhdGUpOgorICAgICAgICAoQnVp
bGRlclRlc3RzLnRlc3RfdXBkYXRlX3Bhc3N3b3JkKToKKyAgICAgICAgKEJ1aWxkZXJUZXN0cy50
ZXN0X2hhc2hlZF9wYXNzd29yZCk6CisgICAgICAgIChCdWlsZGVyVGVzdHMudGVzdF9hdXRoZW50
aWNhdGUpOgorICAgICAgICAoX2NyZWF0ZV9zb21lX2J1aWxkZXIpOgorICAgICAgICAoX2NyZWF0
ZV9idWlsZCk6CisgICAgICAgIChCdWlsZFRlc3RzLnRlc3RfZ2V0X29yX2luc2VydF9mcm9tX2xv
Zyk6CisgICAgICAgIChUZXN0TW9kZWxUZXN0cy50ZXN0X3VwZGF0ZV9vcl9pbnNlcnQpOgorICAg
ICAgICAoVGVzdE1vZGVsVGVzdHMudGVzdF91cGRhdGVfb3JfaW5zZXJ0X3RvX3VwZGF0ZSk6Cisg
ICAgICAgIChUZXN0TW9kZWxUZXN0cy50ZXN0X21lcmdlKToKKyAgICAgICAgKFRlc3RSZXN1bHRU
ZXN0cy50ZXN0X2dldF9vcl9pbnNlcnRfdmFsdWUpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3Rz
LnRlc3RfZ2V0X29yX2luc2VydF9zdGF0X3ZhbHVlKToKKyAgICAgICAgKFRlc3RSZXN1bHRUZXN0
cy50ZXN0X3JlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZSk6CisgICAgICAgIChUZXN0UmVzdWx0
VGVzdHMudGVzdF9yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWVfd2l0aF9zdGF0X3ZhbHVlKToK
KyAgICAgICAgKFRlc3RSZXN1bHRUZXN0cy50ZXN0X3JlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFt
ZV9vdmVycmlkZXNfY29uZmxpY3RpbmdfcmVzdWx0KToKKyAgICAgICAgKFJlcG9ydExvZ1Rlc3Rz
Ll9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCk6CisgICAgICAgIChSZXBvcnRMb2dUZXN0cy50ZXN0
X2J1aWxkZXIpOgorICAgICAgICAoUmVwb3J0TG9nVGVzdHMudGVzdF9icmFuY2gpOgorICAgICAg
ICAoUmVwb3J0TG9nVGVzdHMudGVzdF9wbGF0Zm9ybSk6CisgICAgICAgIChQZXJzaXN0ZW50Q2Fj
aGVUZXN0cy5fYXNzZXJ0X3BlcnNpc3RlbnRfY2FjaGUpOgorICAgICAgICAoUGVyc2lzdGVudENh
Y2hlVGVzdHMudGVzdF9zZXQpOgorICAgICAgICAoUGVyc2lzdGVudENhY2hlVGVzdHMudGVzdF9n
ZXQpOgorICAgICAgICAoRGFzaGJvYXJkSW1hZ2VUZXN0cyk6CisgICAgICAgIChEYXNoYm9hcmRJ
bWFnZVRlc3RzLnRlc3RfbmVlZHNfdXBkYXRlKToKKwogMjAxMi0wMi0yOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJmLW8tbWF0aWMgYnVpbGQgZml4LiBB
bHNvIHRvZ2dsZSB0aGUgc3dpdGNoIHRvIHN0YXJ0IHVzaW5nIHBpbmcgaW1hZ2VzIG9uIHRoZSBk
YXNoYm9hcmQgYWZ0ZXIgcjEwOTE5MC4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNw
b3QuY29tL2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYu
YXBwc3BvdC5jb20vY29udHJvbGxlci5weQkocmV2aXNpb24gMTA5MzIwKQorKysgV2Vic2l0ZXMv
d2Via2l0LXBlcmYuYXBwc3BvdC5jb20vY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAt
OTksOCArOTksMTAgQEAgZGVmIGNhY2hlX3J1bnModGVzdF9pZCwgYnJhbmNoX2lkLCBwbGF0Zgog
CiBkZWYgc2NoZWR1bGVfcnVuc191cGRhdGUodGVzdF9pZCwgYnJhbmNoX2lkLCBwbGF0Zm9ybV9p
ZCk6CiAgICAgdGFza3F1ZXVlLmFkZCh1cmw9Jy9hcGkvdGVzdC9ydW5zL3VwZGF0ZScsIHBhcmFt
cz17J2lkJzogdGVzdF9pZCwgJ2JyYW5jaGlkJzogYnJhbmNoX2lkLCAncGxhdGZvcm1pZCc6IHBs
YXRmb3JtX2lkfSkKLSAgICB0YXNrcXVldWUuYWRkKHVybD0nL2FwaS90ZXN0L3J1bnMvY2hhcnQn
LCBwYXJhbXM9eydpZCc6IHRlc3RfaWQsICdicmFuY2hpZCc6IGJyYW5jaF9pZCwgJ3BsYXRmb3Jt
aWQnOiBwbGF0Zm9ybV9pZCwKLSAgICAgICAgJ2Rpc3BsYXlEYXlzJzogN30pCisgICAgZm9yIGRp
c3BsYXlfZGF5cyBpbiBbNywgMzAsIDkwLCAzNjVdOgorICAgICAgICBpZiBEYXNoYm9hcmRJbWFn
ZS5uZWVkc191cGRhdGUoYnJhbmNoX2lkLCB0ZXN0X2lkLCBwbGF0Zm9ybV9pZCwgZGlzcGxheV9k
YXlzKToKKyAgICAgICAgICAgIHRhc2txdWV1ZS5hZGQodXJsPScvYXBpL3Rlc3QvcnVucy9jaGFy
dCcsIHBhcmFtcz17J2lkJzogdGVzdF9pZCwgJ2JyYW5jaGlkJzogYnJhbmNoX2lkLCAncGxhdGZv
cm1pZCc6IHBsYXRmb3JtX2lkLAorICAgICAgICAgICAgICAgICdkaXNwbGF5RGF5cyc6IGRpc3Bs
YXlfZGF5c30pCiAKIAogZGVmIF9nZXRfdGVzdF9icmFuY2hfcGxhdGZvcm1faWRzKGhhbmRsZXIp
OgpAQCAtMTY3LDggKzE2OSw2IEBAIGNsYXNzIFJ1bnNDaGFydEhhbmRsZXIod2ViYXBwMi5SZXF1
ZXN0SGEKICAgICAgICAgRGFzaGJvYXJkSW1hZ2Uoa2V5X25hbWU9RGFzaGJvYXJkSW1hZ2Uua2V5
X25hbWUoYnJhbmNoLmlkLCBwbGF0Zm9ybS5pZCwgdGVzdC5pZCwgZGlzcGxheV9kYXlzKSwKICAg
ICAgICAgICAgIGltYWdlPWRhc2hib2FyZF9jaGFydF9maWxlLnJlYWQoKSkucHV0KCkKIAotICAg
ICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgnRmV0Y2hlZCBodHRwOi8vY2hhcnQuZ29vZ2xl
YXBpcy5jb20vY2hhcnQ/JXMnICUgdXJsbGliLnVybGVuY29kZShwYXJhbXMpKQotCiAKIGNsYXNz
IERhc2hib2FyZEltYWdlSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYW5kbGVyKToKICAgICBkZWYg
Z2V0KHNlbGYsIHRlc3RfaWQsIGJyYW5jaF9pZCwgcGxhdGZvcm1faWQsIGRpc3BsYXlfZGF5cyk6
CkluZGV4OiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanNvbl9n
ZW5lcmF0b3JzLnB5CShyZXZpc2lvbiAxMDkzMTkpCisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5h
cHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsx
ODIsNyBAQCBjbGFzcyBSdW5zKEpTT05HZW5lcmF0b3JCYXNlKToKICAgICAgICAgICAgICdkYXRl
X3JhbmdlJzogTm9uZSwgICMgTmV2ZXIgdXNlZCBieSBjb21tb24uanMuCiAgICAgICAgICAgICAn
c3RhdCc6ICdvayd9CiAKLSAgICBkZWYgY2hhcnRfcGFyYW1zKHNlbGYsIGRpc3BsYXlfZGF5cywg
bm93PWRhdGV0aW1lLm5vdygpKToKKyAgICBkZWYgY2hhcnRfcGFyYW1zKHNlbGYsIGRpc3BsYXlf
ZGF5cywgbm93PWRhdGV0aW1lLm5vdygpLnJlcGxhY2UoaG91cj0xMiwgbWludXRlPTAsIHNlY29u
ZD0wLCBtaWNyb3NlY29uZD0wKSk6CiAgICAgICAgIGNoYXJ0X2RhdGFfeCA9IFtdCiAgICAgICAg
IGNoYXJ0X2RhdGFfeSA9IFtdCiAgICAgICAgIGVuZF90aW1lID0gbm93CkBAIC0xOTYsMTEgKzE5
NiwxMCBAQCBjbGFzcyBSdW5zKEpTT05HZW5lcmF0b3JCYXNlKToKICAgICAgICAgICAgIGNoYXJ0
X2RhdGFfeC5hcHBlbmQodGltZXN0YW1wKQogICAgICAgICAgICAgY2hhcnRfZGF0YV95LmFwcGVu
ZChyZXN1bHQudmFsdWUpCiAKLSAgICAgICAgZGF0ZXMgPSBbZW5kX3RpbWUgKyB0aW1lZGVsdGEo
ZGF5IC0gZGlzcGxheV9kYXlzKSBmb3IgZGF5IGluIHJhbmdlKDAsIGRpc3BsYXlfZGF5cyArIDEp
XQorICAgICAgICBkYXRlcyA9IFtlbmRfdGltZSAtIHRpbWVkZWx0YShkaXNwbGF5X2RheXMgLyA3
LjAgKiAoNyAtIGkpKSBmb3IgaSBpbiByYW5nZSgwLCA4KV0KIAogICAgICAgICB5X21heCA9IG1h
eChjaGFydF9kYXRhX3kpICogMS4xCi0gICAgICAgIHlfZ3JpZF9zdGVwID0geV9tYXggLyA1Ci0g
ICAgICAgIHlfYXhpc19sYWJlbF9zdGVwID0gaW50KHlfZ3JpZF9zdGVwICsgMC41KSAgIyBUaGlz
IHdvbid0IHdvcmsgZm9yIGRlY2ltYWwgbnVtYmVycworICAgICAgICB5X2F4aXNfbGFiZWxfc3Rl
cCA9IGludCh5X21heCAvIDUgKyAwLjUpICAjIFRoaXMgd29uJ3Qgd29yayBmb3IgZGVjaW1hbCBu
dW1iZXJzCiAKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICdjaHQnOiAnbHh5JywgICMg
U3BlY2lmeSB3aXRoIFggYW5kIFkgY29vcmRpbmF0ZXMKQEAgLTIxMSw3ICsyMTAsNyBAQCBjbGFz
cyBSdW5zKEpTT05HZW5lcmF0b3JCYXNlKToKICAgICAgICAgICAgICdjaHhzJzogJzEsNjc2NzY3
LDExLjE2NywwLGwsNjc2NzY3JywgICMgWS1heGlzIGxhYmVsOiAxLGNvbG9yLGZvbnQtc2l6ZSxj
ZW50ZXJkIG9uIHRpY2ssYXhpcyBsaW5lL25vIHRpY2tzLCB0aWNrIGNvbG9yCiAgICAgICAgICAg
ICAnY2hzJzogJzM2MHgyNDAnLCAgIyBJbWFnZSBzaXplOiAzNjBweCBieSAyNDBweAogICAgICAg
ICAgICAgJ2NoY28nOiAnZmYwMDAwJywgICMgUGxvdCBsaW5lIGNvbG9yCi0gICAgICAgICAgICAn
Y2hnJzogJyVmLCVmLDAsMCcgJSAoMTAwIC8gKGxlbihkYXRlcykgLSAxKSwgeV9ncmlkX3N0ZXAp
LCAgIyBYLCBZIGdyaWQgbGluZSBzdGVwIHNpemVzIC0gbWF4IGZvciBYIGlzIDEwMC4KKyAgICAg
ICAgICAgICdjaGcnOiAnJWYsMjAsMCwwJyAlICgxMDAgLyAobGVuKGRhdGVzKSAtIDEpKSwgICMg
WCwgWSBncmlkIGxpbmUgc3RlcCBzaXplcyAtIG1heCBpcyAxMDAuCiAgICAgICAgICAgICAnY2hs
cyc6ICczJywgICMgTGluZSB0aGlja25lc3MKICAgICAgICAgICAgICdjaGYnOiAnYmcscyxlZmY2
ZmQnLCAgIyBUcmFuc3BhcmVudCBiYWNrZ3JvdW5kCiAgICAgICAgICAgICAnY2hkJzogJ3Q6JyAr
ICcsJy5qb2luKFtzdHIoeCkgZm9yIHggaW4gY2hhcnRfZGF0YV94XSkgKyAnfCcgKyAnLCcuam9p
bihbc3RyKHkpIGZvciB5IGluIGNoYXJ0X2RhdGFfeV0pLCAgIyBYLCBZIGRhdGEKSW5kZXg6IFdl
YnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9yc191bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9qc29uX2dl
bmVyYXRvcnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEwOTMxOSkKKysrIFdlYnNpdGVzL3dlYmtp
dC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9yc191bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMzMwLDggKzMzMCwxNyBAQCBjbGFzcyBSdW5zVGVzdChEYXRhU3RvcmVUZXN0c0Jh
c2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lLmZyb210aW1lc3RhbXAoeF9t
YXgpLCBlbmRfdGltZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5X21pbiwgMCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh5X21heCwgaW50KDUyICogMS4xKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzcGxpdF9hc19pbnQocGFyYW1zWydjaGcnXSksIFtpbnQoMTAwIC8gNyksIGlu
dCg1MiAqIDEuMSAvIDUpLCAwLCAwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdF9h
c19pbnQocGFyYW1zWydjaGcnXSksIFtpbnQoMTAwIC8gNyksIDIwLCAwLCAwXSkKIAorICAgICAg
ICBwYXJhbXMgPSBSdW5zKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCAnc29tZS10ZXN0Jyku
Y2hhcnRfcGFyYW1zKDE0LCBlbmRfdGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJh
bXNbJ2NoeGwnXSwgJzA6fEZlYiAxNHxGZWIgMTZ8RmViIDE4fEZlYiAyMHxGZWIgMjJ8RmViIDI0
fEZlYiAyNnxGZWIgMjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0X2FzX2ludChw
YXJhbXNbJ2NoeHInXSksIFsxLCAwLCA1NywgaW50KDUyICogMS4xIC8gNSArIDAuNSldKQorICAg
ICAgICB4X21pbiwgeF9tYXgsIHlfbWluLCB5X21heCA9IHNwbGl0X2FzX2ludChwYXJhbXNbJ2No
ZHMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZS5mcm9tdGltZXN0YW1wKHhf
bWluKSwgZGF0ZXRpbWUoMjAxMSwgMiwgMTQsIDEyLCAwLCAwKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRldGltZS5mcm9tdGltZXN0YW1wKHhfbWF4KSwgZW5kX3RpbWUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoeV9taW4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeV9t
YXgsIGludCg1MiAqIDEuMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRfYXNfaW50
KHBhcmFtc1snY2hnJ10pLCBbaW50KDEwMCAvIDcpLCAyMCwgMCwgMF0pCiAKIAogaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29t
L21vZGVscy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNv
bS9tb2RlbHMucHkJKHJldmlzaW9uIDEwOTMxOSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFw
cHNwb3QuY29tL21vZGVscy5weQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTEgQEAKIAog
aW1wb3J0IGhhc2hsaWIKIGltcG9ydCBqc29uCitpbXBvcnQgbWF0aAogaW1wb3J0IHJlCiAKIGZy
b20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVs
dGEKIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCiBmcm9tIGdvb2dsZS5hcHBl
bmdpbmUuYXBpIGltcG9ydCBtZW1jYWNoZQogZnJvbSB0aW1lIGltcG9ydCBta3RpbWUKQEAgLTMy
Niw2ICszMjgsMTYgQEAgY2xhc3MgUGVyc2lzdGVudENhY2hlKGRiLk1vZGVsKToKIAogY2xhc3Mg
RGFzaGJvYXJkSW1hZ2UoZGIuTW9kZWwpOgogICAgIGltYWdlID0gZGIuQmxvYlByb3BlcnR5KHJl
cXVpcmVkPVRydWUpCisgICAgY3JlYXRlZEF0ID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eShyZXF1aXJl
ZD1UcnVlLCBhdXRvX25vdz1UcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG5lZWRz
X3VwZGF0ZShjbHMsIGJyYW5jaF9pZCwgcGxhdGZvcm1faWQsIHRlc3RfaWQsIGRpc3BsYXlfZGF5
cywgbm93PWRhdGV0aW1lLm5vdygpKToKKyAgICAgICAgaWYgZGlzcGxheV9kYXlzIDwgMTA6Cisg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpbWFnZSA9IERhc2hib2FyZEltYWdlLmdl
dF9ieV9rZXlfbmFtZShjbHMua2V5X25hbWUoYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCwgdGVzdF9p
ZCwgZGlzcGxheV9kYXlzKSkKKyAgICAgICAgZHVyYXRpb24gPSBtYXRoLnNxcnQoZGlzcGxheV9k
YXlzKSAvIDEwCisgICAgICAgICMgZS5nLiAxMyBob3VycyBmb3IgMzAgZGF5cywgMjMgaG91cnMg
Zm9yIDkwIGRheXMsIGFuZCA0NiBob3VycyBmb3IgMzY1IGRheXMKKyAgICAgICAgcmV0dXJuIG5v
dCBpbWFnZSBvciBpbWFnZS5jcmVhdGVkQXQgPCBub3cgLSB0aW1lZGVsdGEoZHVyYXRpb24pCiAK
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGtleV9uYW1lKGJyYW5jaF9pZCwgcGxhdGZvcm1f
aWQsIHRlc3RfaWQsIGRpc3BsYXlfZGF5cyk6CkluZGV4OiBXZWJzaXRlcy93ZWJraXQtcGVyZi5h
cHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20vbW9kZWxzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMDkzMTkp
CisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwyNSBAQCBpbXBvcnQgbW9kZWxzCiBpbXBvcnQg
dW5pdHRlc3QKIAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZGF0ZXRpbWUg
aW1wb3J0IHRpbWVkZWx0YQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBpbXBvcnQgbWVtY2Fj
aGUKIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHRlc3RiZWQKIGZyb20gdGltZSBp
bXBvcnQgbWt0aW1lCiAKK2Zyb20gbW9kZWxzIGltcG9ydCBOdW1lcmljSWRIb2xkZXIKK2Zyb20g
bW9kZWxzIGltcG9ydCBCcmFuY2gKK2Zyb20gbW9kZWxzIGltcG9ydCBQbGF0Zm9ybQorZnJvbSBt
b2RlbHMgaW1wb3J0IEJ1aWxkZXIKK2Zyb20gbW9kZWxzIGltcG9ydCBCdWlsZAorZnJvbSBtb2Rl
bHMgaW1wb3J0IFRlc3QKK2Zyb20gbW9kZWxzIGltcG9ydCBUZXN0UmVzdWx0Citmcm9tIG1vZGVs
cyBpbXBvcnQgUmVwb3J0TG9nCitmcm9tIG1vZGVscyBpbXBvcnQgUGVyc2lzdGVudENhY2hlCitm
cm9tIG1vZGVscyBpbXBvcnQgRGFzaGJvYXJkSW1hZ2UKK2Zyb20gbW9kZWxzIGltcG9ydCBjcmVh
dGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcgorZnJvbSBtb2RlbHMgaW1w
b3J0IGRlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNfaWRfaG9sZGVyCitmcm9tIG1vZGVscyBpbXBv
cnQgbW9kZWxfZnJvbV9udW1lcmljX2lkCisKIAogY2xhc3MgRGF0YVN0b3JlVGVzdHNCYXNlKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC02NSw3ICs4MCw3IEBA
IGNsYXNzIERhdGFTdG9yZVRlc3RzQmFzZSh1bml0dGVzdC5UZXN0Q2EKIAogY2xhc3MgSGVscGVy
VGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICBkZWYgX2Fzc2VydF90aGVyZV9pc19leGFj
dGx5X29uZV9pZF9ob2xkZXJfYW5kX21hdGNoZXMoc2VsZiwgaWQpOgotICAgICAgICBpZF9ob2xk
ZXJzID0gbW9kZWxzLk51bWVyaWNJZEhvbGRlci5hbGwoKS5mZXRjaCg1KQorICAgICAgICBpZF9o
b2xkZXJzID0gTnVtZXJpY0lkSG9sZGVyLmFsbCgpLmZldGNoKDUpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGlkX2hvbGRlcnMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaWRf
aG9sZGVyc1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZF9ob2xkZXJzWzBdLmtleSgp
LmlkKCksIGlkKQpAQCAtNzMsMTQgKzg4LDE0IEBAIGNsYXNzIEhlbHBlclRlc3RzKERhdGFTdG9y
ZVRlc3RzQmFzZSk6CiAgICAgZGVmIHRlc3RfY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVt
ZXJpY19pZF9ob2xkZXIoc2VsZik6CiAKICAgICAgICAgZGVmIGV4ZWN1dGUoaWQpOgotICAgICAg
ICAgICAgcmV0dXJuIG1vZGVscy5CcmFuY2goaWQ9aWQsIG5hbWU9J3NvbWUgYnJhbmNoJywga2V5
X25hbWU9J3NvbWUtYnJhbmNoJykucHV0KCkKKyAgICAgICAgICAgIHJldHVybiBCcmFuY2goaWQ9
aWQsIG5hbWU9J3NvbWUgYnJhbmNoJywga2V5X25hbWU9J3NvbWUtYnJhbmNoJykucHV0KCkKIAot
ICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLkJyYW5jaCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5OdW1lcmljSWRIb2xk
ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihCcmFuY2gpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihOdW1lcmljSWRIb2xkZXIpCiAKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZGVscy5jcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9u
dW1lcmljX2lkX2hvbGRlcihleGVjdXRlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0
ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQogCi0gICAg
ICAgIGJyYW5jaGVzID0gbW9kZWxzLkJyYW5jaC5hbGwoKS5mZXRjaCg1KQorICAgICAgICBicmFu
Y2hlcyA9IEJyYW5jaC5hbGwoKS5mZXRjaCg1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihicmFuY2hlcyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXNbMF0ubmFt
ZSwgJ3NvbWUgYnJhbmNoJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlc1swXS5r
ZXkoKS5uYW1lKCksICdzb21lLWJyYW5jaCcpCkBAIC05MiwxMyArMTA3LDEzIEBAIGNsYXNzIEhl
bHBlclRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgICAgIGRlZiBleGVjdXRlKGlkKToK
ICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9J
bnN0YW5jZU9mKG1vZGVscy5CcmFuY2gpCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5z
dGFuY2VPZihtb2RlbHMuTnVtZXJpY0lkSG9sZGVyKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJl
SXNOb0luc3RhbmNlT2YoQnJhbmNoKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3Rh
bmNlT2YoTnVtZXJpY0lkSG9sZGVyKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kZWxz
LmNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVy
aWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5z
dGFuY2VPZihtb2RlbHMuQnJhbmNoKQotICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3Rh
bmNlT2YobW9kZWxzLk51bWVyaWNJZEhvbGRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlz
Tm9JbnN0YW5jZU9mKEJyYW5jaCkKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5j
ZU9mKE51bWVyaWNJZEhvbGRlcikKIAogICAgIGRlZiB0ZXN0X3JhaXNpbmdfaW5fY3JlYXRlX2lu
X3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoc2VsZik6CiAKQEAgLTEwNiwxMTEg
KzEyMSwxMTEgQEAgY2xhc3MgSGVscGVyVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAg
ICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLkJyYW5jaCkKLSAgICAgICAg
c2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5OdW1lcmljSWRIb2xkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihCcmFuY2gpCisgICAgICAgIHNl
bGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihOdW1lcmljSWRIb2xkZXIpCiAKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2RlbHMuY3JlYXRlX2luX3RyYW5zYWN0aW9u
X3dpdGhfbnVtZXJpY19pZF9ob2xkZXIsIChleGVjdXRlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVHlwZUVycm9yLCBjcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hv
bGRlciwgKGV4ZWN1dGUpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VP
Zihtb2RlbHMuQnJhbmNoKQotICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2Yo
bW9kZWxzLk51bWVyaWNJZEhvbGRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0
YW5jZU9mKEJyYW5jaCkKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKE51
bWVyaWNJZEhvbGRlcikKIAogICAgIGRlZiB0ZXN0X2RlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNf
aWRfaG9sZGVyKHNlbGYpOgogCiAgICAgICAgIGRlZiBleGVjdXRlKGlkKToKLSAgICAgICAgICAg
IHJldHVybiBtb2RlbHMuQnJhbmNoKGlkPWlkLCBuYW1lPSdzb21lIGJyYW5jaCcsIGtleV9uYW1l
PSdzb21lLWJyYW5jaCcpLnB1dCgpCisgICAgICAgICAgICByZXR1cm4gQnJhbmNoKGlkPWlkLCBu
YW1lPSdzb21lIGJyYW5jaCcsIGtleV9uYW1lPSdzb21lLWJyYW5jaCcpLnB1dCgpCiAKLSAgICAg
ICAgYnJhbmNoID0gbW9kZWxzLkJyYW5jaC5nZXQobW9kZWxzLmNyZWF0ZV9pbl90cmFuc2FjdGlv
bl93aXRoX251bWVyaWNfaWRfaG9sZGVyKGV4ZWN1dGUpKQorICAgICAgICBicmFuY2ggPSBCcmFu
Y2guZ2V0KGNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKGV4ZWN1
dGUpKQogICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShicmFuY2gpCiAKLSAgICAgICAg
bW9kZWxzLmRlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNfaWRfaG9sZGVyKGJyYW5jaCkKKyAgICAg
ICAgZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoYnJhbmNoKQogCi0gICAgICAg
IHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuQnJhbmNoKQotICAgICAgICBz
ZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLk51bWVyaWNJZEhvbGRlcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKEJyYW5jaCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKE51bWVyaWNJZEhvbGRlcikKIAogICAgIGRlZiB0
ZXN0X21vZGVsX2Zyb21fbnVtZXJpY19pZChzZWxmKToKIAogICAgICAgICBkZWYgZXhlY3V0ZShp
ZCk6Ci0gICAgICAgICAgICByZXR1cm4gbW9kZWxzLkJyYW5jaChpZD1pZCwgbmFtZT0nc29tZSBi
cmFuY2gnLCBrZXlfbmFtZT0nc29tZS1icmFuY2gnKS5wdXQoKQorICAgICAgICAgICAgcmV0dXJu
IEJyYW5jaChpZD1pZCwgbmFtZT0nc29tZSBicmFuY2gnLCBrZXlfbmFtZT0nc29tZS1icmFuY2gn
KS5wdXQoKQogCi0gICAgICAgIGJyYW5jaCA9IG1vZGVscy5CcmFuY2guZ2V0KG1vZGVscy5jcmVh
dGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcihleGVjdXRlKSkKKyAgICAg
ICAgYnJhbmNoID0gQnJhbmNoLmdldChjcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmlj
X2lkX2hvbGRlcihleGVjdXRlKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVscy5t
b2RlbF9mcm9tX251bWVyaWNfaWQoYnJhbmNoLmlkLCBtb2RlbHMuQnJhbmNoKS5rZXkoKSwgYnJh
bmNoLmtleSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVscy5tb2RlbF9mcm9tX251
bWVyaWNfaWQoYnJhbmNoLmlkICsgMSwgbW9kZWxzLkJyYW5jaCksIE5vbmUpCi0gICAgICAgIG1v
ZGVscy5kZWxldGVfbW9kZWxfd2l0aF9udW1lcmljX2lkX2hvbGRlcihicmFuY2gpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxzLm1vZGVsX2Zyb21fbnVtZXJpY19pZChicmFuY2guaWQs
IG1vZGVscy5CcmFuY2gpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsX2Zy
b21fbnVtZXJpY19pZChicmFuY2guaWQsIEJyYW5jaCkua2V5KCksIGJyYW5jaC5rZXkoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbF9mcm9tX251bWVyaWNfaWQoYnJhbmNoLmlkICsg
MSwgQnJhbmNoKSwgTm9uZSkKKyAgICAgICAgZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9o
b2xkZXIoYnJhbmNoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsX2Zyb21fbnVtZXJp
Y19pZChicmFuY2guaWQsIEJyYW5jaCksIE5vbmUpCiAKIAogY2xhc3MgQnJhbmNoVGVzdHMoRGF0
YVN0b3JlVGVzdHNCYXNlKToKICAgICBkZWYgdGVzdF9jcmVhdGVfaWZfcG9zc2libGUoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuQnJhbmNoKQor
ICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YoQnJhbmNoKQogCi0gICAgICAg
IGJyYW5jaCA9IG1vZGVscy5CcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcs
ICdzb21lIGJyYW5jaCcpCisgICAgICAgIGJyYW5jaCA9IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2li
bGUoJ3NvbWUtYnJhbmNoJywgJ3NvbWUgYnJhbmNoJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGJyYW5jaCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJyYW5jaC5rZXkoKS5uYW1lKCksICdz
b21lLWJyYW5jaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShicmFuY2gubmFtZSwgJ3NvbWUg
YnJhbmNoJykKICAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UoYnJhbmNoKQogCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kZWxzLkJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3Nv
bWUtYnJhbmNoJywgJ3NvbWUgb3RoZXIgYnJhbmNoJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAnc29tZSBvdGhlciBi
cmFuY2gnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJyYW5jaC5uYW1lLCAnc29tZSBicmFu
Y2gnKQogICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShicmFuY2gpCiAKIAogY2xhc3Mg
UGxhdGZvcm1UZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgIGRlZiB0ZXN0X2NyZWF0ZV9p
Zl9wb3NzaWJsZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9m
KG1vZGVscy5QbGF0Zm9ybSkKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9m
KFBsYXRmb3JtKQogCi0gICAgICAgIHBsYXRmb3JtID0gbW9kZWxzLlBsYXRmb3JtLmNyZWF0ZV9p
Zl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdzb21lIHBsYXRmb3JtJykKKyAgICAgICAgcGxh
dGZvcm0gPSBQbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxhdGZvcm0nLCAnc29t
ZSBwbGF0Zm9ybScpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbGF0Zm9ybSkKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBsYXRmb3JtLmtleSgpLm5hbWUoKSwgJ3NvbWUtcGxhdGZvcm0nKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUocGxhdGZvcm0ubmFtZSwgJ3NvbWUgcGxhdGZvcm0nKQog
ICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShwbGF0Zm9ybSkKIAotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKG1vZGVscy5QbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxh
dGZvcm0nLCAnc29tZSBvdGhlciBwbGF0Zm9ybScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdzb21lIG90aGVy
IHBsYXRmb3JtJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbGF0Zm9ybS5uYW1lLCAnc29t
ZSBwbGF0Zm9ybScpCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHBsYXRmb3JtKQog
CiAKIGNsYXNzIEJ1aWxkZXJUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgIGRlZiB0ZXN0
X2NyZWF0ZShzZWxmKToKLSAgICAgICAgYnVpbGRlcl9rZXkgPSBtb2RlbHMuQnVpbGRlci5jcmVh
dGUoJ3NvbWUgYnVpbGRlcicsICdzb21lIHBhc3N3b3JkJykKKyAgICAgICAgYnVpbGRlcl9rZXkg
PSBCdWlsZGVyLmNyZWF0ZSgnc29tZSBidWlsZGVyJywgJ3NvbWUgcGFzc3dvcmQnKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUoYnVpbGRlcl9rZXkpCi0gICAgICAgIGJ1aWxkZXIgPSBtb2RlbHMu
QnVpbGRlci5nZXQoYnVpbGRlcl9rZXkpCisgICAgICAgIGJ1aWxkZXIgPSBCdWlsZGVyLmdldChi
dWlsZGVyX2tleSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLmtleSgpLm5hbWUo
KSwgJ3NvbWUgYnVpbGRlcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5uYW1l
LCAnc29tZSBidWlsZGVyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhc3N3
b3JkLCBtb2RlbHMuQnVpbGRlci5faGFzaGVkX3Bhc3N3b3JkKCdzb21lIHBhc3N3b3JkJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYXNzd29yZCwgQnVpbGRlci5faGFzaGVk
X3Bhc3N3b3JkKCdzb21lIHBhc3N3b3JkJykpCiAKICAgICBkZWYgdGVzdF91cGRhdGVfcGFzc3dv
cmQoc2VsZik6Ci0gICAgICAgIGJ1aWxkZXIgPSBtb2RlbHMuQnVpbGRlci5nZXQobW9kZWxzLkJ1
aWxkZXIuY3JlYXRlKCdzb21lIGJ1aWxkZXInLCAnc29tZSBwYXNzd29yZCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFzc3dvcmQsIG1vZGVscy5CdWlsZGVyLl9oYXNoZWRf
cGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSkKKyAgICAgICAgYnVpbGRlciA9IEJ1aWxkZXIuZ2V0
KEJ1aWxkZXIuY3JlYXRlKCdzb21lIGJ1aWxkZXInLCAnc29tZSBwYXNzd29yZCcpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFzc3dvcmQsIEJ1aWxkZXIuX2hhc2hlZF9wYXNz
d29yZCgnc29tZSBwYXNzd29yZCcpKQogICAgICAgICBidWlsZGVyLnVwZGF0ZV9wYXNzd29yZCgn
b3RoZXIgcGFzc3dvcmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFzc3dv
cmQsIG1vZGVscy5CdWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ290aGVyIHBhc3N3b3JkJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYXNzd29yZCwgQnVpbGRlci5faGFzaGVk
X3Bhc3N3b3JkKCdvdGhlciBwYXNzd29yZCcpKQogCiAgICAgICAgICMgTWFrZSBzdXJlIGl0J3Mg
c2F2ZWQKLSAgICAgICAgYnVpbGRlciA9IG1vZGVscy5CdWlsZGVyLmdldChidWlsZGVyLmtleSgp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFzc3dvcmQsIG1vZGVscy5CdWls
ZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ290aGVyIHBhc3N3b3JkJykpCisgICAgICAgIGJ1aWxkZXIg
PSBCdWlsZGVyLmdldChidWlsZGVyLmtleSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
aWxkZXIucGFzc3dvcmQsIEJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnb3RoZXIgcGFzc3dvcmQn
KSkKIAogICAgIGRlZiB0ZXN0X2hhc2hlZF9wYXNzd29yZChzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChtb2RlbHMuQnVpbGRlci5faGFzaGVkX3Bhc3N3b3JkKCdzb21lIHBhc3N3
b3JkJyksICdzb21lIHBhc3N3b3JkJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnc29tZSBw
YXNzd29yZCcgaW4gbW9kZWxzLkJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnc29tZSBwYXNzd29y
ZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbHMuQnVpbGRlci5faGFzaGVk
X3Bhc3N3b3JkKCdzb21lIHBhc3N3b3JkJykpLCA2NCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RF
cXVhbChCdWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSwgJ3NvbWUgcGFz
c3dvcmQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdzb21lIHBhc3N3b3JkJyBpbiBCdWls
ZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oQnVpbGRlci5faGFzaGVkX3Bhc3N3b3JkKCdzb21lIHBhc3N3b3JkJykpLCA2
NCkKIAogICAgIGRlZiB0ZXN0X2F1dGhlbnRpY2F0ZShzZWxmKToKLSAgICAgICAgYnVpbGRlciA9
IG1vZGVscy5CdWlsZGVyLmdldChtb2RlbHMuQnVpbGRlci5jcmVhdGUoJ3NvbWUgYnVpbGRlcics
ICdzb21lIHBhc3N3b3JkJykpCisgICAgICAgIGJ1aWxkZXIgPSBCdWlsZGVyLmdldChCdWlsZGVy
LmNyZWF0ZSgnc29tZSBidWlsZGVyJywgJ3NvbWUgcGFzc3dvcmQnKSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGJ1aWxkZXIuYXV0aGVudGljYXRlKCdzb21lIHBhc3N3b3JkJykpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5hdXRoZW50aWNhdGUoJ2JhZCBwYXNzd29yZCcpKQog
CiAKIGRlZiBfY3JlYXRlX3NvbWVfYnVpbGRlcigpOgotICAgIGJyYW5jaCA9IG1vZGVscy5CcmFu
Y2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCi0gICAg
cGxhdGZvcm0gPSBtb2RlbHMuUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRm
b3JtJywgJ1NvbWUgUGxhdGZvcm0nKQotICAgIGJ1aWxkZXJfa2V5ID0gbW9kZWxzLkJ1aWxkZXIu
Y3JlYXRlKCdzb21lLWJ1aWxkZXInLCAnU29tZSBCdWlsZGVyJykKLSAgICByZXR1cm4gYnJhbmNo
LCBwbGF0Zm9ybSwgbW9kZWxzLkJ1aWxkZXIuZ2V0KGJ1aWxkZXJfa2V5KQorICAgIGJyYW5jaCA9
IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykK
KyAgICBwbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9y
bScsICdTb21lIFBsYXRmb3JtJykKKyAgICBidWlsZGVyX2tleSA9IEJ1aWxkZXIuY3JlYXRlKCdz
b21lLWJ1aWxkZXInLCAnU29tZSBCdWlsZGVyJykKKyAgICByZXR1cm4gYnJhbmNoLCBwbGF0Zm9y
bSwgQnVpbGRlci5nZXQoYnVpbGRlcl9rZXkpCiAKIAogZGVmIF9jcmVhdGVfYnVpbGQoYnJhbmNo
LCBwbGF0Zm9ybSwgYnVpbGRlciwga2V5X25hbWU9J3NvbWUtYnVpbGQnKToKLSAgICBidWlsZF9r
ZXkgPSBtb2RlbHMuQnVpbGQoa2V5X25hbWU9a2V5X25hbWUsIGJyYW5jaD1icmFuY2gsIHBsYXRm
b3JtPXBsYXRmb3JtLCBidWlsZGVyPWJ1aWxkZXIsCisgICAgYnVpbGRfa2V5ID0gQnVpbGQoa2V5
X25hbWU9a2V5X25hbWUsIGJyYW5jaD1icmFuY2gsIHBsYXRmb3JtPXBsYXRmb3JtLCBidWlsZGVy
PWJ1aWxkZXIsCiAgICAgICAgIGJ1aWxkTnVtYmVyPTEsIHJldmlzaW9uPTEwMCwgdGltZXN0YW1w
PWRhdGV0aW1lLm5vdygpKS5wdXQoKQotICAgIHJldHVybiBtb2RlbHMuQnVpbGQuZ2V0KGJ1aWxk
X2tleSkKKyAgICByZXR1cm4gQnVpbGQuZ2V0KGJ1aWxkX2tleSkKIAogCiBjbGFzcyBCdWlsZFRl
c3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CkBAIC0yMTgsMTMgKzIzMywxMyBAQCBjbGFzcyBCdWls
ZFRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgICAgIGJyYW5jaCwgcGxhdGZvcm0sIGJ1
aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCiAKICAgICAgICAgdGltZXN0YW1wID0gZGF0
ZXRpbWUubm93KCkucmVwbGFjZShtaWNyb3NlY29uZD0wKQotICAgICAgICBsb2cgPSBtb2RlbHMu
UmVwb3J0TG9nKHRpbWVzdGFtcD10aW1lc3RhbXAsIGhlYWRlcnM9J3NvbWUgaGVhZGVycycsCisg
ICAgICAgIGxvZyA9IFJlcG9ydExvZyh0aW1lc3RhbXA9dGltZXN0YW1wLCBoZWFkZXJzPSdzb21l
IGhlYWRlcnMnLAogICAgICAgICAgICAgcGF5bG9hZD0neyJicmFuY2giOiAic29tZS1icmFuY2gi
LCAicGxhdGZvcm0iOiAic29tZS1wbGF0Zm9ybSIsICJidWlsZGVyLW5hbWUiOiAic29tZS1idWls
ZGVyIiwnICsKICAgICAgICAgICAgICAgICAnImJ1aWxkLW51bWJlciI6IDEyMywgIndlYmtpdC1y
ZXZpc2lvbiI6IDQ1NiwgInRpbWVzdGFtcCI6ICVkfScgJSBpbnQobWt0aW1lKHRpbWVzdGFtcC50
aW1ldHVwbGUoKSkpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZiht
b2RlbHMuQnVpbGQpCisgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihCdWls
ZCkKIAotICAgICAgICBidWlsZCA9IG1vZGVscy5CdWlsZC5nZXRfb3JfaW5zZXJ0X2Zyb21fbG9n
KGxvZykKKyAgICAgICAgYnVpbGQgPSBCdWlsZC5nZXRfb3JfaW5zZXJ0X2Zyb21fbG9nKGxvZykK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkLmJyYW5jaC5rZXkoKSwgYnJhbmNoLmtleSgpKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkLnBsYXRmb3JtLmtleSgpLCBwbGF0Zm9ybS5rZXkoKSkKQEAgLTIzOSw0MyArMjU0
LDQzIEBAIGNsYXNzIEJ1aWxkVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKIAogY2xhc3MgVGVz
dE1vZGVsVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICBkZWYgdGVzdF91cGRhdGVfb3Jf
aW5zZXJ0KHNlbGYpOgotICAgICAgICBicmFuY2ggPSBtb2RlbHMuQnJhbmNoLmNyZWF0ZV9pZl9w
b3NzaWJsZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFuY2gnKQotICAgICAgICBwbGF0Zm9ybSA9
IG1vZGVscy5QbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxhdGZvcm0nLCAnU29t
ZSBQbGF0Zm9ybScpCisgICAgICAgIGJyYW5jaCA9IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUo
J3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKKyAgICAgICAgcGxhdGZvcm0gPSBQbGF0Zm9y
bS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxhdGZvcm0nLCAnU29tZSBQbGF0Zm9ybScpCiAK
LSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0KQorICAg
ICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YoVGVzdCkKIAotICAgICAgICB0ZXN0
ID0gbW9kZWxzLlRlc3QudXBkYXRlX29yX2luc2VydCgnc29tZS10ZXN0JywgYnJhbmNoLCBwbGF0
Zm9ybSkKKyAgICAgICAgdGVzdCA9IFRlc3QudXBkYXRlX29yX2luc2VydCgnc29tZS10ZXN0Jywg
YnJhbmNoLCBwbGF0Zm9ybSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5icmFuY2hlcywgW2JyYW5jaC5rZXkoKV0pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5wbGF0Zm9ybXMsIFtwbGF0Zm9ybS5rZXkoKV0pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHRlc3QpCiAKICAgICBkZWYgdGVzdF91cGRhdGVf
b3JfaW5zZXJ0X3RvX3VwZGF0ZShzZWxmKToKLSAgICAgICAgYnJhbmNoID0gbW9kZWxzLkJyYW5j
aC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKLSAgICAg
ICAgcGxhdGZvcm0gPSBtb2RlbHMuUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBs
YXRmb3JtJywgJ1NvbWUgUGxhdGZvcm0nKQotICAgICAgICB0ZXN0ID0gbW9kZWxzLlRlc3QudXBk
YXRlX29yX2luc2VydCgnc29tZS10ZXN0JywgYnJhbmNoLCBwbGF0Zm9ybSkKKyAgICAgICAgYnJh
bmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFu
Y2gnKQorICAgICAgICBwbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29t
ZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKKyAgICAgICAgdGVzdCA9IFRlc3QudXBkYXRl
X29yX2luc2VydCgnc29tZS10ZXN0JywgYnJhbmNoLCBwbGF0Zm9ybSkKICAgICAgICAgc2VsZi5h
c3NlcnRPbmx5SW5zdGFuY2UodGVzdCkKIAotICAgICAgICBvdGhlcl9icmFuY2ggPSBtb2RlbHMu
QnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnb3RoZXItYnJhbmNoJywgJ090aGVyIEJyYW5jaCcp
Ci0gICAgICAgIG90aGVyX3BsYXRmb3JtID0gbW9kZWxzLlBsYXRmb3JtLmNyZWF0ZV9pZl9wb3Nz
aWJsZSgnb3RoZXItcGxhdGZvcm0nLCAnT3RoZXIgUGxhdGZvcm0nKQotICAgICAgICB0ZXN0ID0g
bW9kZWxzLlRlc3QudXBkYXRlX29yX2luc2VydCgnc29tZS10ZXN0Jywgb3RoZXJfYnJhbmNoLCBv
dGhlcl9wbGF0Zm9ybSkKKyAgICAgICAgb3RoZXJfYnJhbmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9w
b3NzaWJsZSgnb3RoZXItYnJhbmNoJywgJ090aGVyIEJyYW5jaCcpCisgICAgICAgIG90aGVyX3Bs
YXRmb3JtID0gUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdvdGhlci1wbGF0Zm9ybScsICdP
dGhlciBQbGF0Zm9ybScpCisgICAgICAgIHRlc3QgPSBUZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3Nv
bWUtdGVzdCcsIG90aGVyX2JyYW5jaCwgb3RoZXJfcGxhdGZvcm0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0T25seUluc3RhbmNlKHRlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxVbm9yZGVyZWRM
aXN0KHRlc3QuYnJhbmNoZXMsIFticmFuY2gua2V5KCksIG90aGVyX2JyYW5jaC5rZXkoKV0pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxVbm9yZGVyZWRMaXN0KHRlc3QucGxhdGZvcm1zLCBbcGxh
dGZvcm0ua2V5KCksIG90aGVyX3BsYXRmb3JtLmtleSgpXSkKIAotICAgICAgICB0ZXN0ID0gbW9k
ZWxzLlRlc3QuZ2V0KHRlc3Qua2V5KCkpCisgICAgICAgIHRlc3QgPSBUZXN0LmdldCh0ZXN0Lmtl
eSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTGlzdCh0ZXN0LmJyYW5jaGVz
LCBbYnJhbmNoLmtleSgpLCBvdGhlcl9icmFuY2gua2V5KCldKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsVW5vcmRlcmVkTGlzdCh0ZXN0LnBsYXRmb3JtcywgW3BsYXRmb3JtLmtleSgpLCBvdGhl
cl9wbGF0Zm9ybS5rZXkoKV0pCiAKICAgICBkZWYgdGVzdF9tZXJnZShzZWxmKToKICAgICAgICAg
YnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlciA9IF9jcmVhdGVfc29tZV9idWlsZGVyKCkKICAgICAg
ICAgc29tZV9idWlsZCA9IF9jcmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikK
LSAgICAgICAgc29tZV9yZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zy
b21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIHNvbWVfYnVpbGQsIDUwKQotICAgICAgICBzb21l
X3Rlc3QgPSBtb2RlbHMuVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBicmFuY2gs
IHBsYXRmb3JtKQorICAgICAgICBzb21lX3Jlc3VsdCA9IFRlc3RSZXN1bHQuZ2V0X29yX2luc2Vy
dF9mcm9tX3BhcnNlZF9qc29uKCdzb21lLXRlc3QnLCBzb21lX2J1aWxkLCA1MCkKKyAgICAgICAg
c29tZV90ZXN0ID0gVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBicmFuY2gsIHBs
YXRmb3JtKQogCiAgICAgICAgIG90aGVyX2J1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBs
YXRmb3JtLCBidWlsZGVyLCAnb3RoZXItYnVpbGQnKQotICAgICAgICBvdGhlcl9yZXN1bHQgPSBt
b2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ290aGVyLXRl
c3QnLCBvdGhlcl9idWlsZCwgMzApCi0gICAgICAgIG90aGVyX3Rlc3QgPSBtb2RlbHMuVGVzdC51
cGRhdGVfb3JfaW5zZXJ0KCdvdGhlci10ZXN0JywgYnJhbmNoLCBwbGF0Zm9ybSkKKyAgICAgICAg
b3RoZXJfcmVzdWx0ID0gVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24o
J290aGVyLXRlc3QnLCBvdGhlcl9idWlsZCwgMzApCisgICAgICAgIG90aGVyX3Rlc3QgPSBUZXN0
LnVwZGF0ZV9vcl9pbnNlcnQoJ290aGVyLXRlc3QnLCBicmFuY2gsIHBsYXRmb3JtKQogCiAgICAg
ICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlcyhbc29tZV9yZXN1bHQsIG90aGVyX3Jlc3VsdF0p
CiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc29tZV9yZXN1bHQua2V5KCksIG90aGVyX3Jl
c3VsdC5rZXkoKSkKQEAgLTI4NSw3ICszMDAsNyBAQCBjbGFzcyBUZXN0TW9kZWxUZXN0cyhEYXRh
U3RvcmVUZXN0c0Jhc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlcyhbc29tZV90
ZXN0LCBvdGhlcl90ZXN0XSkKIAogICAgICAgICBzb21lX3Rlc3QubWVyZ2Uob3RoZXJfdGVzdCkK
LSAgICAgICAgcmVzdWx0c19mb3Jfc29tZV90ZXN0ID0gbW9kZWxzLlRlc3RSZXN1bHQuYWxsKCkK
KyAgICAgICAgcmVzdWx0c19mb3Jfc29tZV90ZXN0ID0gVGVzdFJlc3VsdC5hbGwoKQogICAgICAg
ICByZXN1bHRzX2Zvcl9zb21lX3Rlc3QuZmlsdGVyKCduYW1lID0nLCAnc29tZS10ZXN0JykKICAg
ICAgICAgcmVzdWx0c19mb3Jfc29tZV90ZXN0ID0gcmVzdWx0c19mb3Jfc29tZV90ZXN0LmZldGNo
KDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHNfZm9yX3NvbWVfdGVzdCks
IDIpCkBAIC0zMDMsOCArMzE4LDggQEAgY2xhc3MgVGVzdFJlc3VsdFRlc3RzKERhdGFTdG9yZVRl
c3RzQmFzZQogICAgIGRlZiB0ZXN0X2dldF9vcl9pbnNlcnRfdmFsdWUoc2VsZik6CiAgICAgICAg
IGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCiAgICAg
ICAgIGJ1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyKQotICAg
ICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3RSZXN1bHQpCi0g
ICAgICAgIHJlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJz
ZWRfanNvbignc29tZS10ZXN0JywgYnVpbGQsIDUwKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJl
SXNOb0luc3RhbmNlT2YoVGVzdFJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdC5n
ZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxkLCA1MCkKICAg
ICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocmVzdWx0KQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdC5uYW1lLCAnc29tZS10ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXN1bHQuYnVpbGQua2V5KCksIGJ1aWxkLmtleSgpKQpAQCAtMzE3LDggKzMzMiw4IEBAIGNs
YXNzIFRlc3RSZXN1bHRUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UKICAgICBkZWYgdGVzdF9nZXRf
b3JfaW5zZXJ0X3N0YXRfdmFsdWUoc2VsZik6CiAgICAgICAgIGJyYW5jaCwgcGxhdGZvcm0sIGJ1
aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCiAgICAgICAgIGJ1aWxkID0gX2NyZWF0ZV9i
dWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyKQotICAgICAgICBzZWxmLmFzc2VydFRoZXJl
SXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3RSZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IG1vZGVs
cy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignc29tZS10ZXN0Jywg
YnVpbGQsCisgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihUZXN0UmVzdWx0
KQorICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRf
anNvbignc29tZS10ZXN0JywgYnVpbGQsCiAgICAgICAgICAgICB7ImF2ZyI6IDQwLCAibWVkaWFu
IjogIjQwLjEiLCAic3RkZXYiOiAzLjI1LCAibWluIjogMzAuNSwgIm1heCI6IDQ1fSkKICAgICAg
ICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocmVzdWx0KQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3VsdC5uYW1lLCAnc29tZS10ZXN0JykKQEAgLTMzMiw4ICszNDcsOCBAQCBjbGFzcyBU
ZXN0UmVzdWx0VGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlCiAgICAgZGVmIHRlc3RfcmVwbGFjZV90
b19jaGFuZ2VfdGVzdF9uYW1lKHNlbGYpOgogICAgICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWls
ZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQogICAgICAgICBidWlsZCA9IF9jcmVhdGVfYnVp
bGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlz
Tm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0KQotICAgICAgICByZXN1bHQgPSBtb2RlbHMu
VGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1
aWxkLCA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKFRlc3RSZXN1
bHQpCisgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNl
ZF9qc29uKCdzb21lLXRlc3QnLCBidWlsZCwgNTApCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUlu
c3RhbmNlKHJlc3VsdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubmFtZSwgJ3Nv
bWUtdGVzdCcpCiAKQEAgLTM1Miw4ICszNjcsOCBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdHMoRGF0
YVN0b3JlVGVzdHNCYXNlCiAgICAgZGVmIHRlc3RfcmVwbGFjZV90b19jaGFuZ2VfdGVzdF9uYW1l
X3dpdGhfc3RhdF92YWx1ZShzZWxmKToKICAgICAgICAgYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRl
ciA9IF9jcmVhdGVfc29tZV9idWlsZGVyKCkKICAgICAgICAgYnVpbGQgPSBfY3JlYXRlX2J1aWxk
KGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05v
SW5zdGFuY2VPZihtb2RlbHMuVGVzdFJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gbW9kZWxzLlRl
c3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKCdzb21lLXRlc3QnLCBidWls
ZCwKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKFRlc3RSZXN1bHQpCisg
ICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29u
KCdzb21lLXRlc3QnLCBidWlsZCwKICAgICAgICAgICAgIHsiYXZnIjogNDAsICJtZWRpYW4iOiAi
NDAuMSIsICJzdGRldiI6IDMuMjUsICJtaW4iOiAzMC41LCAibWF4IjogNDV9KQogICAgICAgICBz
ZWxmLmFzc2VydE9ubHlJbnN0YW5jZShyZXN1bHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzdWx0Lm5hbWUsICdzb21lLXRlc3QnKQpAQCAtMzc0LDIzICszODksMjMgQEAgY2xhc3MgVGVz
dFJlc3VsdFRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZQogICAgIGRlZiB0ZXN0X3JlcGxhY2VfdG9f
Y2hhbmdlX3Rlc3RfbmFtZV9vdmVycmlkZXNfY29uZmxpY3RpbmdfcmVzdWx0KHNlbGYpOgogICAg
ICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQog
ICAgICAgICBidWlsZCA9IF9jcmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikK
LSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0
KQotICAgICAgICByZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21f
cGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxkLCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRU
aGVyZUlzTm9JbnN0YW5jZU9mKFRlc3RSZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1
bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKCdzb21lLXRlc3QnLCBidWlsZCwgMjAp
CiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJlc3VsdCkKIAotICAgICAgICBjb25m
bGljdGluZ19yZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFy
c2VkX2pzb24oJ290aGVyLXRlc3QnLCBidWlsZCwgMTApCisgICAgICAgIGNvbmZsaWN0aW5nX3Jl
c3VsdCA9IFRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKCdvdGhlci10
ZXN0JywgYnVpbGQsIDEwKQogCiAgICAgICAgIG5ld19yZXN1bHQgPSByZXN1bHQucmVwbGFjZV90
b19jaGFuZ2VfdGVzdF9uYW1lKCdvdGhlci10ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnROb3RF
cXVhbChyZXN1bHQsIG5ld19yZXN1bHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNl
KG5ld19yZXN1bHQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcmVzdWx0Lm5hbWUs
ICdvdGhlci10ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbHMuVGVzdFJlc3Vs
dC5nZXQoY29uZmxpY3RpbmdfcmVzdWx0LmtleSgpKS52YWx1ZSwgMjApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoVGVzdFJlc3VsdC5nZXQoY29uZmxpY3RpbmdfcmVzdWx0LmtleSgpKS52YWx1
ZSwgMjApCiAKIAogY2xhc3MgUmVwb3J0TG9nVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAg
ICBkZWYgX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBy
ZXR1cm4gbW9kZWxzLlJlcG9ydExvZyh0aW1lc3RhbXA9ZGF0ZXRpbWUubm93KCksIGhlYWRlcnM9
J3NvbWUgaGVhZGVycycsIHBheWxvYWQ9cGF5bG9hZCkKKyAgICAgICAgcmV0dXJuIFJlcG9ydExv
Zyh0aW1lc3RhbXA9ZGF0ZXRpbWUubm93KCksIGhlYWRlcnM9J3NvbWUgaGVhZGVycycsIHBheWxv
YWQ9cGF5bG9hZCkKIAogICAgIGRlZiB0ZXN0X3BhcnNlZF9wYXlsb2FkKHNlbGYpOgogICAgICAg
ICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgnJykKQEAgLTQyNCw3ICs0Mzks
NyBAQCBjbGFzcyBSZXBvcnRMb2dUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpCiAgICAgICAgIGxv
ZyA9IHNlbGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKCd7ImJ1aWxkZXItbmFtZSI6ICIlcyJ9
JyAlIGJ1aWxkZXJfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cuYnVpbGRlcigp
LCBOb25lKQogCi0gICAgICAgIGJ1aWxkZXJfa2V5ID0gbW9kZWxzLkJ1aWxkZXIuY3JlYXRlKGJ1
aWxkZXJfbmFtZSwgJ3NvbWUgcGFzc3dvcmQnKQorICAgICAgICBidWlsZGVyX2tleSA9IEJ1aWxk
ZXIuY3JlYXRlKGJ1aWxkZXJfbmFtZSwgJ3NvbWUgcGFzc3dvcmQnKQogICAgICAgICBsb2cgPSBz
ZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgneyJidWlsZGVyLW5hbWUiOiAiJXMifScgJSBi
dWlsZGVyX25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLmJ1aWxkZXIoKS5rZXko
KSwgYnVpbGRlcl9rZXkpCiAKQEAgLTQzNSw3ICs0NTAsNyBAQCBjbGFzcyBSZXBvcnRMb2dUZXN0
cyhEYXRhU3RvcmVUZXN0c0Jhc2UpCiAgICAgICAgIGxvZyA9IHNlbGYuX2NyZWF0ZV9sb2dfd2l0
aF9wYXlsb2FkKCd7ImJyYW5jaCI6ICJzb21lLWJyYW5jaCJ9JykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsb2cuYnJhbmNoKCksIE5vbmUpCiAKLSAgICAgICAgYnJhbmNoID0gbW9kZWxzLkJy
YW5jaC5jcmVhdGVfaWZfcG9zc2libGUoInNvbWUtYnJhbmNoIiwgIlNvbWUgQnJhbmNoIikKKyAg
ICAgICAgYnJhbmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgic29tZS1icmFuY2giLCAi
U29tZSBCcmFuY2giKQogICAgICAgICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9h
ZCgneyJicmFuY2giOiAic29tZS1icmFuY2gifScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bG9nLmJyYW5jaCgpLmtleSgpLCBicmFuY2gua2V5KCkpCiAKQEAgLTQ0Niw3ICs0NjEsNyBAQCBj
bGFzcyBSZXBvcnRMb2dUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpCiAgICAgICAgIGxvZyA9IHNl
bGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKCd7InBsYXRmb3JtIjogInNvbWUtcGxhdGZvcm0i
fScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLnBsYXRmb3JtKCksIE5vbmUpCiAKLSAg
ICAgICAgcGxhdGZvcm0gPSBtb2RlbHMuUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCJzb21l
LXBsYXRmb3JtIiwgIlNvbWUgUGxhdGZvcm0iKQorICAgICAgICBwbGF0Zm9ybSA9IFBsYXRmb3Jt
LmNyZWF0ZV9pZl9wb3NzaWJsZSgic29tZS1wbGF0Zm9ybSIsICJTb21lIFBsYXRmb3JtIikKICAg
ICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoJ3sicGxhdGZvcm0iOiAi
c29tZS1wbGF0Zm9ybSJ9JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cucGxhdGZvcm0o
KS5rZXkoKSwgcGxhdGZvcm0ua2V5KCkpCiAKQEAgLTQ4MCwzMSArNDk1LDYyIEBAIGNsYXNzIFBl
cnNpc3RlbnRDYWNoZVRlc3RzKERhdGFTdG9yZVRlc3QKICAgICAgICAgc2VsZi50ZXN0YmVkLmlu
aXRfbWVtY2FjaGVfc3R1YigpCiAKICAgICBkZWYgX2Fzc2VydF9wZXJzaXN0ZW50X2NhY2hlKHNl
bGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbHMuUGVyc2lz
dGVudENhY2hlLmdldF9ieV9rZXlfbmFtZShuYW1lKS52YWx1ZSwgdmFsdWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoUGVyc2lzdGVudENhY2hlLmdldF9ieV9rZXlfbmFtZShuYW1lKS52YWx1
ZSwgdmFsdWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtY2FjaGUuZ2V0KG5hbWUpLCB2
YWx1ZSkKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVy
ZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihQZXJzaXN0ZW50Q2FjaGUpCiAKLSAgICAgICAgbW9kZWxz
LlBlcnNpc3RlbnRDYWNoZS5zZXRfY2FjaGUoJ3NvbWUtY2FjaGUnLCAnc29tZSBkYXRhJykKKyAg
ICAgICAgUGVyc2lzdGVudENhY2hlLnNldF9jYWNoZSgnc29tZS1jYWNoZScsICdzb21lIGRhdGEn
KQogICAgICAgICBzZWxmLl9hc3NlcnRfcGVyc2lzdGVudF9jYWNoZSgnc29tZS1jYWNoZScsICdz
b21lIGRhdGEnKQogCi0gICAgICAgIG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuc2V0X2NhY2hlKCdz
b21lLWNhY2hlJywgJ3NvbWUgb3RoZXIgZGF0YScpCisgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5z
ZXRfY2FjaGUoJ3NvbWUtY2FjaGUnLCAnc29tZSBvdGhlciBkYXRhJykKIAogICAgICAgICBzZWxm
Ll9hc3NlcnRfcGVyc2lzdGVudF9jYWNoZSgnc29tZS1jYWNoZScsICdzb21lIG90aGVyIGRhdGEn
KQogCiAgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1l
bWNhY2hlLmdldCgnc29tZS1jYWNoZScpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuZ2V0X2NhY2hlKCdzb21lLWNhY2hlJyksIE5vbmUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZSgnc29tZS1j
YWNoZScpLCBOb25lKQogCi0gICAgICAgIG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuc2V0X2NhY2hl
KCdzb21lLWNhY2hlJywgJ3NvbWUgZGF0YScpCisgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXRf
Y2FjaGUoJ3NvbWUtY2FjaGUnLCAnc29tZSBkYXRhJykKIAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1lbWNhY2hlLmdldCgnc29tZS1jYWNoZScpLCAnc29tZSBkYXRhJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtb2RlbHMuUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZSgnc29tZS1jYWNo
ZScpLCAnc29tZSBkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJzaXN0ZW50Q2Fj
aGUuZ2V0X2NhY2hlKCdzb21lLWNhY2hlJyksICdzb21lIGRhdGEnKQogCiAgICAgICAgIG1lbWNh
Y2hlLmRlbGV0ZSgnc29tZS1jYWNoZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtY2Fj
aGUuZ2V0KCdzb21lLWNhY2hlJyksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9k
ZWxzLlBlcnNpc3RlbnRDYWNoZS5nZXRfY2FjaGUoJ3NvbWUtY2FjaGUnKSwgJ3NvbWUgZGF0YScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZSgnc29t
ZS1jYWNoZScpLCAnc29tZSBkYXRhJykKKworCitjbGFzcyBEYXNoYm9hcmRJbWFnZVRlc3RzKERh
dGFTdG9yZVRlc3RzQmFzZSk6CisgICAgZGVmIHRlc3RfbmVlZHNfdXBkYXRlKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoRGFzaGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRlKDEsIDIsIDMs
IDcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoRGFzaGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRl
KDEsIDIsIDMsIDMwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERhc2hib2FyZEltYWdlLm5l
ZWRzX3VwZGF0ZSgxLCAyLCAzLCA2MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEYXNoYm9h
cmRJbWFnZS5uZWVkc191cGRhdGUoMSwgMiwgMywgMzY1KSkKKworICAgICAgICBpbWFnZSA9IERh
c2hib2FyZEltYWdlKGtleV9uYW1lPURhc2hib2FyZEltYWdlLmtleV9uYW1lKDEsIDIsIDMsIDcp
LCBpbWFnZT0nYmxhaCcpCisgICAgICAgIGltYWdlLnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0
T25seUluc3RhbmNlKGltYWdlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoRGFzaGJvYXJkSW1h
Z2UubmVlZHNfdXBkYXRlKDEsIDIsIDMsIDcpKQorCisgICAgICAgIERhc2hib2FyZEltYWdlKGtl
eV9uYW1lPURhc2hib2FyZEltYWdlLmtleV9uYW1lKDEsIDIsIDMsIDMwKSwgaW1hZ2U9J2JsYWgn
KS5wdXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKERhc2hib2FyZEltYWdlLm5lZWRzX3Vw
ZGF0ZSgxLCAyLCAzLCAzMCwgZGF0ZXRpbWUubm93KCkgKyB0aW1lZGVsdGEoMCwgMTApKSkKKwor
ICAgICAgICBEYXNoYm9hcmRJbWFnZShrZXlfbmFtZT1EYXNoYm9hcmRJbWFnZS5rZXlfbmFtZSgx
LCAyLCA0LCAzMCksIGltYWdlPSdibGFoJykucHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KERhc2hib2FyZEltYWdlLm5lZWRzX3VwZGF0ZSgxLCAyLCA0LCAzMCwgZGF0ZXRpbWUubm93KCkg
KyB0aW1lZGVsdGEoMSkpKQorCisgICAgICAgIERhc2hib2FyZEltYWdlKGtleV9uYW1lPURhc2hi
b2FyZEltYWdlLmtleV9uYW1lKDEsIDIsIDMsIDkwKSwgaW1hZ2U9J2JsYWgnKS5wdXQoKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKERhc2hib2FyZEltYWdlLm5lZWRzX3VwZGF0ZSgxLCAyLCAz
LCA5MCwgZGF0ZXRpbWUubm93KCkgKyB0aW1lZGVsdGEoMCwgMjApKSkKKworICAgICAgICBEYXNo
Ym9hcmRJbWFnZShrZXlfbmFtZT1EYXNoYm9hcmRJbWFnZS5rZXlfbmFtZSgxLCAyLCA0LCA5MCks
IGltYWdlPSdibGFoJykucHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERhc2hib2FyZElt
YWdlLm5lZWRzX3VwZGF0ZSgxLCAyLCA0LCA5MCwgZGF0ZXRpbWUubm93KCkgKyB0aW1lZGVsdGEo
MSkpKQorCisgICAgICAgIERhc2hib2FyZEltYWdlKGtleV9uYW1lPURhc2hib2FyZEltYWdlLmtl
eV9uYW1lKDEsIDIsIDMsIDM2NSksIGltYWdlPSdibGFoJykucHV0KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShEYXNoYm9hcmRJbWFnZS5uZWVkc191cGRhdGUoMSwgMiwgMywgMzY1LCBkYXRl
dGltZS5ub3coKSArIHRpbWVkZWx0YSgxKSkpCisKKyAgICAgICAgRGFzaGJvYXJkSW1hZ2Uoa2V5
X25hbWU9RGFzaGJvYXJkSW1hZ2Uua2V5X25hbWUoMSwgMiwgNCwgMzY1KSwgaW1hZ2U9J2JsYWgn
KS5wdXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoRGFzaGJvYXJkSW1hZ2UubmVlZHNfdXBk
YXRlKDEsIDIsIDQsIDM2NSwgZGF0ZXRpbWUubm93KCkgKyB0aW1lZGVsdGEoMTApKSkKIAogCiBp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>
<flag name="review"
          id="132403"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>