<?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>79898</bug_id>
          
          <creation_ts>2012-02-29 02:04:17 -0800</creation_ts>
          <short_desc>perf-o-matic should incrementally update JSON responses</short_desc>
          <delta_ts>2012-03-08 14:58:58 -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>WebKit Website</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>
          <dependson>80364</dependson>
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>567523</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-29 02:04:17 -0800</bug_when>
    <thetext>We&apos;re running out of quota on the app engine because of the front-end time. As far as I understand, we&apos;re spending ridiculous amount of time iterating through all test result objects to generate &quot;runs&quot; JSON responses. We should do this incrementally instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567526</commentid>
    <comment_count>1</comment_count>
      <attachid>129421</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-29 02:11:49 -0800</bug_when>
    <thetext>Created attachment 129421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567938</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-29 14:24:30 -0800</bug_when>
    <thetext>Apparently, this isn&apos;t much of an issue after some investigation. The biggest cause of the huge frontend hours appears to be coming from the dashboard, which ends up loading a whole dozens of files in each of 132 iframes...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568881</commentid>
    <comment_count>3</comment_count>
      <attachid>129421</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-01 13:51:38 -0800</bug_when>
    <thetext>Comment on attachment 129421
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570942</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-05 12:23:17 -0800</bug_when>
    <thetext>I just realized that this may cause the values in JSON to get progressively worse since I&apos;m doing string &gt; float &gt; string conversion on each run :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573705</commentid>
    <comment_count>5</comment_count>
      <attachid>130793</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-08 01:28:26 -0800</bug_when>
    <thetext>Created attachment 130793
Second attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574141</commentid>
    <comment_count>6</comment_count>
      <attachid>130793</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-08 13:38:23 -0800</bug_when>
    <thetext>Comment on attachment 130793
Second attempt

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574259</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-08 14:58:58 -0800</bug_when>
    <thetext>Committed r110210: &lt;http://trac.webkit.org/changeset/110210&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129421</attachid>
            <date>2012-02-29 02:11:49 -0800</date>
            <delta_ts>2012-03-05 19:05:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79898-20120229021145.patch</filename>
            <type>text/plain</type>
            <size>18433</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTE5
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAy
LTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHBlcmYtby1t
YXRpYyBzaG91bGQgaW5jcmVtZW50YWxseSB1cGRhdGUgSlNPTiByZXNwb25zZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5ODk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgUnVucy51cGRhdGVf
anNvbl9pbmNyZW1lbnRhbGx5IGFuZCBkZXBsb3llZCBpdCBpbiBSZXBvcnRQcm9jZXNzSGFuZGxl
ci4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXRyZWl2ZXMgYW5kIHVwZGF0ZXMgdGhlICJydW5z
IiBKU09OIHZhbHVlcyBpbiBtZW1jYWNoZSAvIFBlcnNpc3RlbnRDYWNoZQorICAgICAgICBhbmQg
YXZvaWQgZ2VuZXJhdGluZyBpdCBmcm9tIHNjcmF0Y2guCisKKyAgICAgICAgVGhpcyBvcHRpbWl6
YXRpb24gc2hvdWxkIHJlZHVjZSBvdXIgZnJvbnQtZW5kIGhvdXJzIGNvbnNpZGVyYWJseS4KKwor
ICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2NvbnRyb2xsZXIucHk6
CisgICAgICAgIChzY2hlZHVsZV9ydW5zX3VwZGF0ZSk6CisgICAgICAgIChzY2hlZHVsZV9yZXBv
cnRfcHJvY2Vzcyk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20v
anMvYWRtaW4uanM6CisgICAgICAgIChiaW5kKToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQt
cGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnMucHk6CisgICAgICAgIChSdW5zLnZhbHVl
KToKKyAgICAgICAgKFJ1bnMpOgorICAgICAgICAoUnVucy51cGRhdGVfdmFsdWVfaW5jcmVtZW50
YWxseSk6CisgICAgICAgIChSdW5zLnVwZGF0ZV9qc29uX2luY3JlbWVudGFsbHkpOgorICAgICAg
ICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9yc191bml0
dGVzdC5weToKKyAgICAgICAgKFJ1bnNUZXN0LnNldFVwKToKKyAgICAgICAgKFJ1bnNUZXN0Ll9j
cmVhdGVfYnVpbGQpOgorICAgICAgICAoUnVuc1Rlc3QpOgorICAgICAgICAoUnVuc1Rlc3QudGVz
dF91cGRhdGVfdmFsdWVfaW5jcmVtZW50YWxseSk6CisgICAgICAgIChSdW5zVGVzdC50ZXN0X3Vw
ZGF0ZV9qc29uX2luY3JlbWVudGFsbHkpOgorICAgICAgICAoUnVuc1Rlc3QudGVzdF9ydW5fZnJv
bV9idWlsZF9hbmRfcmVzdWx0KToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBz
cG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHk6CisgICAgICAgIChQZXJzaXN0ZW50Q2FjaGVUZXN0
cy5zZXRVcCk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vcmVw
b3J0X3Byb2Nlc3NfaGFuZGxlci5weToKKyAgICAgICAgKFJlcG9ydFByb2Nlc3NIYW5kbGVyLnBv
c3QpOgorCiAyMDEyLTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIHBlcmYtby1tYXRpYzogZ2VuZXJhdGUgZGFzaGJvYXJkIGltYWdlcyB1c2luZyBHb29n
bGUgQ2hhcnQgVG9vbHMKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2Nv
bnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5j
b20vY29udHJvbGxlci5weQkocmV2aXNpb24gMTA5MTkzKQorKysgV2Vic2l0ZXMvd2Via2l0LXBl
cmYuYXBwc3BvdC5jb20vY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTks
OCBAQCBkZWYgY2FjaGVfcnVucyh0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmCiAKIGRlZiBzY2hl
ZHVsZV9ydW5zX3VwZGF0ZSh0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkKToKICAgICB0
YXNrcXVldWUuYWRkKHVybD0nL2FwaS90ZXN0L3J1bnMvdXBkYXRlJywgcGFyYW1zPXsnaWQnOiB0
ZXN0X2lkLCAnYnJhbmNoaWQnOiBicmFuY2hfaWQsICdwbGF0Zm9ybWlkJzogcGxhdGZvcm1faWR9
KQotICAgIHRhc2txdWV1ZS5hZGQodXJsPScvYXBpL3Rlc3QvcnVucy9jaGFydCcsIHBhcmFtcz17
J2lkJzogdGVzdF9pZCwgJ2JyYW5jaGlkJzogYnJhbmNoX2lkLCAncGxhdGZvcm1pZCc6IHBsYXRm
b3JtX2lkfSkKKyAgICB0YXNrcXVldWUuYWRkKHVybD0nL2FwaS90ZXN0L3J1bnMvY2hhcnQnLCBw
YXJhbXM9eydpZCc6IHRlc3RfaWQsICdicmFuY2hpZCc6IGJyYW5jaF9pZCwKKyAgICAgICAgJ3Bs
YXRmb3JtaWQnOiBwbGF0Zm9ybV9pZCwgJ2Rpc3BsYXlEYXlzJzogN30pCiAKIAogZGVmIF9nZXRf
dGVzdF9icmFuY2hfcGxhdGZvcm1faWRzKGhhbmRsZXIpOgpAQCAtMTg3LDUgKzE4OCw0IEBAIGNs
YXNzIERhc2hib2FyZEltYWdlSGFuZGxlcih3ZWJhcHAyLlJlcXUKIAogCiBkZWYgc2NoZWR1bGVf
cmVwb3J0X3Byb2Nlc3MobG9nKToKLSAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbJ0NvbnRlbnQt
VHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nCiAgICAgdGFza3F1ZXVlLmFkZCh1cmw9Jy9hcGkv
dGVzdC9yZXBvcnQvcHJvY2VzcycsIHBhcmFtcz17J2lkJzogbG9nLmtleSgpLmlkKCl9KQpJbmRl
eDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanNvbl9nZW5lcmF0b3JzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJh
dG9ycy5weQkocmV2aXNpb24gMTA5MTkzKQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3Bv
dC5jb20vanNvbl9nZW5lcmF0b3JzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
IGZyb20gdGltZSBpbXBvcnQgbWt0aW1lCiBmcm9tIG1vZGVscyBpbXBvcnQgQnVpbGQKIGZyb20g
bW9kZWxzIGltcG9ydCBCdWlsZGVyCiBmcm9tIG1vZGVscyBpbXBvcnQgQnJhbmNoCitmcm9tIG1v
ZGVscyBpbXBvcnQgUGVyc2lzdGVudENhY2hlCiBmcm9tIG1vZGVscyBpbXBvcnQgUGxhdGZvcm0K
IGZyb20gbW9kZWxzIGltcG9ydCBUZXN0CiBmcm9tIG1vZGVscyBpbXBvcnQgVGVzdFJlc3VsdApA
QCAtMTYxLDI2ICsxNjIsNTMgQEAgY2xhc3MgUnVucyhKU09OR2VuZXJhdG9yQmFzZSk6CiAgICAg
ICAgICAgICBidWlsZGVyX2lkLCBzdGF0aXN0aWNzXQogCiAgICAgZGVmIHZhbHVlKHNlbGYpOgot
ICAgICAgICBfdGVzdF9ydW5zID0gW10KLSAgICAgICAgX2F2ZXJhZ2VzID0ge30KLSAgICAgICAg
dmFsdWVzID0gW10KKyAgICAgICAgdmFsdWUgPSB7J3Rlc3RfcnVucyc6IFtdLAorICAgICAgICAg
ICAgJ2F2ZXJhZ2VzJzoge30sCisgICAgICAgICAgICAnbWluJzogZmxvYXQoJ2luZicpLAorICAg
ICAgICAgICAgJ21heCc6IC1mbG9hdCgnaW5mJyksCisgICAgICAgICAgICAnZGF0ZV9yYW5nZSc6
IE5vbmUsICAjIE5ldmVyIHVzZWQgYnkgY29tbW9uLmpzCisgICAgICAgICAgICAnc3RhdCc6ICdv
ayd9CiAKICAgICAgICAgZm9yIGJ1aWxkLCByZXN1bHQgaW4gUnVucy5fZ2VuZXJhdGVfcnVucyhz
ZWxmLl9icmFuY2gsIHNlbGYuX3BsYXRmb3JtLCBzZWxmLl90ZXN0X25hbWUpOgotICAgICAgICAg
ICAgX3Rlc3RfcnVucy5hcHBlbmQoUnVucy5fZW50cnlfZnJvbV9idWlsZF9hbmRfcmVzdWx0KGJ1
aWxkLCByZXN1bHQpKQotICAgICAgICAgICAgIyBGSVhNRTogQ2FsY3VsYXRlIHRoZSBhdmVyYWdl
LiBJbiBwcmFjdGljZSwgd2Ugd291bGRuJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIHZhbHVlIGZvciBh
IGdpdmVuIHJldmlzaW9uLgotICAgICAgICAgICAgX2F2ZXJhZ2VzW2J1aWxkLnJldmlzaW9uXSA9
IHJlc3VsdC52YWx1ZQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChyZXN1bHQudmFsdWUpCisg
ICAgICAgICAgICBSdW5zLnVwZGF0ZV92YWx1ZV9pbmNyZW1lbnRhbGx5KHZhbHVlLCBidWlsZCwg
cmVzdWx0KQogCi0gICAgICAgIF9taW4gPSBtaW4odmFsdWVzKSBpZiB2YWx1ZXMgZWxzZSBOb25l
Ci0gICAgICAgIF9tYXggPSBtYXgodmFsdWVzKSBpZiB2YWx1ZXMgZWxzZSBOb25lCisgICAgICAg
IGlmIHZhbHVlWydtaW4nXSA9PSBmbG9hdCgnaW5mJyk6CisgICAgICAgICAgICB2YWx1ZVsnbWlu
J10gPSBOb25lCiAKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICd0ZXN0X3J1bnMnOiBf
dGVzdF9ydW5zLAotICAgICAgICAgICAgJ2F2ZXJhZ2VzJzogX2F2ZXJhZ2VzLAotICAgICAgICAg
ICAgJ21pbic6IF9taW4sCi0gICAgICAgICAgICAnbWF4JzogX21heCwKLSAgICAgICAgICAgICdk
YXRlX3JhbmdlJzogTm9uZSwgICMgTmV2ZXIgdXNlZCBieSBjb21tb24uanMuCi0gICAgICAgICAg
ICAnc3RhdCc6ICdvayd9CisgICAgICAgIGlmIHZhbHVlWydtYXgnXSA9PSAtZmxvYXQoJ2luZicp
OgorICAgICAgICAgICAgdmFsdWVbJ21heCddID0gTm9uZQorCisgICAgICAgIHJldHVybiB2YWx1
ZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiB1cGRhdGVfdmFsdWVfaW5jcmVtZW50YWxs
eSh2YWx1ZSwgYnVpbGQsIHJlc3VsdCk6CisgICAgICAgIHZhbHVlWyd0ZXN0X3J1bnMnXS5hcHBl
bmQoUnVucy5fZW50cnlfZnJvbV9idWlsZF9hbmRfcmVzdWx0KGJ1aWxkLCByZXN1bHQpKQorICAg
ICAgICAjIEZJWE1FOiBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2UuIEluIHByYWN0aWNlLCB3ZSB3b3Vs
ZG4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgdmFsdWUgZm9yIGEgZ2l2ZW4gcmV2aXNpb24uCisgICAg
ICAgIHZhbHVlWydhdmVyYWdlcyddW2J1aWxkLnJldmlzaW9uXSA9IHJlc3VsdC52YWx1ZQorICAg
ICAgICB2YWx1ZVsnbWluJ10gPSBtaW4ocmVzdWx0LnZhbHVlLCB2YWx1ZVsnbWluJ10pCisgICAg
ICAgIHZhbHVlWydtYXgnXSA9IG1heChyZXN1bHQudmFsdWUsIHZhbHVlWydtYXgnXSkKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiB1cGRhdGVfanNvbl9pbmNyZW1lbnRhbGx5KGNscywgYnJh
bmNoLCBwbGF0Zm9ybSwgdGVzdCwgYnVpbGQsIHJlc3VsdCk6CisgICAgICAgIGtleV9uYW1lID0g
VGVzdC5jYWNoZV9rZXkodGVzdC5pZCwgYnJhbmNoLmlkLCBwbGF0Zm9ybS5pZCkKKyAgICAgICAg
cnVuc19qc29uID0gUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZShrZXlfbmFtZSkKKyAgICAgICAg
aWYgbm90IHJ1bnNfanNvbjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHZh
bHVlID0ganNvbi5sb2FkcyhydW5zX2pzb24pCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgQ2hlY2sgZm9yIGR1cGxpY2F0aW9uCisg
ICAgICAgIGlmIHN0cihidWlsZC5yZXZpc2lvbikgaW4gdmFsdWVbJ2F2ZXJhZ2VzJ106CisgICAg
ICAgICAgICBuZXdfZW50cnkgPSBSdW5zLl9lbnRyeV9mcm9tX2J1aWxkX2FuZF9yZXN1bHQoYnVp
bGQsIHJlc3VsdCkKKyAgICAgICAgICAgIGlmIG5ld19lbnRyeVsxXSBpbiBbZW50cnlbMV0gZm9y
IGVudHJ5IGluIHZhbHVlWyd0ZXN0X3J1bnMnXV06CisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKworICAgICAgICBjbHMudXBkYXRlX3ZhbHVlX2luY3JlbWVudGFsbHkodmFsdWUsIGJ1aWxk
LCByZXN1bHQpCisgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXRfY2FjaGUoa2V5X25hbWUsIGpz
b24uZHVtcHModmFsdWUpKQorCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgY2hhcnRf
cGFyYW1zKHNlbGYsIGRpc3BsYXlfZGF5cywgbm93PWRhdGV0aW1lLm5vdygpKToKICAgICAgICAg
Y2hhcnRfZGF0YV94ID0gW10KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29t
L2pzb25fZ2VuZXJhdG9yc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJr
aXQtcGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnNfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDEwOTE5MykKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJh
dG9yc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBpbXBvcnQganNvbgotaW1wb3J0IG1vZGVscworaW1wb3J0IHRpbWUKIGltcG9y
dCB1bml0dGVzdAogCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB0ZXN0YmVkCkBA
IC00Miw2ICs0Miw3IEBAIGZyb20gbW9kZWxzX3VuaXR0ZXN0IGltcG9ydCBEYXRhU3RvcmVUZXMK
IGZyb20gbW9kZWxzIGltcG9ydCBCcmFuY2gKIGZyb20gbW9kZWxzIGltcG9ydCBCdWlsZAogZnJv
bSBtb2RlbHMgaW1wb3J0IEJ1aWxkZXIKK2Zyb20gbW9kZWxzIGltcG9ydCBQZXJzaXN0ZW50Q2Fj
aGUKIGZyb20gbW9kZWxzIGltcG9ydCBQbGF0Zm9ybQogZnJvbSBtb2RlbHMgaW1wb3J0IFRlc3QK
IGZyb20gbW9kZWxzIGltcG9ydCBUZXN0UmVzdWx0CkBAIC0xODcsNiArMTg4LDEwIEBAIGNsYXNz
IE1hbmlmZXN0SlNPTkdlbmVyYXRvclRlc3QoRGF0YVN0b3IKIAogCiBjbGFzcyBSdW5zVGVzdChE
YXRhU3RvcmVUZXN0c0Jhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIo
UnVuc1Rlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi50ZXN0YmVkLmluaXRfbWVtY2Fj
aGVfc3R1YigpCisKICAgICBkZWYgX2NyZWF0ZV9yZXN1bHRzKHNlbGYsIGJyYW5jaCwgcGxhdGZv
cm0sIGJ1aWxkZXIsIHRlc3RfbmFtZSwgdmFsdWVzLCB0aW1lc3RhbXBzPU5vbmUpOgogICAgICAg
ICByZXN1bHRzID0gW10KICAgICAgICAgZm9yIGksIHZhbHVlIGluIGVudW1lcmF0ZSh2YWx1ZXMp
OgpAQCAtMjU5LDI1ICsyNjQsMTM3IEBAIGNsYXNzIFJ1bnNUZXN0KERhdGFTdG9yZVRlc3RzQmFz
ZSk6CiAgICAgICAgICAgICBbXSwgICMgYW5ub3RhdGlvbnMKICAgICAgICAgICAgIGJ1aWxkLmJ1
aWxkZXIua2V5KCkuaWQoKSwgc3RhdGlzdGljc10pCiAKLSAgICBkZWYgdGVzdF9ydW5fZnJvbV9i
dWlsZF9hbmRfcmVzdWx0KHNlbGYpOgorICAgIGRlZiBfY3JlYXRlX2J1aWxkKHNlbGYsIGJyYW5j
aCwgcGxhdGZvcm0sIGJ1aWxkZXIsIGJ1aWxkX251bWJlciwgcmV2aXNpb24sIHRpbWVzdGFtcD1O
b25lKToKKyAgICAgICAgdGltZXN0YW1wID0gZGF0ZXRpbWUubm93KCkucmVwbGFjZShtaWNyb3Nl
Y29uZD0wKQorICAgICAgICBidWlsZCA9IEJ1aWxkKGJyYW5jaD1icmFuY2gsIHBsYXRmb3JtPXBs
YXRmb3JtLCBidWlsZGVyPWJ1aWxkZXIsIGJ1aWxkTnVtYmVyPWJ1aWxkX251bWJlciwKKyAgICAg
ICAgICAgIHJldmlzaW9uPXJldmlzaW9uLCB0aW1lc3RhbXA9dGltZXN0YW1wKQorICAgICAgICBi
dWlsZC5wdXQoKQorICAgICAgICByZXR1cm4gYnVpbGQKKworICAgIGRlZiB0ZXN0X3VwZGF0ZV92
YWx1ZV9pbmNyZW1lbnRhbGx5KHNlbGYpOgogICAgICAgICBicmFuY2ggPSBCcmFuY2guY3JlYXRl
X2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCiAgICAgICAgIHBsYXRm
b3JtID0gUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRmb3JtJywgJ1NvbWUg
UGxhdGZvcm0nKQogICAgICAgICBidWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUo
J3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKSkKLSAgICAgICAgdGVzdF9uYW1lID0gJyBz
b21lLXRlc3QnCisgICAgICAgIHRlc3RfbmFtZSA9ICdzb21lLXRlc3QnCiAKLSAgICAgICAgZGVm
IGNyZWF0ZV9idWlsZChidWlsZF9udW1iZXIsIHJldmlzaW9uKToKLSAgICAgICAgICAgIHRpbWVz
dGFtcCA9IGRhdGV0aW1lLm5vdygpLnJlcGxhY2UobWljcm9zZWNvbmQ9MCkKLSAgICAgICAgICAg
IGJ1aWxkID0gQnVpbGQoYnJhbmNoPWJyYW5jaCwgcGxhdGZvcm09cGxhdGZvcm0sIGJ1aWxkZXI9
YnVpbGRlciwgYnVpbGROdW1iZXI9YnVpbGRfbnVtYmVyLAotICAgICAgICAgICAgICAgIHJldmlz
aW9uPXJldmlzaW9uLCB0aW1lc3RhbXA9dGltZXN0YW1wKQotICAgICAgICAgICAgYnVpbGQucHV0
KCkKLSAgICAgICAgICAgIHJldHVybiBidWlsZAorICAgICAgICBqc29uID0geydzdGF0JzogJ29r
JywKKyAgICAgICAgICAgICd0ZXN0X3J1bnMnOiBbWzRMLCBbM0wsIDBMLCAxMDBMLCBOb25lXSwg
MSwgNTAuMCwgMCwgW10sIE5vbmUsIE5vbmVdLAorICAgICAgICAgICAgICAgIFs2TCwgWzVMLCAx
TCwgMTAxTCwgTm9uZV0sIDIsIDUxLjAsIDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAg
ICAgICBbOEwsIFs3TCwgMkwsIDEwMkwsIE5vbmVdLCAzLCA1Mi4wLCAwLCBbXSwgTm9uZSwgTm9u
ZV0sCisgICAgICAgICAgICAgICAgWzEwTCwgWzlMLCAzTCwgMTAzTCwgTm9uZV0sIDQsIDQ5LjAs
IDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAgICAgICBbMTJMLCBbMTFMLCA0TCwgMTA0
TCwgTm9uZV0sIDUsIDQ4LjAsIDAsIFtdLCBOb25lLCBOb25lXV0sCisgICAgICAgICAgICAnbWlu
JzogNDguMCwKKyAgICAgICAgICAgICdtYXgnOiA1Mi4wLAorICAgICAgICAgICAgJ2RhdGVfcmFu
Z2UnOiBOb25lLAorICAgICAgICAgICAgJ2F2ZXJhZ2VzJzogezEwMEw6IDUwLjAsIDEwMUw6IDUx
LjAsIDEwMkw6IDUyLjAsIDEwM0w6IDQ5LjAsIDEwNEw6IDQ4LjB9fQorCisgICAgICAgIHRpbWVz
dGFtcCA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgIGJ1aWxkID0gc2VsZi5fY3JlYXRlX2J1aWxk
KGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIsIDEyTCwgMTA1TCwgdGltZXN0YW1wKQorICAgICAg
ICByZXN1bHQgPSBUZXN0UmVzdWx0KG5hbWU9dGVzdF9uYW1lLCB2YWx1ZT01NS4wLCBidWlsZD1i
dWlsZCkKKyAgICAgICAgcmVzdWx0LnB1dCgpCisgICAgICAgIFJ1bnMudXBkYXRlX3ZhbHVlX2lu
Y3JlbWVudGFsbHkoanNvbiwgYnVpbGQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChqc29uLCB7J3N0YXQnOiAnb2snLAorICAgICAgICAgICAgJ3Rlc3RfcnVucyc6IFtbNEwsIFsz
TCwgMEwsIDEwMEwsIE5vbmVdLCAxLCA1MC4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAg
ICAgICAgICAgWzZMLCBbNUwsIDFMLCAxMDFMLCBOb25lXSwgMiwgNTEuMCwgMCwgW10sIE5vbmUs
IE5vbmVdLAorICAgICAgICAgICAgICAgIFs4TCwgWzdMLCAyTCwgMTAyTCwgTm9uZV0sIDMsIDUy
LjAsIDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAgICAgICBbMTBMLCBbOUwsIDNMLCAx
MDNMLCBOb25lXSwgNCwgNDkuMCwgMCwgW10sIE5vbmUsIE5vbmVdLAorICAgICAgICAgICAgICAg
IFsxMkwsIFsxMUwsIDRMLCAxMDRMLCBOb25lXSwgNSwgNDguMCwgMCwgW10sIE5vbmUsIE5vbmVd
LAorICAgICAgICAgICAgICAgIFs0TCwgWzNMLCAxMkwsIDEwNUwsIE5vbmVdLCB0aW1lLm1rdGlt
ZSh0aW1lc3RhbXAudGltZXR1cGxlKCkpLCA1NS4wLCAwLCBbXSwgTm9uZSwgTm9uZV1dLAorICAg
ICAgICAgICAgJ21pbic6IDQ4LjAsCisgICAgICAgICAgICAnbWF4JzogNTUuMCwKKyAgICAgICAg
ICAgICdkYXRlX3JhbmdlJzogTm9uZSwKKyAgICAgICAgICAgICdhdmVyYWdlcyc6IHsxMDBMOiA1
MC4wLCAxMDFMOiA1MS4wLCAxMDJMOiA1Mi4wLCAxMDNMOiA0OS4wLCAxMDRMOiA0OC4wLCAxMDVM
OiA1NS4wfX0pCisKKyAgICAgICAgYnVpbGQgPSBzZWxmLl9jcmVhdGVfYnVpbGQoYnJhbmNoLCBw
bGF0Zm9ybSwgYnVpbGRlciwgMTNMLCAxMDZMLCB0aW1lc3RhbXApCisgICAgICAgIHJlc3VsdCA9
IFRlc3RSZXN1bHQobmFtZT10ZXN0X25hbWUsIHZhbHVlPTQ3LjAsIGJ1aWxkPWJ1aWxkKQorICAg
ICAgICByZXN1bHQucHV0KCkKKyAgICAgICAgUnVucy51cGRhdGVfdmFsdWVfaW5jcmVtZW50YWxs
eShqc29uLCBidWlsZCwgcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24sIHsn
c3RhdCc6ICdvaycsCisgICAgICAgICAgICAndGVzdF9ydW5zJzogW1s0TCwgWzNMLCAwTCwgMTAw
TCwgTm9uZV0sIDEsIDUwLjAsIDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAgICAgICBb
NkwsIFs1TCwgMUwsIDEwMUwsIE5vbmVdLCAyLCA1MS4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisg
ICAgICAgICAgICAgICAgWzhMLCBbN0wsIDJMLCAxMDJMLCBOb25lXSwgMywgNTIuMCwgMCwgW10s
IE5vbmUsIE5vbmVdLAorICAgICAgICAgICAgICAgIFsxMEwsIFs5TCwgM0wsIDEwM0wsIE5vbmVd
LCA0LCA0OS4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICAgICAgWzEyTCwgWzEx
TCwgNEwsIDEwNEwsIE5vbmVdLCA1LCA0OC4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAg
ICAgICAgICAgWzRMLCBbM0wsIDEyTCwgMTA1TCwgTm9uZV0sIHRpbWUubWt0aW1lKHRpbWVzdGFt
cC50aW1ldHVwbGUoKSksIDU1LjAsIDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAgICAg
ICBbNkwsIFs1TCwgMTNMLCAxMDZMLCBOb25lXSwgdGltZS5ta3RpbWUodGltZXN0YW1wLnRpbWV0
dXBsZSgpKSwgNDcuMCwgMCwgW10sIE5vbmUsIE5vbmVdXSwKKyAgICAgICAgICAgICdtaW4nOiA0
Ny4wLAorICAgICAgICAgICAgJ21heCc6IDU1LjAsCisgICAgICAgICAgICAnZGF0ZV9yYW5nZSc6
IE5vbmUsCisgICAgICAgICAgICAnYXZlcmFnZXMnOiB7MTAwTDogNTAuMCwgMTAxTDogNTEuMCwg
MTAyTDogNTIuMCwgMTAzTDogNDkuMCwgMTA0TDogNDguMCwgMTA1TDogNTUuMCwgMTA2TDogNDcu
MH19KQorCisgICAgICAgIGJ1aWxkID0gc2VsZi5fY3JlYXRlX2J1aWxkKGJyYW5jaCwgcGxhdGZv
cm0sIGJ1aWxkZXIsIDE0TCwgMTA4TCwgdGltZXN0YW1wKQorICAgICAgICByZXN1bHQgPSBUZXN0
UmVzdWx0KG5hbWU9dGVzdF9uYW1lLCB2YWx1ZT01My4wLCBidWlsZD1idWlsZCkKKyAgICAgICAg
cmVzdWx0LnB1dCgpCisgICAgICAgIFJ1bnMudXBkYXRlX3ZhbHVlX2luY3JlbWVudGFsbHkoanNv
biwgYnVpbGQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLCB7J3N0YXQn
OiAnb2snLAorICAgICAgICAgICAgJ3Rlc3RfcnVucyc6IFtbNEwsIFszTCwgMEwsIDEwMEwsIE5v
bmVdLCAxLCA1MC4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICAgICAgWzZMLCBb
NUwsIDFMLCAxMDFMLCBOb25lXSwgMiwgNTEuMCwgMCwgW10sIE5vbmUsIE5vbmVdLAorICAgICAg
ICAgICAgICAgIFs4TCwgWzdMLCAyTCwgMTAyTCwgTm9uZV0sIDMsIDUyLjAsIDAsIFtdLCBOb25l
LCBOb25lXSwKKyAgICAgICAgICAgICAgICBbMTBMLCBbOUwsIDNMLCAxMDNMLCBOb25lXSwgNCwg
NDkuMCwgMCwgW10sIE5vbmUsIE5vbmVdLAorICAgICAgICAgICAgICAgIFsxMkwsIFsxMUwsIDRM
LCAxMDRMLCBOb25lXSwgNSwgNDguMCwgMCwgW10sIE5vbmUsIE5vbmVdLAorICAgICAgICAgICAg
ICAgIFs0TCwgWzNMLCAxMkwsIDEwNUwsIE5vbmVdLCB0aW1lLm1rdGltZSh0aW1lc3RhbXAudGlt
ZXR1cGxlKCkpLCA1NS4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICAgICAgWzZM
LCBbNUwsIDEzTCwgMTA2TCwgTm9uZV0sIHRpbWUubWt0aW1lKHRpbWVzdGFtcC50aW1ldHVwbGUo
KSksIDQ3LjAsIDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAgICAgICBbOEwsIFs3TCwg
MTRMLCAxMDhMLCBOb25lXSwgdGltZS5ta3RpbWUodGltZXN0YW1wLnRpbWV0dXBsZSgpKSwgNTMu
MCwgMCwgW10sIE5vbmUsIE5vbmVdXSwKKyAgICAgICAgICAgICdtaW4nOiA0Ny4wLAorICAgICAg
ICAgICAgJ21heCc6IDU1LjAsCisgICAgICAgICAgICAnZGF0ZV9yYW5nZSc6IE5vbmUsCisgICAg
ICAgICAgICAnYXZlcmFnZXMnOiB7MTAwTDogNTAuMCwgMTAxTDogNTEuMCwgMTAyTDogNTIuMCwg
MTAzTDogNDkuMCwgMTA0TDogNDguMCwgMTA1TDogNTUuMCwgMTA2TDogNDcuMCwgMTA4TDogNTMu
MH19KQorCisgICAgZGVmIHRlc3RfdXBkYXRlX2pzb25faW5jcmVtZW50YWxseShzZWxmKToKKyAg
ICAgICAgYnJhbmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAn
U29tZSBCcmFuY2gnKQorICAgICAgICBwbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3Nz
aWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKKyAgICAgICAgYnVpbGRlciA9
IEJ1aWxkZXIuZ2V0KEJ1aWxkZXIuY3JlYXRlKCdzb21lLWJ1aWxkZXInLCAnU29tZSBCdWlsZGVy
JykpCisgICAgICAgIHRlc3QgPSBUZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3NvbWUtdGVzdCcsIGJy
YW5jaCwgcGxhdGZvcm0pCisgICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLm5vdygpCisgICAg
ICAgIGJ1aWxkID0gc2VsZi5fY3JlYXRlX2J1aWxkKGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIs
IDEyTCwgMTA1TCwgdGltZXN0YW1wKQorICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KG5hbWU9
dGVzdC5uYW1lLCB2YWx1ZT01NS4wLCBidWlsZD1idWlsZCkKKyAgICAgICAgcmVzdWx0LnB1dCgp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSdW5zLnVwZGF0ZV9qc29uX2luY3JlbWVudGFs
bHkoYnJhbmNoLCBwbGF0Zm9ybSwgdGVzdCwgYnVpbGQsIHJlc3VsdCkpCisKKyAgICAgICAgUGVy
c2lzdGVudENhY2hlLnNldF9jYWNoZShUZXN0LmNhY2hlX2tleSh0ZXN0LmlkLCBicmFuY2guaWQs
IHBsYXRmb3JtLmlkKSwgJ251bGwnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFJ1bnMudXBk
YXRlX2pzb25faW5jcmVtZW50YWxseShicmFuY2gsIHBsYXRmb3JtLCB0ZXN0LCBidWlsZCwgcmVz
dWx0KSkKKworICAgICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0X2NhY2hlKFRlc3QuY2FjaGVfa2V5
KHRlc3QuaWQsIGJyYW5jaC5pZCwgcGxhdGZvcm0uaWQpLAorICAgICAgICAgICAganNvbi5kdW1w
cyh7J3N0YXQnOiAnb2snLAorICAgICAgICAgICAgJ3Rlc3RfcnVucyc6IFtbNEwsIFszTCwgMEws
IDEwMEwsIE5vbmVdLCAxLCA1MC4wLCAwLCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICAg
ICAgWzZMLCBbNUwsIDFMLCAxMDFMLCBOb25lXSwgMiwgNTEuMCwgMCwgW10sIE5vbmUsIE5vbmVd
LAorICAgICAgICAgICAgICAgIFs4TCwgWzdMLCAyTCwgMTAyTCwgTm9uZV0sIDMsIDUyLjAsIDAs
IFtdLCBOb25lLCBOb25lXV0sCisgICAgICAgICAgICAnbWluJzogNDguMCwKKyAgICAgICAgICAg
ICdtYXgnOiA1Mi4wLAorICAgICAgICAgICAgJ2RhdGVfcmFuZ2UnOiBOb25lLAorICAgICAgICAg
ICAgJ2F2ZXJhZ2VzJzogezEwMEw6IDUwLjAsIDEwMUw6IDUxLjAsIDEwMkw6IDUyLjAsIDEwM0w6
IDQ5LjAsIDEwNEw6IDQ4LjB9fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFJ1bnMudXBk
YXRlX2pzb25faW5jcmVtZW50YWxseShicmFuY2gsIHBsYXRmb3JtLCB0ZXN0LCBidWlsZCwgcmVz
dWx0KSkKKworICAgICAgICBydW5zX2pzb24gPSBQZXJzaXN0ZW50Q2FjaGUuZ2V0X2NhY2hlKFRl
c3QuY2FjaGVfa2V5KHRlc3QuaWQsIGJyYW5jaC5pZCwgcGxhdGZvcm0uaWQpKQorICAgICAgICBl
eHBlY3RlZF9yZXN1bHQgPSB7dSdzdGF0JzogdSdvaycsCisgICAgICAgICAgICB1J3Rlc3RfcnVu
cyc6IFtbNCwgWzMsIDAsIDEwMCwgTm9uZV0sIDEsIDUwLjAsIDAsIFtdLCBOb25lLCBOb25lXSwK
KyAgICAgICAgICAgIFs2LCBbNSwgMSwgMTAxLCBOb25lXSwgMiwgNTEuMCwgMCwgW10sIE5vbmUs
IE5vbmVdLAorICAgICAgICAgICAgWzgsIFs3LCAyLCAxMDIsIE5vbmVdLCAzLCA1Mi4wLCAwLCBb
XSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICBbNSwgWzQsIDEyLCAxMDUsIE5vbmVdLCB0aW1l
Lm1rdGltZSh0aW1lc3RhbXAudGltZXR1cGxlKCkpLCA1NS4wLCAwLCBbXSwgTm9uZSwgTm9uZV1d
LAorICAgICAgICAgICAgdSdtaW4nOiA0OC4wLAorICAgICAgICAgICAgdSdtYXgnOiA1NS4wLAor
ICAgICAgICAgICAgdSdkYXRlX3JhbmdlJzogTm9uZSwKKyAgICAgICAgICAgIHUnYXZlcmFnZXMn
OiB7dScxMDAnOiA1MC4wLCB1JzEwMSc6IDUxLjAsIHUnMTAyJzogNTIuMCwgdScxMDMnOiA0OS4w
LCB1JzEwNCc6IDQ4LjAsIHUnMTA1JzogNTUuMH19CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
anNvbi5sb2FkcyhydW5zX2pzb24pLCBleHBlY3RlZF9yZXN1bHQpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKFJ1bnMudXBkYXRlX2pzb25faW5jcmVtZW50YWxseShicmFuY2gsIHBsYXRmb3Jt
LCB0ZXN0LCBidWlsZCwgcmVzdWx0KSkKKyAgICAgICAgcnVuc19qc29uID0gUGVyc2lzdGVudENh
Y2hlLmdldF9jYWNoZShUZXN0LmNhY2hlX2tleSh0ZXN0LmlkLCBicmFuY2guaWQsIHBsYXRmb3Jt
LmlkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKHJ1bnNfanNvbiksIGV4
cGVjdGVkX3Jlc3VsdCkgICMgVXBkYXRpbmcgdHdpY2Ugc2hvdWxkbid0IGFkZCBkdXBsaWNhdGUg
ZW50cmllcworCisgICAgZGVmIHRlc3RfcnVuX2Zyb21fYnVpbGRfYW5kX3Jlc3VsdChzZWxmKToK
KyAgICAgICAgYnJhbmNoID0gQnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gn
LCAnU29tZSBCcmFuY2gnKQorICAgICAgICBwbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9w
b3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKKyAgICAgICAgYnVpbGRl
ciA9IEJ1aWxkZXIuZ2V0KEJ1aWxkZXIuY3JlYXRlKCdzb21lLWJ1aWxkZXInLCAnU29tZSBCdWls
ZGVyJykpCisgICAgICAgIHRlc3RfbmFtZSA9ICdzb21lLXRlc3QnCiAKLSAgICAgICAgYnVpbGQg
PSBjcmVhdGVfYnVpbGQoMSwgMTAxKQorICAgICAgICBidWlsZCA9IHNlbGYuX2NyZWF0ZV9idWls
ZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyLCAxLCAxMDEpCiAgICAgICAgIHJlc3VsdCA9IFRl
c3RSZXN1bHQobmFtZT10ZXN0X25hbWUsIHZhbHVlPTEyMy4wLCBidWlsZD1idWlsZCkKICAgICAg
ICAgcmVzdWx0LnB1dCgpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9lbnRyeShSdW5zLl9lbnRyeV9m
cm9tX2J1aWxkX2FuZF9yZXN1bHQoYnVpbGQsIHJlc3VsdCksIGJ1aWxkLCByZXN1bHQsIDEyMy4w
KQogCi0gICAgICAgIGJ1aWxkID0gY3JlYXRlX2J1aWxkKDIsIDEwMikKKyAgICAgICAgYnVpbGQg
PSBzZWxmLl9jcmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlciwgMiwgMTAyKQog
ICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KG5hbWU9dGVzdF9uYW1lLCB2YWx1ZT00NTYuMCwg
dmFsdWVNZWRpYW49Nzg5LjAsIGJ1aWxkPWJ1aWxkKQogICAgICAgICByZXN1bHQucHV0KCkKICAg
ICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5KFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3Vs
dChidWlsZCwgcmVzdWx0KSwgYnVpbGQsIHJlc3VsdCwgNDU2LjApCkluZGV4OiBXZWJzaXRlcy93
ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbW9kZWxzX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAxMDkxOTMpCisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw5ICs0NzQsNyBAQCBjbGFzcyBSZXBv
cnRMb2dUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpCiAKIGNsYXNzIFBlcnNpc3RlbnRDYWNoZVRl
c3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBz
ZWxmLnRlc3RiZWQgPSB0ZXN0YmVkLlRlc3RiZWQoKQotICAgICAgICBzZWxmLnRlc3RiZWQuYWN0
aXZhdGUoKQotICAgICAgICBzZWxmLnRlc3RiZWQuaW5pdF9kYXRhc3RvcmVfdjNfc3R1YigpCisg
ICAgICAgIHN1cGVyKFBlcnNpc3RlbnRDYWNoZVRlc3RzLCBzZWxmKS5zZXRVcCgpCiAgICAgICAg
IHNlbGYudGVzdGJlZC5pbml0X21lbWNhY2hlX3N0dWIoKQogCiAgICAgZGVmIF9hc3NlcnRfcGVy
c2lzdGVudF9jYWNoZShzZWxmLCBuYW1lLCB2YWx1ZSk6CkluZGV4OiBXZWJzaXRlcy93ZWJraXQt
cGVyZi5hcHBzcG90LmNvbS9yZXBvcnRfcHJvY2Vzc19oYW5kbGVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL3JlcG9ydF9wcm9jZXNzX2hhbmRsZXIu
cHkJKHJldmlzaW9uIDEwOTE5MykKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29t
L3JlcG9ydF9wcm9jZXNzX2hhbmRsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwx
MCBAQAogaW1wb3J0IHdlYmFwcDIKIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRi
CiAKLWltcG9ydCB0aW1lCi0KLWZyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVfcnVuc191
cGRhdGUKIGZyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVfZGFzaGJvYXJkX3VwZGF0ZQog
ZnJvbSBjb250cm9sbGVyIGltcG9ydCBzY2hlZHVsZV9tYW5pZmVzdF91cGRhdGUKK2Zyb20gY29u
dHJvbGxlciBpbXBvcnQgc2NoZWR1bGVfcnVuc191cGRhdGUKK2Zyb20ganNvbl9nZW5lcmF0b3Jz
IGltcG9ydCBSdW5zCiBmcm9tIG1vZGVscyBpbXBvcnQgQnVpbGQKIGZyb20gbW9kZWxzIGltcG9y
dCBSZXBvcnRMb2cKIGZyb20gbW9kZWxzIGltcG9ydCBUZXN0CkBAIC01NiwxMCArNTUsMTEgQEAg
Y2xhc3MgUmVwb3J0UHJvY2Vzc0hhbmRsZXIod2ViYXBwMi5SZXF1ZQogICAgICAgICBwbGF0Zm9y
bSA9IGxvZy5wbGF0Zm9ybSgpCiAgICAgICAgIGJ1aWxkID0gQnVpbGQuZ2V0X29yX2luc2VydF9m
cm9tX2xvZyhsb2cpCiAKLSAgICAgICAgZm9yIHRlc3RfbmFtZSwgcmVzdWx0IGluIGxvZy5yZXN1
bHRzKCkuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciB0ZXN0X25hbWUsIHJlc3VsdF9qc29uIGlu
IGxvZy5yZXN1bHRzKCkuaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICB0ZXN0ID0gVGVzdC51cGRh
dGVfb3JfaW5zZXJ0KHRlc3RfbmFtZSwgYnJhbmNoLCBwbGF0Zm9ybSkKLSAgICAgICAgICAgIFRl
c3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKHRlc3RfbmFtZSwgYnVpbGQs
IHJlc3VsdCkKLSAgICAgICAgICAgIHNjaGVkdWxlX3J1bnNfdXBkYXRlKHRlc3QuaWQsIGJyYW5j
aC5pZCwgcGxhdGZvcm0uaWQpCisgICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0LmdldF9v
cl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbih0ZXN0X25hbWUsIGJ1aWxkLCByZXN1bHRfanNvbikK
KyAgICAgICAgICAgIGlmIG5vdCBSdW5zLnVwZGF0ZV9qc29uX2luY3JlbWVudGFsbHkoYnJhbmNo
LCBwbGF0Zm9ybSwgdGVzdCwgYnVpbGQsIHJlc3VsdCk6CisgICAgICAgICAgICAgICAgc2NoZWR1
bGVfcnVuc191cGRhdGUodGVzdC5pZCwgYnJhY2guaWQsIHBsYXRmb3JtLmlkKQogCiAgICAgICAg
IGxvZyA9IFJlcG9ydExvZy5nZXQobG9nLmtleSgpKQogICAgICAgICBsb2cuZGVsZXRlKCkKSW5k
ZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzL2FkbWluLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzL2FkbWluLmpzCShyZXZp
c2lvbiAxMDkxOTMpCisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9qcy9hZG1p
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCAkKCdmb3JtJykuYmluZCgnc3Vi
bWl0JywgZnVuY3Rpb24gKGV2ZW50CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICh4
aHIuc3RhdHVzICE9IDIwMCkKICAgICAgICAgICAgIGVycm9yKCdIVFRQIHN0YXR1czogJyArIHho
ci5zdGF0dXMpOwotICAgICAgICBlbHNlIGlmICh4aHIucmVzcG9uc2VUZXh0ICE9ICdPSycpCisg
ICAgICAgIGVsc2UgaWYgKHhoci5yZXNwb25zZVRleHQgIT0gJ09LXG4nKQogICAgICAgICAgICAg
ZXJyb3IoeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgfQogICAgIHhoci5vcGVuKHRoaXMubWV0aG9k
LCB0aGlzLmFjdGlvbiwgdHJ1ZSk7Cg==
</data>
<flag name="review"
          id="132130"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130793</attachid>
            <date>2012-03-08 01:28:26 -0800</date>
            <delta_ts>2012-03-08 13:38:23 -0800</delta_ts>
            <desc>Second attempt</desc>
            <filename>bug-79898-20120308012824.patch</filename>
            <type>text/plain</type>
            <size>13189</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExMDE1
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAz
LTA4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHBlcmYtby1t
YXRpYyBzaG91bGQgaW5jcmVtZW50YWxseSB1cGRhdGUgSlNPTiByZXNwb25zZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5ODk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgUnVucyBvYmpl
Y3Qgc3RvcmUgdGVzdF9ydW5zIGFuZCBhdmVyYWdlcyBzZXBhcmF0ZWx5LAorICAgICAgICB3ZSBj
YW4gdXBkYXRlIEpTT04gZGF0YSBpbmNyZW1lbnRhbGx5IHdpdGhvdXQgZGVncmFkaW5nIHZhbHVl
cy4KKworICAgICAgICBBbHNvIGZpeGVkIHRoZSBvcmRlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRv
IERhc2hib2FyZEltYWdlLm5lZWRzX3VwZGF0ZQorICAgICAgICBpbiBzY2hlZHVsZV9ydW5zX3Vw
ZGF0ZS4gVGhpcyBidWcgaGFkIGNhdXNlZCBhbGwgY2hhcnQgaW1hZ2VzIHRvIGJlCisgICAgICAg
IHVwZGF0ZWQgb24gZXZlcnkgbmV3IHJlcG9ydC4KKworICAgICAgICAqIFdlYnNpdGVzL3dlYmtp
dC1wZXJmLmFwcHNwb3QuY29tL2NvbnRyb2xsZXIucHk6CisgICAgICAgIChzY2hlZHVsZV9ydW5z
X3VwZGF0ZSk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbW9k
ZWxzLnB5OgorICAgICAgICAoUnVucy51cGRhdGVfb3JfaW5zZXJ0KToKKyAgICAgICAgKFJ1bnMu
dXBkYXRlX2luY3JlbWVudGFsbHkpOgorICAgICAgICAoUnVucyk6CisgICAgICAgIChSdW5zLmdl
dF9ieV9vYmplY3RzKToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNv
bS9tb2RlbHNfdW5pdHRlc3QucHk6CisgICAgICAgIChSdW5zVGVzdC5fY3JlYXRlX3Jlc3VsdHMp
OgorICAgICAgICAoUnVuc1Rlc3QudGVzdF9nZW5lcmF0ZV9ydW5zKToKKyAgICAgICAgKFJ1bnNU
ZXN0LnRlc3RfdXBkYXRlX29yX2luc2VydCk6CisgICAgICAgIChSdW5zVGVzdC50ZXN0X3VwZGF0
ZV9pbmNyZW1lbnRhbGx5KToKKyAgICAgICAgKFJ1bnNUZXN0LnRlc3RfdG9fanNvbl93aXRoX3Jl
c3VsdHMpOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL3JlcG9y
dF9wcm9jZXNzX2hhbmRsZXIucHk6CisgICAgICAgIChSZXBvcnRQcm9jZXNzSGFuZGxlci5wb3N0
KToKKwogMjAxMi0wMy0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBUdXJuIFJ1bnMgY2xhc3MgaW50byBhIHByb3BlciBtb2RlbCB0byBpbXBsZW1lbnQgaW5j
cmVtZW50YWwgSlNPTiB1cGRhdGUKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3Qu
Y29tL2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBw
c3BvdC5jb20vY29udHJvbGxlci5weQkocmV2aXNpb24gMTEwMTQ1KQorKysgV2Vic2l0ZXMvd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20vY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAtODUs
MTAgKzg1LDExIEBAIGNsYXNzIENhY2hlZERhc2hib2FyZEhhbmRsZXIod2ViYXBwMi5SZXEKICAg
ICAgICAgICAgIHNjaGVkdWxlX2Rhc2hib2FyZF91cGRhdGUoKQogCiAKLWRlZiBzY2hlZHVsZV9y
dW5zX3VwZGF0ZSh0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkKToKLSAgICB0YXNrcXVl
dWUuYWRkKHVybD0nL2FwaS90ZXN0L3J1bnMvdXBkYXRlJywgcGFyYW1zPXsnaWQnOiB0ZXN0X2lk
LCAnYnJhbmNoaWQnOiBicmFuY2hfaWQsICdwbGF0Zm9ybWlkJzogcGxhdGZvcm1faWR9KQorZGVm
IHNjaGVkdWxlX3J1bnNfdXBkYXRlKHRlc3RfaWQsIGJyYW5jaF9pZCwgcGxhdGZvcm1faWQsIHJl
Z2VuZXJhdGVfcnVucz1UcnVlKToKKyAgICBpZiByZWdlbmVyYXRlX3J1bnM6CisgICAgICAgIHRh
c2txdWV1ZS5hZGQodXJsPScvYXBpL3Rlc3QvcnVucy91cGRhdGUnLCBwYXJhbXM9eydpZCc6IHRl
c3RfaWQsICdicmFuY2hpZCc6IGJyYW5jaF9pZCwgJ3BsYXRmb3JtaWQnOiBwbGF0Zm9ybV9pZH0p
CiAgICAgZm9yIGRpc3BsYXlfZGF5cyBpbiBbNywgMzAsIDkwLCAzNjVdOgotICAgICAgICBpZiBE
YXNoYm9hcmRJbWFnZS5uZWVkc191cGRhdGUoYnJhbmNoX2lkLCB0ZXN0X2lkLCBwbGF0Zm9ybV9p
ZCwgZGlzcGxheV9kYXlzKToKKyAgICAgICAgaWYgRGFzaGJvYXJkSW1hZ2UubmVlZHNfdXBkYXRl
KGJyYW5jaF9pZCwgcGxhdGZvcm1faWQsIHRlc3RfaWQsIGRpc3BsYXlfZGF5cyk6CiAgICAgICAg
ICAgICB0YXNrcXVldWUuYWRkKHVybD0nL2FwaS90ZXN0L3J1bnMvY2hhcnQnLCBwYXJhbXM9eydp
ZCc6IHRlc3RfaWQsICdicmFuY2hpZCc6IGJyYW5jaF9pZCwgJ3BsYXRmb3JtaWQnOiBwbGF0Zm9y
bV9pZCwKICAgICAgICAgICAgICAgICAnZGlzcGxheURheXMnOiBkaXNwbGF5X2RheXN9KQogCklu
ZGV4OiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbW9kZWxzLnB5CShyZXZpc2lv
biAxMTAxNDUpCisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHMucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTM2MSwyNiArMzYxLDQ1IEBAIGNsYXNzIFJ1bnMoZGIuTW9kZWwp
OgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHVwZGF0ZV9vcl9pbnNlcnQoY2xzLCBicmFu
Y2gsIHBsYXRmb3JtLCB0ZXN0KToKLSAgICAgICAgdGVzdF9ydW5zID0gW10KLSAgICAgICAgYXZl
cmFnZXMgPSB7fQotICAgICAgICB2YWx1ZXMgPSBbXQorICAgICAgICBrZXlfbmFtZSA9IGNscy5f
a2V5X25hbWUoYnJhbmNoLmlkLCBwbGF0Zm9ybS5pZCwgdGVzdC5pZCkKKyAgICAgICAgcnVucyA9
IFJ1bnMoa2V5X25hbWU9a2V5X25hbWUsIGJyYW5jaD1icmFuY2gsIHBsYXRmb3JtPXBsYXRmb3Jt
LCB0ZXN0PXRlc3QsIGpzb25fcnVucz0nJywganNvbl9hdmVyYWdlcz0nJykKIAogICAgICAgICBm
b3IgYnVpbGQsIHJlc3VsdCBpbiBjbHMuX2dlbmVyYXRlX3J1bnMoYnJhbmNoLCBwbGF0Zm9ybSwg
dGVzdC5uYW1lKToKLSAgICAgICAgICAgIHRlc3RfcnVucy5hcHBlbmQoY2xzLl9lbnRyeV9mcm9t
X2J1aWxkX2FuZF9yZXN1bHQoYnVpbGQsIHJlc3VsdCkpCi0gICAgICAgICAgICAjIEZJWE1FOiBD
YWxjdWxhdGUgdGhlIGF2ZXJhZ2UuIEluIHByYWN0aWNlLCB3ZSB3b3VsZG4ndCBoYXZlIG1vcmUg
dGhhbiBvbmUgdmFsdWUgZm9yIGEgZ2l2ZW4gcmV2aXNpb24uCi0gICAgICAgICAgICBhdmVyYWdl
c1tidWlsZC5yZXZpc2lvbl0gPSByZXN1bHQudmFsdWUKLSAgICAgICAgICAgIHZhbHVlcy5hcHBl
bmQocmVzdWx0LnZhbHVlKQotCi0gICAgICAgIG1pbl92YWx1ZSA9IG1pbih2YWx1ZXMpIGlmIHZh
bHVlcyBlbHNlIE5vbmUKLSAgICAgICAgbWF4X3ZhbHVlID0gbWF4KHZhbHVlcykgaWYgdmFsdWVz
IGVsc2UgTm9uZQorICAgICAgICAgICAgcnVucy51cGRhdGVfaW5jcmVtZW50YWxseShidWlsZCwg
cmVzdWx0LCBjaGVja19kdXBsaWNhdGVzX2FuZF9zYXZlPUZhbHNlKQogCi0gICAgICAgIGtleV9u
YW1lID0gY2xzLl9rZXlfbmFtZShicmFuY2guaWQsIHBsYXRmb3JtLmlkLCB0ZXN0LmlkKQotICAg
ICAgICBydW5zID0gUnVucyhrZXlfbmFtZT1rZXlfbmFtZSwgYnJhbmNoPWJyYW5jaCwgcGxhdGZv
cm09cGxhdGZvcm0sIHRlc3Q9dGVzdCwKLSAgICAgICAgICAgIGpzb25fcnVucz1qc29uLmR1bXBz
KHRlc3RfcnVucylbMTotMV0sIGpzb25fYXZlcmFnZXM9anNvbi5kdW1wcyhhdmVyYWdlcylbMTot
MV0sIGpzb25fbWluPW1pbl92YWx1ZSwganNvbl9tYXg9bWF4X3ZhbHVlKQogICAgICAgICBydW5z
LnB1dCgpCiAgICAgICAgIG1lbWNhY2hlLnNldChrZXlfbmFtZSwgcnVucy50b19qc29uKCkpCiAg
ICAgICAgIHJldHVybiBydW5zCiAKKyAgICBkZWYgdXBkYXRlX2luY3JlbWVudGFsbHkoc2VsZiwg
YnVpbGQsIHJlc3VsdCwgY2hlY2tfZHVwbGljYXRlc19hbmRfc2F2ZT1UcnVlKToKKyAgICAgICAg
bmV3X2VudHJ5ID0gUnVucy5fZW50cnlfZnJvbV9idWlsZF9hbmRfcmVzdWx0KGJ1aWxkLCByZXN1
bHQpCisKKyAgICAgICAgIyBDaGVjayBmb3IgZHVwbGljYXRlIGVudHJpZXMKKyAgICAgICAgaWYg
Y2hlY2tfZHVwbGljYXRlc19hbmRfc2F2ZToKKyAgICAgICAgICAgIHJldmlzaW9uX2lzX2luX3J1
bnMgPSBzdHIoYnVpbGQucmV2aXNpb24pIGluIGpzb24ubG9hZHMoJ3snICsgc2VsZi5qc29uX2F2
ZXJhZ2VzICsgJ30nKQorICAgICAgICAgICAgaWYgcmV2aXNpb25faXNfaW5fcnVucyBhbmQgbmV3
X2VudHJ5WzFdIGluIFtlbnRyeVsxXSBmb3IgZW50cnkgaW4ganNvbi5sb2FkcygnWycgKyBzZWxm
Lmpzb25fcnVucyArICddJyldOgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlm
IHNlbGYuanNvbl9ydW5zOgorICAgICAgICAgICAgc2VsZi5qc29uX3J1bnMgKz0gJywnCisKKyAg
ICAgICAgaWYgc2VsZi5qc29uX2F2ZXJhZ2VzOgorICAgICAgICAgICAgc2VsZi5qc29uX2F2ZXJh
Z2VzICs9ICcsJworCisgICAgICAgIHNlbGYuanNvbl9ydW5zICs9IGpzb24uZHVtcHMobmV3X2Vu
dHJ5KQorICAgICAgICAjIEZJWE1FOiBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2UuIEluIHByYWN0aWNl
LCB3ZSB3b3VsZG4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgdmFsdWUgZm9yIGEgZ2l2ZW4gcmV2aXNp
b24uCisgICAgICAgIHNlbGYuanNvbl9hdmVyYWdlcyArPSAnIiVkIjogJWYnICUgKGJ1aWxkLnJl
dmlzaW9uLCByZXN1bHQudmFsdWUpCisgICAgICAgIHNlbGYuanNvbl9taW4gPSBtaW4oc2VsZi5q
c29uX21pbiwgcmVzdWx0LnZhbHVlKSBpZiBzZWxmLmpzb25fbWluICE9IE5vbmUgZWxzZSByZXN1
bHQudmFsdWUKKyAgICAgICAgc2VsZi5qc29uX21heCA9IG1heChzZWxmLmpzb25fbWF4LCByZXN1
bHQudmFsdWUpCisKKyAgICAgICAgaWYgY2hlY2tfZHVwbGljYXRlc19hbmRfc2F2ZToKKyAgICAg
ICAgICAgIHNlbGYucHV0KCkKKyAgICAgICAgICAgIG1lbWNhY2hlLnNldChzZWxmLmtleSgpLm5h
bWUoKSwgc2VsZi50b19qc29uKCkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9i
eV9vYmplY3RzKGJyYW5jaCwgcGxhdGZvcm0sIHRlc3QpOgorICAgICAgICByZXR1cm4gUnVucy5n
ZXRfYnlfa2V5X25hbWUoUnVucy5fa2V5X25hbWUoYnJhbmNoLmlkLCBwbGF0Zm9ybS5pZCwgdGVz
dC5pZCkpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYganNvbl9ieV9pZHMoY2xzLCBicmFu
Y2hfaWQsIHBsYXRmb3JtX2lkLCB0ZXN0X2lkKToKICAgICAgICAga2V5X25hbWUgPSBjbHMuX2tl
eV9uYW1lKGJyYW5jaF9pZCwgcGxhdGZvcm1faWQsIHRlc3RfaWQpCkluZGV4OiBXZWJzaXRlcy93
ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbW9kZWxzX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAxMTAxNDUpCisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTUyNywxNiArNTI3LDE4IEBAIGNsYXNzIFJ1
bnNUZXN0KERhdGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgICAgIHN1cGVyKFJ1bnNUZXN0LCBzZWxm
KS5zZXRVcCgpCiAgICAgICAgIHNlbGYudGVzdGJlZC5pbml0X21lbWNhY2hlX3N0dWIoKQogCi0g
ICAgZGVmIF9jcmVhdGVfcmVzdWx0cyhzZWxmLCBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyLCB0
ZXN0X25hbWUsIHZhbHVlcywgdGltZXN0YW1wcz1Ob25lKToKKyAgICBkZWYgX2NyZWF0ZV9yZXN1
bHRzKHNlbGYsIGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIsIHRlc3RfbmFtZSwgdmFsdWVzLCB0
aW1lc3RhbXBzPU5vbmUsIHN0YXJ0aW5nX3JldmlzaW9uPTEwMCk6CisgICAgICAgIGJ1aWxkcyA9
IFtdCiAgICAgICAgIHJlc3VsdHMgPSBbXQogICAgICAgICBmb3IgaSwgdmFsdWUgaW4gZW51bWVy
YXRlKHZhbHVlcyk6CiAgICAgICAgICAgICBidWlsZCA9IEJ1aWxkKGJyYW5jaD1icmFuY2gsIHBs
YXRmb3JtPXBsYXRmb3JtLCBidWlsZGVyPWJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgYnVpbGRO
dW1iZXI9aSwgcmV2aXNpb249MTAwICsgaSwgdGltZXN0YW1wPXRpbWVzdGFtcHNbaV0gaWYgdGlt
ZXN0YW1wcyBlbHNlIGRhdGV0aW1lLm5vdygpKQorICAgICAgICAgICAgICAgIGJ1aWxkTnVtYmVy
PWksIHJldmlzaW9uPXN0YXJ0aW5nX3JldmlzaW9uICsgaSwgdGltZXN0YW1wPXRpbWVzdGFtcHNb
aV0gaWYgdGltZXN0YW1wcyBlbHNlIGRhdGV0aW1lLm5vdygpKQogICAgICAgICAgICAgYnVpbGQu
cHV0KCkKICAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQobmFtZT10ZXN0X25hbWUsIGJ1
aWxkPWJ1aWxkLCB2YWx1ZT12YWx1ZSkKICAgICAgICAgICAgIHJlc3VsdC5wdXQoKQorICAgICAg
ICAgICAgYnVpbGRzLmFwcGVuZChidWlsZCkKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJl
c3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKKyAgICAgICAgcmV0dXJuIGJ1aWxkcywgcmVz
dWx0cwogCiAgICAgZGVmIHRlc3RfZ2VuZXJhdGVfcnVucyhzZWxmKToKICAgICAgICAgc29tZV9i
cmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJy
YW5jaCcpCkBAIC01NDQsNyArNTQ2LDcgQEAgY2xhc3MgUnVuc1Rlc3QoRGF0YVN0b3JlVGVzdHNC
YXNlKToKICAgICAgICAgc29tZV9idWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUo
J3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKSkKICAgICAgICAgc29tZV90ZXN0ID0gVGVz
dC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9y
bSkKIAotICAgICAgICByZXN1bHRzID0gc2VsZi5fY3JlYXRlX3Jlc3VsdHMoc29tZV9icmFuY2gs
IHNvbWVfcGxhdGZvcm0sIHNvbWVfYnVpbGRlciwgJ3NvbWUtdGVzdCcsIFs1MC4wLCA1MS4wLCA1
Mi4wLCA0OS4wLCA0OC4wXSkKKyAgICAgICAgYnVpbGRzLCByZXN1bHRzID0gc2VsZi5fY3JlYXRl
X3Jlc3VsdHMoc29tZV9icmFuY2gsIHNvbWVfcGxhdGZvcm0sIHNvbWVfYnVpbGRlciwgJ3NvbWUt
dGVzdCcsIFs1MC4wLCA1MS4wLCA1Mi4wLCA0OS4wLCA0OC4wXSkKICAgICAgICAgbGFzdF9pID0g
MAogICAgICAgICBmb3IgaSwgKGJ1aWxkLCByZXN1bHQpIGluIGVudW1lcmF0ZShSdW5zLl9nZW5l
cmF0ZV9ydW5zKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21lX3Rlc3QpKToKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGQuYnVpbGROdW1iZXIsIGkpCkBAIC01NzMsMTUg
KzU3NSw0NyBAQCBjbGFzcyBSdW5zVGVzdChEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgICAgICBy
dW5zLmRlbGV0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihSdW5z
KQogCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLl9jcmVhdGVfcmVzdWx0cyhzb21lX2JyYW5jaCwg
c29tZV9wbGF0Zm9ybSwgc29tZV9idWlsZGVyLCAnc29tZS10ZXN0JywgWzUwLjBdKQorICAgICAg
ICBidWlsZHMsIHJlc3VsdHMgPSBzZWxmLl9jcmVhdGVfcmVzdWx0cyhzb21lX2JyYW5jaCwgc29t
ZV9wbGF0Zm9ybSwgc29tZV9idWlsZGVyLCAnc29tZS10ZXN0JywgWzUwLjBdKQogICAgICAgICBy
dW5zID0gUnVucy51cGRhdGVfb3JfaW5zZXJ0KHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBz
b21lX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJ1bnMpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShydW5zLmpzb25fcnVucy5zdGFydHN3aXRoKCdbNSwgWzQsIDAsIDEw
MCwgbnVsbF0sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVucy5qc29uX2F2ZXJhZ2Vz
LCAnIjEwMCI6IDUwLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMoJ3sn
ICsgcnVucy5qc29uX2F2ZXJhZ2VzICsgJ30nKSwgeyIxMDAiOiA1MC4wfSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChydW5zLmpzb25fbWluLCA1MC4wKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJ1bnMuanNvbl9tYXgsIDUwLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobWVt
Y2FjaGUuZ2V0KFJ1bnMuX2tleV9uYW1lKHNvbWVfYnJhbmNoLmlkLCBzb21lX3BsYXRmb3JtLmlk
LCBzb21lX3Rlc3QuaWQpKSwgb2xkX21lbWNhY2hlX3ZhbHVlKQogCisgICAgZGVmIHRlc3RfdXBk
YXRlX2luY3JlbWVudGFsbHkoc2VsZik6CisgICAgICAgIHNvbWVfYnJhbmNoID0gQnJhbmNoLmNy
ZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFuY2gnKQorICAgICAgICBz
b21lX3BsYXRmb3JtID0gUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRmb3Jt
JywgJ1NvbWUgUGxhdGZvcm0nKQorICAgICAgICBzb21lX2J1aWxkZXIgPSBCdWlsZGVyLmdldChC
dWlsZGVyLmNyZWF0ZSgnc29tZS1idWlsZGVyJywgJ1NvbWUgQnVpbGRlcicpKQorICAgICAgICBz
b21lX3Rlc3QgPSBUZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3NvbWUtdGVzdCcsIHNvbWVfYnJhbmNo
LCBzb21lX3BsYXRmb3JtKQorICAgICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2Yo
UnVucykKKworICAgICAgICB0aW1lc3RhbXBzID0gW2RhdGV0aW1lLm5vdygpLCBkYXRldGltZS5u
b3coKV0KKyAgICAgICAgYnVpbGRzLCByZXN1bHRzID0gc2VsZi5fY3JlYXRlX3Jlc3VsdHMoc29t
ZV9icmFuY2gsIHNvbWVfcGxhdGZvcm0sIHNvbWVfYnVpbGRlciwgJ3NvbWUtdGVzdCcsIFs1MC4w
LCA1Mi4wXSwgdGltZXN0YW1wcykKKyAgICAgICAgcnVucyA9IFJ1bnMudXBkYXRlX29yX2luc2Vy
dChzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgc29tZV90ZXN0KQorICAgICAgICBzZWxmLmFz
c2VydE9ubHlJbnN0YW5jZShydW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9h
ZHMoJ1snICsgcnVucy5qc29uX3J1bnMgKyAnXScpLAorICAgICAgICAgICAgW1s1LCBbNCwgMCwg
MTAwLCBOb25lXSwgbWt0aW1lKHRpbWVzdGFtcHNbMF0udGltZXR1cGxlKCkpLCA1MC4wLCAwLCBb
XSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICBbNywgWzYsIDEsIDEwMSwgTm9uZV0sIG1rdGlt
ZSh0aW1lc3RhbXBzWzFdLnRpbWV0dXBsZSgpKSwgNTIuMCwgMCwgW10sIE5vbmUsIE5vbmVdXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKCd7JyArIHJ1bnMuanNvbl9hdmVy
YWdlcyArICd9JyksIHsiMTAwIjogNTAuMCwgIjEwMSI6IDUyLjB9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJ1bnMuanNvbl9taW4sIDUwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cnVucy5qc29uX21heCwgNTIuMCkKKworICAgICAgICB0aW1lc3RhbXBzLmFwcGVuZChkYXRldGlt
ZS5ub3coKSkKKyAgICAgICAgYnVpbGRzLCByZXN1bHRzID0gc2VsZi5fY3JlYXRlX3Jlc3VsdHMo
c29tZV9icmFuY2gsIHNvbWVfcGxhdGZvcm0sIHNvbWVfYnVpbGRlciwgJ3NvbWUtdGVzdCcsIFs0
OC4wXSwKKyAgICAgICAgICAgIHRpbWVzdGFtcHNbMjpdLCBzdGFydGluZ19yZXZpc2lvbj0xMDIp
CisgICAgICAgIHJ1bnMudXBkYXRlX2luY3JlbWVudGFsbHkoYnVpbGRzWzBdLCByZXN1bHRzWzBd
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJ1bnMpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoanNvbi5sb2FkcygnWycgKyBydW5zLmpzb25fcnVucyArICddJyksCisgICAg
ICAgICAgICBbWzUsIFs0LCAwLCAxMDAsIE5vbmVdLCBta3RpbWUodGltZXN0YW1wc1swXS50aW1l
dHVwbGUoKSksIDUwLjAsIDAsIFtdLCBOb25lLCBOb25lXSwKKyAgICAgICAgICAgIFs3LCBbNiwg
MSwgMTAxLCBOb25lXSwgbWt0aW1lKHRpbWVzdGFtcHNbMV0udGltZXR1cGxlKCkpLCA1Mi4wLCAw
LCBbXSwgTm9uZSwgTm9uZV0sCisgICAgICAgICAgICBbOSwgWzgsIDAsIDEwMiwgTm9uZV0sIG1r
dGltZSh0aW1lc3RhbXBzWzJdLnRpbWV0dXBsZSgpKSwgNDguMCwgMCwgW10sIE5vbmUsIE5vbmVd
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKCd7JyArIHJ1bnMuanNvbl9h
dmVyYWdlcyArICd9JyksIHsiMTAwIjogNTAuMCwgIjEwMSI6IDUyLjAsICIxMDIiOiA0OC4wfSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5zLmpzb25fbWluLCA0OC4wKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJ1bnMuanNvbl9tYXgsIDUyLjApCisKICAgICBkZWYgdGVzdF9qc29u
X2J5X2lkcyhzZWxmKToKICAgICAgICAgc29tZV9icmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bv
c3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCiAgICAgICAgIHNvbWVfcGxhdGZv
cm0gPSBQbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxhdGZvcm0nLCAnU29tZSBQ
bGF0Zm9ybScpCkBAIC02MjIsNyArNjU2LDcgQEAgY2xhc3MgUnVuc1Rlc3QoRGF0YVN0b3JlVGVz
dHNCYXNlKToKICAgICAgICAgc29tZV9wbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3Nz
aWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKICAgICAgICAgc29tZV9idWls
ZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUtYnVpbGRlcicsICdTb21lIEJ1
aWxkZXInKSkKICAgICAgICAgc29tZV90ZXN0ID0gVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21l
LXRlc3QnLCBzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSkKLSAgICAgICAgcmVzdWx0cyA9IHNl
bGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21lX2J1aWxk
ZXIsICdzb21lLXRlc3QnLCBbNTAuMCwgNTEuMCwgNTIuMCwgNDkuMCwgNDguMF0pCisgICAgICAg
IGJ1aWxkcywgcmVzdWx0cyA9IHNlbGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNoLCBzb21l
X3BsYXRmb3JtLCBzb21lX2J1aWxkZXIsICdzb21lLXRlc3QnLCBbNTAuMCwgNTEuMCwgNTIuMCwg
NDkuMCwgNDguMF0pCiAKICAgICAgICAgdmFsdWUgPSBqc29uLmxvYWRzKFJ1bnMudXBkYXRlX29y
X2luc2VydChzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgc29tZV90ZXN0KS50b19qc29uKCkp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxVbm9yZGVyZWRMaXN0KHZhbHVlLmtleXMoKSwgWyd0
ZXN0X3J1bnMnLCAnYXZlcmFnZXMnLCAnbWluJywgJ21heCcsICdkYXRlX3JhbmdlJywgJ3N0YXQn
XSkKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL3JlcG9ydF9wcm9jZXNz
X2hhbmRsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5j
b20vcmVwb3J0X3Byb2Nlc3NfaGFuZGxlci5weQkocmV2aXNpb24gMTEwMTQ1KQorKysgV2Vic2l0
ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vcmVwb3J0X3Byb2Nlc3NfaGFuZGxlci5weQkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBmcm9tIGNvbnRyb2xsZXIgaW1wb3J0IHNjaGVk
dWxlX2Rhc2hib2FyCiBmcm9tIGNvbnRyb2xsZXIgaW1wb3J0IHNjaGVkdWxlX21hbmlmZXN0X3Vw
ZGF0ZQogZnJvbSBtb2RlbHMgaW1wb3J0IEJ1aWxkCiBmcm9tIG1vZGVscyBpbXBvcnQgUmVwb3J0
TG9nCitmcm9tIG1vZGVscyBpbXBvcnQgUnVucwogZnJvbSBtb2RlbHMgaW1wb3J0IFRlc3QKIGZy
b20gbW9kZWxzIGltcG9ydCBUZXN0UmVzdWx0CiAKQEAgLTU2LDEwICs1NywxNSBAQCBjbGFzcyBS
ZXBvcnRQcm9jZXNzSGFuZGxlcih3ZWJhcHAyLlJlcXVlCiAgICAgICAgIHBsYXRmb3JtID0gbG9n
LnBsYXRmb3JtKCkKICAgICAgICAgYnVpbGQgPSBCdWlsZC5nZXRfb3JfaW5zZXJ0X2Zyb21fbG9n
KGxvZykKIAotICAgICAgICBmb3IgdGVzdF9uYW1lLCByZXN1bHQgaW4gbG9nLnJlc3VsdHMoKS5p
dGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgcmVzdWx0X3ZhbHVlIGluIGxvZy5y
ZXN1bHRzKCkuaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICB0ZXN0ID0gVGVzdC51cGRhdGVfb3Jf
aW5zZXJ0KHRlc3RfbmFtZSwgYnJhbmNoLCBwbGF0Zm9ybSkKLSAgICAgICAgICAgIFRlc3RSZXN1
bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKHRlc3RfbmFtZSwgYnVpbGQsIHJlc3Vs
dCkKLSAgICAgICAgICAgIHNjaGVkdWxlX3J1bnNfdXBkYXRlKHRlc3QuaWQsIGJyYW5jaC5pZCwg
cGxhdGZvcm0uaWQpCisgICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0LmdldF9vcl9pbnNl
cnRfZnJvbV9wYXJzZWRfanNvbih0ZXN0X25hbWUsIGJ1aWxkLCByZXN1bHRfdmFsdWUpCisgICAg
ICAgICAgICBydW5zID0gUnVucy5nZXRfYnlfb2JqZWN0cyhicmFuY2gsIHBsYXRmb3JtLCB0ZXN0
KQorICAgICAgICAgICAgcmVnZW5lcmF0ZV9ydW5zID0gVHJ1ZQorICAgICAgICAgICAgaWYgcnVu
czoKKyAgICAgICAgICAgICAgICBydW5zLnVwZGF0ZV9pbmNyZW1lbnRhbGx5KGJ1aWxkLCByZXN1
bHQpCisgICAgICAgICAgICAgICAgcmVnZW5lcmF0ZV9ydW5zID0gRmFsc2UKKyAgICAgICAgICAg
IHNjaGVkdWxlX3J1bnNfdXBkYXRlKHRlc3QuaWQsIGJyYW5jaC5pZCwgcGxhdGZvcm0uaWQsIHJl
Z2VuZXJhdGVfcnVucykKIAogICAgICAgICBsb2cgPSBSZXBvcnRMb2cuZ2V0KGxvZy5rZXkoKSkK
ICAgICAgICAgbG9nLmRlbGV0ZSgpCg==
</data>
<flag name="review"
          id="133905"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>