<?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>68234</bug_id>
          
          <creation_ts>2011-09-16 01:29:21 -0700</creation_ts>
          <short_desc>Web Inspector: UI performance tests are required.</short_desc>
          <delta_ts>2011-09-16 09:25:49 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>68242</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>468386</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-16 01:29:21 -0700</bug_when>
    <thetext>The idea is to create a set of tests which cover the frequently used UI actions and print the average time of these actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468388</commentid>
    <comment_count>1</comment_count>
      <attachid>107624</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-16 01:37:47 -0700</bug_when>
    <thetext>Created attachment 107624
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468395</commentid>
    <comment_count>2</comment_count>
      <attachid>107624</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-16 02:17:09 -0700</bug_when>
    <thetext>Comment on attachment 107624
[patch] initial version

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

&gt; LayoutTests/inspector/performance/show-panel-network.html:19
&gt; +    RuntimeAgent.evaluate(&quot;makeXHRRequests(30)&quot;);

You should do InspectorTest.evaluateInPage(&quot;...&quot;, callback)

&gt; LayoutTests/inspector/performance/show-panel-network.html:21
&gt; +    var Test = function() {

I don&apos;t think declarative notation will be flexible enough for this kind of tests. I&apos;d suggest to stick with imperative form:

InspectorTest.runPerformanceTest({
    setUp: function(done)
    {
        WebInspector.showPanel(&quot;audits&quot;);
        done();
    },

    run: function(done)
    {
        WebInspector.showPanel(&quot;network&quot;);
        WebInspector.panels.network.refresh();
        done();
    }
}, &quot;show-network-panel&quot;, 1000);

Or

InspectorTest.runPerformanceTest({
    run: function(timer, done)
    {
        WebInspector.showPanel(&quot;audits&quot;);

        var timer = startTimer(&quot;show-network-panel&quot;);
        WebInspector.showPanel(&quot;network&quot;);
        WebInspector.panels.network.refresh();
        timer.endTimer();

        done();
    }
}, 1000);

&gt; LayoutTests/inspector/performance/show-panel-network.html:23
&gt; +        this.object = WebInspector;

This is too generic.

&gt; LayoutTests/inspector/performance/show-panel-network.html:27
&gt; +            WebInspector.showPanel(&quot;console&quot;);

console is animating, choose audits over it.

&gt; LayoutTests/platform/chromium/test_expectations.txt:582
&gt; +WONTFIX SKIP : inspector/performance = TEXT TIMEOUT

If you put the test to under inspector/performance/resources, they won&apos;t run automatically.

&gt; Source/WebCore/inspector/front-end/ElementsPanel.js:300
&gt; +        WebInspector.setCurrentPanel(this);

I&apos;d suggest that you land this change separately + convert currentPanel getter to a function (currentPanel()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468449</commentid>
    <comment_count>3</comment_count>
      <attachid>107641</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-16 05:51:49 -0700</bug_when>
    <thetext>Created attachment 107641
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468459</commentid>
    <comment_count>4</comment_count>
      <attachid>107641</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-16 06:55:48 -0700</bug_when>
    <thetext>Comment on attachment 107641
[patch] initial version

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

&gt; LayoutTests/inspector/performance/resources/show-panel-network.html:29
&gt; +            timer.finish(timerCookie);

Either you should use cookie to refer to timer or you should make finish mark test as completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468464</commentid>
    <comment_count>5</comment_count>
      <attachid>107645</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-16 07:10:56 -0700</bug_when>
    <thetext>Created attachment 107645
[patch] third version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468509</commentid>
    <comment_count>6</comment_count>
      <attachid>107645</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-16 08:48:43 -0700</bug_when>
    <thetext>Comment on attachment 107645
[patch] third version

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

&gt; LayoutTests/inspector/performance/resources/performance-test.js:10
&gt; +        this._testStartTime = new Date().valueOf();

no need for valueOf

&gt; LayoutTests/inspector/performance/resources/performance-test.js:29
&gt; +            var time = new Date().valueOf();

ditto

&gt; LayoutTests/inspector/performance/resources/performance-test.js:44
&gt; +                setTimeout(this._runTest.bind(this), 0);

You should queue execution instead.

&gt; LayoutTests/inspector/performance/resources/performance-test.js:59
&gt; +                samples.sort( function(a, b) { return a - b; });

erroneous &quot; &quot; between ( and function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468533</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-16 09:25:49 -0700</bug_when>
    <thetext>Committed r95296: &lt;http://trac.webkit.org/changeset/95296&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107624</attachid>
            <date>2011-09-16 01:37:47 -0700</date>
            <delta_ts>2011-09-16 05:51:49 -0700</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18932</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZWUyNGM2Li4zYmRjYTdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDkt
MTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFVJIHBlcmZvcm1hbmNlIHRlc3RzIGFyZSByZXF1aXJlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM0CisKKyAgICAgICAg
VGhlIGlkZWEgaXMgdG8gY3JlYXRlIGEgc2V0IG9mIHRlc3RzIHdoaWNoIGNvdmVyIGZyZXF1ZW50
bHkgdXNlZCBVSSBhY3Rpb25zCisgICAgICAgIGFuZCBwcmludCB0aGUgYXZlcmFnZSB0aW1lIG9m
IHRoZXNlIGFjdGlvbnMuCisgICAgICAgIFRoZXJlIGFyZSB0d28gcGlsb3QgdGVzdHMuIFRoZSBj
b21tb24gcGFydCB3YXMgZXh0cmFjdGVkIGludG8gVGltZVRyYWNrZXIgaGVscGVyLgorICAgICAg
ICBBbGwgdGhlIHRlc3RzIG1hcmtlZCBhcyBTS0lQIGJ5IGRlZmF1bHQganVzdCBiZWNhdXNlIHRo
ZXkgcHJvZHVjZSB1bnN0YWJsZSBvdXRwdXQgYnkgZGVzaWduLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25l
dHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9wZXJmb3JtYW5jZS9zaG93LXBhbmVsLW5ldHdvcmsuaHRtbDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3RpbWUtdHJhY2tlci5qczogQWRkZWQuCisgICAgICAgIChp
bml0aWFsaXplX1RpbWVUcmFja2VyLlRpbWVUcmFja2VyKToKKyAgICAgICAgKGluaXRpYWxpemVf
VGltZVRyYWNrZXIuVGltZVRyYWNrZXIucHJvdG90eXBlLmRlYnVnTG9nKToKKyAgICAgICAgKGlu
aXRpYWxpemVfVGltZVRyYWNrZXIuVGltZVRyYWNrZXIucHJvdG90eXBlLmluZm9Mb2cpOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5UaW1lVHJhY2tlci5wcm90b3R5cGUuZXJyb3JM
b2cpOgorICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5UaW1lVHJhY2tlci5wcm90b3R5
cGUucnVuKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuVGltZVRyYWNrZXIucHJv
dG90eXBlLl9hdHRhY2gpOgorICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5UaW1lVHJh
Y2tlci5wcm90b3R5cGUuX2RldGFjaCk6CisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2Vy
LlRpbWVUcmFja2VyLnByb3RvdHlwZS5fdGltZVRyYWNrZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
dGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy90ZXN0X2V4cGVj
dGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDktMTUgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBBZGRpbmcgbmV3IHRlc3QgZXhwZWN0YXRpb25zLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBw
ZW5kLTMwLXJlcXVlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
bmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41OTM2NWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCAr
MSw0OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idGltZS10
cmFja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1ZXN0
cyhjb3VudCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAg
ICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbigiR0VU
IiwgZG9jdW1lbnQudXJsLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsi
KTsKKworICAgIHZhciBUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMudGVzdE5hbWUg
PSAibmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMiOworICAgICAgICB0aGlzLmZ1bmN0aW9uTmFt
ZSA9ICJyZWZyZXNoIjsKKyAgICAgICAgdGhpcy5vYmplY3QgPSBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3OworCisgICAgICAgIHRoaXMuc2V0VXAgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xv
Z1ZpZXcuX3Jlc2V0KCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnJ1biA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJtYWtlWEhSUmVxdWVzdHMo
MzApIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgdGltZVRyYWNrZXIgPSBuZXcgVGlt
ZVRyYWNrZXIobmV3IFRlc3QoKSwgVGltZVRyYWNrZXIuZXJyb3JMZXZlbCk7CisgICAgc2V0VGlt
ZW91dCh0aW1lVHJhY2tlci5ydW4uYmluZCh0aW1lVHJhY2tlciksIDApOworfQorCitpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgIG1ha2VYSFJSZXF1ZXN0cygzMCk7CisgICAgfSwgMzAwMCk7Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uvc2hvdy1w
YW5lbC1uZXR3b3JrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uvc2hv
dy1wYW5lbC1uZXR3b3JrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Mzc0M2VlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3Jt
YW5jZS9zaG93LXBhbmVsLW5ldHdvcmsuaHRtbApAQCAtMCwwICsxLDUwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ0aW1lLXRyYWNrZXIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbWFrZVhIUlJlcXVlc3RzKGNvdW50KQoreworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBkb2N1bWVudC51cmwsIHRy
dWUpOworICAgICAgICB4aHIuc2VuZCgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOworICAgIFJ1bnRpbWVBZ2Vu
dC5ldmFsdWF0ZSgibWFrZVhIUlJlcXVlc3RzKDMwKSIpOworCisgICAgdmFyIFRlc3QgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdGhpcy50ZXN0TmFtZSA9ICJzaG93LW5ldHdvcmstcGFuZWwiOwor
ICAgICAgICB0aGlzLm9iamVjdCA9IFdlYkluc3BlY3RvcjsKKyAgICAgICAgdGhpcy5mdW5jdGlv
bk5hbWUgPSAic2V0Q3VycmVudFBhbmVsIjsKKworICAgICAgICB0aGlzLnNldFVwID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJjb25zb2xlIik7Cisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLnJ1biA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOworICAgICAgICB9CisgICB9CisKKyAg
ICB2YXIgdGltZVRyYWNrZXIgPSBuZXcgVGltZVRyYWNrZXIobmV3IFRlc3QoKSwgVGltZVRyYWNr
ZXIuZXJyb3JMZXZlbCk7CisgICAgc2V0VGltZW91dCh0aW1lVHJhY2tlci5ydW4uYmluZCh0aW1l
VHJhY2tlciksIDApOworfQorCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIG1ha2VYSFJSZXF1ZXN0cyg3MDAp
OworICAgIH0sIDMwMDApOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3RpbWUtdHJhY2tlci5qcyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wZXJmb3JtYW5jZS90aW1lLXRyYWNrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmQ1Njc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wZXJmb3JtYW5jZS90aW1lLXRyYWNrZXIuanMKQEAgLTAsMCArMSwxMTEgQEAKK3ZhciBp
bml0aWFsaXplX1RpbWVUcmFja2VyID0gZnVuY3Rpb24oKSB7CisKKyAgICBUaW1lVHJhY2tlciA9
IGZ1bmN0aW9uKHRlc3QsIGxvZ0xldmVsLCBjb3VudCkKK3sKKyAgICB0aGlzLl9zYW1wbGVzID0g
W107CisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgdGhpcy5fY291bnQgPSBjb3VudCB8IDMw
OworICAgIHRoaXMuX2l0ZXJhdGlvbiA9IDA7CisgICAgdGhpcy5fbG9nTGV2ZWwgPSBsb2dMZXZl
bCB8IDA7Cit9CisKK1RpbWVUcmFja2VyLmVycm9yTGV2ZWwgPSAwOworVGltZVRyYWNrZXIuaW5m
b0xldmVsID0gMTsKK1RpbWVUcmFja2VyLmRlYnVnTGV2ZWwgPSAyOworCitUaW1lVHJhY2tlci5w
cm90b3R5cGUgPSB7CisgICAgZGVidWdMb2c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9sb2dMZXZlbCA8IFRpbWVUcmFja2VyLmRlYnVnTGV2ZWwpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
dW1lbnRzKTsKKyAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJncyk7CisgICAg
fSwKKworICAgIGluZm9Mb2c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9s
b2dMZXZlbCA8IFRpbWVUcmFja2VyLmluZm9MZXZlbCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwor
ICAgICAgICBjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLCBhcmdzKTsKKyAgICB9LAorCisgICAg
ZXJyb3JMb2c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKyAgICAgICAgY29uc29sZS5sb2cuYXBwbHko
Y29uc29sZSwgYXJncyk7CisgICAgfSwKKworICAgIHJ1bjogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX3J1bkZ1bmN0aW9uQ2FsbGVkKSB7CisgICAgICAgICAgICB0aGlzLmRl
YnVnTG9nKCJUaW1lVHJhY2tlci5ydW46IHJlY3Vyc2l2ZSBjYWxsLiBydW4gaXQgdmlhIHNldFRp
bWVvdXQuIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMucnVuLmJpbmQodGhpcyksIDAp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLl90ZXN0
LnNldFVwKSB7CisgICAgICAgICAgICB0aGlzLmRlYnVnTG9nKCJUaW1lVHJhY2tlci5ydW46IGNh
bGwgdGVzdC5zZXRVcC4iKTsKKyAgICAgICAgICAgIHRoaXMuX3Rlc3Quc2V0VXAoKTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9hdHRhY2goKTsKKyAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb25D
YWxsZWQgPSB0cnVlOworICAgICAgICB0aGlzLmRlYnVnTG9nKCJUaW1lVHJhY2tlci5ydW46IGNh
bGwgdGVzdC5ydW4iKTsKKyAgICAgICAgdGhpcy5fdGVzdC5ydW4oKTsKKyAgICAgICAgdGhpcy5f
cnVuRnVuY3Rpb25DYWxsZWQgPSBmYWxzZTsKKyAgICB9LAorCisgICAgX2F0dGFjaDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5kZWJ1Z0xvZygiVGltZVRyYWNrZXIuX2F0dGFjaCIp
OworICAgICAgICB0aGlzLl9vcmlnaW5hbEZ1bmN0aW9uID0gdGhpcy5fdGVzdC5vYmplY3RbdGhp
cy5fdGVzdC5mdW5jdGlvbk5hbWVdOworICAgICAgICB0aGlzLl90ZXN0Lm9iamVjdFt0aGlzLl90
ZXN0LmZ1bmN0aW9uTmFtZV0gPSB0aGlzLl90aW1lVHJhY2tlci5iaW5kKHRoaXMpOworICAgIH0s
CisKKyAgICBfZGV0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmRlYnVnTG9n
KCJUaW1lVHJhY2tlci5fZGV0YWNoIik7CisgICAgICAgIHRoaXMuX3Rlc3Qub2JqZWN0W3RoaXMu
X3Rlc3QuZnVuY3Rpb25OYW1lXSA9IHRoaXMuX29yaWdpbmFsRnVuY3Rpb247CisgICAgfSwKKwor
ICAgIF90aW1lVHJhY2tlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5kZWJ1Z0xv
ZygiVGltZVRyYWNrZXIuX3RpbWVUcmFja2VyIik7CisgICAgICAgIHRoaXMuX2RldGFjaCgpOwor
ICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7
CisgICAgICAgIHZhciB0ZXN0ID0gdGhpcy5fdGVzdDsKKworICAgICAgICB2YXIgc3RhcnRUaW1l
ID0gbmV3IERhdGUoKS52YWx1ZU9mKCk7CisgICAgICAgIHRoaXMuZGVidWdMb2coIlRpbWVUcmFj
a2VyOiBjYWxsIG9yaWdpbmFsRnVuY3Rpb24iKTsKKyAgICAgICAgdGVzdC5vYmplY3RbdGVzdC5m
dW5jdGlvbk5hbWVdLmFwcGx5KHRlc3Qub2JqZWN0LCBhcmdzKTsKKworICAgICAgICB2YXIgdGlt
ZURlbHRhID0gbmV3IERhdGUoKS52YWx1ZU9mKCkgLSBzdGFydFRpbWU7CisgICAgICAgIHRoaXMu
aW5mb0xvZygiVGltZVRyYWNrZXI6IHRpbWUoIiArIHRoaXMuX2l0ZXJhdGlvbiArICIpOiAiICsg
dGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fc2FtcGxlcy5wdXNoKHRpbWVEZWx0YSk7CisKKyAg
ICAgICAgaWYgKHRlc3QudGVhckRvd24pIHsKKyAgICAgICAgICAgIHRoaXMuZGVidWdMb2coIlRp
bWVUcmFja2VyOiBjYWxsIHRlYXJEb3duIik7CisgICAgICAgICAgICB0ZXN0LnRlYXJEb3duKCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoKyt0aGlzLl9pdGVyYXRpb24gPiB0aGlzLl9jb3Vu
dCkgeworICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZygiVGltZVRyYWNrZXI6IGNvbXBsZXRlIik7
CisgICAgICAgICAgICB0aGlzLl9kdW1wKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5ydW4oKTsKKyAgICB9LAorCisgICAgX2R1bXA6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBzdHJpcE5SZXN1bHRzID0gTWF0aC5mbG9vcih0aGlzLl9jb3VudCAvIDEwKTsKKyAg
ICAgICAgdGhpcy5fc2FtcGxlcy5zb3J0KCBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsg
fSk7CisgICAgICAgIHZhciBzdW0gPSAwOworICAgICAgICBmb3IgKHZhciBpID0gc3RyaXBOUmVz
dWx0czsgaSA8IHRoaXMuX3NhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0czsgKytpKQorICAg
ICAgICAgICAgc3VtICs9IHRoaXMuX3NhbXBsZXNbaV07CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCIqICIgKyB0aGlzLl90ZXN0LnRlc3ROYW1lICsgIjogIiArIE1hdGguZmxvb3Io
c3VtIC8gKHRoaXMuX3NhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0cyAqIDIpKSk7CisgICAg
fQorfQorCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggMjI0MzViYy4uYmRmZWE1OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNTc4LDYg
KzU3OCw5IEBAIEJVR1dLNTgwMTMgV0lOIDogZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5r
Lmh0bWwgPSBJTUFHRStURVhUCiAvLyBJbnNwZWN0b3IgdGVzdHMKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy8v
IEluc3BlY3RvciBVSSBwZXJmb3JtYW5jZSB0ZXN0cy4KK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rv
ci9wZXJmb3JtYW5jZSA9IFRFWFQgVElNRU9VVAorCiAvLyBUaGVyZSBpcyBubyBtZXNzYWdlIHBv
cnQgaGFybmVzcyB0byB0ZXN0IGV4dGVuc2lvbnMKIFdPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9l
eHRlbnNpb25zID0gRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0
ZW5zaW9ucy1oZWFkZXJzLmh0bWwgPSBGQUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA0N2YwNTQ0Li5hY2EwY2UzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTYsMyArNiw2
IEBAIEJVR1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvYWZ0ZXItYmxvY2stZG9lc250LWNyYXNo
Lmh0bWwgPSBDUkFTSAogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9hZnRlci10YWJsZS1k
b2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2dl
bmVyYXRlZC1hZnRlci1jb3VudGVyLWRvZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLNjcw
MDcgREVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1k
b2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICisKKy8vIEluc3BlY3RvciBVSSBwZXJmb3JtYW5jZSB0
ZXN0cy4KK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9wZXJmb3JtYW5jZSA9IFRFWFQgVElNRU9V
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggNGYxYWUyNy4uYjc4OThkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVz
dF9leHBlY3RhdGlvbnMudHh0CkBAIC0yOSwzICsyOSw2IEBAIEJVR1dLNjcwMDcgREVCVUcgOiBm
YXN0L3J1YnkvYWZ0ZXItYmxvY2stZG9lc250LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0s2NzAw
NyBERUJVRyA6IGZhc3QvcnVieS9hZnRlci10YWJsZS1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNI
CiBCVUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2dlbmVyYXRlZC1hZnRlci1jb3VudGVyLWRv
ZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvZ2Vu
ZXJhdGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNI
CisKKy8vIEluc3BlY3RvciBVSSBwZXJmb3JtYW5jZSB0ZXN0cy4KK1dPTlRGSVggU0tJUCA6IGlu
c3BlY3Rvci9wZXJmb3JtYW5jZSA9IFRFWFQgVElNRU9VVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDI0NTRmOTcuLmZkOTcyYmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI4LDMg
KzI4LDYgQEAgQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9nZW5lcmF0ZWQtYWZ0ZXItY291
bnRlci1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXSzY3MDA3IERFQlVHIDogZmFzdC9y
dWJ5L2dlbmVyYXRlZC1iZWZvcmUtYW5kLWFmdGVyLWNvdW50ZXItZG9lc250LWNyYXNoLmh0bWwg
PSBDUkFTSAogCiBCVUdfTE9JU0xPIDogaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLWFuaW1h
dGlvbi1mcmFtZS5odG1sID0gVEVYVAorCisvLyBJbnNwZWN0b3IgVUkgcGVyZm9ybWFuY2UgdGVz
dHMuCitXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvcGVyZm9ybWFuY2UgPSBURVhUIFRJTUVPVVQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi90ZXN0X2V4cGVjdGF0aW9ucy50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4
IGE5NjZmODUuLmJlYTYwN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dApAQCAtNiwzICs2LDYgQEAgQlVHV0s2NzAwNyBERUJVRyA6IGZhc3Qv
cnVieS9hZnRlci1ibG9jay1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXSzY3MDA3IERF
QlVHIDogZmFzdC9ydWJ5L2FmdGVyLXRhYmxlLWRvZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKIEJV
R1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWFmdGVyLWNvdW50ZXItZG9lc250
LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9nZW5lcmF0
ZWQtYmVmb3JlLWFuZC1hZnRlci1jb3VudGVyLWRvZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKKwor
Ly8gSW5zcGVjdG9yIFVJIHBlcmZvcm1hbmNlIHRlc3RzLgorV09OVEZJWCBTS0lQIDogaW5zcGVj
dG9yL3BlcmZvcm1hbmNlID0gVEVYVCBUSU1FT1VUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5ZjFhZi4uYWE3
ZTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTA5LTE2ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBV
SSBwZXJmb3JtYW5jZSB0ZXN0cyBhcmUgcmVxdWlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzNAorCisgICAgICAgIFRoZSBpZGVhIGlzIHRv
IGNyZWF0ZSBhIHNldCBvZiB0ZXN0cyB3aGljaCBjb3ZlciBmcmVxdWVudGx5IHVzZWQgVUkgYWN0
aW9ucworICAgICAgICBhbmQgcHJpbnQgdGhlIGF2ZXJhZ2UgdGltZSBvZiB0aGVzZSBhY3Rpb25z
LgorICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsIHNldHRlciB3YXMgcmVwbGFjZWQg
d2l0aCBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudFBhbmVsIGZ1bmN0aW9uLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvcGVy
Zm9ybWFuY2UvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMuaHRtbAorICAgICAgICAgICAgICAg
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwtbmV0d29yay5odG1sCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc3dpdGNoVG9BbmRGb2N1cyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvd0FuY2hvckxvY2F0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9v
bGJhci5jcmVhdGVQYW5lbFRvb2xiYXJJdGVtLm9uVG9vbGJhckl0ZW1DbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0pOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLl91cGRhdGVGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydFVzZXJJbml0aWF0ZWREZWJ1Z2dpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmluc3BlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9z
aG93QW5jaG9yTG9jYXRpb25JblBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fdG9vbGJh
ckl0ZW1DbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbEhpc3RvcnkucHJvdG90
eXBlLmdvQmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWxIaXN0b3J5LnByb3RvdHlw
ZS5nb0ZvcndhcmQpOgorCiAyMDExLTA5LTE1ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQnVpbGQgZml4OiBSZW1vdmUgdXNlIG9mIEdy
YXBoaWNzQ29udGV4dDo6c2V0SXNBY2NlbGVyYXRlZENvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA3MTE3ODNj
Li5lMGI2NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0yOTcsNyArMjk3LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgLy8gUmVzZXQgc2VhcmNoIHJl
c3RvcmUuCiAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLmNhbmNlbFNlYXJj
aCgpOwotICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsID0gdGhpczsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnNldEN1cnJlbnRQYW5lbCh0aGlzKTsKICAgICAgICAgdGhpcy5zZWxlY3RE
T01Ob2RlKG5vZGUsIHRydWUpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDg4NTEzM2QuLjc3M2Fk
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcwpAQCAtMzMwLDcgKzMzMCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIpIHsKICAgICAgICAgICAgIC8vIFNob3cgWEhScyBpbiB0
aGUgbmV0d29yayBwYW5lbCBvbmx5LgogICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yayAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuY2FuU2hvd0FuY2hvckxv
Y2F0aW9uKGFuY2hvcikpIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBh
bmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrOworICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrKTsKICAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuc2hvd0FuY2hvckxvY2F0
aW9uKGFuY2hvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4
IGI2OGIxNzAuLjQwZmRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC00NzMsNyArNDczLDcgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlRGVidWdn
ZXJCdXR0b25zKCk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9IHRoaXM7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXRDdXJyZW50UGFuZWwodGhpcyk7CiAKICAgICAgICAg
dGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnVwZGF0ZShjYWxsRnJhbWVzLCBkZXRhaWxzKTsK
ICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0g
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuc2VsZWN0ZWRDYWxsRnJhbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMKaW5kZXggMzEyMjNlMS4uOGFmNDA2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFy
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpA
QCAtMTUzLDcgKzE1Myw3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJh
ckl0ZW0gPSBmdW5jdGlvbihwYW5lbCkKICAgICBmdW5jdGlvbiBvblRvb2xiYXJJdGVtQ2xpY2tl
ZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudG9vbGJhci5fdXBkYXRlRHJvcGRvd25C
dXR0b25BbmRIaWRlRHJvcGRvd24oKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5l
bCA9IHBhbmVsOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudFBhbmVsKHBhbmVsKTsK
ICAgICB9CiAgICAgdG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBvblRvb2xi
YXJJdGVtQ2xpY2tlZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKaW5kZXggNGM2ZjlhOC4uYmY4MzI0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhbmVs
OwogICAgIH0sCiAKLSAgICBzZXQgY3VycmVudFBhbmVsKHgpCisgICAgc2V0Q3VycmVudFBhbmVs
OiBmdW5jdGlvbih4KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQYW5lbCA9PT0g
eCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2YXIgV2ViSW5zcGVj
dG9yID0gewogCiAgICAgX3VwZGF0ZUZvY3VzZWROb2RlOiBmdW5jdGlvbihub2RlSWQpCiAgICAg
ewotICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbCA9IHRoaXMucGFuZWxzLmVsZW1lbnRzOworICAg
ICAgICB0aGlzLnNldEN1cnJlbnRQYW5lbCh0aGlzLnBhbmVscy5lbGVtZW50cyk7CiAgICAgICAg
IHRoaXMucGFuZWxzLmVsZW1lbnRzLnVwZGF0ZUZvY3VzZWROb2RlKG5vZGVJZCk7CiAgICAgfSwK
IApAQCAtMTAxOSwxMiArMTAxOSwxMiBAQCBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsID0gZnVuY3Rp
b24ocGFuZWwpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhbmVsID0gImVsZW1lbnRzIjsK
ICAgICB9Ci0gICAgdGhpcy5jdXJyZW50UGFuZWwgPSB0aGlzLnBhbmVsc1twYW5lbF07CisgICAg
dGhpcy5zZXRDdXJyZW50UGFuZWwodGhpcy5wYW5lbHNbcGFuZWxdKTsKIH0KIAogV2ViSW5zcGVj
dG9yLnN0YXJ0VXNlckluaXRpYXRlZERlYnVnZ2luZyA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlz
LmN1cnJlbnRQYW5lbCA9IHRoaXMucGFuZWxzLnNjcmlwdHM7CisgICAgdGhpcy5zZXRDdXJyZW50
UGFuZWwodGhpcy5wYW5lbHMuc2NyaXB0cyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuZW5hYmxlRGVidWdnZXIoKTsKIH0KIApAQCAtMTE2MCwxMCArMTE2MCwxMCBAQCBXZWJJbnNw
ZWN0b3IuaW5zcGVjdCA9IGZ1bmN0aW9uKHBheWxvYWQsIGhpbnRzKQogICAgIH0KIAogICAgIGlm
IChoaW50cy5kYXRhYmFzZUlkKSB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwg
PSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlczsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNl
dEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcyk7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnNlbGVjdERhdGFiYXNlKGhpbnRzLmRhdGFiYXNl
SWQpOwogICAgIH0gZWxzZSBpZiAoaGludHMuZG9tU3RvcmFnZUlkKSB7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5jdXJyZW50UGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlczsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnNlbGVjdERP
TVN0b3JhZ2UoaGludHMuZG9tU3RvcmFnZUlkKTsKICAgICB9CiAKQEAgLTEyMjAsNyArMTIyMCw3
IEBAIFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uSW5QYW5lbCA9IGZ1bmN0aW9uKGFu
Y2hvciwgcGFuZWwpCiAgICAgICAgIGFuY2hvci5hZGRTdHlsZUNsYXNzKCJ3ZWJraXQtaHRtbC1y
ZXNvdXJjZS1saW5rIik7CiAgICAgfQogCi0gICAgdGhpcy5jdXJyZW50UGFuZWwgPSBwYW5lbDsK
KyAgICB0aGlzLnNldEN1cnJlbnRQYW5lbChwYW5lbCk7CiAgICAgaWYgKHRoaXMuZHJhd2VyKQog
ICAgICAgICB0aGlzLmRyYXdlci5pbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbigpOwogICAgIHRo
aXMuY3VycmVudFBhbmVsLnNob3dBbmNob3JMb2NhdGlvbihhbmNob3IpOwpAQCAtMTYwNiw3ICsx
NjA2LDcgQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNv
bmZpZykKIFdlYkluc3BlY3Rvci5fdG9vbGJhckl0ZW1DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQp
CiB7CiAgICAgdmFyIHRvb2xiYXJJdGVtID0gZXZlbnQuY3VycmVudFRhcmdldDsKLSAgICB0aGlz
LmN1cnJlbnRQYW5lbCA9IHRvb2xiYXJJdGVtLnBhbmVsOworICAgIHRoaXMuc2V0Q3VycmVudFBh
bmVsKHRvb2xiYXJJdGVtLnBhbmVsKTsKIH0KIAogV2ViSW5zcGVjdG9yLlBhbmVsSGlzdG9yeSA9
IGZ1bmN0aW9uKCkKQEAgLTE2MjQsNyArMTYyNCw3IEBAIFdlYkluc3BlY3Rvci5QYW5lbEhpc3Rv
cnkucHJvdG90eXBlID0gewogICAgIGdvQmFjazogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
dGhpcy5faW5IaXN0b3J5ID0gdHJ1ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5l
bCA9IFdlYkluc3BlY3Rvci5wYW5lbHNbdGhpcy5faGlzdG9yeVstLXRoaXMuX2hpc3RvcnlJdGVy
YXRvcl1dOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rv
ci5wYW5lbHNbdGhpcy5faGlzdG9yeVstLXRoaXMuX2hpc3RvcnlJdGVyYXRvcl1dKTsKICAgICAg
ICAgZGVsZXRlIHRoaXMuX2luSGlzdG9yeTsKICAgICB9LAogCkBAIC0xNjM2LDcgKzE2MzYsNyBA
QCBXZWJJbnNwZWN0b3IuUGFuZWxIaXN0b3J5LnByb3RvdHlwZSA9IHsKICAgICBnb0ZvcndhcmQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2luSGlzdG9yeSA9IHRydWU7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzW3RoaXMu
X2hpc3RvcnlbKyt0aGlzLl9oaXN0b3J5SXRlcmF0b3JdXTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzW3RoaXMuX2hpc3RvcnlbKyt0aGlz
Ll9oaXN0b3J5SXRlcmF0b3JdXSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pbkhpc3Rvcnk7CiAg
ICAgfSwKIAo=
</data>
<flag name="review"
          id="104359"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107641</attachid>
            <date>2011-09-16 05:51:49 -0700</date>
            <delta_ts>2011-09-16 07:10:56 -0700</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6511</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNTdiNjllLi4xZWVlNmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTEtMDkt
MTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFVJIHBlcmZvcm1hbmNlIHRlc3RzIGFyZSByZXF1aXJlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM0CisKKyAgICAgICAg
VGhlIGlkZWEgaXMgdG8gY3JlYXRlIGEgc2V0IG9mIHRlc3RzIHdoaWNoIGNvdmVyIGZyZXF1ZW50
bHkgdXNlZCBVSSBhY3Rpb25zCisgICAgICAgIGFuZCBwcmludCB0aGUgYXZlcmFnZSB0aW1lIG9m
IHRoZXNlIGFjdGlvbnMuCisgICAgICAgIFRoZXJlIGFyZSB0d28gcGlsb3QgdGVzdHMuIFRoZSBj
b21tb24gcGFydCB3YXMgZXh0cmFjdGVkIGludG8gcGVyZm9ybWFuY2UtdGVzdCBoZWxwZXIuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvcGVyZm9y
bWFuY2UtdGVzdC5qczogQWRkZWQuCisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLklu
c3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyKToKKyAgICAgICAgKGluaXRpYWxp
emVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJv
dG90eXBlLnN0YXJ0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9y
VGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLmZpbmlzaCk6CisgICAgICAg
IChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0
LlRpbWVyLnByb3RvdHlwZS5fcnVuVGVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL3Jlc291cmNlcy9zaG93LXBhbmVsLW5ldHdvcmsuaHRtbDogQWRkZWQuCisKKzIwMTEtMDkt
MTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGNoYW5nZSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsIGdldHRlci9zZXR0
ZXIgdG8gZnVuY3Rpb25zLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjgyNDIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1y
ZXF1ZXN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YzFhMjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVz
b3VyY2VzL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSw0MSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBtYWtlWEhSUmVxdWVzdHMo
Y291bnQpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIs
IGRvY3VtZW50LnVybCwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7
CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLl9uZXR3b3JrTG9nVmlldy5fcmVzZXQoKTsKKyAgICAgICAgdmFyIGNv
b2tpZSA9IHRpbWVyLnN0YXJ0KCJuZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cyIpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlWEhSUmVxdWVzdHMoMzApIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsuX25ldHdvcmtMb2dWaWV3LCAicmVmcmVzaCIsIHRpbWVyLmZpbmlzaC5iaW5kKHRpbWVyLCBj
b29raWUpKTsKKyAgICB9CisgICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVz
dCwgMTUwMDApOworfQorCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIG1ha2VYSFJSZXF1ZXN0cygzMCk7Cisg
ICAgfSwgMzAwMCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNhOGYwYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvcGVyZm9y
bWFuY2UtdGVzdC5qcwpAQCAtMCwwICsxLDY4IEBACit2YXIgaW5pdGlhbGl6ZV9UaW1lVHJhY2tl
ciA9IGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCA9IGZ1
bmN0aW9uKHBlcmZUZXN0LCBleGVjdXRlVGltZSwgY2FsbGJhY2spCit7CisgICAgdmFyIFRpbWVy
ID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNh
bGxiYWNrOworICAgICAgICB0aGlzLl90aW1lcyA9IHt9OworICAgICAgICB0aGlzLl90ZXN0U3Rh
cnRUaW1lID0gbmV3IERhdGUoKS52YWx1ZU9mKCk7CisgICAgfQorCisgICAgVGltZXIucHJvdG90
eXBlID0geworICAgICAgICBzdGFydDogZnVuY3Rpb24obmFtZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHtuYW1lOiBuYW1lLCBzdGFydFRpbWU6IG5ldyBEYXRlKCkudmFsdWVPZigp
fTsKKyAgICAgICAgfSwKKworICAgICAgICBmaW5pc2g6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSBuZXcgRGF0ZSgpLnZhbHVlT2YoKTsKKyAg
ICAgICAgICAgIGlmICghdGhpcy5fdGltZXNbY29va2llLm5hbWVdKQorICAgICAgICAgICAgICAg
IHRoaXMuX3RpbWVzW2Nvb2tpZS5uYW1lXSA9IFtdOworICAgICAgICAgICAgdGhpcy5fdGltZXNb
Y29va2llLm5hbWVdLnB1c2goZW5kVGltZSAtIGNvb2tpZS5zdGFydFRpbWUpOworCisgICAgICAg
ICAgICBpZiAoZW5kVGltZSAtIHRoaXMuX3Rlc3RTdGFydFRpbWUgPCBleGVjdXRlVGltZSkKKyAg
ICAgICAgICAgICAgICB0aGlzLl9ydW5UZXN0KHBlcmZUZXN0KTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIHRoaXMuX2R1bXAoKTsKKyAgICAgICAgICAgICAgICBpZiAodGhp
cy5fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIF9ydW5UZXN0
OiBmdW5jdGlvbihwZXJmVGVzdCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMuX2d1
YXJkKSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9ydW5UZXN0LmJpbmQodGhp
cywgcGVyZlRlc3QpLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhciB0ZXN0
ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChwZXJmVGVzdCk7CisgICAgICAgICAgICB0ZXN0KHRo
aXMpOworICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSBmYWxzZTsKKyAgICAgICAgfSwKKworICAg
ICAgICBfZHVtcDogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciB0
ZXN0TmFtZSBpbiB0aGlzLl90aW1lcykgeworICAgICAgICAgICAgICAgIHZhciBzYW1wbGVzID0g
dGhpcy5fdGltZXNbdGVzdE5hbWVdOworICAgICAgICAgICAgICAgIHZhciBzdHJpcE5SZXN1bHRz
ID0gTWF0aC5mbG9vcihzYW1wbGVzLmxlbmd0aCAvIDEwKTsKKyAgICAgICAgICAgICAgICBzYW1w
bGVzLnNvcnQoIGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKKyAgICAgICAgICAg
ICAgICB2YXIgc3VtID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RyaXBOUmVz
dWx0czsgaSA8IHNhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0czsgKytpKQorICAgICAgICAg
ICAgICAgICAgICBzdW0gKz0gc2FtcGxlc1tpXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiKiAiICsgdGVzdE5hbWUgKyAiOiAiICsgTWF0aC5mbG9vcihzdW0gLyAo
c2FtcGxlcy5sZW5ndGggLSBzdHJpcE5SZXN1bHRzICogMikpKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXN0TmFtZSArICIgbWluL21heC9jb3VudDogIiArIHNh
bXBsZXNbMF0gKyAiLyIgKyBzYW1wbGVzW3NhbXBsZXMubGVuZ3RoLTFdICsgIi8iICsgc2FtcGxl
cy5sZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdmFyIHRp
bWVyID0gbmV3IFRpbWVyKGNhbGxiYWNrKTsKKyAgICB0aW1lci5fcnVuVGVzdChwZXJmVGVzdCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9y
ZXNvdXJjZXMvc2hvdy1wYW5lbC1uZXR3b3JrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cGVyZm9ybWFuY2UvcmVzb3VyY2VzL3Nob3ctcGFuZWwtbmV0d29yay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOGI0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3Nob3ctcGFuZWwtbmV0d29y
ay5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
ZnVuY3Rpb24gbWFrZVhIUlJlcXVlc3RzKGNvdW50KQoreworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBkb2N1bWVudC51cmwsIHRydWUpOworICAgICAgICB4
aHIuc2VuZCgpOworICAgIH0KK30KKworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZSgibWFrZVhIUlJlcXVlc3RzKDMwKSIsIHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHBlcmZUZXN0MSh0aW1lcikKKyAgICAgICAgewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisgICAgICAgICAg
ICB2YXIgdGltZXJDb29raWUgPSB0aW1lci5zdGFydCgic2hvdy1uZXR3b3JrLXBhbmVsIik7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7CisgICAgICAgICAg
ICB0aW1lci5maW5pc2godGltZXJDb29raWUpOworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QocGVyZlRlc3QxLCA1MDAwKTsKKyAgICB9Cit9CisK
K2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgbWFrZVhIUlJlcXVlc3RzKDcwMCk7CisgICAgfSwgMzAwMCk7Cit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="104377"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107645</attachid>
            <date>2011-09-16 07:10:56 -0700</date>
            <delta_ts>2011-09-16 08:48:43 -0700</delta_ts>
            <desc>[patch] third version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6783</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMDQ5ZWVjLi5kODFhMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTEtMDkt
MTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFVJIHBlcmZvcm1hbmNlIHRlc3RzIGFyZSByZXF1aXJlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM0CisKKyAgICAgICAg
VGhlIGlkZWEgaXMgdG8gY3JlYXRlIGEgc2V0IG9mIHRlc3RzIHdoaWNoIGNvdmVyIGZyZXF1ZW50
bHkgdXNlZCBVSSBhY3Rpb25zCisgICAgICAgIGFuZCBwcmludCB0aGUgYXZlcmFnZSB0aW1lIG9m
IHRoZXNlIGFjdGlvbnMuCisgICAgICAgIFRoZXJlIGFyZSB0d28gcGlsb3QgdGVzdHMuIFRoZSBj
b21tb24gcGFydCB3YXMgZXh0cmFjdGVkIGludG8gcGVyZm9ybWFuY2UtdGVzdCBoZWxwZXIuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvcGVyZm9y
bWFuY2UtdGVzdC5qczogQWRkZWQuCisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLklu
c3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyKToKKyAgICAgICAgKGluaXRpYWxp
emVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJv
dG90eXBlLnN0YXJ0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9y
VGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLmZpbmlzaCk6CisgICAgICAg
IChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0
LlRpbWVyLnByb3RvdHlwZS5kb25lKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIu
SW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLl9ydW5UZXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3Nob3ctcGFuZWwt
bmV0d29yay5odG1sOiBBZGRlZC4KKworMjAxMS0wOS0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGZpeCBmb3Igcjk1
Mjg3LgogCiAgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLWV4cGFuZC1zY29w
ZS5odG1sOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jl
c291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZGQxYzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL25l
dHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBtYWtlWEhSUmVxdWVzdHMoY291bnQpCit7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGRvY3VtZW50
LnVybCwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7CisKKyAgICBm
dW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLl9uZXR3b3JrTG9nVmlldy5fcmVzZXQoKTsKKyAgICAgICAgdmFyIGNvb2tpZSA9IHRp
bWVyLnN0YXJ0KCJuZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cyIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlWEhSUmVxdWVzdHMoMzApIik7CisgICAgICAgIGZ1
bmN0aW9uIGZpbmlzaCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlzaChjb29r
aWUpOworICAgICAgICAgICAgdGltZXIuZG9uZSgpOworICAgICAgICB9CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtM
b2dWaWV3LCAicmVmcmVzaCIsIGZpbmlzaCk7CisgICAgfQorICAgIEluc3BlY3RvclRlc3QucnVu
UGVyZm9ybWFuY2VUZXN0KHRlc3QsIDE1MDAwKTsKK30KKworaWYgKCF3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBtYWtl
WEhSUmVxdWVzdHMoMzApOworICAgIH0sIDMwMDApOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9wZXJmb3JtYW5j
ZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9w
ZXJmb3JtYW5jZS10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFl
ZTQxYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFu
Y2UvcmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSw3MyBAQAordmFyIGlu
aXRpYWxpemVfVGltZVRyYWNrZXIgPSBmdW5jdGlvbigpIHsKKworSW5zcGVjdG9yVGVzdC5ydW5Q
ZXJmb3JtYW5jZVRlc3QgPSBmdW5jdGlvbihwZXJmVGVzdCwgZXhlY3V0ZVRpbWUsIGNhbGxiYWNr
KQoreworICAgIHZhciBUaW1lciA9IGZ1bmN0aW9uKHRlc3QsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5fdGVzdCA9IHRl
c3Q7CisgICAgICAgIHRoaXMuX3RpbWVzID0ge307CisgICAgICAgIHRoaXMuX3Rlc3RTdGFydFRp
bWUgPSBuZXcgRGF0ZSgpLnZhbHVlT2YoKTsKKyAgICB9CisKKyAgICBUaW1lci5wcm90b3R5cGUg
PSB7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihuYW1lKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4ge25hbWU6IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKS52YWx1ZU9mKCl9Owor
ICAgICAgICB9LAorCisgICAgICAgIGZpbmlzaDogZnVuY3Rpb24oY29va2llKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgZW5kVGltZSA9IG5ldyBEYXRlKCkudmFsdWVPZigpOworICAgICAg
ICAgICAgaWYgKCF0aGlzLl90aW1lc1tjb29raWUubmFtZV0pCisgICAgICAgICAgICAgICAgdGhp
cy5fdGltZXNbY29va2llLm5hbWVdID0gW107CisgICAgICAgICAgICB0aGlzLl90aW1lc1tjb29r
aWUubmFtZV0ucHVzaChlbmRUaW1lIC0gY29va2llLnN0YXJ0VGltZSk7CisgICAgICAgIH0sCisK
KyAgICAgICAgZG9uZTogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdGlt
ZSA9IG5ldyBEYXRlKCkudmFsdWVPZigpOworICAgICAgICAgICAgaWYgKHRpbWUgLSB0aGlzLl90
ZXN0U3RhcnRUaW1lIDwgZXhlY3V0ZVRpbWUpCisgICAgICAgICAgICAgICAgdGhpcy5fcnVuVGVz
dCgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZHVtcCgpOwor
ICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisKKyAgICAgICAgX3J1blRlc3Q6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHRoaXMuX2d1YXJkKSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9y
dW5UZXN0LmJpbmQodGhpcyksIDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSB0cnVlOworICAgICAgICAgICAgdmFy
IHNhZmVUZXN0ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCh0aGlzLl90ZXN0KTsKKyAgICAgICAg
ICAgIHNhZmVUZXN0KHRoaXMpOworICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSBmYWxzZTsKKyAg
ICAgICAgfSwKKworICAgICAgICBfZHVtcDogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0aGlzLl90aW1lcykgeworICAgICAgICAgICAgICAg
IHZhciBzYW1wbGVzID0gdGhpcy5fdGltZXNbdGVzdE5hbWVdOworICAgICAgICAgICAgICAgIHZh
ciBzdHJpcE5SZXN1bHRzID0gTWF0aC5mbG9vcihzYW1wbGVzLmxlbmd0aCAvIDEwKTsKKyAgICAg
ICAgICAgICAgICBzYW1wbGVzLnNvcnQoIGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9
KTsKKyAgICAgICAgICAgICAgICB2YXIgc3VtID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gc3RyaXBOUmVzdWx0czsgaSA8IHNhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0czsg
KytpKQorICAgICAgICAgICAgICAgICAgICBzdW0gKz0gc2FtcGxlc1tpXTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiKiAiICsgdGVzdE5hbWUgKyAiOiAiICsgTWF0
aC5mbG9vcihzdW0gLyAoc2FtcGxlcy5sZW5ndGggLSBzdHJpcE5SZXN1bHRzICogMikpKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXN0TmFtZSArICIgbWluL21h
eC9jb3VudDogIiArIHNhbXBsZXNbMF0gKyAiLyIgKyBzYW1wbGVzW3NhbXBsZXMubGVuZ3RoLTFd
ICsgIi8iICsgc2FtcGxlcy5sZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgdmFyIHRpbWVyID0gbmV3IFRpbWVyKHBlcmZUZXN0LCBjYWxsYmFjayk7CisgICAg
dGltZXIuX3J1blRlc3QoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9zaG93LXBhbmVsLW5ldHdvcmsuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvc2hvdy1wYW5lbC1uZXR3b3Jr
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE0NWEwNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMv
c2hvdy1wYW5lbC1uZXR3b3JrLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBtYWtlWEhSUmVxdWVzdHMoY291bnQpCit7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGRvY3VtZW50LnVybCwg
dHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgfQorfQorCisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlWEhSUmVxdWVzdHMoMzApIiwgc3RlcDEpOworCisg
ICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcGVyZlRlc3QxKHRp
bWVyKQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRp
dHMiKTsKKyAgICAgICAgICAgIHZhciB0aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzaG93LW5l
dHdvcmstcGFuZWwiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdv
cmsiKTsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlzaCh0aW1lckNvb2tpZSk7CisgICAgICAgICAg
ICB0aW1lci5kb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blBl
cmZvcm1hbmNlVGVzdChwZXJmVGVzdDEsIDUwMDApOworICAgIH0KK30KKworaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICBtYWtlWEhSUmVxdWVzdHMoNzAwKTsKKyAgICB9LCAzMDAwKTsKK30KKworPC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="104381"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>