<?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>87009</bug_id>
          
          <creation_ts>2012-05-21 05:19:59 -0700</creation_ts>
          <short_desc>Web Inspector: introduce a helper for HeapSnapshot post-processing tests.</short_desc>
          <delta_ts>2012-05-22 00:01:58 -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>
          
          <blocked>87089</blocked>
          <everconfirmed>0</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>628988</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 05:19:59 -0700</bug_when>
    <thetext>We have many post processing steps but the test coverage is poor.
The helper will simplify the snapshot mocking process.

It will have two public classes InspectorTest.HeapSnapshotBuilder and InspectorTest.HeapNode and node/edge type constants.

the sample:

    var builder = new InspectorTest.HeapSnapshotBuilder();

    var debuggerNode = new InspectorTest.HeapNode(&quot;Debugger&quot;);
    builder.rootNode.linkNode(debuggerNode, InspectorTest.HeapEdge.element);

    var windowNode = new InspectorTest.HeapNode(&quot;Window&quot;);
    builder.rootNode.linkNode(windowNode, InspectorTest.HeapEdge.shortcut);

    debuggerNode.linkNode(windowNode, InspectorTest.HeapEdge.property, &quot;windowProperty&quot;);

    return builder.generateSnapshot();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628989</commentid>
    <comment_count>1</comment_count>
      <attachid>143007</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 05:22:44 -0700</bug_when>
    <thetext>Created attachment 143007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628999</commentid>
    <comment_count>2</comment_count>
      <attachid>143007</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-21 05:38:44 -0700</bug_when>
    <thetext>Comment on attachment 143007
Patch

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

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:384
&gt; +    this._strings2id = {};

_strings2id -&gt; _string2id

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:423
&gt; +                            InspectorTest.HeapNode.hidden,

We should make sure the types here are ordered as their values above. Please either use
 node_types[this._nodeTypes[n]] = n
to fill this array or use this._nodeTypes[n] = node_types.indexOf(n) to initialize type constants.

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:496
&gt; +        this._strings2id[string] = this._nextStringId++;

Can this._strings.length be used as id?

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:510
&gt; +InspectorTest.HeapNode.hidden = &quot;hidden&quot;;

Should be InspectorTest.HeapNode.Type = {
&quot;hidden&quot;: &quot;hidden&quot;,...
}

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:532
&gt; +        if (nameOrIndex in this._edges)

this._edges is an array of InspectorTest.HeapEdge instances while nameOrIndex is a string or number. The condition looks wrong.

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:550
&gt; +        rawSnapshot.nodes.push(this._ordinal * 2 + 1);    // id

You should add a comment explaining why the ids should be odd.

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:580
&gt; +InspectorTest.HeapEdge.context = &quot;context&quot;;

InspectorTest.HeapEdge.Type

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:587
&gt; +InspectorTest.createFlagsTestSnapshot = function(instanceCount)

Consider putting this into the test file as it is used only once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629067</commentid>
    <comment_count>3</comment_count>
      <attachid>143029</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 07:06:50 -0700</bug_when>
    <thetext>Created attachment 143029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629071</commentid>
    <comment_count>4</comment_count>
      <attachid>143030</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 07:13:42 -0700</bug_when>
    <thetext>Created attachment 143030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629073</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 07:14:51 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=143007&amp;action=review

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:384
&gt;&gt; +    this._strings2id = {};
&gt; 
&gt; _strings2id -&gt; _string2id

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:423
&gt;&gt; +                            InspectorTest.HeapNode.hidden,
&gt; 
&gt; We should make sure the types here are ordered as their values above. Please either use
&gt;  node_types[this._nodeTypes[n]] = n
&gt; to fill this array or use this._nodeTypes[n] = node_types.indexOf(n) to initialize type constants.

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:496
&gt;&gt; +        this._strings2id[string] = this._nextStringId++;
&gt; 
&gt; Can this._strings.length be used as id?

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:510
&gt;&gt; +InspectorTest.HeapNode.hidden = &quot;hidden&quot;;
&gt; 
&gt; Should be InspectorTest.HeapNode.Type = {
&gt; &quot;hidden&quot;: &quot;hidden&quot;,...
&gt; }

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:532
&gt;&gt; +        if (nameOrIndex in this._edges)
&gt; 
&gt; this._edges is an array of InspectorTest.HeapEdge instances while nameOrIndex is a string or number. The condition looks wrong.

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:550
&gt;&gt; +        rawSnapshot.nodes.push(this._ordinal * 2 + 1);    // id
&gt; 
&gt; You should add a comment explaining why the ids should be odd.

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:580
&gt;&gt; +InspectorTest.HeapEdge.context = &quot;context&quot;;
&gt; 
&gt; InspectorTest.HeapEdge.Type

done

&gt;&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:587
&gt;&gt; +InspectorTest.createFlagsTestSnapshot = function(instanceCount)
&gt; 
&gt; Consider putting this into the test file as it is used only once.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629080</commentid>
    <comment_count>6</comment_count>
      <attachid>143030</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-21 07:30:54 -0700</bug_when>
    <thetext>Comment on attachment 143030
Patch

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

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:385
&gt; +    this._size = size || 0;

_size =&gt; _selfSize?

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:434
&gt; +        rawSnapshot.nodes.push(this._ordinal * 2 + 1);    // id has to be odd for the consistency with backend implementation.

Please state explicitly that we differentiate between JS nodes and DOM groups by the oddity of the id.

&gt; LayoutTests/inspector/profiler/heap-snapshot-test.js:447
&gt; +    this._node = node;

_node =&gt; _targetNode

&gt; LayoutTests/inspector/profiler/heap-snapshot.html:135
&gt; +	    debuggerNode.linkNode(debuggerOwnedNode, InspectorTest.HeapEdge.Type.element);

Wrong alignment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629090</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 07:48:40 -0700</bug_when>
    <thetext>Committed r117780: &lt;http://trac.webkit.org/changeset/117780&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143007</attachid>
            <date>2012-05-21 05:22:44 -0700</date>
            <delta_ts>2012-05-21 07:06:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87009-20120521162242.patch</filename>
            <type>text/plain</type>
            <size>11636</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzUwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjI5NzRlMWExZTRhNmViNDM3MWUx
ZTEwZTlkMjdiNTRlYjE1OGQ5Ny4uMTdjZjcwMGUyZTcwNGExNjMzNjNlYzBiZGE5Mzg5YThmMjIy
ZWRlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA1LTIxICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1
Y2UgYSBoZWxwZXIgZm9yIEhlYXBTbmFwc2hvdCBwb3N0LXByb2Nlc3NpbmcgdGVzdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAwOQorCisgICAg
ICAgIHRoZSBzYW1wbGU6CisgICAgICAgIHZhciBidWlsZGVyID0gbmV3IEluc3BlY3RvclRlc3Qu
SGVhcFNuYXBzaG90QnVpbGRlcigpOworICAgICAgICB2YXIgZGVidWdnZXJOb2RlID0gbmV3IElu
c3BlY3RvclRlc3QuSGVhcE5vZGUoIkRlYnVnZ2VyIik7CisgICAgICAgIGJ1aWxkZXIucm9vdE5v
ZGUubGlua05vZGUoZGVidWdnZXJOb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLmVsZW1lbnQp
OworCisgICAgICAgIHZhciB3aW5kb3dOb2RlID0gbmV3IEluc3BlY3RvclRlc3QuSGVhcE5vZGUo
IldpbmRvdyIpOworICAgICAgICBidWlsZGVyLnJvb3ROb2RlLmxpbmtOb2RlKHdpbmRvd05vZGUs
IEluc3BlY3RvclRlc3QuSGVhcEVkZ2Uuc2hvcnRjdXQpOworCisgICAgICAgIGRlYnVnZ2VyTm9k
ZS5saW5rTm9kZSh3aW5kb3dOb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLnByb3BlcnR5LCAi
d2luZG93UHJvcGVydHkiKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuZ2VuZXJhdGVTbmFwc2hv
dCgpOworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoKKyAgICAgICAgKGluaXRp
YWxpemVfSGVhcFNuYXBzaG90VGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hv
dFRlc3QuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1s
OgorCiAyMDEyLTA1LTE4ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUg
cHJvY2VkdXJlIGZyb20gdjguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKaW5kZXggODkyMzAwNzA0YmYxYTFh
ZWEwOWFmOWY3MzI0MjU5ODAwMDE2NmI3OS4uYjc4MGZiOTg0NWQ2MjgwNmE0N2FjZTVmYTc2NTc3
MGJiYTU0MWNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dApAQCAtMTcsNiArMTcsOCBAQCBSdW5uaW5n
OiBoZWFwU25hcHNob3RQb3N0T3JkZXJJbmRleFRlc3QKIAogUnVubmluZzogaGVhcFNuYXBzaG90
RG9taW5hdG9yc1RyZWVUZXN0CiAKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdFBhZ2VPd25lZFRlc3QK
KwogUnVubmluZzogaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdAogCiBSdW5uaW5nOiBoZWFwU25h
cHNob3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKaW5kZXggYjUzOGU2OGIxYWVjM2M2YTM0NDRjODBh
ODc0ZjQzYzM5ODU5ZThlNS4uYWYxMTZkYjQ4MGM2ZTFmZmQ3OTNmNTc4N2M1MzE3NTk5YmJlZTRh
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC10ZXN0LmpzCkBAIC0zNzgsNiArMzc4LDI0MCBAQCBJbnNwZWN0b3JUZXN0LmNvdW50RGF0
YVJvd3MgPSBmdW5jdGlvbihyb3csIGZpbHRlcikKICAgICByZXR1cm4gcmVzdWx0OwogfTsKIAor
SW5zcGVjdG9yVGVzdC5IZWFwU25hcHNob3RCdWlsZGVyID0gZnVuY3Rpb24oKQoreworICAgIHRo
aXMuX25vZGVzID0gW107CisgICAgdGhpcy5fc3RyaW5nczJpZCA9IHt9OworICAgIHRoaXMuX3N0
cmluZ3MgPSBbXTsKKyAgICB0aGlzLl9uZXh0U3RyaW5nSWQgPSAwOworICAgIHRoaXMubm9kZUZp
ZWxkc0NvdW50ID0gNzsKKworICAgIHRoaXMuX25vZGVUeXBlcyA9IHsKKyAgICAgICAgImhpZGRl
biI6ICAwLAorICAgICAgICAiYXJyYXkiOiAgIDEsCisgICAgICAgICJzdHJpbmciOiAgMiwKKyAg
ICAgICAgIm9iamVjdCI6ICAzLAorICAgICAgICAiY29kZSI6ICAgIDQsCisgICAgICAgICJjbG9z
dXJlIjogNSwKKyAgICAgICAgInJlZ2V4cCI6ICA2LAorICAgICAgICAibnVtYmVyIjogIDcsCisg
ICAgICAgICJuYXRpdmUiOiAgOAorICAgIH07CisKKyAgICB0aGlzLl9lZGdlVHlwZXMgPSB7Cisg
ICAgICAgICJjb250ZXh0IjogIDAsCisgICAgICAgICJlbGVtZW50IjogIDEsCisgICAgICAgICJw
cm9wZXJ0eSI6IDIsCisgICAgICAgICJpbnRlcm5hbCI6IDMsCisgICAgICAgICJoaWRkZW4iOiAg
IDQsCisgICAgICAgICJzaG9ydGN1dCI6IDUKKyAgICB9OworCisgICAgdGhpcy5yb290Tm9kZSA9
IG5ldyBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlKCJyb290IiwgMCwgIm9iamVjdCIpOworICAgIHRo
aXMucm9vdE5vZGUuX3NldEJ1aWxkZXIodGhpcyk7Cit9CisKK0luc3BlY3RvclRlc3QuSGVhcFNu
YXBzaG90QnVpbGRlci5wcm90b3R5cGUgPSB7CisgICAgZ2VuZXJhdGVTbmFwc2hvdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHJhd1NuYXBzaG90ID0geworICAgICAgICAgICAgInNu
YXBzaG90IjogeworICAgICAgICAgICAgICAgICJtZXRhIjogeworICAgICAgICAgICAgICAgICAg
ICAibm9kZV9maWVsZHMiOiBbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5l
ZF9zaXplIiwiZG9taW5hdG9yIiwiZWRnZXNfaW5kZXgiXSwKKyAgICAgICAgICAgICAgICAgICAg
Im5vZGVfdHlwZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5IZWFwTm9kZS5oaWRkZW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5IZWFwTm9kZS5hcnJheSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLnN0cmluZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLm9iamVjdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLmNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5IZWFwTm9kZS5jbG9zdXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuSGVhcE5vZGUucmVn
ZXhwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuSGVhcE5vZGUu
bnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuSGVhcE5v
ZGUubmF0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm51
bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJudW1iZXIiCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgICJlZGdlX2ZpZWxkcyI6IFsidHlwZSIsIm5hbWVfb3JfaW5kZXgiLCJ0b19ub2RlIl0s
CisgICAgICAgICAgICAgICAgICAgICJlZGdlX3R5cGVzIjogWworICAgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuSGVhcEVk
Z2UuY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lkhl
YXBFZGdlLmVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5IZWFwRWRnZS5wcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkhlYXBFZGdlLmludGVybmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuSGVhcEVkZ2UuaGlkZGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuSGVhcEVkZ2Uuc2hvcnRjdXQKKyAgICAgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nX29yX251bWJlciIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAibm9kZSIKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibm9kZXMiOiBbXSwKKyAgICAg
ICAgICAgICJlZGdlcyI6W10sCisgICAgICAgICAgICAic3RyaW5ncyI6IFtdLAorICAgICAgICAg
ICAgbWF4SlNPYmplY3RJZDogdGhpcy5fbm9kZXMubGVuZ3RoICogMiArIDEKKyAgICAgICAgfTsK
KworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25vZGVzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgdGhpcy5fbm9kZXNbaV0uX3NlcmlhbGl6ZShyYXdTbmFwc2hvdCk7CisKKyAg
ICAgICAgcmF3U25hcHNob3Quc3RyaW5ncyA9IHRoaXMuX3N0cmluZ3Muc2xpY2UoKTsKKworICAg
ICAgICByZXR1cm4gcmF3U25hcHNob3Q7CisgICAgfSwKKworICAgIF9yZWdpc3Rlck5vZGU6IGZ1
bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICB0aGlzLl9ub2Rlcy5wdXNoKG5vZGUpOworICAg
ICAgICByZXR1cm4gdGhpcy5fbm9kZXMubGVuZ3RoIC0gMTsKKyAgICB9LAorCisgICAgbG9va3Vw
Tm9kZVR5cGU6IGZ1bmN0aW9uKHR5cGVOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVOYW1l
ID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG5vZGUg
dHlwZTogIiArIHR5cGVOYW1lKTsKKyAgICAgICAgaWYgKCF0eXBlTmFtZSBpbiB0aGlzLl9ub2Rl
VHlwZXMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG5vZGUgdHlwZSBuYW1l
OiAiICsgdHlwZU5hbWUpOworICAgICAgICByZXR1cm4gdGhpcy5fbm9kZVR5cGVzW3R5cGVOYW1l
XTsKKyAgICB9LAorCisgICAgbG9va3VwRWRnZVR5cGU6IGZ1bmN0aW9uKHR5cGVOYW1lKQorICAg
IHsKKyAgICAgICAgaWYgKCF0eXBlTmFtZSBpbiB0aGlzLl9lZGdlVHlwZXMpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIGVkZ2UgdHlwZSBuYW1lOiAiICsgdHlwZU5hbWUpOwor
ICAgICAgICByZXR1cm4gdGhpcy5fZWRnZVR5cGVzW3R5cGVOYW1lXTsKKyAgICB9LAorCisgICAg
bG9va3VwT3JBZGRTdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChz
dHJpbmcgaW4gdGhpcy5fc3RyaW5nczJpZCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdHJp
bmdzMmlkW3N0cmluZ107CisgICAgICAgIHRoaXMuX3N0cmluZ3MucHVzaChzdHJpbmcpOworICAg
ICAgICB0aGlzLl9zdHJpbmdzMmlkW3N0cmluZ10gPSB0aGlzLl9uZXh0U3RyaW5nSWQrKzsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX25leHRTdHJpbmdJZCAtIDE7CisgICAgfQorfQorCitJbnNwZWN0
b3JUZXN0LkhlYXBOb2RlID0gZnVuY3Rpb24obmFtZSwgc2l6ZSwgdHlwZSkKK3sKKyAgICB0aGlz
Ll90eXBlID0gdHlwZSA/IHR5cGUgOiBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLm9iamVjdDsKKyAg
ICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICB0aGlzLl9zaXplID0gc2l6ZSB8fCAwOworICAgIHRo
aXMuX2J1aWxkZXIgPSBudWxsOworICAgIHRoaXMuX2VkZ2VzID0gW107Cit9CisKK0luc3BlY3Rv
clRlc3QuSGVhcE5vZGUuaGlkZGVuID0gImhpZGRlbiI7CitJbnNwZWN0b3JUZXN0LkhlYXBOb2Rl
LmFycmF5ID0gImFycmF5IjsKK0luc3BlY3RvclRlc3QuSGVhcE5vZGUuc3RyaW5nID0gInN0cmlu
ZyI7CitJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLm9iamVjdCA9ICJvYmplY3QiOworSW5zcGVjdG9y
VGVzdC5IZWFwTm9kZS5jb2RlID0gImNvZGUiOworSW5zcGVjdG9yVGVzdC5IZWFwTm9kZS5jbG9z
dXJlID0gImNsb3N1cmUiOworSW5zcGVjdG9yVGVzdC5IZWFwTm9kZS5yZWdleHAgPSAicmVnZXhw
IjsKK0luc3BlY3RvclRlc3QuSGVhcE5vZGUubnVtYmVyID0gIm51bWJlciI7CitJbnNwZWN0b3JU
ZXN0LkhlYXBOb2RlLm5hdGl2ZSA9ICJuYXRpdmUiOworCitJbnNwZWN0b3JUZXN0LkhlYXBOb2Rl
LnByb3RvdHlwZSA9IHsKKyAgICBsaW5rTm9kZTogZnVuY3Rpb24obm9kZSwgdHlwZSwgbmFtZU9y
SW5kZXgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2J1aWxkZXIpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoInBhcmVudCBub2RlIGlzIG5vdCBjb25uZWN0ZWQgdG8gYSBzbmFwc2hv
dCIpOworCisgICAgICAgIGlmICghbm9kZS5fYnVpbGRlcikKKyAgICAgICAgICAgIG5vZGUuX3Nl
dEJ1aWxkZXIodGhpcy5fYnVpbGRlcik7CisKKyAgICAgICAgaWYgKG5hbWVPckluZGV4ID09PSB1
bmRlZmluZWQpCisgICAgICAgICAgICBuYW1lT3JJbmRleCA9IHRoaXMuX2VkZ2VzLmxlbmd0aDsK
KworICAgICAgICBpZiAobmFtZU9ySW5kZXggaW4gdGhpcy5fZWRnZXMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkNhbid0IGFkZCBlZGdlIHdpdGggdGhlIHNhbWUgbmFtZU9ySW5kZXgu
IG5hbWVPckluZGV4OiAiICsgbmFtZU9ySW5kZXggKyAiIG9sZE5vZGVOYW1lOiAiICsgdGhpcy5f
ZWRnZXNbbmFtZU9ySW5kZXhdLl9uYW1lICsgIiBuZXdOb2RlTmFtZTogIiArIG5vZGUuX25hbWUp
OworICAgICAgICB0aGlzLl9lZGdlcy5wdXNoKG5ldyBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlKG5v
ZGUsIHR5cGUsIG5hbWVPckluZGV4KSk7CisgICAgfSwKKworICAgIF9zZXRCdWlsZGVyOiBmdW5j
dGlvbihidWlsZGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2J1aWxkZXIpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vZGUgcmV1c2luZyBpcyBwcm9oaWJpdGVkIik7CisKKyAg
ICAgICAgdGhpcy5fYnVpbGRlciA9IGJ1aWxkZXI7CisgICAgICAgIHRoaXMuX29yZGluYWwgPSB0
aGlzLl9idWlsZGVyLl9yZWdpc3Rlck5vZGUodGhpcyk7CisgICAgfSwKKworICAgIF9zZXJpYWxp
emU6IGZ1bmN0aW9uKHJhd1NuYXBzaG90KQorICAgIHsKKyAgICAgICAgcmF3U25hcHNob3Qubm9k
ZXMucHVzaCh0aGlzLl9idWlsZGVyLmxvb2t1cE5vZGVUeXBlKHRoaXMuX3R5cGUpKTsKKyAgICAg
ICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9idWlsZGVyLmxvb2t1cE9yQWRkU3RyaW5n
KHRoaXMuX25hbWUpKTsKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9vcmRp
bmFsICogMiArIDEpOyAgICAvLyBpZAorICAgICAgICByYXdTbmFwc2hvdC5ub2Rlcy5wdXNoKHRo
aXMuX3NpemUpOyAgICAgICAgICAgICAgIC8vIHNlbGYgc2l6ZQorICAgICAgICByYXdTbmFwc2hv
dC5ub2Rlcy5wdXNoKDApOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGFpbmVkX3NpemUK
KyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCgwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBkb21pbmF0b3IKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaChyYXdTbmFwc2hv
dC5lZGdlcy5sZW5ndGgpOyAvLyBlZGdlc19pbmRleAorCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5fZWRnZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9lZGdlc1tp
XS5fc2VyaWFsaXplKHJhd1NuYXBzaG90KTsKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3QuSGVh
cEVkZ2UgPSBmdW5jdGlvbihub2RlLCB0eXBlLCBuYW1lT3JJbmRleCkKK3sKKyAgICB0aGlzLl9u
b2RlID0gbm9kZTsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICB0aGlzLl9uYW1lT3JJbmRl
eCA9IG5hbWVPckluZGV4OworfQorCitJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLnByb3RvdHlwZSA9
IHsKKyAgICBfc2VyaWFsaXplOiBmdW5jdGlvbihyYXdTbmFwc2hvdCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fbm9kZS5fYnVpbGRlcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
SW5jb25zaXN0ZW50IHN0YXRlIG9mIG5vZGU6ICIgKyB0aGlzLl9uYW1lICsgIiBubyBidWlsZGVy
IGFzc2lnbmVkIik7CisgICAgICAgIHZhciBidWlsZGVyID0gdGhpcy5fbm9kZS5fYnVpbGRlcjsK
KyAgICAgICAgcmF3U25hcHNob3QuZWRnZXMucHVzaChidWlsZGVyLmxvb2t1cEVkZ2VUeXBlKHRo
aXMuX3R5cGUpKTsKKyAgICAgICAgcmF3U25hcHNob3QuZWRnZXMucHVzaCh0eXBlb2YgdGhpcy5f
bmFtZU9ySW5kZXggPT09ICJzdHJpbmciID8gYnVpbGRlci5sb29rdXBPckFkZFN0cmluZyh0aGlz
Ll9uYW1lT3JJbmRleCkgOiB0aGlzLl9uYW1lT3JJbmRleCk7CisgICAgICAgIHJhd1NuYXBzaG90
LmVkZ2VzLnB1c2godGhpcy5fbm9kZS5fb3JkaW5hbCAqIGJ1aWxkZXIubm9kZUZpZWxkc0NvdW50
KTsgLy8gaW5kZXgKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3QuSGVhcEVkZ2UuY29udGV4dCA9
ICJjb250ZXh0IjsKK0luc3BlY3RvclRlc3QuSGVhcEVkZ2UuZWxlbWVudCA9ICJlbGVtZW50IjsK
K0luc3BlY3RvclRlc3QuSGVhcEVkZ2UucHJvcGVydHkgPSAicHJvcGVydHkiOworSW5zcGVjdG9y
VGVzdC5IZWFwRWRnZS5pbnRlcm5hbCA9ICJpbnRlcm5hbCI7CitJbnNwZWN0b3JUZXN0LkhlYXBF
ZGdlLmhpZGRlbiA9ICJoaWRkZW4iOworSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5zaG9ydGN1dCA9
ICJzaG9ydGN1dCI7CisKK0luc3BlY3RvclRlc3QuY3JlYXRlRmxhZ3NUZXN0U25hcHNob3QgPSBm
dW5jdGlvbihpbnN0YW5jZUNvdW50KQoreworICAgIHZhciBzaXplT2ZBID0gMTI7CisgICAgdmFy
IHNpemVPZkIgPSAxNjsKKworICAgIHZhciBidWlsZGVyID0gbmV3IEluc3BlY3RvclRlc3QuSGVh
cFNuYXBzaG90QnVpbGRlcigpOworICAgIHZhciByb290Tm9kZSA9IGJ1aWxkZXIucm9vdE5vZGU7
CisKKyAgICB2YXIgZGVidWdnZXJOb2RlID0gbmV3IEluc3BlY3RvclRlc3QuSGVhcE5vZGUoIkRl
YnVnZ2VyIik7CisgICAgcm9vdE5vZGUubGlua05vZGUoZGVidWdnZXJOb2RlLCBJbnNwZWN0b3JU
ZXN0LkhlYXBFZGdlLmVsZW1lbnQpOworCisgICAgdmFyIHdpbmRvd05vZGUgPSBuZXcgSW5zcGVj
dG9yVGVzdC5IZWFwTm9kZSgiV2luZG93Iik7CisgICAgcm9vdE5vZGUubGlua05vZGUod2luZG93
Tm9kZSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5zaG9ydGN1dCk7CisKKyAgICBkZWJ1Z2dlck5v
ZGUubGlua05vZGUod2luZG93Tm9kZSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5wcm9wZXJ0eSwg
IndpbmRvd1Byb3BlcnR5Iik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc3RhbmNlQ291
bnQ7ICsraSkgeworICAgICAgICB2YXIgbm9kZUIgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFwTm9k
ZSgiTm9kZUIiLCBzaXplT2ZCKTsKKyAgICAgICAgd2luZG93Tm9kZS5saW5rTm9kZShub2RlQiwg
SW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5lbGVtZW50LCBpKTsKKworICAgICAgICB2YXIgbm9kZUEg
PSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFwTm9kZSgiTm9kZUEiLCBzaXplT2ZBKTsKKyAgICAgICAg
bm9kZUIubGlua05vZGUobm9kZUEsIEluc3BlY3RvclRlc3QuSGVhcEVkZ2UucHJvcGVydHksIDMp
OworICAgICAgICBub2RlQS5saW5rTm9kZShub2RlQSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5w
cm9wZXJ0eSwgMyk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIuZ2VuZXJhdGVTbmFwc2hv
dCgpOworfQorCiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdCA9IGZ1bmN0aW9uKGlu
c3RhbmNlQ291bnQsIGZpcnN0SWQpCiB7CiAgICAgLy8gTW9ja2luZyByZXN1bHRzIG9mIHJ1bm5p
bmcgdGhlIGZvbGxvd2luZyBjb2RlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggNGUzNTgzZjMxZGVkNzJmN2QzZWY1MTBhNTQ0
NzRlY2YzMThlMjBkMi4uOGIwYWY0YWQ3MjE5MTQyNjYwZDk1ZDBlYTFkMDNlYmYzYTM4NGJlNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5o
dG1sCkBAIC0xMTYsNiArMTE2LDE4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4
dCgpOwogICAgICAgICB9LAogCisgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFBhZ2VPd25l
ZFRlc3QobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVSYXdIZWFwU25hcHNo
b3QoMikpOworICAgICAgICAgICAgc25hcHNob3QuX2ZsYWdzID0gbmV3IEFycmF5KHNuYXBzaG90
Lm5vZGVDb3VudCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNuYXBzaG90Lm5v
ZGVDb3VudDsgKytpKQorICAgICAgICAgICAgICAgIHNuYXBzaG90Ll9mbGFnc1tpXSA9IDA7Cisg
ICAgICAgICAgICBzbmFwc2hvdC5fbWFya1BhZ2VPd25lZE5vZGVzKCk7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWQgPSBbMCwgMCwgNCwgNCwgNCwgNCwgNF07CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyhKU09OLnN0cmluZ2lmeShleHBlY3RlZCksIEpTT04uc3RyaW5n
aWZ5KHNuYXBzaG90Ll9mbGFncyksICJQYWdlT3duZWQgZmxhZyIpOworICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICB9LAorCiAgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFJldGFpbmVy
c1Rlc3QobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RN
b2NrKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143029</attachid>
            <date>2012-05-21 07:06:50 -0700</date>
            <delta_ts>2012-05-21 07:13:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87009-20120521180648.patch</filename>
            <type>text/plain</type>
            <size>10637</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzUwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjI5NzRlMWExZTRhNmViNDM3MWUx
ZTEwZTlkMjdiNTRlYjE1OGQ5Ny4uOTc1MDdlOTkxNTk0YThlOGY0NjY5YTYyZDA3YWNjZTIyNjk3
ZTM2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA1LTIxICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1
Y2UgYSBoZWxwZXIgZm9yIEhlYXBTbmFwc2hvdCBwb3N0LXByb2Nlc3NpbmcgdGVzdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAwOQorCisgICAg
ICAgIHRoZSBzYW1wbGU6CisgICAgICAgIHZhciBidWlsZGVyID0gbmV3IEluc3BlY3RvclRlc3Qu
SGVhcFNuYXBzaG90QnVpbGRlcigpOworICAgICAgICB2YXIgZGVidWdnZXJOb2RlID0gbmV3IElu
c3BlY3RvclRlc3QuSGVhcE5vZGUoIkRlYnVnZ2VyIik7CisgICAgICAgIGJ1aWxkZXIucm9vdE5v
ZGUubGlua05vZGUoZGVidWdnZXJOb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLlR5cGUuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIHdpbmRvd05vZGUgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFw
Tm9kZSgiV2luZG93Iik7CisgICAgICAgIGJ1aWxkZXIucm9vdE5vZGUubGlua05vZGUod2luZG93
Tm9kZSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5UeXBlLnNob3J0Y3V0KTsKKworICAgICAgICBk
ZWJ1Z2dlck5vZGUubGlua05vZGUod2luZG93Tm9kZSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5U
eXBlLnByb3BlcnR5LCAid2luZG93UHJvcGVydHkiKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
Z2VuZXJhdGVTbmFwc2hvdCgpOworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoK
KyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdCk6CisgICAgICAgIChpbml0aWFs
aXplX0hlYXBTbmFwc2hvdFRlc3QuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA1LTE4ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1cHN0cmVhbSBidWlsZCBk
b21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKaW5kZXgg
ODkyMzAwNzA0YmYxYTFhZWEwOWFmOWY3MzI0MjU5ODAwMDE2NmI3OS4uYjc4MGZiOTg0NWQ2Mjgw
NmE0N2FjZTVmYTc2NTc3MGJiYTU0MWNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dApAQCAtMTcsNiAr
MTcsOCBAQCBSdW5uaW5nOiBoZWFwU25hcHNob3RQb3N0T3JkZXJJbmRleFRlc3QKIAogUnVubmlu
ZzogaGVhcFNuYXBzaG90RG9taW5hdG9yc1RyZWVUZXN0CiAKK1J1bm5pbmc6IGhlYXBTbmFwc2hv
dFBhZ2VPd25lZFRlc3QKKwogUnVubmluZzogaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdAogCiBS
dW5uaW5nOiBoZWFwU25hcHNob3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKaW5kZXggYjUzOGU2OGIx
YWVjM2M2YTM0NDRjODBhODc0ZjQzYzM5ODU5ZThlNS4uOTg2YTQzZWUxNGQyMjEwMTY4ZTIzNGM4
YTk4MGZiZjY5MTJkMzY1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC0zNzgsNiArMzc4LDE5MSBAQCBJbnNwZWN0
b3JUZXN0LmNvdW50RGF0YVJvd3MgPSBmdW5jdGlvbihyb3csIGZpbHRlcikKICAgICByZXR1cm4g
cmVzdWx0OwogfTsKIAorSW5zcGVjdG9yVGVzdC5IZWFwTm9kZSA9IGZ1bmN0aW9uKG5hbWUsIHNp
emUsIHR5cGUpCit7CisgICAgdGhpcy5fdHlwZSA9IHR5cGUgPyB0eXBlIDogSW5zcGVjdG9yVGVz
dC5IZWFwTm9kZS5UeXBlLm9iamVjdDsKKyAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICB0aGlz
Ll9zaXplID0gc2l6ZSB8fCAwOworICAgIHRoaXMuX2J1aWxkZXIgPSBudWxsOworICAgIHRoaXMu
X2VkZ2VzID0gW107Cit9CisKK0luc3BlY3RvclRlc3QuSGVhcE5vZGUuVHlwZSA9IHsKKyAgICAi
aGlkZGVuIjogImhpZGRlbiIsCisgICAgImFycmF5IjogImFycmF5IiwKKyAgICAic3RyaW5nIjog
InN0cmluZyIsCisgICAgIm9iamVjdCI6ICJvYmplY3QiLAorICAgICJjb2RlIjogImNvZGUiLAor
ICAgICJjbG9zdXJlIjogImNsb3N1cmUiLAorICAgICJyZWdleHAiOiAicmVnZXhwIiwKKyAgICAi
bnVtYmVyIjogIm51bWJlciIsCisgICAgIm5hdGl2ZSI6ICJuYXRpdmUiCit9OworCitJbnNwZWN0
b3JUZXN0LkhlYXBOb2RlLnByb3RvdHlwZSA9IHsKKyAgICBsaW5rTm9kZTogZnVuY3Rpb24obm9k
ZSwgdHlwZSwgbmFtZU9ySW5kZXgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2J1aWxkZXIp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInBhcmVudCBub2RlIGlzIG5vdCBjb25uZWN0
ZWQgdG8gYSBzbmFwc2hvdCIpOworCisgICAgICAgIGlmICghbm9kZS5fYnVpbGRlcikKKyAgICAg
ICAgICAgIG5vZGUuX3NldEJ1aWxkZXIodGhpcy5fYnVpbGRlcik7CisKKyAgICAgICAgaWYgKG5h
bWVPckluZGV4ID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICBuYW1lT3JJbmRleCA9IHRoaXMu
X2VkZ2VzLmxlbmd0aDsKKworICAgICAgICBpZiAobmFtZU9ySW5kZXggaW4gdGhpcy5fZWRnZXMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0IGFkZCBlZGdlIHdpdGggdGhlIHNh
bWUgbmFtZU9ySW5kZXguIG5hbWVPckluZGV4OiAiICsgbmFtZU9ySW5kZXggKyAiIG9sZE5vZGVO
YW1lOiAiICsgdGhpcy5fZWRnZXNbbmFtZU9ySW5kZXhdLl9uYW1lICsgIiBuZXdOb2RlTmFtZTog
IiArIG5vZGUuX25hbWUpOworICAgICAgICB0aGlzLl9lZGdlcy5wdXNoKG5ldyBJbnNwZWN0b3JU
ZXN0LkhlYXBFZGdlKG5vZGUsIHR5cGUsIG5hbWVPckluZGV4KSk7CisgICAgfSwKKworICAgIF9z
ZXRCdWlsZGVyOiBmdW5jdGlvbihidWlsZGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2J1
aWxkZXIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vZGUgcmV1c2luZyBpcyBwcm9o
aWJpdGVkIik7CisKKyAgICAgICAgdGhpcy5fYnVpbGRlciA9IGJ1aWxkZXI7CisgICAgICAgIHRo
aXMuX29yZGluYWwgPSB0aGlzLl9idWlsZGVyLl9yZWdpc3Rlck5vZGUodGhpcyk7CisgICAgfSwK
KworICAgIF9zZXJpYWxpemU6IGZ1bmN0aW9uKHJhd1NuYXBzaG90KQorICAgIHsKKyAgICAgICAg
cmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9idWlsZGVyLmxvb2t1cE5vZGVUeXBlKHRoaXMu
X3R5cGUpKTsKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9idWlsZGVyLmxv
b2t1cE9yQWRkU3RyaW5nKHRoaXMuX25hbWUpKTsKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMu
cHVzaCh0aGlzLl9vcmRpbmFsICogMiArIDEpOyAgICAvLyBpZCBoYXMgdG8gYmUgb2RkIGZvciB0
aGUgY29uc2lzdGVuY3kgd2l0aCBiYWNrZW5kIGltcGxlbWVudGF0aW9uLgorICAgICAgICByYXdT
bmFwc2hvdC5ub2Rlcy5wdXNoKHRoaXMuX3NpemUpOyAgICAgICAgICAgICAgIC8vIHNlbGYgc2l6
ZQorICAgICAgICByYXdTbmFwc2hvdC5ub2Rlcy5wdXNoKDApOyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHJldGFpbmVkX3NpemUKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCgwKTsg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBkb21pbmF0b3IKKyAgICAgICAgcmF3U25hcHNob3Qu
bm9kZXMucHVzaChyYXdTbmFwc2hvdC5lZGdlcy5sZW5ndGgpOyAvLyBlZGdlc19pbmRleAorCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZWRnZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICB0aGlzLl9lZGdlc1tpXS5fc2VyaWFsaXplKHJhd1NuYXBzaG90KTsKKyAgICB9Cit9
CisKK0luc3BlY3RvclRlc3QuSGVhcEVkZ2UgPSBmdW5jdGlvbihub2RlLCB0eXBlLCBuYW1lT3JJ
bmRleCkKK3sKKyAgICB0aGlzLl9ub2RlID0gbm9kZTsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsK
KyAgICB0aGlzLl9uYW1lT3JJbmRleCA9IG5hbWVPckluZGV4OworfQorCitJbnNwZWN0b3JUZXN0
LkhlYXBFZGdlLnByb3RvdHlwZSA9IHsKKyAgICBfc2VyaWFsaXplOiBmdW5jdGlvbihyYXdTbmFw
c2hvdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbm9kZS5fYnVpbGRlcikKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiSW5jb25zaXN0ZW50IHN0YXRlIG9mIG5vZGU6ICIgKyB0aGlz
Ll9uYW1lICsgIiBubyBidWlsZGVyIGFzc2lnbmVkIik7CisgICAgICAgIHZhciBidWlsZGVyID0g
dGhpcy5fbm9kZS5fYnVpbGRlcjsKKyAgICAgICAgcmF3U25hcHNob3QuZWRnZXMucHVzaChidWls
ZGVyLmxvb2t1cEVkZ2VUeXBlKHRoaXMuX3R5cGUpKTsKKyAgICAgICAgcmF3U25hcHNob3QuZWRn
ZXMucHVzaCh0eXBlb2YgdGhpcy5fbmFtZU9ySW5kZXggPT09ICJzdHJpbmciID8gYnVpbGRlci5s
b29rdXBPckFkZFN0cmluZyh0aGlzLl9uYW1lT3JJbmRleCkgOiB0aGlzLl9uYW1lT3JJbmRleCk7
CisgICAgICAgIHJhd1NuYXBzaG90LmVkZ2VzLnB1c2godGhpcy5fbm9kZS5fb3JkaW5hbCAqIGJ1
aWxkZXIubm9kZUZpZWxkc0NvdW50KTsgLy8gaW5kZXgKKyAgICB9Cit9CisKK0luc3BlY3RvclRl
c3QuSGVhcEVkZ2UuVHlwZSA9IHsKKyAgICAiY29udGV4dCI6ICJjb250ZXh0IiwKKyAgICAiZWxl
bWVudCI6ICJlbGVtZW50IiwKKyAgICAicHJvcGVydHkiOiAicHJvcGVydHkiLAorICAgICJpbnRl
cm5hbCI6ICJpbnRlcm5hbCIsCisgICAgImhpZGRlbiI6ICJoaWRkZW4iLAorICAgICJzaG9ydGN1
dCI6ICJzaG9ydGN1dCIKK307CisKK0luc3BlY3RvclRlc3QuSGVhcFNuYXBzaG90QnVpbGRlciA9
IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9ub2RlcyA9IFtdOworICAgIHRoaXMuX3N0cmluZzJp
ZCA9IHt9OworICAgIHRoaXMuX3N0cmluZ3MgPSBbXTsKKyAgICB0aGlzLm5vZGVGaWVsZHNDb3Vu
dCA9IDc7CisKKyAgICB0aGlzLl9ub2RlVHlwZXNNYXAgPSB7fTsKKyAgICB0aGlzLl9ub2RlVHlw
ZXNBcnJheSA9IFtdOworICAgIGZvciAodmFyIG5vZGVUeXBlIGluIEluc3BlY3RvclRlc3QuSGVh
cE5vZGUuVHlwZSkgeworICAgICAgICB0aGlzLl9ub2RlVHlwZXNNYXBbbm9kZVR5cGVdID0gdGhp
cy5fbm9kZVR5cGVzQXJyYXkubGVuZ3RoCisgICAgICAgIHRoaXMuX25vZGVUeXBlc0FycmF5LnB1
c2gobm9kZVR5cGUpOworICAgIH0KKworICAgIHRoaXMuX2VkZ2VUeXBlc01hcCA9IHt9OworICAg
IHRoaXMuX2VkZ2VUeXBlc0FycmF5ID0gW107CisgICAgZm9yICh2YXIgZWRnZVR5cGUgaW4gSW5z
cGVjdG9yVGVzdC5IZWFwRWRnZS5UeXBlKSB7CisgICAgICAgIHRoaXMuX2VkZ2VUeXBlc01hcFtl
ZGdlVHlwZV0gPSB0aGlzLl9lZGdlVHlwZXNBcnJheS5sZW5ndGgKKyAgICAgICAgdGhpcy5fZWRn
ZVR5cGVzQXJyYXkucHVzaChlZGdlVHlwZSk7CisgICAgfQorCisgICAgdGhpcy5yb290Tm9kZSA9
IG5ldyBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlKCJyb290IiwgMCwgIm9iamVjdCIpOworICAgIHRo
aXMucm9vdE5vZGUuX3NldEJ1aWxkZXIodGhpcyk7Cit9CisKK0luc3BlY3RvclRlc3QuSGVhcFNu
YXBzaG90QnVpbGRlci5wcm90b3R5cGUgPSB7CisgICAgZ2VuZXJhdGVTbmFwc2hvdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHJhd1NuYXBzaG90ID0geworICAgICAgICAgICAgInNu
YXBzaG90IjogeworICAgICAgICAgICAgICAgICJtZXRhIjogeworICAgICAgICAgICAgICAgICAg
ICAibm9kZV9maWVsZHMiOiBbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5l
ZF9zaXplIiwiZG9taW5hdG9yIiwiZWRnZXNfaW5kZXgiXSwKKyAgICAgICAgICAgICAgICAgICAg
Im5vZGVfdHlwZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZXNB
cnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAg
Im51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIgorICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAiZWRnZV9maWVsZHMiOiBbInR5cGUiLCJu
YW1lX29yX2luZGV4IiwidG9fbm9kZSJdLAorICAgICAgICAgICAgICAgICAgICAiZWRnZV90eXBl
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkZ2VUeXBlc0FycmF5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgInN0cmluZ19vcl9udW1iZXIiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIm5vZGUiCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIm5vZGVzIjogW10sCisgICAgICAgICAgICAi
ZWRnZXMiOltdLAorICAgICAgICAgICAgInN0cmluZ3MiOiBbXSwKKyAgICAgICAgICAgIG1heEpT
T2JqZWN0SWQ6IHRoaXMuX25vZGVzLmxlbmd0aCAqIDIgKyAxCisgICAgICAgIH07CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9ub2Rlcy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIHRoaXMuX25vZGVzW2ldLl9zZXJpYWxpemUocmF3U25hcHNob3QpOworCisgICAgICAgIHJh
d1NuYXBzaG90LnN0cmluZ3MgPSB0aGlzLl9zdHJpbmdzLnNsaWNlKCk7CisKKyAgICAgICAgcmV0
dXJuIHJhd1NuYXBzaG90OworICAgIH0sCisKKyAgICBfcmVnaXN0ZXJOb2RlOiBmdW5jdGlvbihu
b2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX25vZGVzLmxlbmd0aCAtIDE7CisgICAgfSwKKworICAgIGxvb2t1cE5vZGVUeXBl
OiBmdW5jdGlvbih0eXBlTmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlTmFtZSA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBub2RlIHR5cGU6ICIg
KyB0eXBlTmFtZSk7CisgICAgICAgIGlmICghdHlwZU5hbWUgaW4gdGhpcy5fbm9kZVR5cGVzTWFw
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBub2RlIHR5cGUgbmFtZTogIiAr
IHR5cGVOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVUeXBlc01hcFt0eXBlTmFtZV07
CisgICAgfSwKKworICAgIGxvb2t1cEVkZ2VUeXBlOiBmdW5jdGlvbih0eXBlTmFtZSkKKyAgICB7
CisgICAgICAgIGlmICghdHlwZU5hbWUgaW4gdGhpcy5fZWRnZVR5cGVzTWFwKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBlZGdlIHR5cGUgbmFtZTogIiArIHR5cGVOYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VUeXBlc01hcFt0eXBlTmFtZV07CisgICAgfSwKKwor
ICAgIGxvb2t1cE9yQWRkU3RyaW5nOiBmdW5jdGlvbihzdHJpbmcpCisgICAgeworICAgICAgICBp
ZiAoc3RyaW5nIGluIHRoaXMuX3N0cmluZzJpZCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9z
dHJpbmcyaWRbc3RyaW5nXTsKKyAgICAgICAgdGhpcy5fc3RyaW5nMmlkW3N0cmluZ10gPSB0aGlz
Ll9zdHJpbmdzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5fc3RyaW5ncy5wdXNoKHN0cmluZyk7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zdHJpbmdzLmxlbmd0aCAtIDE7CisgICAgfQorfQorCiBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdCA9IGZ1bmN0aW9uKGluc3RhbmNlQ291bnQsIGZp
cnN0SWQpCiB7CiAgICAgLy8gTW9ja2luZyByZXN1bHRzIG9mIHJ1bm5pbmcgdGhlIGZvbGxvd2lu
ZyBjb2RlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90Lmh0bWwKaW5kZXggNGUzNTgzZjMxZGVkNzJmN2QzZWY1MTBhNTQ0NzRlY2YzMThlMjBkMi4u
YzA4YWEyNzBkNzY5MWRlM2MwZDMzMWJkMDNiMjI3ZjlhZjU1NjA1ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC0xMTYsNiAr
MTE2LDM5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9
LAogCisgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFBhZ2VPd25lZFRlc3QobmV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGJ1aWxkZXIgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFw
U25hcHNob3RCdWlsZGVyKCk7CisgICAgICAgICAgICB2YXIgcm9vdE5vZGUgPSBidWlsZGVyLnJv
b3ROb2RlOworCisgICAgICAgICAgICB2YXIgZGVidWdnZXJOb2RlID0gbmV3IEluc3BlY3RvclRl
c3QuSGVhcE5vZGUoIkRlYnVnZ2VyIik7CisgICAgICAgICAgICByb290Tm9kZS5saW5rTm9kZShk
ZWJ1Z2dlck5vZGUsIEluc3BlY3RvclRlc3QuSGVhcEVkZ2UuVHlwZS5lbGVtZW50KTsKKworICAg
ICAgICAgICAgdmFyIHdpbmRvd05vZGUgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFwTm9kZSgiV2lu
ZG93Iik7CisgICAgICAgICAgICByb290Tm9kZS5saW5rTm9kZSh3aW5kb3dOb2RlLCBJbnNwZWN0
b3JUZXN0LkhlYXBFZGdlLlR5cGUuc2hvcnRjdXQpOworCisgICAgICAgICAgICB2YXIgcGFnZU93
bmVkTm9kZSA9IG5ldyBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlKCJQYWdlT3duZWROb2RlIik7Cisg
ICAgICAgICAgICB3aW5kb3dOb2RlLmxpbmtOb2RlKHBhZ2VPd25lZE5vZGUsIEluc3BlY3RvclRl
c3QuSGVhcEVkZ2UuVHlwZS5lbGVtZW50KTsKKyAgICAgICAgICAgIGRlYnVnZ2VyTm9kZS5saW5r
Tm9kZShwYWdlT3duZWROb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLlR5cGUucHJvcGVydHks
ICJkZWJ1Z2dlcjJwYWdlT3duZWROb2RlIik7CisKKyAgICAgICAgICAgIHZhciBkZWJ1Z2dlck93
bmVkTm9kZSA9IG5ldyBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlKCJkZWJ1Z2dlck93bmVkTm9kZSIp
OworCSAgICBkZWJ1Z2dlck5vZGUubGlua05vZGUoZGVidWdnZXJPd25lZE5vZGUsIEluc3BlY3Rv
clRlc3QuSGVhcEVkZ2UuVHlwZS5lbGVtZW50KTsKKworICAgICAgICAgICAgdmFyIHNuYXBzaG90
ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoYnVpbGRlci5nZW5lcmF0ZVNuYXBzaG90
KCkpOworICAgICAgICAgICAgc25hcHNob3QuX2ZsYWdzID0gbmV3IEFycmF5KHNuYXBzaG90Lm5v
ZGVDb3VudCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNuYXBzaG90Lm5vZGVD
b3VudDsgKytpKQorICAgICAgICAgICAgICAgIHNuYXBzaG90Ll9mbGFnc1tpXSA9IDA7CisgICAg
ICAgICAgICBzbmFwc2hvdC5fbWFya1BhZ2VPd25lZE5vZGVzKCk7CisKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZEZsYWdzID0gWzAsIDAsIDQsIDQsIDBdOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZXhwZWN0
ZWRGbGFncyksCisgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc25hcHNob3QuX2ZsYWdz
KSwKKyAgICAgICAgICAgICAgICAiV2UgYXJlIGV4cGVjdGluZyB0aGF0IG9ubHkgd2luZG93KHRo
aXJkIGVsZW1lbnQpIGFuZCBQYWdlT3duZWROb2RlKGZvcnRoIGVsZW1lbnQpIGhhdmUgZmxhZyA9
PT0gNC4iKTsKKworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCiAgICAgICAgIGZ1
bmN0aW9uIGhlYXBTbmFwc2hvdFJldGFpbmVyc1Rlc3QobmV4dCkKICAgICAgICAgewogICAgICAg
ICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143030</attachid>
            <date>2012-05-21 07:13:42 -0700</date>
            <delta_ts>2012-05-21 07:30:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87009-20120521181340.patch</filename>
            <type>text/plain</type>
            <size>10682</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzUwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjI5NzRlMWExZTRhNmViNDM3MWUx
ZTEwZTlkMjdiNTRlYjE1OGQ5Ny4uOTc1MDdlOTkxNTk0YThlOGY0NjY5YTYyZDA3YWNjZTIyNjk3
ZTM2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA1LTIxICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1
Y2UgYSBoZWxwZXIgZm9yIEhlYXBTbmFwc2hvdCBwb3N0LXByb2Nlc3NpbmcgdGVzdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAwOQorCisgICAg
ICAgIHRoZSBzYW1wbGU6CisgICAgICAgIHZhciBidWlsZGVyID0gbmV3IEluc3BlY3RvclRlc3Qu
SGVhcFNuYXBzaG90QnVpbGRlcigpOworICAgICAgICB2YXIgZGVidWdnZXJOb2RlID0gbmV3IElu
c3BlY3RvclRlc3QuSGVhcE5vZGUoIkRlYnVnZ2VyIik7CisgICAgICAgIGJ1aWxkZXIucm9vdE5v
ZGUubGlua05vZGUoZGVidWdnZXJOb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLlR5cGUuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIHdpbmRvd05vZGUgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFw
Tm9kZSgiV2luZG93Iik7CisgICAgICAgIGJ1aWxkZXIucm9vdE5vZGUubGlua05vZGUod2luZG93
Tm9kZSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5UeXBlLnNob3J0Y3V0KTsKKworICAgICAgICBk
ZWJ1Z2dlck5vZGUubGlua05vZGUod2luZG93Tm9kZSwgSW5zcGVjdG9yVGVzdC5IZWFwRWRnZS5U
eXBlLnByb3BlcnR5LCAid2luZG93UHJvcGVydHkiKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
Z2VuZXJhdGVTbmFwc2hvdCgpOworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoK
KyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdCk6CisgICAgICAgIChpbml0aWFs
aXplX0hlYXBTbmFwc2hvdFRlc3QuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA1LTE4ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1cHN0cmVhbSBidWlsZCBk
b21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKaW5kZXgg
ODkyMzAwNzA0YmYxYTFhZWEwOWFmOWY3MzI0MjU5ODAwMDE2NmI3OS4uYjc4MGZiOTg0NWQ2Mjgw
NmE0N2FjZTVmYTc2NTc3MGJiYTU0MWNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dApAQCAtMTcsNiAr
MTcsOCBAQCBSdW5uaW5nOiBoZWFwU25hcHNob3RQb3N0T3JkZXJJbmRleFRlc3QKIAogUnVubmlu
ZzogaGVhcFNuYXBzaG90RG9taW5hdG9yc1RyZWVUZXN0CiAKK1J1bm5pbmc6IGhlYXBTbmFwc2hv
dFBhZ2VPd25lZFRlc3QKKwogUnVubmluZzogaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdAogCiBS
dW5uaW5nOiBoZWFwU25hcHNob3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKaW5kZXggYjUzOGU2OGIx
YWVjM2M2YTM0NDRjODBhODc0ZjQzYzM5ODU5ZThlNS4uZmRmY2E1ZTU2N2Y2NjM0NDE4YzhjM2Ux
YmQ0ODk3NGM1MzhlMjYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC0zNzgsNiArMzc4LDE5MyBAQCBJbnNwZWN0
b3JUZXN0LmNvdW50RGF0YVJvd3MgPSBmdW5jdGlvbihyb3csIGZpbHRlcikKICAgICByZXR1cm4g
cmVzdWx0OwogfTsKIAorSW5zcGVjdG9yVGVzdC5IZWFwTm9kZSA9IGZ1bmN0aW9uKG5hbWUsIHNp
emUsIHR5cGUpCit7CisgICAgdGhpcy5fdHlwZSA9IHR5cGUgPyB0eXBlIDogSW5zcGVjdG9yVGVz
dC5IZWFwTm9kZS5UeXBlLm9iamVjdDsKKyAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICB0aGlz
Ll9zaXplID0gc2l6ZSB8fCAwOworICAgIHRoaXMuX2J1aWxkZXIgPSBudWxsOworICAgIHRoaXMu
X2VkZ2VzID0ge307CisgICAgdGhpcy5fZWRnZXNDb3VudCA9IDA7Cit9CisKK0luc3BlY3RvclRl
c3QuSGVhcE5vZGUuVHlwZSA9IHsKKyAgICAiaGlkZGVuIjogImhpZGRlbiIsCisgICAgImFycmF5
IjogImFycmF5IiwKKyAgICAic3RyaW5nIjogInN0cmluZyIsCisgICAgIm9iamVjdCI6ICJvYmpl
Y3QiLAorICAgICJjb2RlIjogImNvZGUiLAorICAgICJjbG9zdXJlIjogImNsb3N1cmUiLAorICAg
ICJyZWdleHAiOiAicmVnZXhwIiwKKyAgICAibnVtYmVyIjogIm51bWJlciIsCisgICAgIm5hdGl2
ZSI6ICJuYXRpdmUiCit9OworCitJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLnByb3RvdHlwZSA9IHsK
KyAgICBsaW5rTm9kZTogZnVuY3Rpb24obm9kZSwgdHlwZSwgbmFtZU9ySW5kZXgpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2J1aWxkZXIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
InBhcmVudCBub2RlIGlzIG5vdCBjb25uZWN0ZWQgdG8gYSBzbmFwc2hvdCIpOworCisgICAgICAg
IGlmICghbm9kZS5fYnVpbGRlcikKKyAgICAgICAgICAgIG5vZGUuX3NldEJ1aWxkZXIodGhpcy5f
YnVpbGRlcik7CisKKyAgICAgICAgaWYgKG5hbWVPckluZGV4ID09PSB1bmRlZmluZWQpCisgICAg
ICAgICAgICBuYW1lT3JJbmRleCA9IHRoaXMuX2VkZ2VzQ291bnQ7CisgICAgICAgICsrdGhpcy5f
ZWRnZXNDb3VudDsKKworICAgICAgICBpZiAobmFtZU9ySW5kZXggaW4gdGhpcy5fZWRnZXMpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0IGFkZCBlZGdlIHdpdGggdGhlIHNhbWUg
bmFtZU9ySW5kZXguIG5hbWVPckluZGV4OiAiICsgbmFtZU9ySW5kZXggKyAiIG9sZE5vZGVOYW1l
OiAiICsgdGhpcy5fZWRnZXNbbmFtZU9ySW5kZXhdLl9uYW1lICsgIiBuZXdOb2RlTmFtZTogIiAr
IG5vZGUuX25hbWUpOworICAgICAgICB0aGlzLl9lZGdlc1tuYW1lT3JJbmRleF0gPSBuZXcgSW5z
cGVjdG9yVGVzdC5IZWFwRWRnZShub2RlLCB0eXBlLCBuYW1lT3JJbmRleCk7CisgICAgfSwKKwor
ICAgIF9zZXRCdWlsZGVyOiBmdW5jdGlvbihidWlsZGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX2J1aWxkZXIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vZGUgcmV1c2luZyBp
cyBwcm9oaWJpdGVkIik7CisKKyAgICAgICAgdGhpcy5fYnVpbGRlciA9IGJ1aWxkZXI7CisgICAg
ICAgIHRoaXMuX29yZGluYWwgPSB0aGlzLl9idWlsZGVyLl9yZWdpc3Rlck5vZGUodGhpcyk7Cisg
ICAgfSwKKworICAgIF9zZXJpYWxpemU6IGZ1bmN0aW9uKHJhd1NuYXBzaG90KQorICAgIHsKKyAg
ICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9idWlsZGVyLmxvb2t1cE5vZGVUeXBl
KHRoaXMuX3R5cGUpKTsKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9idWls
ZGVyLmxvb2t1cE9yQWRkU3RyaW5nKHRoaXMuX25hbWUpKTsKKyAgICAgICAgcmF3U25hcHNob3Qu
bm9kZXMucHVzaCh0aGlzLl9vcmRpbmFsICogMiArIDEpOyAgICAvLyBpZCBoYXMgdG8gYmUgb2Rk
IGZvciB0aGUgY29uc2lzdGVuY3kgd2l0aCBiYWNrZW5kIGltcGxlbWVudGF0aW9uLgorICAgICAg
ICByYXdTbmFwc2hvdC5ub2Rlcy5wdXNoKHRoaXMuX3NpemUpOyAgICAgICAgICAgICAgIC8vIHNl
bGYgc2l6ZQorICAgICAgICByYXdTbmFwc2hvdC5ub2Rlcy5wdXNoKDApOyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHJldGFpbmVkX3NpemUKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVz
aCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb21pbmF0b3IKKyAgICAgICAgcmF3U25h
cHNob3Qubm9kZXMucHVzaChyYXdTbmFwc2hvdC5lZGdlcy5sZW5ndGgpOyAvLyBlZGdlc19pbmRl
eAorCisgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5fZWRnZXMpCisgICAgICAgICAgICB0aGlz
Ll9lZGdlc1tpXS5fc2VyaWFsaXplKHJhd1NuYXBzaG90KTsKKyAgICB9Cit9CisKK0luc3BlY3Rv
clRlc3QuSGVhcEVkZ2UgPSBmdW5jdGlvbihub2RlLCB0eXBlLCBuYW1lT3JJbmRleCkKK3sKKyAg
ICB0aGlzLl9ub2RlID0gbm9kZTsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICB0aGlzLl9u
YW1lT3JJbmRleCA9IG5hbWVPckluZGV4OworfQorCitJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLnBy
b3RvdHlwZSA9IHsKKyAgICBfc2VyaWFsaXplOiBmdW5jdGlvbihyYXdTbmFwc2hvdCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fbm9kZS5fYnVpbGRlcikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiSW5jb25zaXN0ZW50IHN0YXRlIG9mIG5vZGU6ICIgKyB0aGlzLl9uYW1lICsgIiBu
byBidWlsZGVyIGFzc2lnbmVkIik7CisgICAgICAgIHZhciBidWlsZGVyID0gdGhpcy5fbm9kZS5f
YnVpbGRlcjsKKyAgICAgICAgcmF3U25hcHNob3QuZWRnZXMucHVzaChidWlsZGVyLmxvb2t1cEVk
Z2VUeXBlKHRoaXMuX3R5cGUpKTsKKyAgICAgICAgcmF3U25hcHNob3QuZWRnZXMucHVzaCh0eXBl
b2YgdGhpcy5fbmFtZU9ySW5kZXggPT09ICJzdHJpbmciID8gYnVpbGRlci5sb29rdXBPckFkZFN0
cmluZyh0aGlzLl9uYW1lT3JJbmRleCkgOiB0aGlzLl9uYW1lT3JJbmRleCk7CisgICAgICAgIHJh
d1NuYXBzaG90LmVkZ2VzLnB1c2godGhpcy5fbm9kZS5fb3JkaW5hbCAqIGJ1aWxkZXIubm9kZUZp
ZWxkc0NvdW50KTsgLy8gaW5kZXgKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3QuSGVhcEVkZ2Uu
VHlwZSA9IHsKKyAgICAiY29udGV4dCI6ICJjb250ZXh0IiwKKyAgICAiZWxlbWVudCI6ICJlbGVt
ZW50IiwKKyAgICAicHJvcGVydHkiOiAicHJvcGVydHkiLAorICAgICJpbnRlcm5hbCI6ICJpbnRl
cm5hbCIsCisgICAgImhpZGRlbiI6ICJoaWRkZW4iLAorICAgICJzaG9ydGN1dCI6ICJzaG9ydGN1
dCIKK307CisKK0luc3BlY3RvclRlc3QuSGVhcFNuYXBzaG90QnVpbGRlciA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB0aGlzLl9ub2RlcyA9IFtdOworICAgIHRoaXMuX3N0cmluZzJpZCA9IHt9OworICAg
IHRoaXMuX3N0cmluZ3MgPSBbXTsKKyAgICB0aGlzLm5vZGVGaWVsZHNDb3VudCA9IDc7CisKKyAg
ICB0aGlzLl9ub2RlVHlwZXNNYXAgPSB7fTsKKyAgICB0aGlzLl9ub2RlVHlwZXNBcnJheSA9IFtd
OworICAgIGZvciAodmFyIG5vZGVUeXBlIGluIEluc3BlY3RvclRlc3QuSGVhcE5vZGUuVHlwZSkg
eworICAgICAgICB0aGlzLl9ub2RlVHlwZXNNYXBbbm9kZVR5cGVdID0gdGhpcy5fbm9kZVR5cGVz
QXJyYXkubGVuZ3RoCisgICAgICAgIHRoaXMuX25vZGVUeXBlc0FycmF5LnB1c2gobm9kZVR5cGUp
OworICAgIH0KKworICAgIHRoaXMuX2VkZ2VUeXBlc01hcCA9IHt9OworICAgIHRoaXMuX2VkZ2VU
eXBlc0FycmF5ID0gW107CisgICAgZm9yICh2YXIgZWRnZVR5cGUgaW4gSW5zcGVjdG9yVGVzdC5I
ZWFwRWRnZS5UeXBlKSB7CisgICAgICAgIHRoaXMuX2VkZ2VUeXBlc01hcFtlZGdlVHlwZV0gPSB0
aGlzLl9lZGdlVHlwZXNBcnJheS5sZW5ndGgKKyAgICAgICAgdGhpcy5fZWRnZVR5cGVzQXJyYXku
cHVzaChlZGdlVHlwZSk7CisgICAgfQorCisgICAgdGhpcy5yb290Tm9kZSA9IG5ldyBJbnNwZWN0
b3JUZXN0LkhlYXBOb2RlKCJyb290IiwgMCwgIm9iamVjdCIpOworICAgIHRoaXMucm9vdE5vZGUu
X3NldEJ1aWxkZXIodGhpcyk7Cit9CisKK0luc3BlY3RvclRlc3QuSGVhcFNuYXBzaG90QnVpbGRl
ci5wcm90b3R5cGUgPSB7CisgICAgZ2VuZXJhdGVTbmFwc2hvdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdmFyIHJhd1NuYXBzaG90ID0geworICAgICAgICAgICAgInNuYXBzaG90Ijogewor
ICAgICAgICAgICAgICAgICJtZXRhIjogeworICAgICAgICAgICAgICAgICAgICAibm9kZV9maWVs
ZHMiOiBbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5lZF9zaXplIiwiZG9t
aW5hdG9yIiwiZWRnZXNfaW5kZXgiXSwKKyAgICAgICAgICAgICAgICAgICAgIm5vZGVfdHlwZXMi
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZXNBcnJheSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgIm51
bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm51bWJlciIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIgorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAiZWRnZV9maWVsZHMiOiBbInR5cGUiLCJuYW1lX29yX2luZGV4
IiwidG9fbm9kZSJdLAorICAgICAgICAgICAgICAgICAgICAiZWRnZV90eXBlcyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkZ2VUeXBlc0FycmF5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgInN0cmluZ19vcl9udW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5v
ZGUiCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgIm5vZGVzIjogW10sCisgICAgICAgICAgICAiZWRnZXMiOltdLAor
ICAgICAgICAgICAgInN0cmluZ3MiOiBbXSwKKyAgICAgICAgICAgIG1heEpTT2JqZWN0SWQ6IHRo
aXMuX25vZGVzLmxlbmd0aCAqIDIgKyAxCisgICAgICAgIH07CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLl9ub2Rlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX25v
ZGVzW2ldLl9zZXJpYWxpemUocmF3U25hcHNob3QpOworCisgICAgICAgIHJhd1NuYXBzaG90LnN0
cmluZ3MgPSB0aGlzLl9zdHJpbmdzLnNsaWNlKCk7CisKKyAgICAgICAgcmV0dXJuIHJhd1NuYXBz
aG90OworICAgIH0sCisKKyAgICBfcmVnaXN0ZXJOb2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsK
KyAgICAgICAgdGhpcy5fbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25v
ZGVzLmxlbmd0aCAtIDE7CisgICAgfSwKKworICAgIGxvb2t1cE5vZGVUeXBlOiBmdW5jdGlvbih0
eXBlTmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlTmFtZSA9PT0gdW5kZWZpbmVkKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBub2RlIHR5cGU6ICIgKyB0eXBlTmFtZSk7
CisgICAgICAgIGlmICghdHlwZU5hbWUgaW4gdGhpcy5fbm9kZVR5cGVzTWFwKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBub2RlIHR5cGUgbmFtZTogIiArIHR5cGVOYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVUeXBlc01hcFt0eXBlTmFtZV07CisgICAgfSwKKwor
ICAgIGxvb2t1cEVkZ2VUeXBlOiBmdW5jdGlvbih0eXBlTmFtZSkKKyAgICB7CisgICAgICAgIGlm
ICghdHlwZU5hbWUgaW4gdGhpcy5fZWRnZVR5cGVzTWFwKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJ3cm9uZyBlZGdlIHR5cGUgbmFtZTogIiArIHR5cGVOYW1lKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2VkZ2VUeXBlc01hcFt0eXBlTmFtZV07CisgICAgfSwKKworICAgIGxvb2t1cE9y
QWRkU3RyaW5nOiBmdW5jdGlvbihzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nIGlu
IHRoaXMuX3N0cmluZzJpZCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdHJpbmcyaWRbc3Ry
aW5nXTsKKyAgICAgICAgdGhpcy5fc3RyaW5nMmlkW3N0cmluZ10gPSB0aGlzLl9zdHJpbmdzLmxl
bmd0aDsKKyAgICAgICAgdGhpcy5fc3RyaW5ncy5wdXNoKHN0cmluZyk7CisgICAgICAgIHJldHVy
biB0aGlzLl9zdHJpbmdzLmxlbmd0aCAtIDE7CisgICAgfQorfQorCiBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUhlYXBTbmFwc2hvdCA9IGZ1bmN0aW9uKGluc3RhbmNlQ291bnQsIGZpcnN0SWQpCiB7CiAg
ICAgLy8gTW9ja2luZyByZXN1bHRzIG9mIHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb2RlOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKaW5k
ZXggNGUzNTgzZjMxZGVkNzJmN2QzZWY1MTBhNTQ0NzRlY2YzMThlMjBkMi4uYzA4YWEyNzBkNzY5
MWRlM2MwZDMzMWJkMDNiMjI3ZjlhZjU1NjA1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC0xMTYsNiArMTE2LDM5IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9LAogCisgICAgICAg
IGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFBhZ2VPd25lZFRlc3QobmV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGJ1aWxkZXIgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFwU25hcHNob3RCdWls
ZGVyKCk7CisgICAgICAgICAgICB2YXIgcm9vdE5vZGUgPSBidWlsZGVyLnJvb3ROb2RlOworCisg
ICAgICAgICAgICB2YXIgZGVidWdnZXJOb2RlID0gbmV3IEluc3BlY3RvclRlc3QuSGVhcE5vZGUo
IkRlYnVnZ2VyIik7CisgICAgICAgICAgICByb290Tm9kZS5saW5rTm9kZShkZWJ1Z2dlck5vZGUs
IEluc3BlY3RvclRlc3QuSGVhcEVkZ2UuVHlwZS5lbGVtZW50KTsKKworICAgICAgICAgICAgdmFy
IHdpbmRvd05vZGUgPSBuZXcgSW5zcGVjdG9yVGVzdC5IZWFwTm9kZSgiV2luZG93Iik7CisgICAg
ICAgICAgICByb290Tm9kZS5saW5rTm9kZSh3aW5kb3dOb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBF
ZGdlLlR5cGUuc2hvcnRjdXQpOworCisgICAgICAgICAgICB2YXIgcGFnZU93bmVkTm9kZSA9IG5l
dyBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlKCJQYWdlT3duZWROb2RlIik7CisgICAgICAgICAgICB3
aW5kb3dOb2RlLmxpbmtOb2RlKHBhZ2VPd25lZE5vZGUsIEluc3BlY3RvclRlc3QuSGVhcEVkZ2Uu
VHlwZS5lbGVtZW50KTsKKyAgICAgICAgICAgIGRlYnVnZ2VyTm9kZS5saW5rTm9kZShwYWdlT3du
ZWROb2RlLCBJbnNwZWN0b3JUZXN0LkhlYXBFZGdlLlR5cGUucHJvcGVydHksICJkZWJ1Z2dlcjJw
YWdlT3duZWROb2RlIik7CisKKyAgICAgICAgICAgIHZhciBkZWJ1Z2dlck93bmVkTm9kZSA9IG5l
dyBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlKCJkZWJ1Z2dlck93bmVkTm9kZSIpOworCSAgICBkZWJ1
Z2dlck5vZGUubGlua05vZGUoZGVidWdnZXJPd25lZE5vZGUsIEluc3BlY3RvclRlc3QuSGVhcEVk
Z2UuVHlwZS5lbGVtZW50KTsKKworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QoYnVpbGRlci5nZW5lcmF0ZVNuYXBzaG90KCkpOworICAgICAg
ICAgICAgc25hcHNob3QuX2ZsYWdzID0gbmV3IEFycmF5KHNuYXBzaG90Lm5vZGVDb3VudCk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNuYXBzaG90Lm5vZGVDb3VudDsgKytpKQor
ICAgICAgICAgICAgICAgIHNuYXBzaG90Ll9mbGFnc1tpXSA9IDA7CisgICAgICAgICAgICBzbmFw
c2hvdC5fbWFya1BhZ2VPd25lZE5vZGVzKCk7CisKKyAgICAgICAgICAgIHZhciBleHBlY3RlZEZs
YWdzID0gWzAsIDAsIDQsIDQsIDBdOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoCisgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRGbGFncyksCisg
ICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc25hcHNob3QuX2ZsYWdzKSwKKyAgICAgICAg
ICAgICAgICAiV2UgYXJlIGV4cGVjdGluZyB0aGF0IG9ubHkgd2luZG93KHRoaXJkIGVsZW1lbnQp
IGFuZCBQYWdlT3duZWROb2RlKGZvcnRoIGVsZW1lbnQpIGhhdmUgZmxhZyA9PT0gNC4iKTsKKwor
ICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCiAgICAgICAgIGZ1bmN0aW9uIGhlYXBT
bmFwc2hvdFJldGFpbmVyc1Rlc3QobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHNu
YXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVh
dGVIZWFwU25hcHNob3RNb2NrKCkpOwo=
</data>
<flag name="review"
          id="149494"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>