<?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>97833</bug_id>
          
          <creation_ts>2012-09-27 17:23:50 -0700</creation_ts>
          <short_desc>Encapsulate private properties in PerfTestRunner better</short_desc>
          <delta_ts>2012-10-01 16:47:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>97743</dependson>
    
    <dependson>97852</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>arv</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>730042</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-27 17:23:50 -0700</bug_when>
    <thetext>Right now, &quot;private&quot; properties of PerfTestRunner are just regular properties prefixed with _. We can do better by enclosing everything in a closure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731007</commentid>
    <comment_count>1</comment_count>
      <attachid>166315</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-28 14:50:03 -0700</bug_when>
    <thetext>Created attachment 166315
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731008</commentid>
    <comment_count>2</comment_count>
      <attachid>166316</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-28 14:51:51 -0700</bug_when>
    <thetext>Created attachment 166316
Fixed a test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732116</commentid>
    <comment_count>3</comment_count>
      <attachid>166316</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-01 16:41:15 -0700</bug_when>
    <thetext>Comment on attachment 166316
Fixed a test

This is fine. A less fragile approach would be to wrap the whole file in an anonymous function and at the end of the function only expose the things you really want to expose, e.g.:

window.PerfTestRunner = PerfTestRunner;

That way, everything is private by default and people don&apos;t need to move code around to enable it to use a private helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732118</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-01 16:43:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 166316 [details])
&gt; This is fine. A less fragile approach would be to wrap the whole file in an anonymous function and at the end of the function only expose the things you really want to expose, e.g.:

Yup. I&apos;m doing that in a follow up. I&apos;m just trying to make the diff unreadable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732120</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-01 16:44:02 -0700</bug_when>
    <thetext>*readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732124</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-01 16:47:55 -0700</bug_when>
    <thetext>Committed r130099: &lt;http://trac.webkit.org/changeset/130099&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166315</attachid>
            <date>2012-09-28 14:50:03 -0700</date>
            <delta_ts>2012-09-28 14:51:49 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-97833-20120928144920.patch</filename>
            <type>text/plain</type>
            <size>18523</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk5NTApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTI4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIHBy
aXZhdGUgcHJvcGVydGllcyBpbiBQZXJmVGVzdFJ1bm5lciBiZXR0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyAicHJpdmF0
ZSIgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBvZiBQZXJmVGVzdFJ1bm5lciBpbnRvIGEgY2xvc3Vy
ZSBzbyB0aGF0IHRoZXkncmUKKyAgICAgICAgaW5hY2Nzc2libGUgZnJvbSBvdXRzaWRlLiBBbHNv
IGNhdGNoIGV4Y2VwdGlvbnMgZnJvbSB0ZXN0LnJ1biwgdGVzdC5kb25lLCBhbmQgb3RoZXIgcnVu
bmVyIGNvZGUKKyAgICAgICAgdG8gZW5zdXJlIHdlIGNhbGwgbm90aWZ5RG9uZSgpIGV2ZW4gaWYg
d2UgYnJva2UgdGVzdHMuIE90aGVyd2lzZSBEUlQgd2lsbCB0aW1lb3V0IGFuZCB3ZSBlbmQgdXAK
KyAgICAgICAgd2FpdGluZyBmb3IgMTAgbWludXRlcyBwZXIgZWFjaCBicm9rZW4gdGVzdCBvbiBi
b3RzLgorCisgICAgICAgICogcmVzb3VyY2VzL3J1bm5lci5qczoKKyAgICAgICAgKFBlcmZUZXN0
UnVubmVyLmdjKToKKyAgICAgICAgKGxvZ0luRG9jdW1lbnQpOiBFeHRyYWN0ZWQgZnJvbSBQZXJm
VGVzdFJ1bm5lci5sb2cuCisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5sb2cpOiBNb3ZlZC4KKyAg
ICAgICAgKGxvZ0ZhdGFsRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgKHN0YXJ0KTogUmVuYW1lZCBm
cm9tIFBlcmZUZXN0UnVubmVyLl9zdGFydC4KKyAgICAgICAgKHNjaGVkdWxlTmV4dFJ1bik6IEV4
dHJhY3RlZCBmcm9tIFBlcmZUZXN0UnVubmVyLl9ydW5Mb29wLiBBbHNvIGNhdGNoIGFueSBleGNl
cHRpb25zIHRoYXQgaGFwcGVuCisgICAgICAgIGluIHRoZSBydW5uZXIgYW5kIGlnbm9yZVdhcm1V
cEFuZExvZyBzbyB0aGF0IHdlIGRvbid0IGVuZCB1cCB0aW1pbmcgb3V0LiBXZSBjYWxsIGxvZ0Zh
dGFsRXJyb3IgaW4KKyAgICAgICAgc3VjaCBjYXNlcywgd2hpY2ggaW4gdHVybiBlbnN1cmVzIG5v
dGlmeURvbmUoKSBpcyBjYWxsZWQuCisgICAgICAgIChpZ25vcmVXYXJtVXBBbmRMb2cpOiBSZW5h
bWVkIGZyb20gUGVyZlRlc3RSdW5uZXIuX2lnbm9yZVdhcm1VcEFuZExvZy4KKyAgICAgICAgKGZp
bmlzaCk6IEV4dHJhY3RlZCBmcm9tIFBlcmZUZXN0UnVubmVyLl9ydW5Mb29wLgorICAgICAgICAo
UGVyZlRlc3RSdW5uZXIubWVhc3VyZVRpbWUpOiBNb3ZlZC4gVGhlIGluaXRpYWxpemF0aW9uIG9m
IHJ1bkNvdW50IGlzIG1vdmVkIGludG8gc3RhcnQoKS4KKyAgICAgICAgKG1lYXN1cmVUaW1lT25j
ZSk6IFJlbmFtZWQgZnJvbSBQZXJmVGVzdFJ1bm5lci5fbWVhc3VyZVRpbWVPbmNlLgorICAgICAg
ICAoUGVyZlRlc3RSdW5uZXIucnVuUGVyU2Vjb25kKTogTW92ZWQuIERpdHRvIGFib3V0IHJ1bkNv
dW50LgorICAgICAgICAobWVhc3VyZVJ1bnNQZXJTZWNvbmRPbmNlKTogUmVuYW1lZCBmcm9tIFBl
cmZUZXN0UnVubmVyLl9tZWFzdXJlUnVuc1BlclNlY29uZE9uY2UuCisgICAgICAgIChjYWxsUnVu
QW5kTWVhc3VyZVRpbWUpOiBSZW5hbWVkIGZyb20gUGVyZlRlc3RSdW5uZXIuX3BlclNlY29uZFJ1
bm5lckl0ZXJhdG9yLgorCiAyMDEyLTA5LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFkZCBiYWNrIHRlc3QucnVuQ291bnQgZm9yIHJ1blBlclNlY29uZCBh
cyBpdCdzIHVzZWQgYnkgdGVzdHMgaW4gZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy4KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMJKHJldmlzaW9uIDEyOTkyMikKKysrIFBlcmZv
cm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjksMjAg
KzI5LDYgQEAgUGVyZlRlc3RSdW5uZXIucmFuZG9tID0gTWF0aC5yYW5kb20gPSBmdQogCiBQZXJm
VGVzdFJ1bm5lci5ub3cgPSB3aW5kb3cucGVyZm9ybWFuY2UgJiYgd2luZG93LnBlcmZvcm1hbmNl
LndlYmtpdE5vdyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5jZS53ZWJr
aXROb3coKTsgfSA6IERhdGUubm93OwogCi1QZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAo
dGV4dCkgewotICAgIGlmICh0aGlzLl9sb2dMaW5lcykgewotICAgICAgICB0aGlzLl9sb2dMaW5l
cy5wdXNoKHRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpKSB7Ci0gICAgICAgIHZhciBwcmUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdwcmUnKTsKLSAgICAgICAgcHJlLmlkID0gJ2xvZyc7Ci0gICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKLSAgICB9Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSB0ZXh0ICsgIlxuIjsKLSAgICB3aW5kb3cuc2Nyb2xs
VG8oMCwgZG9jdW1lbnQuYm9keS5oZWlnaHQpOwotfQotCiBQZXJmVGVzdFJ1bm5lci5sb2dJbmZv
ID0gZnVuY3Rpb24gKHRleHQpIHsKICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAg
ICB0aGlzLmxvZyh0ZXh0KTsKQEAgLTEwNSwxMyArOTEsNiBAQCBQZXJmVGVzdFJ1bm5lci5wcmlu
dFN0YXRpc3RpY3MgPSBmdW5jdGlvCiAgICAgdGhpcy5sb2coIm1heCAiICsgc3RhdGlzdGljcy5t
YXggKyAiICIgKyBzdGF0aXN0aWNzLnVuaXQpOwogfQogCi1QZXJmVGVzdFJ1bm5lci5zdG9yZUhl
YXBSZXN1bHRzID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgICByZXR1cm47Ci0gICAgdGhpcy5fanNIZWFwUmVzdWx0cy5wdXNoKHRoaXMuZ2V0VXNlZEpT
SGVhcCgpKTsKLSAgICB0aGlzLl9tYWxsb2NIZWFwUmVzdWx0cy5wdXNoKHRoaXMuZ2V0VXNlZE1h
bGxvY0hlYXAoKSk7Ci19Ci0KIFBlcmZUZXN0UnVubmVyLmdldFVzZWRNYWxsb2NIZWFwID0gZnVu
Y3Rpb24oKSB7CiAgICAgdmFyIHN0YXRzID0gd2luZG93LmludGVybmFscy5tYWxsb2NTdGF0aXN0
aWNzKCk7CiAgICAgcmV0dXJuIHN0YXRzLmNvbW1pdHRlZFZNQnl0ZXMgLSBzdGF0cy5mcmVlTGlz
dEJ5dGVzOwpAQCAtMTQ1LDExOSArMTI0LDE2MyBAQCBQZXJmVGVzdFJ1bm5lci5nYyA9IGZ1bmN0
aW9uICgpIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspCiAgICAgICAg
ICAgICBnY1JlYygxMCk7CiAgICAgfQotfQorfTsKIAotUGVyZlRlc3RSdW5uZXIuX3NjaGVkdWxl
TmV4dE1lYXN1cmVtZW50T3JOb3RpZnlEb25lID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh0aGlz
Ll9jb21wbGV0ZWRSdW5zIDwgdGhpcy5fcnVuQ291bnQpIHsKLSAgICAgICAgdGhpcy5nYygpOwot
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIg
bWVhc3VyZWRWYWx1ZSA9IFBlcmZUZXN0UnVubmVyLl9ydW5uZXIoKTsKLSAgICAgICAgICAgIFBl
cmZUZXN0UnVubmVyLmlnbm9yZVdhcm1VcEFuZExvZyhtZWFzdXJlZFZhbHVlKTsKLSAgICAgICAg
ICAgIFBlcmZUZXN0UnVubmVyLl9zY2hlZHVsZU5leHRNZWFzdXJlbWVudE9yTm90aWZ5RG9uZSgp
OwotICAgICAgICB9LCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodGhpcy5fZGVzY3Jp
cHRpb24pCi0gICAgICAgICAgICB0aGlzLmxvZygiRGVzY3JpcHRpb246ICIgKyB0aGlzLl9kZXNj
cmlwdGlvbik7Ci0gICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlzLl9yZXN1bHRzLCB0aGlz
LnVuaXQsICJUaW1lOiIpOwotICAgICAgICBpZiAodGhpcy5fanNIZWFwUmVzdWx0cy5sZW5ndGgp
IHsKLSAgICAgICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlzLl9qc0hlYXBSZXN1bHRzLCAi
Ynl0ZXMiLCAiSlMgSGVhcDoiKTsKLSAgICAgICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlz
Ll9tYWxsb2NIZWFwUmVzdWx0cywgImJ5dGVzIiwgIk1hbGxvYzoiKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAodGhpcy5fbG9nTGluZXMpIHsKLSAgICAgICAgICAgIHZhciBsb2dMaW5lcyA9IHRo
aXMuX2xvZ0xpbmVzOwotICAgICAgICAgICAgdGhpcy5fbG9nTGluZXMgPSBudWxsOwotICAgICAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICAgICAgbG9nTGluZXMuZm9yRWFjaChmdW5j
dGlvbih0ZXh0KSB7IHNlbGYubG9nKHRleHQpOyB9KTsKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGxvZ0xpbmVzID0gbnVsbDsKKyAgICB2YXIgY29tcGxldGVkUnVucyA9IC0xOworICAgIHZhciBj
YWxsc1Blckl0ZXJhdGlvbiA9IDE7CisgICAgdmFyIGN1cnJlbnRUZXN0ID0gbnVsbDsKKyAgICB2
YXIgcmVzdWx0cyA9IFtdOworICAgIHZhciBqc0hlYXBSZXN1bHRzID0gW107CisgICAgdmFyIG1h
bGxvY0hlYXBSZXN1bHRzID0gW107CisgICAgdmFyIHJ1bkNvdW50ID0gdW5kZWZpbmVkOworCisg
ICAgZnVuY3Rpb24gbG9nSW5Eb2N1bWVudCh0ZXh0KSB7CisgICAgICAgIGlmICghZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpKSB7CisgICAgICAgICAgICB2YXIgcHJlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAgICAgICAgICBwcmUuaWQgPSAnbG9nJzsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAodGhpcy5fdGVzdC5kb25lKQotICAgICAgICAgICAgdGhpcy5fdGVzdC5kb25lKCk7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJI
VE1MICs9IHRleHQgKyAiXG4iOworICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgZG9jdW1lbnQu
Ym9keS5oZWlnaHQpOwogICAgIH0KLX0KIAotUGVyZlRlc3RSdW5uZXIuX21lYXN1cmVUaW1lT25j
ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgc3RhcnQgPSB0aGlzLm5vdygpOwotICAgIHZhciBy
ZXR1cm5WYWx1ZSA9IHRoaXMuX3Rlc3QucnVuLmNhbGwod2luZG93KTsKLSAgICB2YXIgZW5kID0g
dGhpcy5ub3coKTsKKyAgICBQZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAodGV4dCkgewor
ICAgICAgICBpZiAobG9nTGluZXMpCisgICAgICAgICAgICBsb2dMaW5lcy5wdXNoKHRleHQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2dJbkRvY3VtZW50KHRleHQpOworICAgIH0KIAot
ICAgIGlmIChyZXR1cm5WYWx1ZSAtIDAgPT09IHJldHVyblZhbHVlKSB7Ci0gICAgICAgIGlmIChy
ZXR1cm5WYWx1ZSA8PSAwKQotICAgICAgICAgICAgdGhpcy5sb2coInJ1bkZ1bmN0aW9uIHJldHVy
bmVkIGEgbm9uLXBvc2l0aXZlIHZhbHVlOiAiICsgcmV0dXJuVmFsdWUpOwotICAgICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CisgICAgZnVuY3Rpb24gbG9nRmF0YWxFcnJvcih0ZXh0KSB7CisgICAg
ICAgIFBlcmZUZXN0UnVubmVyLmxvZyh0ZXh0KTsKKyAgICAgICAgZmluaXNoKCk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGVuZCAtIHN0YXJ0OwotfQorICAgIGZ1bmN0aW9uIHN0YXJ0KHRlc3QsIHJ1
bm5lcikgeworICAgICAgICBpZiAoIXRlc3QpIHsKKyAgICAgICAgICAgIGxvZ0ZhdGFsRXJyb3Io
J0dvdCBhIGJhZCB0ZXN0IG9iamVjdC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjdXJyZW50VGVzdCA9IHRlc3Q7CisgICAgICAgIHJ1bkNvdW50ID0gdGVzdC5y
dW5Db3VudCB8fCAyMDsKKyAgICAgICAgbG9nTGluZXMgPSB3aW5kb3cudGVzdFJ1bm5lciA/IFtd
IDogbnVsbDsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKCJSdW5uaW5nICIgKyBydW5Db3Vu
dCArICIgdGltZXMiKTsKKyAgICAgICAgc2NoZWR1bGVOZXh0UnVuKHJ1bm5lcik7CisgICAgfQog
Ci1QZXJmVGVzdFJ1bm5lci5pZ25vcmVXYXJtVXBBbmRMb2cgPSBmdW5jdGlvbiAocmVzdWx0KSB7
Ci0gICAgdGhpcy5fY29tcGxldGVkUnVucysrOworICAgIGZ1bmN0aW9uIHNjaGVkdWxlTmV4dFJ1
bihydW5uZXIpIHsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIuZ2MoKTsKKyAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICB2YXIgbWVhc3VyZWRWYWx1ZSA9IHJ1bm5lcigpOworICAgICAgICAgICAgfSBjYXRjaCAo
ZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgbG9nRmF0YWxFcnJvcignR290IGFuIGV4Y2Vw
dGlvbiB3aGlsZSBydW5uaW5nIHRlc3QucnVuIHdpdGggbmFtZT0nICsgZXhjZXB0aW9uLm5hbWUg
KyAnLCBtZXNzYWdlPScgKyBleGNlcHRpb24ubWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0ZWRSdW5zKys7CisKKyAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWdub3JlV2FybVVwQW5kTG9nKG1lYXN1
cmVkVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICAgICAgbG9nRmF0YWxFcnJvcignR290IGFuIGV4Y2VwdGlvbiB3aGlsZSBsb2dnaW5nIHRoZSBy
ZXN1bHQgd2l0aCBuYW1lPScgKyBleGNlcHRpb24ubmFtZSArICcsIG1lc3NhZ2U9JyArIGV4Y2Vw
dGlvbi5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChjb21wbGV0ZWRSdW5zIDwgcnVuQ291bnQpCisgICAgICAgICAgICAg
ICAgc2NoZWR1bGVOZXh0UnVuKHJ1bm5lcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZmluaXNoKCk7CisgICAgICAgIH0sIDApOworICAgIH0KIAotICAgIHZhciBsYWJlbGVk
UmVzdWx0ID0gcmVzdWx0ICsgIiAiICsgdGhpcy51bml0OwotICAgIGlmICh0aGlzLl9jb21wbGV0
ZWRSdW5zIDw9IDApCi0gICAgICAgIHRoaXMubG9nKCJJZ25vcmluZyB3YXJtLXVwIHJ1biAoIiAr
IGxhYmVsZWRSZXN1bHQgKyAiKSIpOwotICAgIGVsc2UgewotICAgICAgICB0aGlzLl9yZXN1bHRz
LnB1c2gocmVzdWx0KTsKLSAgICAgICAgdGhpcy5zdG9yZUhlYXBSZXN1bHRzKCk7Ci0gICAgICAg
IHRoaXMubG9nKGxhYmVsZWRSZXN1bHQpOworICAgIGZ1bmN0aW9uIGlnbm9yZVdhcm1VcEFuZExv
ZyhtZWFzdXJlZFZhbHVlKSB7CisgICAgICAgIHZhciBsYWJlbGVkUmVzdWx0ID0gbWVhc3VyZWRW
YWx1ZSArICIgIiArIFBlcmZUZXN0UnVubmVyLnVuaXQ7CisgICAgICAgIGlmIChjb21wbGV0ZWRS
dW5zIDw9IDApCisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coIklnbm9yaW5nIHdhcm0t
dXAgcnVuICgiICsgbGFiZWxlZFJlc3VsdCArICIpIik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgcmVzdWx0cy5wdXNoKG1lYXN1cmVkVmFsdWUpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBqc0hlYXBSZXN1bHRzLnB1c2goUGVyZlRl
c3RSdW5uZXIuZ2V0VXNlZEpTSGVhcCgpKTsKKyAgICAgICAgICAgICAgICBtYWxsb2NIZWFwUmVz
dWx0cy5wdXNoKFBlcmZUZXN0UnVubmVyLmdldFVzZWRNYWxsb2NIZWFwKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKGxhYmVsZWRSZXN1bHQpOworICAg
ICAgICB9CiAgICAgfQotfQogCi1QZXJmVGVzdFJ1bm5lci5fc3RhcnQgPSBmdW5jdGlvbih0ZXN0
KSB7Ci0gICAgdGhpcy5fZGVzY3JpcHRpb24gPSB0ZXN0LmRlc2NyaXB0aW9uIHx8ICIiOwotICAg
IHRoaXMuX2NvbXBsZXRlZFJ1bnMgPSAtMTsKLSAgICB0aGlzLl9jYWxsc1Blckl0ZXJhdGlvbiA9
IDE7Ci0gICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXN0LmRlc2NyaXB0aW9uKQorICAg
ICAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZygiRGVzY3JpcHRpb246ICIgKyBjdXJyZW50
VGVzdC5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2dTdGF0aXN0
aWNzKHJlc3VsdHMsIFBlcmZUZXN0UnVubmVyLnVuaXQsICJUaW1lOiIpOworICAgICAgICAgICAg
aWYgKGpzSGVhcFJlc3VsdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgUGVyZlRlc3RSdW5u
ZXIubG9nU3RhdGlzdGljcyhqc0hlYXBSZXN1bHRzLCAiYnl0ZXMiLCAiSlMgSGVhcDoiKTsKKyAg
ICAgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2dTdGF0aXN0aWNzKG1hbGxvY0hlYXBSZXN1
bHRzLCAiYnl0ZXMiLCAiTWFsbG9jOiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGxvZ0xpbmVzKQorICAgICAgICAgICAgICAgIGxvZ0xpbmVzLmZvckVhY2gobG9nSW5Eb2N1bWVu
dCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFRlc3QuZG9uZSkKKyAgICAgICAgICAgICAgICBj
dXJyZW50VGVzdC5kb25lKCk7CisgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgbG9nSW5Eb2N1bWVudCgnR290IGFuIGV4Y2VwdGlvbiB3aGlsZSBmaW5hbGl6aW5nIHRo
ZSB0ZXN0IHdpdGggbmFtZT0nICsgZXhjZXB0aW9uLm5hbWUgKyAnLCBtZXNzYWdlPScgKyBleGNl
cHRpb24ubWVzc2FnZSk7CisgICAgICAgIH0KIAotICAgIHRoaXMuX3Jlc3VsdHMgPSBbXTsKLSAg
ICB0aGlzLl9qc0hlYXBSZXN1bHRzID0gW107Ci0gICAgdGhpcy5fbWFsbG9jSGVhcFJlc3VsdHMg
PSBbXTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQogCi0gICAgdGhpcy5fbG9nTGluZXMgPSB3aW5kb3cu
dGVzdFJ1bm5lciA/IFtdIDogbnVsbDsKLSAgICB0aGlzLmxvZygiUnVubmluZyAiICsgdGhpcy5f
cnVuQ291bnQgKyAiIHRpbWVzIik7Ci0gICAgdGhpcy5fc2NoZWR1bGVOZXh0TWVhc3VyZW1lbnRP
ck5vdGlmeURvbmUoKTsKLX0KKyAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlVGltZSA9IGZ1bmN0
aW9uICh0ZXN0KSB7CisgICAgICAgIFBlcmZUZXN0UnVubmVyLnVuaXQgPSAnbXMnOworICAgICAg
ICBzdGFydCh0ZXN0LCBtZWFzdXJlVGltZU9uY2UpOworICAgIH0KIAotUGVyZlRlc3RSdW5uZXIu
bWVhc3VyZVRpbWUgPSBmdW5jdGlvbiAodGVzdCkgewotICAgIHRoaXMuX3J1bkNvdW50ID0gdGVz
dC5ydW5Db3VudCB8fCAyMDsKLSAgICB0aGlzLnVuaXQgPSAnbXMnOwotICAgIHRoaXMuX3J1bm5l
ciA9IHRoaXMuX21lYXN1cmVUaW1lT25jZTsKLSAgICB0aGlzLl9zdGFydCh0ZXN0KTsKLX0KKyAg
ICBmdW5jdGlvbiBtZWFzdXJlVGltZU9uY2UoKSB7CisgICAgICAgIHZhciBzdGFydCA9IFBlcmZU
ZXN0UnVubmVyLm5vdygpOworICAgICAgICB2YXIgcmV0dXJuVmFsdWUgPSBjdXJyZW50VGVzdC5y
dW4oKTsKKyAgICAgICAgdmFyIGVuZCA9IFBlcmZUZXN0UnVubmVyLm5vdygpOworCisgICAgICAg
IGlmIChyZXR1cm5WYWx1ZSAtIDAgPT09IHJldHVyblZhbHVlKSB7CisgICAgICAgICAgICBpZiAo
cmV0dXJuVmFsdWUgPD0gMCkKKyAgICAgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coInJ1
bkZ1bmN0aW9uIHJldHVybmVkIGEgbm9uLXBvc2l0aXZlIHZhbHVlOiAiICsgcmV0dXJuVmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgICAgICB9CiAKLVBlcmZUZXN0
UnVubmVyLnJ1blBlclNlY29uZCA9IGZ1bmN0aW9uICh0ZXN0KSB7Ci0gICAgdGhpcy5fcnVuQ291
bnQgPSB0ZXN0LnJ1bkNvdW50IHx8IDIwOyAvLyBPbmx5IHVzZWQgYnkgdGVzdHMgaW4gZmFzdC9o
YXJuZXNzL3BlcmZ0ZXN0cwotICAgIHRoaXMudW5pdCA9ICdydW5zL3MnOwotICAgIHRoaXMuX3J1
bm5lciA9IHRoaXMuX21lYXN1cmVSdW5zUGVyU2Vjb25kT25jZTsKLSAgICB0aGlzLl9zdGFydCh0
ZXN0KTsKLX0KKyAgICAgICAgcmV0dXJuIGVuZCAtIHN0YXJ0OworICAgIH0KIAotUGVyZlRlc3RS
dW5uZXIuX21lYXN1cmVSdW5zUGVyU2Vjb25kT25jZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIg
dGltZVRvUnVuID0gdGhpcy5fdGVzdC50aW1lVG9SdW4gfHwgNzUwOwotICAgIHZhciB0b3RhbFRp
bWUgPSAwOwotICAgIHZhciBpID0gMDsKLSAgICB2YXIgY2FsbHNQZXJJdGVyYXRpb24gPSB0aGlz
Ll9jYWxsc1Blckl0ZXJhdGlvbjsKKyAgICBQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQgPSBm
dW5jdGlvbiAodGVzdCkgeworICAgICAgICBQZXJmVGVzdFJ1bm5lci51bml0ID0gJ3J1bnMvcyc7
CisgICAgICAgIHN0YXJ0KHRlc3QsIG1lYXN1cmVSdW5zUGVyU2Vjb25kT25jZSk7CisgICAgfQog
Ci0gICAgaWYgKHRoaXMuX3Rlc3Quc2V0dXApCi0gICAgICAgIHRoaXMuX3Rlc3Quc2V0dXAoKTsK
KyAgICBmdW5jdGlvbiBtZWFzdXJlUnVuc1BlclNlY29uZE9uY2UoKSB7CisgICAgICAgIHZhciB0
aW1lVG9SdW4gPSA3NTA7CisgICAgICAgIHZhciB0b3RhbFRpbWUgPSAwOworICAgICAgICB2YXIg
bnVtYmVyT2ZSdW5zID0gMDsKKworICAgICAgICBpZiAoY3VycmVudFRlc3Quc2V0dXApCisgICAg
ICAgICAgICBjdXJyZW50VGVzdC5zZXR1cCgpOworCisgICAgICAgIHdoaWxlICh0b3RhbFRpbWUg
PCB0aW1lVG9SdW4pIHsKKyAgICAgICAgICAgIHRvdGFsVGltZSArPSBjYWxsUnVuQW5kTWVhc3Vy
ZVRpbWUoY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICAgICAgbnVtYmVyT2ZSdW5zICs9IGNh
bGxzUGVySXRlcmF0aW9uOworICAgICAgICAgICAgaWYgKGNvbXBsZXRlZFJ1bnMgPCAwICYmIHRv
dGFsVGltZSA8IDEwMCkKKyAgICAgICAgICAgICAgICBjYWxsc1Blckl0ZXJhdGlvbiA9IE1hdGgu
bWF4KDEwLCAyICogY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICB9CiAKLSAgICB3aGlsZSAo
dG90YWxUaW1lIDwgdGltZVRvUnVuKSB7Ci0gICAgICAgIHRvdGFsVGltZSArPSB0aGlzLl9wZXJT
ZWNvbmRSdW5uZXJJdGVyYXRvcihjYWxsc1Blckl0ZXJhdGlvbik7Ci0gICAgICAgIGkgKz0gY2Fs
bHNQZXJJdGVyYXRpb247Ci0gICAgICAgIGlmICh0aGlzLl9jb21wbGV0ZWRSdW5zIDwgMCAmJiB0
b3RhbFRpbWUgPCAxMDApCi0gICAgICAgICAgICBjYWxsc1Blckl0ZXJhdGlvbiA9IE1hdGgubWF4
KDEwLCAyICogY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gbnVtYmVyT2ZSdW5z
ICogMTAwMCAvIHRvdGFsVGltZTsKICAgICB9Ci0gICAgdGhpcy5fY2FsbHNQZXJJdGVyYXRpb24g
PSBjYWxsc1Blckl0ZXJhdGlvbjsKIAotICAgIHJldHVybiBpICogMTAwMCAvIHRvdGFsVGltZTsK
LX0KKyAgICBmdW5jdGlvbiBjYWxsUnVuQW5kTWVhc3VyZVRpbWUoY2FsbHNQZXJJdGVyYXRpb24p
IHsKKyAgICAgICAgdmFyIHN0YXJ0VGltZSA9IFBlcmZUZXN0UnVubmVyLm5vdygpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxzUGVySXRlcmF0aW9uOyBpKyspCisgICAgICAgICAg
ICBjdXJyZW50VGVzdC5ydW4oKTsKKyAgICAgICAgcmV0dXJuIFBlcmZUZXN0UnVubmVyLm5vdygp
IC0gc3RhcnRUaW1lOworICAgIH0KIAotUGVyZlRlc3RSdW5uZXIuX3BlclNlY29uZFJ1bm5lckl0
ZXJhdG9yID0gZnVuY3Rpb24gKGNhbGxzUGVySXRlcmF0aW9uKSB7Ci0gICAgdmFyIHN0YXJ0VGlt
ZSA9IHRoaXMubm93KCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsc1Blckl0ZXJhdGlv
bjsgaSsrKQotICAgICAgICB0aGlzLl90ZXN0LnJ1bi5jYWxsKHdpbmRvdyk7Ci0gICAgcmV0dXJu
IHRoaXMubm93KCkgLSBzdGFydFRpbWU7Ci19Cit9KSgpOwogCiBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEyOTk1MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA5LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEVuY2Fwc3VsYXRlIHByaXZhdGUgcHJvcGVydGllcyBpbiBQZXJmVGVzdFJ1bm5l
ciBiZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3ODMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3ZlcnJpZGUgUGVyZlRlc3RSdW5uZXIubm93IGluc3RlYWQgb2YgUGVyZlRlc3RSdW5uZXIuX3Bl
clNlY29uZFJ1bm5lckl0ZXJhdG9yIHNpbmNlIHRoZSBsYXR0ZXIKKyAgICAgICAgaXMgbm8gbG9u
Z2VyIGV4cG9zZWQuCisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVy
LXNlY29uZC1pdGVyYXRpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2hhcm5lc3Mv
cGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1pdGVyYXRpb25zLmh0bWw6IEluY3JlYXNlIHRoZSBy
dW50aW1lIG9mIHRoZSBsYXN0IDQgcnVucworICAgICAgICBzaW5jZSB0ZXN0LnRpbWVUb1J1biBp
cyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IFBlcmZUZXN0UnVubmVyLgorICAgICAgICAqIGZhc3Qv
aGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBlci1zZWNvbmQtbG9nLmh0bWw6IEF2
b2lkIHVzZSBudW1iZXJzIHRoYXQgY29udGFpbiBwcmltZXMgb3RoZXIKKyAgICAgICAgdGhhbiAy
IGFuZCA1IGFzIHJ1bnMgYmVjYXVzZSB0aGV5IGNhdXNlIHJvdWRpbmcgZXJyb3JzIGluIFBlcmZU
ZXN0UnVubmVyLm1lYXN1cmVSdW5zUGVyU2Vjb25kT25jZQorICAgICAgICBhbmQgbWFrZSB0aGUg
b3V0cHV0IGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBmbG9hdGluZyBudW1iZXIgaW1wbGVt
ZW50YXRpb24uCisKIDIwMTItMDktMjggIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgY2FudmFzIHRvIHNldCBvZiBlbGVtZW50cyB0aGF0IGRv
IG5vdCBhbGxvdyBzdHlsZSBzaGFyaW5nIGluIG9yZGVyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1pdGVyYXRpb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMt
cGVyLXNlY29uZC1pdGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTI5OTIyKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBlci1zZWNvbmQtaXRlcmF0
aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBAIFRoaXMgdGVz
dCB2ZXJpZmllcyBQZXJmVGVzdFJ1bm5lci5ydW5QZXIKIAogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCi1SZXR1cm5pbmcgdGltZXM6IFswLCAxMCwgMzAsIDYwLCAxMDAsIDEwMCwgMTAwLCAx
MDAsIDUwMF0KK1JldHVybmluZyB0aW1lczogWzAsIDEwLCAzMCwgNjAsIDIwMCwgMjAwLCAyMDAs
IDIwMCwgNzUwXQogUEFTUyBjYWxsc0luSXRlcmF0aW9uc1swXSBpcyAxCiBQQVNTIGNhbGxzSW5J
dGVyYXRpb25zWzFdIGlzIDEwCiBQQVNTIGNhbGxzSW5JdGVyYXRpb25zWzFdICsgNSA8IGNhbGxz
SW5JdGVyYXRpb25zWzJdIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9w
ZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWl0ZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1pdGVyYXRp
b25zLmh0bWwJKHJldmlzaW9uIDEyOTkyMikKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9w
ZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWl0ZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTAsMjMgKzEwLDMyIEBACiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIFBlcmZU
ZXN0UnVubmVyLnJ1blBlclNlY29uZCgpIGNhbGxzIHJ1bkZ1bmN0aW9uIGFzIG1hbnkgdGltZXMg
YXMgZXhwZWN0ZWQuIik7CiAKIHZhciBpdGVyYXRpb24gPSAwOwotCit2YXIgY3VycmVudFRpbWUg
PSAxMDA7CiB2YXIgY2FsbHNJbkl0ZXJhdGlvbnMgPSBbXTsKLXZhciB0aW1lc0luSXRlcmF0aW9u
cyA9IFswLCAxMCwgMzAsIDYwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDUwMF07Cit2YXIgdGltZXNJ
bkl0ZXJhdGlvbnMgPSBbMCwgMTAsIDMwLCA2MCwgMjAwLCAyMDAsIDIwMCwgMjAwLCA3NTBdOwog
dmFyIGxvZ0xpbmVzID0gW107CiAKLVBlcmZUZXN0UnVubmVyLmxvZyA9IGZ1bmN0aW9uIChsaW5l
KSB7IGxvZ0xpbmVzLnB1c2gobGluZSk7IH0KLVBlcmZUZXN0UnVubmVyLl9wZXJTZWNvbmRSdW5u
ZXJJdGVyYXRvciA9IGZ1bmN0aW9uIChjYWxsc1Blckl0ZXJhdGlvbikgewotICAgIGNhbGxzSW5J
dGVyYXRpb25zW2l0ZXJhdGlvbl0gPSBjYWxsc1Blckl0ZXJhdGlvbjsKLSAgICByZXR1cm4gdGlt
ZXNJbkl0ZXJhdGlvbnNbaXRlcmF0aW9uKytdOworUGVyZlRlc3RSdW5uZXIubm93ID0gZnVuY3Rp
b24gKCkgeworICAgIGl0ZXJhdGlvbisrOworICAgIGlmIChpdGVyYXRpb24gJSAyID09IDApCisg
ICAgICAgIGN1cnJlbnRUaW1lICs9IHRpbWVzSW5JdGVyYXRpb25zLnNoaWZ0KCk7CisgICAgcmV0
dXJuIGN1cnJlbnRUaW1lOwogfQogCitQZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAobGlu
ZSkgeyBsb2dMaW5lcy5wdXNoKGxpbmUpOyB9CisKK3ZhciBvcmlnaW5hbFRpbWVzSW5JdGVyYXRp
b25zID0gdGltZXNJbkl0ZXJhdGlvbnMuc2xpY2UoKTsKKwogUGVyZlRlc3RSdW5uZXIucnVuUGVy
U2Vjb25kKHsKLSAgICBydW46IGZ1bmN0aW9uICgpIHsgfSwKKyAgICBydW46IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgdmFyIGkgPSBNYXRoLmZsb29yKGl0ZXJhdGlvbiAvIDIpOworICAgICAgICBp
ZiAoY2FsbHNJbkl0ZXJhdGlvbnNbaV0gPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgY2FsbHNJ
bkl0ZXJhdGlvbnNbaV0gPSAwOworICAgICAgICBjYWxsc0luSXRlcmF0aW9uc1tpXSsrOworICAg
IH0sCiAgICAgcnVuQ291bnQ6IDEsCi0gICAgdGltZVRvUnVuOiA1MDAsCiAgICAgZG9uZTogZnVu
Y3Rpb24gKCkgewotICAgICAgICBkZWJ1ZygiUmV0dXJuaW5nIHRpbWVzOiBbIiArIHRpbWVzSW5J
dGVyYXRpb25zLmpvaW4oIiwgIikgKyAiXSIpOworICAgICAgICBkZWJ1ZygiUmV0dXJuaW5nIHRp
bWVzOiBbIiArIG9yaWdpbmFsVGltZXNJbkl0ZXJhdGlvbnMuam9pbigiLCAiKSArICJdIik7CiAg
ICAgICAgIHNob3VsZEV2YWx1YXRlVG8oImNhbGxzSW5JdGVyYXRpb25zWzBdIiwgMSk7CiAgICAg
ICAgIHNob3VsZEV2YWx1YXRlVG8oImNhbGxzSW5JdGVyYXRpb25zWzFdIiwgMTApOwogICAgICAg
ICBzaG91bGRCZVRydWUoImNhbGxzSW5JdGVyYXRpb25zWzFdICsgNSA8IGNhbGxzSW5JdGVyYXRp
b25zWzJdIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMt
cGVyLXNlY29uZC1sb2ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEyOTkyMikKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcnVu
cy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTggKzEs
MTggQEAKIFRoaXMgdGVzdCB2ZXJpZmllcyBQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQoKSBv
dXRwdXRzIGxvZyBhcyBleHBlY3RlZC4KIAogUnVubmluZyA1IHRpbWVzCi1JZ25vcmluZyB3YXJt
LXVwIHJ1biAoMCBydW5zL3MpCi0xIHJ1bnMvcworSWdub3Jpbmcgd2FybS11cCBydW4gKDEgcnVu
cy9zKQogMiBydW5zL3MKLTMgcnVucy9zCiA0IHJ1bnMvcwogNSBydW5zL3MKKzggcnVucy9zCisx
MCBydW5zL3MKIAogVGltZToKLXZhbHVlcyAxLCAyLCAzLCA0LCA1IHJ1bnMvcwotYXZnIDMgcnVu
cy9zCi1tZWRpYW4gMyBydW5zL3MKLXN0ZGV2IDEuNDEgcnVucy9zCi1taW4gMSBydW5zL3MKLW1h
eCA1IHJ1bnMvcwordmFsdWVzIDIsIDQsIDUsIDgsIDEwIHJ1bnMvcworYXZnIDUuOCBydW5zL3MK
K21lZGlhbiA1IHJ1bnMvcworc3RkZXYgMi44NTY1NzEzNzE0MTcxNCBydW5zL3MKK21pbiAyIHJ1
bnMvcworbWF4IDEwIHJ1bnMvcwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVy
ZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1sb2cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1sb2cuaHRtbAkocmV2aXNp
b24gMTI5OTIyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBl
ci1zZWNvbmQtbG9nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDI4ICsxMCwzNiBAQCB2YXIg
bG9nTGluZXMgPSBbXTsKIHZhciBpbml0aWFsID0gdHJ1ZTsKIHZhciBydW5zID0gMDsKIAotUGVy
ZlRlc3RSdW5uZXIuX3BlclNlY29uZFJ1bm5lckl0ZXJhdG9yID0gZnVuY3Rpb24gKGNhbGxzUGVy
SXRlcmF0aW9uKSB7Ci0gICAgcmV0dXJuIDEwMDAgLyBydW5zOwordmFyIGl0ZXJhdGlvbiA9IDA7
Cit2YXIgY3VycmVudFRpbWUgPSAwOworCitQZXJmVGVzdFJ1bm5lci5ub3cgPSBmdW5jdGlvbiAo
KSB7CisgICAgaXRlcmF0aW9uKys7CisgICAgaWYgKGl0ZXJhdGlvbiAlIDIgPT0gMCkKKyAgICAg
ICAgY3VycmVudFRpbWUgKz0gMTAwMCAvIHJ1bnM7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lOwog
fQogCiBQZXJmVGVzdFJ1bm5lci5zdG9yZUhlYXBSZXN1bHRzID0gZnVuY3Rpb24gKCkgeyB9CiAK
IHZhciBwcmludFN0YXRpc3RpY3MgPSBQZXJmVGVzdFJ1bm5lci5wcmludFN0YXRpc3RpY3M7Ci1Q
ZXJmVGVzdFJ1bm5lci5wcmludFN0YXRpc3RpY3MgPSBmdW5jdGlvbiAoc3RhdGlzdGljcykgewot
ICAgIHN0YXRpc3RpY3Muc3RkZXYgPSBzdGF0aXN0aWNzLnN0ZGV2LnRvUHJlY2lzaW9uKDMpOwot
ICAgIHJldHVybiBwcmludFN0YXRpc3RpY3MuY2FsbChQZXJmVGVzdFJ1bm5lciwgc3RhdGlzdGlj
cywgJ1RpbWU6Jyk7CitQZXJmVGVzdFJ1bm5lci5wcmludFN0YXRpc3RpY3MgPSBmdW5jdGlvbiAo
c3RhdGlzdGljcywgdGl0bGUpIHsKKyAgICBpZiAoc3RhdGlzdGljcy51bml0ID09ICdieXRlcycp
CisgICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gcHJpbnRTdGF0aXN0aWNzLmNhbGwoUGVyZlRl
c3RSdW5uZXIsIHN0YXRpc3RpY3MsIHRpdGxlKTsKIH0KIAogUGVyZlRlc3RSdW5uZXIucnVuUGVy
U2Vjb25kKHsKICAgICBzZXR1cDogZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoaW5pdGlhbCkK
LSAgICAgICAgICAgIGluaXRpYWwgPSBmYWxzZTsKLSAgICAgICAgZWxzZQorICAgICAgICBydW5z
Kys7CisgICAgICAgIC8vIEF2b2lkIDMsIDYsIDcsIDkuCisgICAgICAgIGlmIChydW5zID09IDYp
CisgICAgICAgICAgICBydW5zICs9IDI7CisgICAgICAgIGVsc2UgaWYgKCEocnVucyAlIDMpKQog
ICAgICAgICAgICAgcnVucysrOwogICAgIH0sCiAgICAgcnVuOiBmdW5jdGlvbiAoKSB7IH0sCiAg
ICAgcnVuQ291bnQ6IDUsCi0gICAgdGltZVRvUnVuOiA1MDAsCiB9KTsKIAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166316</attachid>
            <date>2012-09-28 14:51:51 -0700</date>
            <delta_ts>2012-10-01 16:41:14 -0700</delta_ts>
            <desc>Fixed a test</desc>
            <filename>bug-97833-20120928145108.patch</filename>
            <type>text/plain</type>
            <size>18511</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk5NTApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTI4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIHBy
aXZhdGUgcHJvcGVydGllcyBpbiBQZXJmVGVzdFJ1bm5lciBiZXR0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyAicHJpdmF0
ZSIgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBvZiBQZXJmVGVzdFJ1bm5lciBpbnRvIGEgY2xvc3Vy
ZSBzbyB0aGF0IHRoZXkncmUKKyAgICAgICAgaW5hY2Nzc2libGUgZnJvbSBvdXRzaWRlLiBBbHNv
IGNhdGNoIGV4Y2VwdGlvbnMgZnJvbSB0ZXN0LnJ1biwgdGVzdC5kb25lLCBhbmQgb3RoZXIgcnVu
bmVyIGNvZGUKKyAgICAgICAgdG8gZW5zdXJlIHdlIGNhbGwgbm90aWZ5RG9uZSgpIGV2ZW4gaWYg
d2UgYnJva2UgdGVzdHMuIE90aGVyd2lzZSBEUlQgd2lsbCB0aW1lb3V0IGFuZCB3ZSBlbmQgdXAK
KyAgICAgICAgd2FpdGluZyBmb3IgMTAgbWludXRlcyBwZXIgZWFjaCBicm9rZW4gdGVzdCBvbiBi
b3RzLgorCisgICAgICAgICogcmVzb3VyY2VzL3J1bm5lci5qczoKKyAgICAgICAgKFBlcmZUZXN0
UnVubmVyLmdjKToKKyAgICAgICAgKGxvZ0luRG9jdW1lbnQpOiBFeHRyYWN0ZWQgZnJvbSBQZXJm
VGVzdFJ1bm5lci5sb2cuCisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5sb2cpOiBNb3ZlZC4KKyAg
ICAgICAgKGxvZ0ZhdGFsRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgKHN0YXJ0KTogUmVuYW1lZCBm
cm9tIFBlcmZUZXN0UnVubmVyLl9zdGFydC4KKyAgICAgICAgKHNjaGVkdWxlTmV4dFJ1bik6IEV4
dHJhY3RlZCBmcm9tIFBlcmZUZXN0UnVubmVyLl9ydW5Mb29wLiBBbHNvIGNhdGNoIGFueSBleGNl
cHRpb25zIHRoYXQgaGFwcGVuCisgICAgICAgIGluIHRoZSBydW5uZXIgYW5kIGlnbm9yZVdhcm1V
cEFuZExvZyBzbyB0aGF0IHdlIGRvbid0IGVuZCB1cCB0aW1pbmcgb3V0LiBXZSBjYWxsIGxvZ0Zh
dGFsRXJyb3IgaW4KKyAgICAgICAgc3VjaCBjYXNlcywgd2hpY2ggaW4gdHVybiBlbnN1cmVzIG5v
dGlmeURvbmUoKSBpcyBjYWxsZWQuCisgICAgICAgIChpZ25vcmVXYXJtVXBBbmRMb2cpOiBSZW5h
bWVkIGZyb20gUGVyZlRlc3RSdW5uZXIuX2lnbm9yZVdhcm1VcEFuZExvZy4KKyAgICAgICAgKGZp
bmlzaCk6IEV4dHJhY3RlZCBmcm9tIFBlcmZUZXN0UnVubmVyLl9ydW5Mb29wLgorICAgICAgICAo
UGVyZlRlc3RSdW5uZXIubWVhc3VyZVRpbWUpOiBNb3ZlZC4gVGhlIGluaXRpYWxpemF0aW9uIG9m
IHJ1bkNvdW50IGlzIG1vdmVkIGludG8gc3RhcnQoKS4KKyAgICAgICAgKG1lYXN1cmVUaW1lT25j
ZSk6IFJlbmFtZWQgZnJvbSBQZXJmVGVzdFJ1bm5lci5fbWVhc3VyZVRpbWVPbmNlLgorICAgICAg
ICAoUGVyZlRlc3RSdW5uZXIucnVuUGVyU2Vjb25kKTogTW92ZWQuIERpdHRvIGFib3V0IHJ1bkNv
dW50LgorICAgICAgICAobWVhc3VyZVJ1bnNQZXJTZWNvbmRPbmNlKTogUmVuYW1lZCBmcm9tIFBl
cmZUZXN0UnVubmVyLl9tZWFzdXJlUnVuc1BlclNlY29uZE9uY2UuCisgICAgICAgIChjYWxsUnVu
QW5kTWVhc3VyZVRpbWUpOiBSZW5hbWVkIGZyb20gUGVyZlRlc3RSdW5uZXIuX3BlclNlY29uZFJ1
bm5lckl0ZXJhdG9yLgorCiAyMDEyLTA5LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFkZCBiYWNrIHRlc3QucnVuQ291bnQgZm9yIHJ1blBlclNlY29uZCBh
cyBpdCdzIHVzZWQgYnkgdGVzdHMgaW4gZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy4KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMJKHJldmlzaW9uIDEyOTkyMikKKysrIFBlcmZv
cm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjksMjAg
KzI5LDYgQEAgUGVyZlRlc3RSdW5uZXIucmFuZG9tID0gTWF0aC5yYW5kb20gPSBmdQogCiBQZXJm
VGVzdFJ1bm5lci5ub3cgPSB3aW5kb3cucGVyZm9ybWFuY2UgJiYgd2luZG93LnBlcmZvcm1hbmNl
LndlYmtpdE5vdyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5jZS53ZWJr
aXROb3coKTsgfSA6IERhdGUubm93OwogCi1QZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAo
dGV4dCkgewotICAgIGlmICh0aGlzLl9sb2dMaW5lcykgewotICAgICAgICB0aGlzLl9sb2dMaW5l
cy5wdXNoKHRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpKSB7Ci0gICAgICAgIHZhciBwcmUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdwcmUnKTsKLSAgICAgICAgcHJlLmlkID0gJ2xvZyc7Ci0gICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKLSAgICB9Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSB0ZXh0ICsgIlxuIjsKLSAgICB3aW5kb3cuc2Nyb2xs
VG8oMCwgZG9jdW1lbnQuYm9keS5oZWlnaHQpOwotfQotCiBQZXJmVGVzdFJ1bm5lci5sb2dJbmZv
ID0gZnVuY3Rpb24gKHRleHQpIHsKICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAg
ICB0aGlzLmxvZyh0ZXh0KTsKQEAgLTEwNSwxMyArOTEsNiBAQCBQZXJmVGVzdFJ1bm5lci5wcmlu
dFN0YXRpc3RpY3MgPSBmdW5jdGlvCiAgICAgdGhpcy5sb2coIm1heCAiICsgc3RhdGlzdGljcy5t
YXggKyAiICIgKyBzdGF0aXN0aWNzLnVuaXQpOwogfQogCi1QZXJmVGVzdFJ1bm5lci5zdG9yZUhl
YXBSZXN1bHRzID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgICByZXR1cm47Ci0gICAgdGhpcy5fanNIZWFwUmVzdWx0cy5wdXNoKHRoaXMuZ2V0VXNlZEpT
SGVhcCgpKTsKLSAgICB0aGlzLl9tYWxsb2NIZWFwUmVzdWx0cy5wdXNoKHRoaXMuZ2V0VXNlZE1h
bGxvY0hlYXAoKSk7Ci19Ci0KIFBlcmZUZXN0UnVubmVyLmdldFVzZWRNYWxsb2NIZWFwID0gZnVu
Y3Rpb24oKSB7CiAgICAgdmFyIHN0YXRzID0gd2luZG93LmludGVybmFscy5tYWxsb2NTdGF0aXN0
aWNzKCk7CiAgICAgcmV0dXJuIHN0YXRzLmNvbW1pdHRlZFZNQnl0ZXMgLSBzdGF0cy5mcmVlTGlz
dEJ5dGVzOwpAQCAtMTQ1LDExOSArMTI0LDE2MyBAQCBQZXJmVGVzdFJ1bm5lci5nYyA9IGZ1bmN0
aW9uICgpIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspCiAgICAgICAg
ICAgICBnY1JlYygxMCk7CiAgICAgfQotfQorfTsKIAotUGVyZlRlc3RSdW5uZXIuX3NjaGVkdWxl
TmV4dE1lYXN1cmVtZW50T3JOb3RpZnlEb25lID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh0aGlz
Ll9jb21wbGV0ZWRSdW5zIDwgdGhpcy5fcnVuQ291bnQpIHsKLSAgICAgICAgdGhpcy5nYygpOwot
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIg
bWVhc3VyZWRWYWx1ZSA9IFBlcmZUZXN0UnVubmVyLl9ydW5uZXIoKTsKLSAgICAgICAgICAgIFBl
cmZUZXN0UnVubmVyLmlnbm9yZVdhcm1VcEFuZExvZyhtZWFzdXJlZFZhbHVlKTsKLSAgICAgICAg
ICAgIFBlcmZUZXN0UnVubmVyLl9zY2hlZHVsZU5leHRNZWFzdXJlbWVudE9yTm90aWZ5RG9uZSgp
OwotICAgICAgICB9LCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodGhpcy5fZGVzY3Jp
cHRpb24pCi0gICAgICAgICAgICB0aGlzLmxvZygiRGVzY3JpcHRpb246ICIgKyB0aGlzLl9kZXNj
cmlwdGlvbik7Ci0gICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlzLl9yZXN1bHRzLCB0aGlz
LnVuaXQsICJUaW1lOiIpOwotICAgICAgICBpZiAodGhpcy5fanNIZWFwUmVzdWx0cy5sZW5ndGgp
IHsKLSAgICAgICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlzLl9qc0hlYXBSZXN1bHRzLCAi
Ynl0ZXMiLCAiSlMgSGVhcDoiKTsKLSAgICAgICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlz
Ll9tYWxsb2NIZWFwUmVzdWx0cywgImJ5dGVzIiwgIk1hbGxvYzoiKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAodGhpcy5fbG9nTGluZXMpIHsKLSAgICAgICAgICAgIHZhciBsb2dMaW5lcyA9IHRo
aXMuX2xvZ0xpbmVzOwotICAgICAgICAgICAgdGhpcy5fbG9nTGluZXMgPSBudWxsOwotICAgICAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICAgICAgbG9nTGluZXMuZm9yRWFjaChmdW5j
dGlvbih0ZXh0KSB7IHNlbGYubG9nKHRleHQpOyB9KTsKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGxvZ0xpbmVzID0gbnVsbDsKKyAgICB2YXIgY29tcGxldGVkUnVucyA9IC0xOworICAgIHZhciBj
YWxsc1Blckl0ZXJhdGlvbiA9IDE7CisgICAgdmFyIGN1cnJlbnRUZXN0ID0gbnVsbDsKKyAgICB2
YXIgcmVzdWx0cyA9IFtdOworICAgIHZhciBqc0hlYXBSZXN1bHRzID0gW107CisgICAgdmFyIG1h
bGxvY0hlYXBSZXN1bHRzID0gW107CisgICAgdmFyIHJ1bkNvdW50ID0gdW5kZWZpbmVkOworCisg
ICAgZnVuY3Rpb24gbG9nSW5Eb2N1bWVudCh0ZXh0KSB7CisgICAgICAgIGlmICghZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpKSB7CisgICAgICAgICAgICB2YXIgcHJlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAgICAgICAgICBwcmUuaWQgPSAnbG9nJzsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAodGhpcy5fdGVzdC5kb25lKQotICAgICAgICAgICAgdGhpcy5fdGVzdC5kb25lKCk7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJI
VE1MICs9IHRleHQgKyAiXG4iOworICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgZG9jdW1lbnQu
Ym9keS5oZWlnaHQpOwogICAgIH0KLX0KIAotUGVyZlRlc3RSdW5uZXIuX21lYXN1cmVUaW1lT25j
ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgc3RhcnQgPSB0aGlzLm5vdygpOwotICAgIHZhciBy
ZXR1cm5WYWx1ZSA9IHRoaXMuX3Rlc3QucnVuLmNhbGwod2luZG93KTsKLSAgICB2YXIgZW5kID0g
dGhpcy5ub3coKTsKKyAgICBQZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAodGV4dCkgewor
ICAgICAgICBpZiAobG9nTGluZXMpCisgICAgICAgICAgICBsb2dMaW5lcy5wdXNoKHRleHQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2dJbkRvY3VtZW50KHRleHQpOworICAgIH0KIAot
ICAgIGlmIChyZXR1cm5WYWx1ZSAtIDAgPT09IHJldHVyblZhbHVlKSB7Ci0gICAgICAgIGlmIChy
ZXR1cm5WYWx1ZSA8PSAwKQotICAgICAgICAgICAgdGhpcy5sb2coInJ1bkZ1bmN0aW9uIHJldHVy
bmVkIGEgbm9uLXBvc2l0aXZlIHZhbHVlOiAiICsgcmV0dXJuVmFsdWUpOwotICAgICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CisgICAgZnVuY3Rpb24gbG9nRmF0YWxFcnJvcih0ZXh0KSB7CisgICAg
ICAgIFBlcmZUZXN0UnVubmVyLmxvZyh0ZXh0KTsKKyAgICAgICAgZmluaXNoKCk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGVuZCAtIHN0YXJ0OwotfQorICAgIGZ1bmN0aW9uIHN0YXJ0KHRlc3QsIHJ1
bm5lcikgeworICAgICAgICBpZiAoIXRlc3QpIHsKKyAgICAgICAgICAgIGxvZ0ZhdGFsRXJyb3Io
J0dvdCBhIGJhZCB0ZXN0IG9iamVjdC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjdXJyZW50VGVzdCA9IHRlc3Q7CisgICAgICAgIHJ1bkNvdW50ID0gdGVzdC5y
dW5Db3VudCB8fCAyMDsKKyAgICAgICAgbG9nTGluZXMgPSB3aW5kb3cudGVzdFJ1bm5lciA/IFtd
IDogbnVsbDsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKCJSdW5uaW5nICIgKyBydW5Db3Vu
dCArICIgdGltZXMiKTsKKyAgICAgICAgc2NoZWR1bGVOZXh0UnVuKHJ1bm5lcik7CisgICAgfQog
Ci1QZXJmVGVzdFJ1bm5lci5pZ25vcmVXYXJtVXBBbmRMb2cgPSBmdW5jdGlvbiAocmVzdWx0KSB7
Ci0gICAgdGhpcy5fY29tcGxldGVkUnVucysrOworICAgIGZ1bmN0aW9uIHNjaGVkdWxlTmV4dFJ1
bihydW5uZXIpIHsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIuZ2MoKTsKKyAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICB2YXIgbWVhc3VyZWRWYWx1ZSA9IHJ1bm5lcigpOworICAgICAgICAgICAgfSBjYXRjaCAo
ZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgbG9nRmF0YWxFcnJvcignR290IGFuIGV4Y2Vw
dGlvbiB3aGlsZSBydW5uaW5nIHRlc3QucnVuIHdpdGggbmFtZT0nICsgZXhjZXB0aW9uLm5hbWUg
KyAnLCBtZXNzYWdlPScgKyBleGNlcHRpb24ubWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0ZWRSdW5zKys7CisKKyAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWdub3JlV2FybVVwQW5kTG9nKG1lYXN1
cmVkVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICAgICAgbG9nRmF0YWxFcnJvcignR290IGFuIGV4Y2VwdGlvbiB3aGlsZSBsb2dnaW5nIHRoZSBy
ZXN1bHQgd2l0aCBuYW1lPScgKyBleGNlcHRpb24ubmFtZSArICcsIG1lc3NhZ2U9JyArIGV4Y2Vw
dGlvbi5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChjb21wbGV0ZWRSdW5zIDwgcnVuQ291bnQpCisgICAgICAgICAgICAg
ICAgc2NoZWR1bGVOZXh0UnVuKHJ1bm5lcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZmluaXNoKCk7CisgICAgICAgIH0sIDApOworICAgIH0KIAotICAgIHZhciBsYWJlbGVk
UmVzdWx0ID0gcmVzdWx0ICsgIiAiICsgdGhpcy51bml0OwotICAgIGlmICh0aGlzLl9jb21wbGV0
ZWRSdW5zIDw9IDApCi0gICAgICAgIHRoaXMubG9nKCJJZ25vcmluZyB3YXJtLXVwIHJ1biAoIiAr
IGxhYmVsZWRSZXN1bHQgKyAiKSIpOwotICAgIGVsc2UgewotICAgICAgICB0aGlzLl9yZXN1bHRz
LnB1c2gocmVzdWx0KTsKLSAgICAgICAgdGhpcy5zdG9yZUhlYXBSZXN1bHRzKCk7Ci0gICAgICAg
IHRoaXMubG9nKGxhYmVsZWRSZXN1bHQpOworICAgIGZ1bmN0aW9uIGlnbm9yZVdhcm1VcEFuZExv
ZyhtZWFzdXJlZFZhbHVlKSB7CisgICAgICAgIHZhciBsYWJlbGVkUmVzdWx0ID0gbWVhc3VyZWRW
YWx1ZSArICIgIiArIFBlcmZUZXN0UnVubmVyLnVuaXQ7CisgICAgICAgIGlmIChjb21wbGV0ZWRS
dW5zIDw9IDApCisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coIklnbm9yaW5nIHdhcm0t
dXAgcnVuICgiICsgbGFiZWxlZFJlc3VsdCArICIpIik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgcmVzdWx0cy5wdXNoKG1lYXN1cmVkVmFsdWUpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBqc0hlYXBSZXN1bHRzLnB1c2goUGVyZlRl
c3RSdW5uZXIuZ2V0VXNlZEpTSGVhcCgpKTsKKyAgICAgICAgICAgICAgICBtYWxsb2NIZWFwUmVz
dWx0cy5wdXNoKFBlcmZUZXN0UnVubmVyLmdldFVzZWRNYWxsb2NIZWFwKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKGxhYmVsZWRSZXN1bHQpOworICAg
ICAgICB9CiAgICAgfQotfQogCi1QZXJmVGVzdFJ1bm5lci5fc3RhcnQgPSBmdW5jdGlvbih0ZXN0
KSB7Ci0gICAgdGhpcy5fZGVzY3JpcHRpb24gPSB0ZXN0LmRlc2NyaXB0aW9uIHx8ICIiOwotICAg
IHRoaXMuX2NvbXBsZXRlZFJ1bnMgPSAtMTsKLSAgICB0aGlzLl9jYWxsc1Blckl0ZXJhdGlvbiA9
IDE7Ci0gICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXN0LmRlc2NyaXB0aW9uKQorICAg
ICAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZygiRGVzY3JpcHRpb246ICIgKyBjdXJyZW50
VGVzdC5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2dTdGF0aXN0
aWNzKHJlc3VsdHMsIFBlcmZUZXN0UnVubmVyLnVuaXQsICJUaW1lOiIpOworICAgICAgICAgICAg
aWYgKGpzSGVhcFJlc3VsdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgUGVyZlRlc3RSdW5u
ZXIubG9nU3RhdGlzdGljcyhqc0hlYXBSZXN1bHRzLCAiYnl0ZXMiLCAiSlMgSGVhcDoiKTsKKyAg
ICAgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2dTdGF0aXN0aWNzKG1hbGxvY0hlYXBSZXN1
bHRzLCAiYnl0ZXMiLCAiTWFsbG9jOiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGxvZ0xpbmVzKQorICAgICAgICAgICAgICAgIGxvZ0xpbmVzLmZvckVhY2gobG9nSW5Eb2N1bWVu
dCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFRlc3QuZG9uZSkKKyAgICAgICAgICAgICAgICBj
dXJyZW50VGVzdC5kb25lKCk7CisgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgbG9nSW5Eb2N1bWVudCgnR290IGFuIGV4Y2VwdGlvbiB3aGlsZSBmaW5hbGl6aW5nIHRo
ZSB0ZXN0IHdpdGggbmFtZT0nICsgZXhjZXB0aW9uLm5hbWUgKyAnLCBtZXNzYWdlPScgKyBleGNl
cHRpb24ubWVzc2FnZSk7CisgICAgICAgIH0KIAotICAgIHRoaXMuX3Jlc3VsdHMgPSBbXTsKLSAg
ICB0aGlzLl9qc0hlYXBSZXN1bHRzID0gW107Ci0gICAgdGhpcy5fbWFsbG9jSGVhcFJlc3VsdHMg
PSBbXTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQogCi0gICAgdGhpcy5fbG9nTGluZXMgPSB3aW5kb3cu
dGVzdFJ1bm5lciA/IFtdIDogbnVsbDsKLSAgICB0aGlzLmxvZygiUnVubmluZyAiICsgdGhpcy5f
cnVuQ291bnQgKyAiIHRpbWVzIik7Ci0gICAgdGhpcy5fc2NoZWR1bGVOZXh0TWVhc3VyZW1lbnRP
ck5vdGlmeURvbmUoKTsKLX0KKyAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlVGltZSA9IGZ1bmN0
aW9uICh0ZXN0KSB7CisgICAgICAgIFBlcmZUZXN0UnVubmVyLnVuaXQgPSAnbXMnOworICAgICAg
ICBzdGFydCh0ZXN0LCBtZWFzdXJlVGltZU9uY2UpOworICAgIH0KIAotUGVyZlRlc3RSdW5uZXIu
bWVhc3VyZVRpbWUgPSBmdW5jdGlvbiAodGVzdCkgewotICAgIHRoaXMuX3J1bkNvdW50ID0gdGVz
dC5ydW5Db3VudCB8fCAyMDsKLSAgICB0aGlzLnVuaXQgPSAnbXMnOwotICAgIHRoaXMuX3J1bm5l
ciA9IHRoaXMuX21lYXN1cmVUaW1lT25jZTsKLSAgICB0aGlzLl9zdGFydCh0ZXN0KTsKLX0KKyAg
ICBmdW5jdGlvbiBtZWFzdXJlVGltZU9uY2UoKSB7CisgICAgICAgIHZhciBzdGFydCA9IFBlcmZU
ZXN0UnVubmVyLm5vdygpOworICAgICAgICB2YXIgcmV0dXJuVmFsdWUgPSBjdXJyZW50VGVzdC5y
dW4oKTsKKyAgICAgICAgdmFyIGVuZCA9IFBlcmZUZXN0UnVubmVyLm5vdygpOworCisgICAgICAg
IGlmIChyZXR1cm5WYWx1ZSAtIDAgPT09IHJldHVyblZhbHVlKSB7CisgICAgICAgICAgICBpZiAo
cmV0dXJuVmFsdWUgPD0gMCkKKyAgICAgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coInJ1
bkZ1bmN0aW9uIHJldHVybmVkIGEgbm9uLXBvc2l0aXZlIHZhbHVlOiAiICsgcmV0dXJuVmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgICAgICB9CiAKLVBlcmZUZXN0
UnVubmVyLnJ1blBlclNlY29uZCA9IGZ1bmN0aW9uICh0ZXN0KSB7Ci0gICAgdGhpcy5fcnVuQ291
bnQgPSB0ZXN0LnJ1bkNvdW50IHx8IDIwOyAvLyBPbmx5IHVzZWQgYnkgdGVzdHMgaW4gZmFzdC9o
YXJuZXNzL3BlcmZ0ZXN0cwotICAgIHRoaXMudW5pdCA9ICdydW5zL3MnOwotICAgIHRoaXMuX3J1
bm5lciA9IHRoaXMuX21lYXN1cmVSdW5zUGVyU2Vjb25kT25jZTsKLSAgICB0aGlzLl9zdGFydCh0
ZXN0KTsKLX0KKyAgICAgICAgcmV0dXJuIGVuZCAtIHN0YXJ0OworICAgIH0KIAotUGVyZlRlc3RS
dW5uZXIuX21lYXN1cmVSdW5zUGVyU2Vjb25kT25jZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIg
dGltZVRvUnVuID0gdGhpcy5fdGVzdC50aW1lVG9SdW4gfHwgNzUwOwotICAgIHZhciB0b3RhbFRp
bWUgPSAwOwotICAgIHZhciBpID0gMDsKLSAgICB2YXIgY2FsbHNQZXJJdGVyYXRpb24gPSB0aGlz
Ll9jYWxsc1Blckl0ZXJhdGlvbjsKKyAgICBQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQgPSBm
dW5jdGlvbiAodGVzdCkgeworICAgICAgICBQZXJmVGVzdFJ1bm5lci51bml0ID0gJ3J1bnMvcyc7
CisgICAgICAgIHN0YXJ0KHRlc3QsIG1lYXN1cmVSdW5zUGVyU2Vjb25kT25jZSk7CisgICAgfQog
Ci0gICAgaWYgKHRoaXMuX3Rlc3Quc2V0dXApCi0gICAgICAgIHRoaXMuX3Rlc3Quc2V0dXAoKTsK
KyAgICBmdW5jdGlvbiBtZWFzdXJlUnVuc1BlclNlY29uZE9uY2UoKSB7CisgICAgICAgIHZhciB0
aW1lVG9SdW4gPSA3NTA7CisgICAgICAgIHZhciB0b3RhbFRpbWUgPSAwOworICAgICAgICB2YXIg
bnVtYmVyT2ZSdW5zID0gMDsKKworICAgICAgICBpZiAoY3VycmVudFRlc3Quc2V0dXApCisgICAg
ICAgICAgICBjdXJyZW50VGVzdC5zZXR1cCgpOworCisgICAgICAgIHdoaWxlICh0b3RhbFRpbWUg
PCB0aW1lVG9SdW4pIHsKKyAgICAgICAgICAgIHRvdGFsVGltZSArPSBjYWxsUnVuQW5kTWVhc3Vy
ZVRpbWUoY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICAgICAgbnVtYmVyT2ZSdW5zICs9IGNh
bGxzUGVySXRlcmF0aW9uOworICAgICAgICAgICAgaWYgKGNvbXBsZXRlZFJ1bnMgPCAwICYmIHRv
dGFsVGltZSA8IDEwMCkKKyAgICAgICAgICAgICAgICBjYWxsc1Blckl0ZXJhdGlvbiA9IE1hdGgu
bWF4KDEwLCAyICogY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICB9CiAKLSAgICB3aGlsZSAo
dG90YWxUaW1lIDwgdGltZVRvUnVuKSB7Ci0gICAgICAgIHRvdGFsVGltZSArPSB0aGlzLl9wZXJT
ZWNvbmRSdW5uZXJJdGVyYXRvcihjYWxsc1Blckl0ZXJhdGlvbik7Ci0gICAgICAgIGkgKz0gY2Fs
bHNQZXJJdGVyYXRpb247Ci0gICAgICAgIGlmICh0aGlzLl9jb21wbGV0ZWRSdW5zIDwgMCAmJiB0
b3RhbFRpbWUgPCAxMDApCi0gICAgICAgICAgICBjYWxsc1Blckl0ZXJhdGlvbiA9IE1hdGgubWF4
KDEwLCAyICogY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gbnVtYmVyT2ZSdW5z
ICogMTAwMCAvIHRvdGFsVGltZTsKICAgICB9Ci0gICAgdGhpcy5fY2FsbHNQZXJJdGVyYXRpb24g
PSBjYWxsc1Blckl0ZXJhdGlvbjsKIAotICAgIHJldHVybiBpICogMTAwMCAvIHRvdGFsVGltZTsK
LX0KKyAgICBmdW5jdGlvbiBjYWxsUnVuQW5kTWVhc3VyZVRpbWUoY2FsbHNQZXJJdGVyYXRpb24p
IHsKKyAgICAgICAgdmFyIHN0YXJ0VGltZSA9IFBlcmZUZXN0UnVubmVyLm5vdygpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxzUGVySXRlcmF0aW9uOyBpKyspCisgICAgICAgICAg
ICBjdXJyZW50VGVzdC5ydW4oKTsKKyAgICAgICAgcmV0dXJuIFBlcmZUZXN0UnVubmVyLm5vdygp
IC0gc3RhcnRUaW1lOworICAgIH0KIAotUGVyZlRlc3RSdW5uZXIuX3BlclNlY29uZFJ1bm5lckl0
ZXJhdG9yID0gZnVuY3Rpb24gKGNhbGxzUGVySXRlcmF0aW9uKSB7Ci0gICAgdmFyIHN0YXJ0VGlt
ZSA9IHRoaXMubm93KCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsc1Blckl0ZXJhdGlv
bjsgaSsrKQotICAgICAgICB0aGlzLl90ZXN0LnJ1bi5jYWxsKHdpbmRvdyk7Ci0gICAgcmV0dXJu
IHRoaXMubm93KCkgLSBzdGFydFRpbWU7Ci19Cit9KSgpOwogCiBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEyOTk1MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA5LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEVuY2Fwc3VsYXRlIHByaXZhdGUgcHJvcGVydGllcyBpbiBQZXJmVGVzdFJ1bm5l
ciBiZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3ODMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3ZlcnJpZGUgUGVyZlRlc3RSdW5uZXIubm93IGluc3RlYWQgb2YgUGVyZlRlc3RSdW5uZXIuX3Bl
clNlY29uZFJ1bm5lckl0ZXJhdG9yIHNpbmNlIHRoZSBsYXR0ZXIKKyAgICAgICAgaXMgbm8gbG9u
Z2VyIGV4cG9zZWQuCisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVy
LXNlY29uZC1pdGVyYXRpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2hhcm5lc3Mv
cGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1pdGVyYXRpb25zLmh0bWw6IEluY3JlYXNlIHRoZSBy
dW50aW1lIG9mIHRoZSBsYXN0IDQgcnVucworICAgICAgICBzaW5jZSB0ZXN0LnRpbWVUb1J1biBp
cyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IFBlcmZUZXN0UnVubmVyLgorICAgICAgICAqIGZhc3Qv
aGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBlci1zZWNvbmQtbG9nLmh0bWw6IEF2
b2lkIHVzZSBudW1iZXJzIHRoYXQgY29udGFpbiBwcmltZXMgb3RoZXIKKyAgICAgICAgdGhhbiAy
IGFuZCA1IGFzIHJ1bnMgYmVjYXVzZSB0aGV5IGNhdXNlIHJvdWRpbmcgZXJyb3JzIGluIFBlcmZU
ZXN0UnVubmVyLm1lYXN1cmVSdW5zUGVyU2Vjb25kT25jZQorICAgICAgICBhbmQgbWFrZSB0aGUg
b3V0cHV0IGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBmbG9hdGluZyBudW1iZXIgaW1wbGVt
ZW50YXRpb24uCisKIDIwMTItMDktMjggIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgY2FudmFzIHRvIHNldCBvZiBlbGVtZW50cyB0aGF0IGRv
IG5vdCBhbGxvdyBzdHlsZSBzaGFyaW5nIGluIG9yZGVyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1pdGVyYXRpb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMt
cGVyLXNlY29uZC1pdGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTI5OTIyKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBlci1zZWNvbmQtaXRlcmF0
aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBAIFRoaXMgdGVz
dCB2ZXJpZmllcyBQZXJmVGVzdFJ1bm5lci5ydW5QZXIKIAogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCi1SZXR1cm5pbmcgdGltZXM6IFswLCAxMCwgMzAsIDYwLCAxMDAsIDEwMCwgMTAwLCAx
MDAsIDUwMF0KK1JldHVybmluZyB0aW1lczogWzAsIDEwLCAzMCwgNjAsIDIwMCwgMjAwLCAyMDAs
IDIwMCwgNzUwXQogUEFTUyBjYWxsc0luSXRlcmF0aW9uc1swXSBpcyAxCiBQQVNTIGNhbGxzSW5J
dGVyYXRpb25zWzFdIGlzIDEwCiBQQVNTIGNhbGxzSW5JdGVyYXRpb25zWzFdICsgNSA8IGNhbGxz
SW5JdGVyYXRpb25zWzJdIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9w
ZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWl0ZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1pdGVyYXRp
b25zLmh0bWwJKHJldmlzaW9uIDEyOTkyMikKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9w
ZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWl0ZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTAsMjMgKzEwLDMyIEBACiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIFBlcmZU
ZXN0UnVubmVyLnJ1blBlclNlY29uZCgpIGNhbGxzIHJ1bkZ1bmN0aW9uIGFzIG1hbnkgdGltZXMg
YXMgZXhwZWN0ZWQuIik7CiAKIHZhciBpdGVyYXRpb24gPSAwOwotCit2YXIgY3VycmVudFRpbWUg
PSAxMDA7CiB2YXIgY2FsbHNJbkl0ZXJhdGlvbnMgPSBbXTsKLXZhciB0aW1lc0luSXRlcmF0aW9u
cyA9IFswLCAxMCwgMzAsIDYwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDUwMF07Cit2YXIgdGltZXNJ
bkl0ZXJhdGlvbnMgPSBbMCwgMTAsIDMwLCA2MCwgMjAwLCAyMDAsIDIwMCwgMjAwLCA3NTBdOwog
dmFyIGxvZ0xpbmVzID0gW107CiAKLVBlcmZUZXN0UnVubmVyLmxvZyA9IGZ1bmN0aW9uIChsaW5l
KSB7IGxvZ0xpbmVzLnB1c2gobGluZSk7IH0KLVBlcmZUZXN0UnVubmVyLl9wZXJTZWNvbmRSdW5u
ZXJJdGVyYXRvciA9IGZ1bmN0aW9uIChjYWxsc1Blckl0ZXJhdGlvbikgewotICAgIGNhbGxzSW5J
dGVyYXRpb25zW2l0ZXJhdGlvbl0gPSBjYWxsc1Blckl0ZXJhdGlvbjsKLSAgICByZXR1cm4gdGlt
ZXNJbkl0ZXJhdGlvbnNbaXRlcmF0aW9uKytdOworUGVyZlRlc3RSdW5uZXIubm93ID0gZnVuY3Rp
b24gKCkgeworICAgIGl0ZXJhdGlvbisrOworICAgIGlmIChpdGVyYXRpb24gJSAyID09IDApCisg
ICAgICAgIGN1cnJlbnRUaW1lICs9IHRpbWVzSW5JdGVyYXRpb25zLnNoaWZ0KCk7CisgICAgcmV0
dXJuIGN1cnJlbnRUaW1lOwogfQogCitQZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAobGlu
ZSkgeyBsb2dMaW5lcy5wdXNoKGxpbmUpOyB9CisKK3ZhciBvcmlnaW5hbFRpbWVzSW5JdGVyYXRp
b25zID0gdGltZXNJbkl0ZXJhdGlvbnMuc2xpY2UoKTsKKwogUGVyZlRlc3RSdW5uZXIucnVuUGVy
U2Vjb25kKHsKLSAgICBydW46IGZ1bmN0aW9uICgpIHsgfSwKKyAgICBydW46IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgdmFyIGkgPSBNYXRoLmZsb29yKGl0ZXJhdGlvbiAvIDIpOworICAgICAgICBp
ZiAoY2FsbHNJbkl0ZXJhdGlvbnNbaV0gPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgY2FsbHNJ
bkl0ZXJhdGlvbnNbaV0gPSAwOworICAgICAgICBjYWxsc0luSXRlcmF0aW9uc1tpXSsrOworICAg
IH0sCiAgICAgcnVuQ291bnQ6IDEsCi0gICAgdGltZVRvUnVuOiA1MDAsCiAgICAgZG9uZTogZnVu
Y3Rpb24gKCkgewotICAgICAgICBkZWJ1ZygiUmV0dXJuaW5nIHRpbWVzOiBbIiArIHRpbWVzSW5J
dGVyYXRpb25zLmpvaW4oIiwgIikgKyAiXSIpOworICAgICAgICBkZWJ1ZygiUmV0dXJuaW5nIHRp
bWVzOiBbIiArIG9yaWdpbmFsVGltZXNJbkl0ZXJhdGlvbnMuam9pbigiLCAiKSArICJdIik7CiAg
ICAgICAgIHNob3VsZEV2YWx1YXRlVG8oImNhbGxzSW5JdGVyYXRpb25zWzBdIiwgMSk7CiAgICAg
ICAgIHNob3VsZEV2YWx1YXRlVG8oImNhbGxzSW5JdGVyYXRpb25zWzFdIiwgMTApOwogICAgICAg
ICBzaG91bGRCZVRydWUoImNhbGxzSW5JdGVyYXRpb25zWzFdICsgNSA8IGNhbGxzSW5JdGVyYXRp
b25zWzJdIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMt
cGVyLXNlY29uZC1sb2ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEyOTkyMikKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcnVu
cy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTggKzEs
MTggQEAKIFRoaXMgdGVzdCB2ZXJpZmllcyBQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQoKSBv
dXRwdXRzIGxvZyBhcyBleHBlY3RlZC4KIAogUnVubmluZyA1IHRpbWVzCi1JZ25vcmluZyB3YXJt
LXVwIHJ1biAoMCBydW5zL3MpCi0xIHJ1bnMvcworSWdub3Jpbmcgd2FybS11cCBydW4gKDEgcnVu
cy9zKQogMiBydW5zL3MKLTMgcnVucy9zCiA0IHJ1bnMvcwogNSBydW5zL3MKKzggcnVucy9zCisx
MCBydW5zL3MKIAogVGltZToKLXZhbHVlcyAxLCAyLCAzLCA0LCA1IHJ1bnMvcwotYXZnIDMgcnVu
cy9zCi1tZWRpYW4gMyBydW5zL3MKLXN0ZGV2IDEuNDEgcnVucy9zCi1taW4gMSBydW5zL3MKLW1h
eCA1IHJ1bnMvcwordmFsdWVzIDIsIDQsIDUsIDgsIDEwIHJ1bnMvcworYXZnIDUuOCBydW5zL3MK
K21lZGlhbiA1IHJ1bnMvcworc3RkZXYgMi44NiBydW5zL3MKK21pbiAyIHJ1bnMvcworbWF4IDEw
IHJ1bnMvcwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMt
cGVyLXNlY29uZC1sb2cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5l
c3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1sb2cuaHRtbAkocmV2aXNpb24gMTI5OTIyKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBlci1zZWNvbmQtbG9n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDI4ICsxMCwzNyBAQCB2YXIgbG9nTGluZXMgPSBb
XTsKIHZhciBpbml0aWFsID0gdHJ1ZTsKIHZhciBydW5zID0gMDsKIAotUGVyZlRlc3RSdW5uZXIu
X3BlclNlY29uZFJ1bm5lckl0ZXJhdG9yID0gZnVuY3Rpb24gKGNhbGxzUGVySXRlcmF0aW9uKSB7
Ci0gICAgcmV0dXJuIDEwMDAgLyBydW5zOwordmFyIGl0ZXJhdGlvbiA9IDA7Cit2YXIgY3VycmVu
dFRpbWUgPSAwOworCitQZXJmVGVzdFJ1bm5lci5ub3cgPSBmdW5jdGlvbiAoKSB7CisgICAgaXRl
cmF0aW9uKys7CisgICAgaWYgKGl0ZXJhdGlvbiAlIDIgPT0gMCkKKyAgICAgICAgY3VycmVudFRp
bWUgKz0gMTAwMCAvIHJ1bnM7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lOwogfQogCiBQZXJmVGVz
dFJ1bm5lci5zdG9yZUhlYXBSZXN1bHRzID0gZnVuY3Rpb24gKCkgeyB9CiAKIHZhciBwcmludFN0
YXRpc3RpY3MgPSBQZXJmVGVzdFJ1bm5lci5wcmludFN0YXRpc3RpY3M7Ci1QZXJmVGVzdFJ1bm5l
ci5wcmludFN0YXRpc3RpY3MgPSBmdW5jdGlvbiAoc3RhdGlzdGljcykgeworUGVyZlRlc3RSdW5u
ZXIucHJpbnRTdGF0aXN0aWNzID0gZnVuY3Rpb24gKHN0YXRpc3RpY3MsIHRpdGxlKSB7CisgICAg
aWYgKHN0YXRpc3RpY3MudW5pdCA9PSAnYnl0ZXMnKQorICAgICAgICByZXR1cm47CiAgICAgc3Rh
dGlzdGljcy5zdGRldiA9IHN0YXRpc3RpY3Muc3RkZXYudG9QcmVjaXNpb24oMyk7Ci0gICAgcmV0
dXJuIHByaW50U3RhdGlzdGljcy5jYWxsKFBlcmZUZXN0UnVubmVyLCBzdGF0aXN0aWNzLCAnVGlt
ZTonKTsKKyAgICByZXR1cm4gcHJpbnRTdGF0aXN0aWNzLmNhbGwoUGVyZlRlc3RSdW5uZXIsIHN0
YXRpc3RpY3MsIHRpdGxlKTsKIH0KIAogUGVyZlRlc3RSdW5uZXIucnVuUGVyU2Vjb25kKHsKICAg
ICBzZXR1cDogZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoaW5pdGlhbCkKLSAgICAgICAgICAg
IGluaXRpYWwgPSBmYWxzZTsKLSAgICAgICAgZWxzZQorICAgICAgICBydW5zKys7CisgICAgICAg
IC8vIEF2b2lkIDMsIDYsIDcsIDkuCisgICAgICAgIGlmIChydW5zID09IDYpCisgICAgICAgICAg
ICBydW5zICs9IDI7CisgICAgICAgIGVsc2UgaWYgKCEocnVucyAlIDMpKQogICAgICAgICAgICAg
cnVucysrOwogICAgIH0sCiAgICAgcnVuOiBmdW5jdGlvbiAoKSB7IH0sCiAgICAgcnVuQ291bnQ6
IDUsCi0gICAgdGltZVRvUnVuOiA1MDAsCiB9KTsKIAogPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="178615"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>