<?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>169175</bug_id>
          
          <creation_ts>2017-03-04 14:46:06 -0800</creation_ts>
          <short_desc>Web Inspector: Add tests for webSocketFrameSent and webSocketFrameReceived</short_desc>
          <delta_ts>2017-04-14 23:56:15 -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</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=169011</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>167520</dependson>
    
    <dependson>170609</dependson>
    
    <dependson>170760</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>bburg</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1283482</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-03-04 14:46:06 -0800</bug_when>
    <thetext>NetworkObserver#webSocketFrameReceived and NetworkObserver#webSocketFrameSent were implemented in Bug 167520: Web Inspector: Show Web Socket connections in Network tab.

These two methods are currently untested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283483</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-04 14:46:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/30853154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294990</commentid>
    <comment_count>2</comment_count>
      <attachid>306409</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-04-06 12:36:33 -0700</bug_when>
    <thetext>Created attachment 306409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295041</commentid>
    <comment_count>3</comment_count>
      <attachid>306409</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-04-06 14:16:33 -0700</bug_when>
    <thetext>Comment on attachment 306409
Patch

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

The tests looks good but I want to see updated versions addressing most of my comments.

Is there a test for `webSocketFrameError` in the works?

&gt; LayoutTests/ChangeLog:9
&gt; +        Test recieving and sending text and binary (blob and array buffer) data.

Typo: recieving

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary-expected.txt:4
&gt; +== Running test suite: WebSocket.Binary

Do we have the size of the binary message? I think that would be useful.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary-expected.txt:17
&gt; +PASS: Message walltime is greater than the first one.

A stricter test could check that the time is greater than the last message, not the first message.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary.html:11
&gt; +    setTimeout(() =&gt; webSocket.close(), 500);

A timeout of 500ms could cause this to be flakey.

I&apos;d suggest something like:

    // Global variable to keep it alive.
    let webSocket = null;

    function createWebSocket(type) {
        closeWebSocketConnection();
        webSocket = new WebSocket(...);
        webSocket.binaryType = type;
    }

    function closeWebSocketConnection() {
        if (webSocket) {
            webSocket.close();
            webSocket = null;
        }
    }

And at the end of `resourceWasAdded` before calling resolve you can evaluateInPage(`closeWebSocketConnection()`) to clean up if you want.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary.html:53
&gt; +        setTimeout(() =&gt; reject(), 500);

This will likely cause the test to be flakey. I&apos;d suggest just dropping it.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary.html:58
&gt; +        description: &quot;WebInspector.WebSocketResource.Event.ReadyStateChanged events are fired in order when WebSocket connection is closed by the client.&quot;,

This description doesn&apos;t match the test.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary.html:61
&gt; +

Nit: Drop this empty line.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary.html:62
&gt; +            InspectorTest.evaluateInPage(&quot;createWebSocketConnection(\&quot;blob\&quot;)&quot;);

Style: What I&apos;ve tended to do is to use template strings for code, which eliminates tedious escaping of quotes and it makes code strings appear differently in good editors. So you would have:

    `createWebSocketConnection(&quot;blob&quot;)`

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary.html:68
&gt; +        description: &quot;WebInspector.WebSocketResource.Event.ReadyStateChanged events are fired in order when WebSocket connection is closed by the client.&quot;,

This description doesn&apos;t match the test.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/send-and-receive-expected.txt:7
&gt; +PASS: Message is a text type.

If its text we can show it!

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/send-and-receive.html:27
&gt; +        description: &quot;WebInspector.WebSocketResource.Event.ReadyStateChanged events are fired in order when WebSocket connection is closed by the client.&quot;,

This description does not match the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295114</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-04-06 16:52:27 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #3)
&gt; Comment on attachment 306409 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306409&amp;action=review
&gt; 
&gt; The tests looks good but I want to see updated versions addressing most of
&gt; my comments.
&gt; 
&gt; Is there a test for `webSocketFrameError` in the works?

Yes. It&apos;s more complicated since there&apos;re many reasons a connection may fail. I&apos;m planning on adding webSocketFrameError tests at the same time as the UI for displaying these errors in WebSocketContentView, separately from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295183</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-04-06 20:15:16 -0700</bug_when>
    <thetext>&gt; Yes. It&apos;s more complicated since there&apos;re many reasons a connection may
&gt; fail. I&apos;m planning on adding webSocketFrameError tests at the same time as
&gt; the UI for displaying these errors in WebSocketContentView, separately from
&gt; this patch.

Okay! Can you point me to the bug covering that? Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295388</commentid>
    <comment_count>6</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-04-07 10:58:04 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #5)
&gt; &gt; Yes. It&apos;s more complicated since there&apos;re many reasons a connection may
&gt; &gt; fail. I&apos;m planning on adding webSocketFrameError tests at the same time as
&gt; &gt; the UI for displaying these errors in WebSocketContentView, separately from
&gt; &gt; this patch.
&gt; 
&gt; Okay! Can you point me to the bug covering that? Thanks

&lt;rdar://problem/31389605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295609</commentid>
    <comment_count>7</comment_count>
      <attachid>306409</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-04-07 18:38:59 -0700</bug_when>
    <thetext>Comment on attachment 306409
Patch

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

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/binary-expected.txt:4
&gt;&gt; +== Running test suite: WebSocket.Binary
&gt; 
&gt; Do we have the size of the binary message? I think that would be useful.

Yes, but it was incorrect.
Bug 170609 - Web Inspector: WebSockets: Transferred size is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296128</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-04-10 13:07:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/30853154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296870</commentid>
    <comment_count>9</comment_count>
      <attachid>306409</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-04-12 15:39:07 -0700</bug_when>
    <thetext>Comment on attachment 306409
Patch

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

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/send-and-receive-expected.txt:7
&gt;&gt; +PASS: Message is a text type.
&gt; 
&gt; If its text we can show it!

I&apos;m not sure what you&apos;re suggesting.

    InspectorTest.expectEqual(frame.opcode, WebInspector.WebSocketResource.OpCodes.TextFrame, frame.data);

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296898</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-04-12 18:06:43 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #9)
&gt; Comment on attachment 306409 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306409&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/send-and-receive-expected.txt:7
&gt; &gt;&gt; +PASS: Message is a text type.
&gt; &gt; 
&gt; &gt; If its text we can show it!
&gt; 
&gt; I&apos;m not sure what you&apos;re suggesting.
&gt; 
&gt;     InspectorTest.expectEqual(frame.opcode,
&gt; WebInspector.WebSocketResource.OpCodes.TextFrame, frame.data);
&gt; 
&gt; ?

    InspectorTest.expectEqual(frame.opcode, OpCodes.TextFrame, &quot;Frame should be text&quot;);
    InspectorTest.expectEqual(frame.data, &quot;Hello world&quot;, &quot;Frame data should be &apos;Hello world&apos;&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297653</commentid>
    <comment_count>11</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-04-14 23:56:15 -0700</bug_when>
    <thetext>Fixed in https://trac.webkit.org/changeset/215388/webkit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306409</attachid>
            <date>2017-04-06 12:36:33 -0700</date>
            <delta_ts>2017-04-06 14:16:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13194</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MzY3Yjc2Li4wYmJmNzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMDQt
MDYgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogQWRkIHRlc3RzIGZvciB3ZWJTb2NrZXRGcmFtZVNlbnQgYW5kIHdlYlNvY2tl
dEZyYW1lUmVjZWl2ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTE3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA4NTMxNTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCByZWNpZXZpbmcg
YW5kIHNlbmRpbmcgdGV4dCBhbmQgYmluYXJ5IChibG9iIGFuZCBhcnJheSBidWZmZXIpIGRhdGEu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9i
aW5hcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iaW5hcnkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmluYXJ5X3dzaC5weTogQWRk
ZWQuCisgICAgICAgICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorICAgICAgICAoYWxsX2Rpc3RpbmN0X2J5dGVzKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9zZW5k
LWFuZC1yZWNlaXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3Ivc2VuZC1hbmQtcmVjZWl2ZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9z
ZW5kLWFuZC1yZWNlaXZlX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorCiAy
MDE3LTAzLTI4ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IE1hcmsgdHdvIGZhc3Qvc2Nyb2xsaW5nL2lvcy90b3VjaC1zY3JvbGwgdGVzdHMgYXMgZmFpbGlu
Zy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW5zcGVjdG9yL2JpbmFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iaW5hcnktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNjc3ZDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9i
aW5hcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3RzIHJlY2VpdmluZyBiaW5h
cnkgZGF0YS4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFdlYlNvY2tldC5CaW5hcnkKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBXZWJTb2NrZXQuQmluYXJ5QmxvYgorUEFTUzogTWVzc2FnZSBk
b2VzIG5vdCBoYXZlIGRhdGEuCitQQVNTOiBNZXNzYWdlIGlzIGEgYmluYXJ5IHR5cGUuCitQQVNT
OiBNZXNzYWdlIGlzIGluY29taW5nLgorUEFTUzogTWVzc2FnZSBoYXMgd2FsbHRpbWUuCitQQVNT
OiBNZXNzYWdlIGRvZXMgbm90IGhhdmUgZGF0YS4KK1BBU1M6IE1lc3NhZ2UgaXMgYSBiaW5hcnkg
dHlwZS4KK1BBU1M6IE1lc3NhZ2UgaXMgaW5jb21pbmcuCitQQVNTOiBNZXNzYWdlIHdhbGx0aW1l
IGlzIGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3Qgb25lLgorUEFTUzogTWVzc2FnZSBkYXRhIG1hdGNo
LgorUEFTUzogTWVzc2FnZSBpcyBhIGJpbmFyeSB0eXBlLgorUEFTUzogTWVzc2FnZSBpcyBpbmNv
bWluZy4KK1BBU1M6IE1lc3NhZ2Ugd2FsbHRpbWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBmaXJzdCBv
bmUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBXZWJTb2NrZXQuQXJyYXlCdWZmZXIKK1BBU1M6
IE1lc3NhZ2UgZG9lcyBub3QgaGF2ZSBkYXRhLgorUEFTUzogTWVzc2FnZSBpcyBhIGJpbmFyeSB0
eXBlLgorUEFTUzogTWVzc2FnZSBpcyBpbmNvbWluZy4KK1BBU1M6IE1lc3NhZ2UgaGFzIHdhbGx0
aW1lLgorUEFTUzogTWVzc2FnZSBkb2VzIG5vdCBoYXZlIGRhdGEuCitQQVNTOiBNZXNzYWdlIGlz
IGEgYmluYXJ5IHR5cGUuCitQQVNTOiBNZXNzYWdlIGlzIGluY29taW5nLgorUEFTUzogTWVzc2Fn
ZSB3YWxsdGltZSBpcyBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IG9uZS4KK1BBU1M6IE1lc3NhZ2Ug
ZGF0YSBtYXRjaC4KK1BBU1M6IE1lc3NhZ2UgaXMgYSBiaW5hcnkgdHlwZS4KK1BBU1M6IE1lc3Nh
Z2UgaXMgaW5jb21pbmcuCitQQVNTOiBNZXNzYWdlIHdhbGx0aW1lIGlzIGdyZWF0ZXIgdGhhbiB0
aGUgZmlyc3Qgb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iaW5hcnkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JpbmFyeS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3N2VlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iaW5h
cnkuaHRtbApAQCAtMCwwICsxLDgyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlV2ViU29ja2V0Q29u
bmVjdGlvbihiaW5hcnlUeXBlKQoreworICAgIHZhciB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0
KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iaW5h
cnkiKTsKKyAgICB3ZWJTb2NrZXQuYmluYXJ5VHlwZSA9IGJpbmFyeVR5cGU7CisKKyAgICBzZXRU
aW1lb3V0KCgpID0+IHdlYlNvY2tldC5jbG9zZSgpLCA1MDApOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIldl
YlNvY2tldC5CaW5hcnkiKTsKKworICAgIGZ1bmN0aW9uIHJlc291cmNlV2FzQWRkZWQocmVzb2x2
ZSwgcmVqZWN0LCBldmVudCkgeworICAgICAgICBsZXQgZnJhbWVBZGRlZENvdW50ID0gMDsKKyAg
ICAgICAgbGV0IGZpcnN0TWVzc2FnZVdhbGx0aW1lOworICAgICAgICBsZXQgcmVzb3VyY2UgPSBl
dmVudC5kYXRhLnJlc291cmNlOworCisgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLkV2ZW50LkZyYW1lQWRkZWQsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZnJhbWUgPSBldmVudC5kYXRhOworICAgICAgICAg
ICAgZnJhbWVBZGRlZENvdW50Kys7CisKKyAgICAgICAgICAgIGlmIChmcmFtZUFkZGVkQ291bnQg
PT09IDEpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZyYW1l
LmRhdGEsIG51bGwsICJNZXNzYWdlIGRvZXMgbm90IGhhdmUgZGF0YS4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZyYW1lLm9wY29kZSwgV2ViSW5zcGVjdG9y
LldlYlNvY2tldFJlc291cmNlLk9wQ29kZXMuQmluYXJ5RnJhbWUsICJNZXNzYWdlIGlzIGEgYmlu
YXJ5IHR5cGUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFm
cmFtZS5pc091dGdvaW5nLCAiTWVzc2FnZSBpcyBpbmNvbWluZy4iKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodHlwZW9mIGZyYW1lLndhbGx0aW1lID09PSAibnVt
YmVyIiwgIk1lc3NhZ2UgaGFzIHdhbGx0aW1lLiIpOworICAgICAgICAgICAgICAgIGZpcnN0TWVz
c2FnZVdhbGx0aW1lID0gZnJhbWUud2FsbHRpbWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnJhbWVBZGRlZENvdW50ID09PSAyKSB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChmcmFtZS5kYXRhLCBu
dWxsLCAiTWVzc2FnZSBkb2VzIG5vdCBoYXZlIGRhdGEuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChmcmFtZS5vcGNvZGUsIFdlYkluc3BlY3Rvci5XZWJTb2Nr
ZXRSZXNvdXJjZS5PcENvZGVzLkJpbmFyeUZyYW1lLCAiTWVzc2FnZSBpcyBhIGJpbmFyeSB0eXBl
LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCghZnJhbWUuaXNP
dXRnb2luZywgIk1lc3NhZ2UgaXMgaW5jb21pbmcuIik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGZyYW1lLndhbGx0aW1lID4gZmlyc3RNZXNzYWdlV2FsbHRpbWUs
ICJNZXNzYWdlIHdhbGx0aW1lIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3Qgb25lLiIpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZy
YW1lQWRkZWRDb3VudCA9PT0gMykgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoZnJhbWUuZGF0YSwgbnVsbCwgIk1lc3NhZ2UgZGF0YSBtYXRjaC4iKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZyYW1lLm9wY29kZSwgV2ViSW5z
cGVjdG9yLldlYlNvY2tldFJlc291cmNlLk9wQ29kZXMuQmluYXJ5RnJhbWUsICJNZXNzYWdlIGlz
IGEgYmluYXJ5IHR5cGUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KCFmcmFtZS5pc091dGdvaW5nLCAiTWVzc2FnZSBpcyBpbmNvbWluZy4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZnJhbWUud2FsbHRpbWUgPiBmaXJzdE1l
c3NhZ2VXYWxsdGltZSwgIk1lc3NhZ2Ugd2FsbHRpbWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBmaXJz
dCBvbmUuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgpLCA1MDApOworICAg
IH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIldlYlNvY2tldC5C
aW5hcnlCbG9iIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJXZWJJbnNwZWN0b3IuV2ViU29ja2V0
UmVzb3VyY2UuRXZlbnQuUmVhZHlTdGF0ZUNoYW5nZWQgZXZlbnRzIGFyZSBmaXJlZCBpbiBvcmRl
ciB3aGVuIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGNsb3NlZCBieSB0aGUgY2xpZW50LiIsCisg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
RnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJl
c291cmNlV2FzQWRkZWQsIHJlc291cmNlV2FzQWRkZWQuYmluZChudWxsLCByZXNvbHZlLCByZWpl
Y3QpKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRl
V2ViU29ja2V0Q29ubmVjdGlvbihcImJsb2JcIikiKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiV2ViU29ja2V0LkFycmF5QnVm
ZmVyIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3Vy
Y2UuRXZlbnQuUmVhZHlTdGF0ZUNoYW5nZWQgZXZlbnRzIGFyZSBmaXJlZCBpbiBvcmRlciB3aGVu
IFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGNsb3NlZCBieSB0aGUgY2xpZW50LiIsCisgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNl
V2FzQWRkZWQsIHJlc291cmNlV2FzQWRkZWQuYmluZChudWxsLCByZXNvbHZlLCByZWplY3QpKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZVdlYlNvY2tl
dENvbm5lY3Rpb24oXCJhcnJheWJ1ZmZlclwiKSIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgcmVjZWl2aW5nIGJpbmFyeSBkYXRh
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JpbmFyeV93c2gucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iaW5hcnlfd3No
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NmQwZTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2lu
c3BlY3Rvci9iaW5hcnlfd3NoLnB5CkBAIC0wLDAgKzEsMTggQEAKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcwor
CisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbWVzc2FnZXNf
dG9fc2VuZCA9IFsnSGVsbG8sIHdvcmxkIScsICcnLCBhbGxfZGlzdGluY3RfYnl0ZXMoKV0KKyAg
ICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlc190b19zZW5kOgorICAgICAgICAjIEZJWE1FOiBTaG91
bGQgdXNlIGJldHRlciBBUEkgdG8gc2VuZCBiaW5hcnkgbWVzc2FnZXMgd2hlbiBweXdlYnNvY2tl
dCBzdXBwb3J0cyBpdC4KKyAgICAgICAgaGVhZGVyID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29t
bW9uLk9QQ09ERV9CSU5BUlksIGxlbihtZXNzYWdlKSwgMSwgMCwgMCwgMCwgMCkKKyAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKGhlYWRlciArIG1lc3NhZ2UpCisKKworZGVmIGFsbF9k
aXN0aW5jdF9ieXRlcygpOgorICAgIHJldHVybiAnJy5qb2luKFtjaHIoaSkgZm9yIGkgaW4geHJh
bmdlKDI1NildKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9pbnNwZWN0b3Ivc2VuZC1hbmQtcmVjZWl2ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9zZW5kLWFu
ZC1yZWNlaXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iZDYxY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3Ivc2VuZC1hbmQtcmVjZWl2ZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMCBAQAorVGVzdHMgc2VuZGluZyBhbmQgcmVjZWl2aW5nIFdlYlNvY2tldCBt
ZXNzYWdlcy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFdlYlNvY2tldC5DbGllbnRDbG9z
ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFdlYlNvY2tldC5DbGllbnRDbG9zZQorUEFTUzogTWVz
c2FnZSBkYXRhIG1hdGNoLgorUEFTUzogTWVzc2FnZSBpcyBhIHRleHQgdHlwZS4KK1BBU1M6IE1l
c3NhZ2UgaXMgb3V0Z29pbmcuCitQQVNTOiBNZXNzYWdlIGlzIHdhbGx0aW1lLgorUEFTUzogTWVz
c2FnZSBkYXRhIG1hdGNoLgorUEFTUzogTWVzc2FnZSBpcyBhIHRleHQgdHlwZS4KK1BBU1M6IE1l
c3NhZ2UgaXMgaW5jb21pbmcuCitQQVNTOiBTZWNvbmQgbWVzc2FnZSB3YWxsdGltZSBpcyBncmVh
dGVyIHRoYW4gdGhlIGZpcnN0IG9uZS4KK1BBU1M6IE1lc3NhZ2UgaXMgYSBjb25uZWN0aW9uIGNs
b3NlIHR5cGUuCitQQVNTOiBNZXNzYWdlIGlzIG91dGdvaW5nLgorUEFTUzogTWVzc2FnZSB3YWxs
dGltZSBpcyBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IG9uZS4KK1BBU1M6IE1lc3NhZ2UgaXMgYSBj
b25uZWN0aW9uIGNsb3NlIHR5cGUuCitQQVNTOiBNZXNzYWdlIGlzIGluY29taW5nLgorUEFTUzog
TWVzc2FnZSB3YWxsdGltZSBpcyBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IG9uZS4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0
b3Ivc2VuZC1hbmQtcmVjZWl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9pbnNwZWN0b3Ivc2VuZC1hbmQtcmVjZWl2ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOTFkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9zZW5kLWFu
ZC1yZWNlaXZlLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVdlYlNv
Y2tldENvbm5lY3Rpb24oKQoreworICAgIGxldCB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3
czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9zZW5kLWFu
ZC1yZWNlaXZlIik7CisKKyAgICB3ZWJTb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgd2ViU29ja2V0LnNlbmQoIkEgbWVzc2FnZS4iKTsKKyAgICB9OworCisgICAgd2Vi
U29ja2V0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHdlYlNvY2tldC5j
bG9zZSgpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9
IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiV2ViU29ja2V0LkNsaWVudENsb3NlIik7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJXZWJTb2NrZXQuQ2xp
ZW50Q2xvc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIldlYkluc3BlY3Rvci5XZWJTb2NrZXRS
ZXNvdXJjZS5FdmVudC5SZWFkeVN0YXRlQ2hhbmdlZCBldmVudHMgYXJlIGZpcmVkIGluIG9yZGVy
IHdoZW4gV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgY2xvc2VkIGJ5IHRoZSBjbGllbnQuIiwKKyAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5G
cmFtZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVz
b3VyY2VXYXNBZGRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKworICAgICAgICAgICAgICAgIGxldCBm
cmFtZUFkZGVkQ291bnQgPSAwOworICAgICAgICAgICAgICAgIGxldCBmaXJzdE1lc3NhZ2VXYWxs
dGltZTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291cmNl
OworCisgICAgICAgICAgICAgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQuRnJhbWVBZGRlZCwgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAg
ICAgICAgICAgZnJhbWVBZGRlZENvdW50Kys7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZy
YW1lQWRkZWRDb3VudCA9PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChmcmFtZS5kYXRhLCAiQSBtZXNzYWdlLiIsICJNZXNzYWdlIGRhdGEg
bWF0Y2guIik7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGZyYW1lLm9wY29kZSwgV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLk9wQ29kZXMu
VGV4dEZyYW1lLCAiTWVzc2FnZSBpcyBhIHRleHQgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChmcmFtZS5pc091dGdvaW5nLCAiTWVzc2Fn
ZSBpcyBvdXRnb2luZy4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdCh0eXBlb2YgZnJhbWUud2FsbHRpbWUgPT09ICJudW1iZXIiLCAiTWVzc2FnZSBp
cyB3YWxsdGltZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TWVzc2FnZVdhbGx0
aW1lID0gZnJhbWUud2FsbHRpbWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVBZGRl
ZENvdW50ID09PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKGZyYW1lLmRhdGEsICJBIG1lc3NhZ2UuIiwgIk1lc3NhZ2UgZGF0YSBtYXRjaC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZnJh
bWUub3Bjb2RlLCBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2UuT3BDb2Rlcy5UZXh0RnJh
bWUsICJNZXNzYWdlIGlzIGEgdGV4dCB0eXBlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFmcmFtZS5pc091dGdvaW5nLCAiTWVzc2FnZSBpcyBp
bmNvbWluZy4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdChmcmFtZS53YWxsdGltZSA+IGZpcnN0TWVzc2FnZVdhbGx0aW1lLCAiU2Vjb25kIG1lc3Nh
Z2Ugd2FsbHRpbWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBmaXJzdCBvbmUuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBpZiAoZnJhbWVBZGRlZENvdW50ID09PSAzKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZyYW1lLm9wY29kZSwgV2ViSW5zcGVj
dG9yLldlYlNvY2tldFJlc291cmNlLk9wQ29kZXMuQ29ubmVjdGlvbkNsb3NlRnJhbWUsICJNZXNz
YWdlIGlzIGEgY29ubmVjdGlvbiBjbG9zZSB0eXBlLiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGZyYW1lLmlzT3V0Z29pbmcsICJNZXNzYWdlIGlz
IG91dGdvaW5nLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KGZyYW1lLndhbGx0aW1lID4gZmlyc3RNZXNzYWdlV2FsbHRpbWUsICJNZXNzYWdlIHdh
bGx0aW1lIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3Qgb25lLiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGZyYW1lQWRkZWRDb3VudCA9PT0gNCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChmcmFtZS5vcGNvZGUsIFdlYkluc3BlY3Rvci5X
ZWJTb2NrZXRSZXNvdXJjZS5PcENvZGVzLkNvbm5lY3Rpb25DbG9zZUZyYW1lLCAiTWVzc2FnZSBp
cyBhIGNvbm5lY3Rpb24gY2xvc2UgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdCghZnJhbWUuaXNPdXRnb2luZywgIk1lc3NhZ2UgaXMgaW5j
b21pbmcuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoZnJhbWUud2FsbHRpbWUgPiBmaXJzdE1lc3NhZ2VXYWxsdGltZSwgIk1lc3NhZ2Ugd2FsbHRp
bWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBmaXJzdCBvbmUuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKCJjcmVhdGVXZWJTb2NrZXRDb25uZWN0aW9uKCkiKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIHNlbmRpbmcgYW5kIHJl
Y2VpdmluZyBXZWJTb2NrZXQgbWVzc2FnZXMuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0
b3Ivc2VuZC1hbmQtcmVjZWl2ZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9zZW5kLWFuZC1yZWNlaXZlX3dzaC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2YxY2EwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3Ivc2Vu
ZC1hbmQtcmVjZWl2ZV93c2gucHkKQEAgLTAsMCArMSwxMSBAQAorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IG1zZ3V0aWwKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCk6CisgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCisKKworZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIEVjaG8gbWVzc2FnZSBiYWNrCisgICAgbWVz
c2FnZSA9IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpCisgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgbWVzc2FnZSkK
</data>
<flag name="review"
          id="327757"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>