<?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>187541</bug_id>
          
          <creation_ts>2018-07-10 17:19:58 -0700</creation_ts>
          <short_desc>Flesh out WebSocket cookie tests to cover cookie policy for third-party resources</short_desc>
          <delta_ts>2018-07-17 16:10:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184100</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>lforschler</cc>
    
    <cc>realdawei</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1441030</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-10 17:19:58 -0700</bug_when>
    <thetext>We should add tests that verify the cookie behavior for third-party WebSocket requests and responses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441031</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-10 17:24:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/42048729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441033</commentid>
    <comment_count>2</comment_count>
      <attachid>344736</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-10 17:27:20 -0700</bug_when>
    <thetext>Created attachment 344736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441090</commentid>
    <comment_count>3</comment_count>
      <attachid>344736</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-10 21:08:43 -0700</bug_when>
    <thetext>Comment on attachment 344736
Patch

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

r- for the duplicate code and duplicate functionally in helper scripts. We should share more code with tests and resources in LayoutTests/http/tests/cookies and its subdirectories.

&gt; LayoutTests/http/tests/websocket/tests/hybi/resources/get-cookies.php:18
&gt; +&lt;?php
&gt; +if(!isset($_COOKIE[$_GET[&quot;name1&quot;]])) {
&gt; +    echo &quot;Did not receive cookie named &apos;&quot; . $_GET[&quot;name1&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; +} else {
&gt; +    echo &quot;Received cookie named &apos;&quot; . $_GET[&quot;name1&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; +}
&gt; +if(!empty($_GET[&quot;name2&quot;])) {
&gt; +    if(!isset($_COOKIE[$_GET[&quot;name2&quot;]])) {
&gt; +        echo &quot;Did not receive cookie named &apos;&quot; . $_GET[&quot;name2&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; +    } else {
&gt; +        echo &quot;Received cookie named &apos;&quot; . $_GET[&quot;name2&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; +    }
&gt; +}
&gt; +?&gt;
&gt; +&lt;p id=&quot;output&quot;&gt;&lt;/p&gt;
&gt; +&lt;script&gt;
&gt; +    document.getElementById(&quot;output&quot;).textContent = &quot;Client-side document.cookie: &quot; + document.cookie;
&gt; +&lt;/script&gt;

I am not a fan of this script given that it only retrieves the contents of at most two cookies and how we use it in the tests below to underutilize the functionality provided by js-test.js to assert cookie values. I would prefer that we write the tests below using js-test functionality. If you have your heart set on &quot;dump&quot;ing the cookies then we should make use of the existing helper scripts LayoutTests/http/tests/cookies/resources/echo-cookies.php or LayoutTests/http/tests/cookies/resources/getCookies.cgi instead of adding yet-another-cookie-dumping-script.

&gt; LayoutTests/http/tests/websocket/tests/hybi/resources/set-cookie.php:8
&gt; +&lt;?php
&gt; +setcookie($_GET[&quot;name&quot;], $_GET[&quot;value&quot;], (time()+60*60*24*30), &quot;/&quot;);
&gt; +?&gt;
&gt; +&lt;script&gt;
&gt; +if (document.location.hash) {
&gt; +    setTimeout(&quot;document.location.href = document.location.hash.substring(1)&quot;, 10);
&gt; +}
&gt; +&lt;/script&gt;

I do not see the need for this script. We should make use of setCookie() defined in LayoutTests/http/tests/cookies/resources/cookie-utilities.js. You can see examples of its usage in the tests in LayoutTests/http/tests/cookies/same-site.

&gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:15
&gt; +        function setCookieFromHost(host)
&gt; +        {
&gt; +            var promise = new Promise(resolve =&gt; {
&gt; +                var websocket = new WebSocket(`ws://${host}:8880/websocket/tests/hybi/cookie?set`);
&gt; +                websocket.onclose = () =&gt; resolve();
&gt; +            });
&gt; +            return promise;
&gt; +        }

We should not duplicate this function in every test. We should move it to a shared file and then reference the file. I suggest we come up with a better name for this function, maybe setCookieUsingWebSocketFromHost or setWebSocketCookieFromHost, and put this function with our other cookie utility functions in file LayoutTests/http/tests/cookies/resources/cookie-utilities.js.

&gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:37
&gt; +    testRunner.dumpChildFramesAsText();

This will cause a JavaScript error when running this test outside DumpRenderTree/WebKitTestRunner. I suggest we condition this line on the presence of window.testRunner.

&gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html:59
&gt; +    switch (document.location.hash) {
&gt; +        case &quot;&quot;:
&gt; +            document.location.href = &quot;http://localhost:8000/websocket/tests/hybi/resources/set-cookie.php?name=bar&amp;value=value#http://127.0.0.1:8000/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html#cookieSetAsFirstParty&quot;;
&gt; +            break;
&gt; +        case &quot;#cookieSetAsFirstParty&quot;:
&gt; +            debug(&quot;Same origin WebSocket:&quot;);
&gt; +            await testSameOriginCookie();
&gt; +            debug(&quot;&lt;br&gt;Cross origin WebSocket:&quot;);
&gt; +            await testCrossOriginCookie();
&gt; +            finishJSTest();
&gt; +            break;
&gt; +    }

Can you please explain the purpose of this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441190</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-11 11:07:55 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #3)
&gt; Comment on attachment 344736 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=344736&amp;action=review
&gt; 
&gt; r- for the duplicate code and duplicate functionally in helper scripts. We
&gt; should share more code with tests and resources in
&gt; LayoutTests/http/tests/cookies and its subdirectories.

OK, I&apos;ll make use of shared code.

&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/resources/get-cookies.php:18
&gt; &gt; +&lt;?php
&gt; &gt; +if(!isset($_COOKIE[$_GET[&quot;name1&quot;]])) {
&gt; &gt; +    echo &quot;Did not receive cookie named &apos;&quot; . $_GET[&quot;name1&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; +} else {
&gt; &gt; +    echo &quot;Received cookie named &apos;&quot; . $_GET[&quot;name1&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; +}
&gt; &gt; +if(!empty($_GET[&quot;name2&quot;])) {
&gt; &gt; +    if(!isset($_COOKIE[$_GET[&quot;name2&quot;]])) {
&gt; &gt; +        echo &quot;Did not receive cookie named &apos;&quot; . $_GET[&quot;name2&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; +    } else {
&gt; &gt; +        echo &quot;Received cookie named &apos;&quot; . $_GET[&quot;name2&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; +    }
&gt; &gt; +}
&gt; &gt; +?&gt;
&gt; &gt; +&lt;p id=&quot;output&quot;&gt;&lt;/p&gt;
&gt; &gt; +&lt;script&gt;
&gt; &gt; +    document.getElementById(&quot;output&quot;).textContent = &quot;Client-side document.cookie: &quot; + document.cookie;
&gt; &gt; +&lt;/script&gt;
&gt; 
&gt; I am not a fan of this script given that it only retrieves the contents of
&gt; at most two cookies and how we use it in the tests below to underutilize the
&gt; functionality provided by js-test.js to assert cookie values. I would prefer
&gt; that we write the tests below using js-test functionality. If you have your
&gt; heart set on &quot;dump&quot;ing the cookies then we should make use of the existing
&gt; helper scripts LayoutTests/http/tests/cookies/resources/echo-cookies.php or
&gt; LayoutTests/http/tests/cookies/resources/getCookies.cgi instead of adding
&gt; yet-another-cookie-dumping-script.

I can switch to using echo-cookies.php. Unfortunately, it doesn&apos;t echo document.cookie which I think we always should check along with what&apos;s sent to the server.

&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/resources/set-cookie.php:8
&gt; &gt; +&lt;?php
&gt; &gt; +setcookie($_GET[&quot;name&quot;], $_GET[&quot;value&quot;], (time()+60*60*24*30), &quot;/&quot;);
&gt; &gt; +?&gt;
&gt; &gt; +&lt;script&gt;
&gt; &gt; +if (document.location.hash) {
&gt; &gt; +    setTimeout(&quot;document.location.href = document.location.hash.substring(1)&quot;, 10);
&gt; &gt; +}
&gt; &gt; +&lt;/script&gt;
&gt; 
&gt; I do not see the need for this script. We should make use of setCookie()
&gt; defined in LayoutTests/http/tests/cookies/resources/cookie-utilities.js. You
&gt; can see examples of its usage in the tests in
&gt; LayoutTests/http/tests/cookies/same-site.

I see you use echo-iframe-src.php to output third-party cookies. But I want to also test setting a new cookie *as third-party* after having a set a cookie as first party. Do we have infrastructure for that?

&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:15
&gt; &gt; +        function setCookieFromHost(host)
&gt; &gt; +        {
&gt; &gt; +            var promise = new Promise(resolve =&gt; {
&gt; &gt; +                var websocket = new WebSocket(`ws://${host}:8880/websocket/tests/hybi/cookie?set`);
&gt; &gt; +                websocket.onclose = () =&gt; resolve();
&gt; &gt; +            });
&gt; &gt; +            return promise;
&gt; &gt; +        }
&gt; 
&gt; We should not duplicate this function in every test. We should move it to a
&gt; shared file and then reference the file. I suggest we come up with a better
&gt; name for this function, maybe setCookieUsingWebSocketFromHost or
&gt; setWebSocketCookieFromHost, and put this function with our other cookie
&gt; utility functions in file
&gt; LayoutTests/http/tests/cookies/resources/cookie-utilities.js.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:37
&gt; &gt; +    testRunner.dumpChildFramesAsText();
&gt; 
&gt; This will cause a JavaScript error when running this test outside
&gt; DumpRenderTree/WebKitTestRunner. I suggest we condition this line on the
&gt; presence of window.testRunner.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html:59
&gt; &gt; +    switch (document.location.hash) {
&gt; &gt; +        case &quot;&quot;:
&gt; &gt; +            document.location.href = &quot;http://localhost:8000/websocket/tests/hybi/resources/set-cookie.php?name=bar&amp;value=value#http://127.0.0.1:8000/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html#cookieSetAsFirstParty&quot;;
&gt; &gt; +            break;
&gt; &gt; +        case &quot;#cookieSetAsFirstParty&quot;:
&gt; &gt; +            debug(&quot;Same origin WebSocket:&quot;);
&gt; &gt; +            await testSameOriginCookie();
&gt; &gt; +            debug(&quot;&lt;br&gt;Cross origin WebSocket:&quot;);
&gt; &gt; +            await testCrossOriginCookie();
&gt; &gt; +            finishJSTest();
&gt; &gt; +            break;
&gt; &gt; +    }
&gt; 
&gt; Can you please explain the purpose of this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441196</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-11 11:14:39 -0700</bug_when>
    <thetext>This reply got posted before I was done. Continuing below.

(In reply to John Wilander from comment #4)
&gt; (In reply to Daniel Bates from comment #3)
&gt; &gt; Comment on attachment 344736 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=344736&amp;action=review
&gt; &gt; 
&gt; &gt; r- for the duplicate code and duplicate functionally in helper scripts. We
&gt; &gt; should share more code with tests and resources in
&gt; &gt; LayoutTests/http/tests/cookies and its subdirectories.
&gt; 
&gt; OK, I&apos;ll make use of shared code.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/resources/get-cookies.php:18
&gt; &gt; &gt; +&lt;?php
&gt; &gt; &gt; +if(!isset($_COOKIE[$_GET[&quot;name1&quot;]])) {
&gt; &gt; &gt; +    echo &quot;Did not receive cookie named &apos;&quot; . $_GET[&quot;name1&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; &gt; +} else {
&gt; &gt; &gt; +    echo &quot;Received cookie named &apos;&quot; . $_GET[&quot;name1&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; &gt; +}
&gt; &gt; &gt; +if(!empty($_GET[&quot;name2&quot;])) {
&gt; &gt; &gt; +    if(!isset($_COOKIE[$_GET[&quot;name2&quot;]])) {
&gt; &gt; &gt; +        echo &quot;Did not receive cookie named &apos;&quot; . $_GET[&quot;name2&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; &gt; +    } else {
&gt; &gt; &gt; +        echo &quot;Received cookie named &apos;&quot; . $_GET[&quot;name2&quot;] . &quot;&apos;.&lt;br&gt;&quot;;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +}
&gt; &gt; &gt; +?&gt;
&gt; &gt; &gt; +&lt;p id=&quot;output&quot;&gt;&lt;/p&gt;
&gt; &gt; &gt; +&lt;script&gt;
&gt; &gt; &gt; +    document.getElementById(&quot;output&quot;).textContent = &quot;Client-side document.cookie: &quot; + document.cookie;
&gt; &gt; &gt; +&lt;/script&gt;
&gt; &gt; 
&gt; &gt; I am not a fan of this script given that it only retrieves the contents of
&gt; &gt; at most two cookies and how we use it in the tests below to underutilize the
&gt; &gt; functionality provided by js-test.js to assert cookie values. I would prefer
&gt; &gt; that we write the tests below using js-test functionality. If you have your
&gt; &gt; heart set on &quot;dump&quot;ing the cookies then we should make use of the existing
&gt; &gt; helper scripts LayoutTests/http/tests/cookies/resources/echo-cookies.php or
&gt; &gt; LayoutTests/http/tests/cookies/resources/getCookies.cgi instead of adding
&gt; &gt; yet-another-cookie-dumping-script.
&gt; 
&gt; I can switch to using echo-cookies.php. Unfortunately, it doesn&apos;t echo
&gt; document.cookie which I think we always should check along with what&apos;s sent
&gt; to the server.
&gt; 
&gt; &gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/resources/set-cookie.php:8
&gt; &gt; &gt; +&lt;?php
&gt; &gt; &gt; +setcookie($_GET[&quot;name&quot;], $_GET[&quot;value&quot;], (time()+60*60*24*30), &quot;/&quot;);
&gt; &gt; &gt; +?&gt;
&gt; &gt; &gt; +&lt;script&gt;
&gt; &gt; &gt; +if (document.location.hash) {
&gt; &gt; &gt; +    setTimeout(&quot;document.location.href = document.location.hash.substring(1)&quot;, 10);
&gt; &gt; &gt; +}
&gt; &gt; &gt; +&lt;/script&gt;
&gt; &gt; 
&gt; &gt; I do not see the need for this script. We should make use of setCookie()
&gt; &gt; defined in LayoutTests/http/tests/cookies/resources/cookie-utilities.js. You
&gt; &gt; can see examples of its usage in the tests in
&gt; &gt; LayoutTests/http/tests/cookies/same-site.
&gt; 
&gt; I see you use echo-iframe-src.php to output third-party cookies. But I want
&gt; to also test setting a new cookie *as third-party* after having a set a
&gt; cookie as first party. Do we have infrastructure for that?
&gt; 
&gt; &gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:15
&gt; &gt; &gt; +        function setCookieFromHost(host)
&gt; &gt; &gt; +        {
&gt; &gt; &gt; +            var promise = new Promise(resolve =&gt; {
&gt; &gt; &gt; +                var websocket = new WebSocket(`ws://${host}:8880/websocket/tests/hybi/cookie?set`);
&gt; &gt; &gt; +                websocket.onclose = () =&gt; resolve();
&gt; &gt; &gt; +            });
&gt; &gt; &gt; +            return promise;
&gt; &gt; &gt; +        }
&gt; &gt; 
&gt; &gt; We should not duplicate this function in every test. We should move it to a
&gt; &gt; shared file and then reference the file. I suggest we come up with a better
&gt; &gt; name for this function, maybe setCookieUsingWebSocketFromHost or
&gt; &gt; setWebSocketCookieFromHost, and put this function with our other cookie
&gt; &gt; utility functions in file
&gt; &gt; LayoutTests/http/tests/cookies/resources/cookie-utilities.js.

Sure. You added this test in https://bugs.webkit.org/show_bug.cgi?id=184100, but I can change the function name as part of moving it.

&gt; &gt; 
&gt; &gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:37
&gt; &gt; &gt; +    testRunner.dumpChildFramesAsText();
&gt; &gt; 
&gt; &gt; This will cause a JavaScript error when running this test outside
&gt; &gt; DumpRenderTree/WebKitTestRunner. I suggest we condition this line on the
&gt; &gt; presence of window.testRunner.

I did that first but then I noticed that we call description() without checks so we&apos;re already causing a JavaScript error, right?

&gt; &gt; 
&gt; &gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html:59
&gt; &gt; &gt; +    switch (document.location.hash) {
&gt; &gt; &gt; +        case &quot;&quot;:
&gt; &gt; &gt; +            document.location.href = &quot;http://localhost:8000/websocket/tests/hybi/resources/set-cookie.php?name=bar&amp;value=value#http://127.0.0.1:8000/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html#cookieSetAsFirstParty&quot;;
&gt; &gt; &gt; +            break;
&gt; &gt; &gt; +        case &quot;#cookieSetAsFirstParty&quot;:
&gt; &gt; &gt; +            debug(&quot;Same origin WebSocket:&quot;);
&gt; &gt; &gt; +            await testSameOriginCookie();
&gt; &gt; &gt; +            debug(&quot;&lt;br&gt;Cross origin WebSocket:&quot;);
&gt; &gt; &gt; +            await testCrossOriginCookie();
&gt; &gt; &gt; +            finishJSTest();
&gt; &gt; &gt; +            break;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Can you please explain the purpose of this test?

Sure. You added the test in https://bugs.webkit.org/show_bug.cgi?id=184100. Since third-parties without existing cookies cannot set cookies at all, your fix in https://bugs.webkit.org/show_bug.cgi?id=184100 may regress without us noticing since the third-party cookie setting doesn&apos;t create a cookie. My change adds a roundtrip to make sure localhost has a cookie which is the prerequisite for setting a new cookie as third-party.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441703</commentid>
    <comment_count>6</comment_count>
      <attachid>344894</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-12 16:05:24 -0700</bug_when>
    <thetext>Created attachment 344894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442125</commentid>
    <comment_count>7</comment_count>
      <attachid>344894</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-13 17:35:55 -0700</bug_when>
    <thetext>Comment on attachment 344894
Patch

Looks good to me.  More tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442126</commentid>
    <comment_count>8</comment_count>
      <attachid>344894</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-13 17:40:44 -0700</bug_when>
    <thetext>Comment on attachment 344894
Patch

Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442133</commentid>
    <comment_count>9</comment_count>
      <attachid>344894</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-13 18:07:45 -0700</bug_when>
    <thetext>Comment on attachment 344894
Patch

Clearing flags on attachment: 344894

Committed r233830: &lt;https://trac.webkit.org/changeset/233830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442134</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-13 18:07:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442382</commentid>
    <comment_count>11</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-07-16 08:28:18 -0700</bug_when>
    <thetext>Looks like these two tests:
http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-party.html
http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html

Are now constant failures on Sierra Debug and Release WK2 as of r233830: &lt;https://trac.webkit.org/changeset/233830/webkit&gt;


Test Histories:
&lt;https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsocket-allowed-setting-cookie-as-third-party.html%20%20http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsocket-cookie-overwrite-behavior.html&gt;

http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-party.html Output Diff:

&lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-party-diff.txt&gt;

http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html Output Diff:

&lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior-diff.txt&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442413</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-16 10:33:36 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #11)
&gt; Looks like these two tests:
&gt; http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-
&gt; party.html
&gt; http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html
&gt; 
&gt; Are now constant failures on Sierra Debug and Release WK2 as of r233830:
&gt; &lt;https://trac.webkit.org/changeset/233830/webkit&gt;
&gt; 
&gt; 
&gt; Test Histories:
&gt; &lt;https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsock
&gt; et-allowed-setting-cookie-as-third-party.
&gt; html%20%20http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsocket-cookie-
&gt; overwrite-behavior.html&gt;
&gt; 
&gt; http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-
&gt; party.html Output Diff:
&gt; 
&gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-allowed-setting-
&gt; cookie-as-third-party-diff.txt&gt;
&gt; 
&gt; http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html
&gt; Output Diff:
&gt; 
&gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-
&gt; behavior-diff.txt&gt;

It&apos;s not setting the cookie for the third-party WebSocket so we&apos;re failing closed. Probably a Sierra bug in underlying layers. We should skip it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442688</commentid>
    <comment_count>13</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-07-17 09:45:01 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #12)
&gt; (In reply to Truitt Savell from comment #11)
&gt; &gt; Looks like these two tests:
&gt; &gt; http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-
&gt; &gt; party.html
&gt; &gt; http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html
&gt; &gt; 
&gt; &gt; Are now constant failures on Sierra Debug and Release WK2 as of r233830:
&gt; &gt; &lt;https://trac.webkit.org/changeset/233830/webkit&gt;
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Test Histories:
&gt; &gt; &lt;https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; &gt; html#showAllRuns=true&amp;tests=http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsock
&gt; &gt; et-allowed-setting-cookie-as-third-party.
&gt; &gt; html%20%20http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsocket-cookie-
&gt; &gt; overwrite-behavior.html&gt;
&gt; &gt; 
&gt; &gt; http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-
&gt; &gt; party.html Output Diff:
&gt; &gt; 
&gt; &gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; &gt; r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-allowed-setting-
&gt; &gt; cookie-as-third-party-diff.txt&gt;
&gt; &gt; 
&gt; &gt; http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html
&gt; &gt; Output Diff:
&gt; &gt; 
&gt; &gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; &gt; r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-
&gt; &gt; behavior-diff.txt&gt;
&gt; 
&gt; It&apos;s not setting the cookie for the third-party WebSocket so we&apos;re failing
&gt; closed. Probably a Sierra bug in underlying layers. We should skip it.

I misinterpreted this issue. These tests are failing on all MacOS platforms except High Sierra.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442692</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-17 09:52:36 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #13)
&gt; (In reply to John Wilander from comment #12)
&gt; &gt; (In reply to Truitt Savell from comment #11)
&gt; &gt; &gt; Looks like these two tests:
&gt; &gt; &gt; http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-
&gt; &gt; &gt; party.html
&gt; &gt; &gt; http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html
&gt; &gt; &gt; 
&gt; &gt; &gt; Are now constant failures on Sierra Debug and Release WK2 as of r233830:
&gt; &gt; &gt; &lt;https://trac.webkit.org/changeset/233830/webkit&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; Test Histories:
&gt; &gt; &gt; &lt;https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; &gt; &gt; html#showAllRuns=true&amp;tests=http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsock
&gt; &gt; &gt; et-allowed-setting-cookie-as-third-party.
&gt; &gt; &gt; html%20%20http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2Fwebsocket-cookie-
&gt; &gt; &gt; overwrite-behavior.html&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-
&gt; &gt; &gt; party.html Output Diff:
&gt; &gt; &gt; 
&gt; &gt; &gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; &gt; &gt; r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-allowed-setting-
&gt; &gt; &gt; cookie-as-third-party-diff.txt&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html
&gt; &gt; &gt; Output Diff:
&gt; &gt; &gt; 
&gt; &gt; &gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; &gt; &gt; r233845%20(10576)/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-
&gt; &gt; &gt; behavior-diff.txt&gt;
&gt; &gt; 
&gt; &gt; It&apos;s not setting the cookie for the third-party WebSocket so we&apos;re failing
&gt; &gt; closed. Probably a Sierra bug in underlying layers. We should skip it.
&gt; 
&gt; I misinterpreted this issue. These tests are failing on all MacOS platforms
&gt; except High Sierra.

So it&apos;s failing on El Cap and Sierra and working on High Sierra and Mojave. Or are you saying it&apos;s failing on Mojave?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442696</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-07-17 09:59:49 -0700</bug_when>
    <thetext>failing on Mojave WK2 as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442701</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-07-17 10:08:27 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #15)
&gt; failing on Mojave WK2 as well

I just ran them on Mojave (debug build) without problem and I don&apos;t see failures on the bots. The tests were developed on Mojave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442828</commentid>
    <comment_count>17</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-07-17 16:04:40 -0700</bug_when>
    <thetext>*** Bug 187658 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442836</commentid>
    <comment_count>18</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-07-17 16:10:46 -0700</bug_when>
    <thetext>*** Bug 187707 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344736</attachid>
            <date>2018-07-10 17:27:20 -0700</date>
            <delta_ts>2018-07-12 16:05:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187541-20180710172719.patch</filename>
            <type>text/plain</type>
            <size>10120</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzA4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTY0ZTE2YTA4ZmViODk2YmNjMmY2
NWY1YWFkMzM5NzVmNzE2YjQ1NS4uZTRiMzNjNThjZmZmYzBlMmZlZTVmM2JjNDExNzhlOGYyMGFi
M2ZkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTA3LTEwICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZsZXNoIG91dCBXZWJTb2NrZXQgY29va2ll
IHRlc3RzIHRvIGNvdmVyIGNvb2tpZSBwb2xpY3kgZm9yIHRoaXJkLXBhcnR5IHJlc291cmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NTQxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjA0ODcyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcmVzb3VyY2VzL2dldC1jb29raWVzLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93
ZWQtc2V0dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1hbGxvd2Vk
LXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWJsb2NrZWQtZnJvbS1zZXR0
aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWJsb2NrZWQtZnJvbS1z
ZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1jb29raWUtb3ZlcndyaXRlLWJl
aGF2aW9yLmh0bWw6CisgICAgICAgICAgICBOb3cgY29ycmVjdGx5IHN0YXJ0cyBieSBzZXR0aW5n
IGEgY29va2llIGZvciBsb2NhbGhvc3QgYXMgZmlyc3QtcGFydHkgc28gdGhhdCBpdCBpcworICAg
ICAgICAgICAgYWxsb3dlZCB0byBzZXQgYSBuZXcgY29va2llIGFzIHRoaXJkIHBhcnR5LgorCiAy
MDE4LTA3LTEwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIExh
eW91dCBUZXN0IGVkaXRpbmcvc2VsZWN0aW9uL25hdmlnYXRpb24tY2xlYXJzLWVkaXRvci1zdGF0
ZS5odG1sIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc291cmNlcy9nZXQtY29va2llcy5waHAgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc291cmNlcy9nZXQtY29va2llcy5waHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjExNjI4YTVlODk5ZThiOTg5YzgzMjMxZmEwODM1M2IwZjMxODliYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcmVzb3VyY2VzL2dldC1jb29raWVzLnBocApAQCAtMCwwICsxLDE4IEBACis8P3BocAoraWYo
IWlzc2V0KCRfQ09PS0lFWyRfR0VUWyJuYW1lMSJdXSkpIHsKKyAgICBlY2hvICJEaWQgbm90IHJl
Y2VpdmUgY29va2llIG5hbWVkICciIC4gJF9HRVRbIm5hbWUxIl0gLiAiJy48YnI+IjsKK30gZWxz
ZSB7CisgICAgZWNobyAiUmVjZWl2ZWQgY29va2llIG5hbWVkICciIC4gJF9HRVRbIm5hbWUxIl0g
LiAiJy48YnI+IjsKK30KK2lmKCFlbXB0eSgkX0dFVFsibmFtZTIiXSkpIHsKKyAgICBpZighaXNz
ZXQoJF9DT09LSUVbJF9HRVRbIm5hbWUyIl1dKSkgeworICAgICAgICBlY2hvICJEaWQgbm90IHJl
Y2VpdmUgY29va2llIG5hbWVkICciIC4gJF9HRVRbIm5hbWUyIl0gLiAiJy48YnI+IjsKKyAgICB9
IGVsc2UgeworICAgICAgICBlY2hvICJSZWNlaXZlZCBjb29raWUgbmFtZWQgJyIgLiAkX0dFVFsi
bmFtZTIiXSAuICInLjxicj4iOworICAgIH0KK30KKz8+Cis8cCBpZD0ib3V0cHV0Ij48L3A+Cis8
c2NyaXB0PgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS50ZXh0Q29udGVu
dCA9ICJDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6ICIgKyBkb2N1bWVudC5jb29raWU7Cis8
L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc291cmNlcy9zZXQtY29va2ll
LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzb3Vy
Y2VzL3NldC1jb29raWUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliMWQxZGM0MGU2ZmI4OWRmMDQwY2MyODU0
MTEzYTc3MDU2MDk5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc291cmNlcy9zZXQtY29va2llLnBocApAQCAtMCwwICsx
LDggQEAKKzw/cGhwCitzZXRjb29raWUoJF9HRVRbIm5hbWUiXSwgJF9HRVRbInZhbHVlIl0sICh0
aW1lKCkrNjAqNjAqMjQqMzApLCAiLyIpOworPz4KKzxzY3JpcHQ+CitpZiAoZG9jdW1lbnQubG9j
YXRpb24uaGFzaCkgeworICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBk
b2N1bWVudC5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSIsIDEwKTsKK30KKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGluZy1jb29r
aWUtYXMtdGhpcmQtcGFydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYWxsb3dlZC1zZXR0aW5nLWNvb2tpZS1hcy10
aGlyZC1wYXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmViMjA3ZWExMjU1NjRkYTE0YjQy
OTc4NGRmNzY4ZWQzNDY5ZWNlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGluZy1jb29r
aWUtYXMtdGhpcmQtcGFydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIFdl
YlNvY2tldCBTZXQtQ29va2llIGJlaGF2aW9yIGZvciB0aGlyZC1wYXJ0aWVzIHdpdGggZXhpc3Rp
bmcgY29va2llcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorUmVjZWl2ZWQgY29va2llIG5hbWVkICdmb28n
LgorUmVjZWl2ZWQgY29va2llIG5hbWVkICdiYXInLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQuY29v
a2llOiBmb289YmFyOyBiYXI9dmFsdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGluZy1jb29raWUt
YXMtdGhpcmQtcGFydHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lOTg5Yzg2NmVhMWIzYjQ4NGRiYmEwZTc2MTEyYTkxODkyZTU4YjMx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93ZWJzb2NrZXQtYWxsb3dlZC1zZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS5o
dG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHNldENvb2tpZUZyb21Ib3N0KGhvc3QpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Cisg
ICAgICAgICAgICAgICAgdmFyIHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtob3N0
fTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nvb2tpZT9zZXRgKTsKKyAgICAgICAgICAgICAg
ICB3ZWJzb2NrZXQub25jbG9zZSA9ICgpID0+IHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgICAgIH0KKworICAgICAgICBhc3luYyBm
dW5jdGlvbiB0ZXN0VGhpcmRQYXJ0eUNvb2tpZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF3
YWl0IHNldENvb2tpZUZyb21Ib3N0KCJsb2NhbGhvc3QiKTsKKyAgICAgICAgICAgIGxldCBpZnJh
bWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAg
ICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzb3VyY2VzL2dldC1jb29raWVzLnBocD9uYW1lMT1mb28mbmFtZTI9YmFyIjsK
KyAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZmluaXNoSlNUZXN0OworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmFwcGVuZENoaWxkKGlmcmFt
ZUVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkg
eworICAgICAgICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhyZWYgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Jlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPWJhciZ2YWx1ZT12YWx1ZSNodHRwOi8v
MTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0
dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHkuaHRtbCNjb29raWVTZXRBc0ZpcnN0UGFydHkiOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICIjY29va2ll
U2V0QXNGaXJzdFBhcnR5IjoKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGVzdFRoaXJkUGFy
dHlDb29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ib3V0cHV0
Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIFdlYlNvY2tldCBTZXQt
Q29va2llIGJlaGF2aW9yIGZvciB0aGlyZC1wYXJ0aWVzIHdpdGggZXhpc3RpbmcgY29va2llcy4i
KTsKKyAgICBydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0
LWJsb2NrZWQtZnJvbS1zZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1i
bG9ja2VkLWZyb20tc2V0dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU0YjRlZDI5MzI2YzFmZWQxMThiMDMyMzI2Y2IwYmQwYTZkYmFmODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dlYnNvY2tldC1ibG9ja2VkLWZyb20tc2V0dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3RzIFdlYlNvY2tldCBTZXQtQ29va2llIGJl
aGF2aW9yIGZvciB0aGlyZC1wYXJ0aWVzIHdpdGhvdXQgZXhpc3RpbmcgY29va2llcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworVGhpcmQtUGFydHkgV2ViU29ja2V0OgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworLS0tLS0t
LS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0tLS0tCitEaWQgbm90IHJlY2VpdmUgY29v
a2llIG5hbWVkICdmb28nLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQuY29va2llOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQt
YmxvY2tlZC1mcm9tLXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1ibG9ja2VkLWZy
b20tc2V0dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjBiMjBl
OWI3YTFkYmEyMzk0ZDIxZjMxZmZmNTFhNjQ2ZTUxNDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYmxvY2tl
ZC1mcm9tLXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5Lmh0bWwKQEAgLTAsMCArMSw0MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVu
Y3Rpb24gc2V0Q29va2llRnJvbUhvc3QoaG9zdCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgICAgICB2YXIg
d2Vic29ja2V0ID0gbmV3IFdlYlNvY2tldChgd3M6Ly8ke2hvc3R9Ojg4ODAvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29va2llP3NldGApOworICAgICAgICAgICAgICAgIHdlYnNvY2tldC5vbmNsb3Nl
ID0gKCkgPT4gcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICAgICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHRlc3RUaGlyZFBh
cnR5Q29va2llKCkKKyAgICAgICAgeworICAgICAgICAgICAgYXdhaXQgc2V0Q29va2llRnJvbUhv
c3QoImxvY2FsaG9zdCIpOworICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3Jj
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNvdXJjZXMv
Z2V0LWNvb2tpZXMucGhwP25hbWUxPWZvbyI7CisgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9u
bG9hZCA9IGZpbmlzaEpTVGVzdDsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvdXRwdXQiKS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiPGJyPlRoaXJkLVBhcnR5IFdlYlNvY2tldDoiKTsKKyAgICAgICAgICAgIGF3YWl0IHRlc3RU
aGlyZFBhcnR5Q29va2llKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3RzIFdlYlNvY2tldCBTZXQtQ29va2llIGJlaGF2aW9yIGZvciB0aGlyZC1wYXJ0aWVzIHdp
dGhvdXQgZXhpc3RpbmcgY29va2llcy4iKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworICAgIHJ1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1iZWhhdmlvci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1i
ZWhhdmlvci5odG1sCmluZGV4IGFjNGY3NDk2NTFlZGU2ODk2MTdhNTYwYzE3YWFhMTM1ZmFhYWNj
ZGQuLmY3N2Q5NmU3YjVhNmNmOTVkNTE1OTE4M2RmOGI3NDMzMWE1ZWE5ZTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWNv
b2tpZS1vdmVyd3JpdGUtYmVoYXZpb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1jb29raWUtb3ZlcndyaXRlLWJlaGF2aW9y
Lmh0bWwKQEAgLTQ1LDExICs0NSwxOCBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0Q3Jvc3NPcmlnaW5D
b29raWUoKQogCiBhc3luYyBmdW5jdGlvbiBydW5UZXN0cygpCiB7Ci0gICAgZGVidWcoIlNhbWUg
b3JpZ2luIFdlYlNvY2tldDoiKTsKLSAgICBhd2FpdCB0ZXN0U2FtZU9yaWdpbkNvb2tpZSgpOwot
ICAgIGRlYnVnKCI8YnI+Q3Jvc3Mgb3JpZ2luIFdlYlNvY2tldDoiKTsKLSAgICBhd2FpdCB0ZXN0
Q3Jvc3NPcmlnaW5Db29raWUoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICBzd2l0Y2ggKGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAgY2FzZSAiIjoKKyAgICAgICAgICAgIGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWYgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPWJhciZ2YWx1ZT12YWx1ZSNo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWNvb2tp
ZS1vdmVyd3JpdGUtYmVoYXZpb3IuaHRtbCNjb29raWVTZXRBc0ZpcnN0UGFydHkiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIiNjb29raWVTZXRBc0ZpcnN0UGFydHkiOgorICAg
ICAgICAgICAgZGVidWcoIlNhbWUgb3JpZ2luIFdlYlNvY2tldDoiKTsKKyAgICAgICAgICAgIGF3
YWl0IHRlc3RTYW1lT3JpZ2luQ29va2llKCk7CisgICAgICAgICAgICBkZWJ1ZygiPGJyPkNyb3Nz
IG9yaWdpbiBXZWJTb2NrZXQ6Iik7CisgICAgICAgICAgICBhd2FpdCB0ZXN0Q3Jvc3NPcmlnaW5D
b29raWUoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344894</attachid>
            <date>2018-07-12 16:05:24 -0700</date>
            <delta_ts>2018-07-13 18:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187541-20180712160523.patch</filename>
            <type>text/plain</type>
            <size>15225</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzA4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTY0ZTE2YTA4ZmViODk2YmNjMmY2
NWY1YWFkMzM5NzVmNzE2YjQ1NS4uZWRiNTYwMjQ2NDIyMmU0NTMyYmM2ZmRjNTJjZTU5YjdhNzU1
ZmJkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTA3LTEyICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZsZXNoIG91dCBXZWJTb2NrZXQgY29va2ll
IHRlc3RzIHRvIGNvdmVyIGNvb2tpZSBwb2xpY3kgZm9yIHRoaXJkLXBhcnR5IHJlc291cmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NTQxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjA0ODcyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMv
Y29va2llLXV0aWxpdGllcy5qczoKKyAgICAgICAgICAgIEFkZGVkIGEgZnVuY3Rpb24gZm9yIHNl
dHRpbmcgYSBjb29raWUgaW4gYSBXZWJTb2NrZXQgaGFuZHNoYWtlLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29va2llX3dzaC5weToKKyAgICAgICAgKHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgICAgIE5vdyBzZXRzIHRoZSByb290
IHBhdGggZm9yIG5ldyBjb29raWVzIHNvIHRoYXQgdGhleSBjYW4gYmUgc2VlbiBieQorICAgICAg
ICAgICAgZm9yIGV4YW1wbGUgY29va2llcy9yZXNvdXJjZXMvZWNoby1jb29raWVzLnBocC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1hbGxvd2Vk
LXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYWxsb3dlZC1z
ZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1ibG9ja2VkLWZyb20tc2V0dGlu
Zy1jb29raWUtYXMtdGhpcmQtcGFydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1ibG9ja2VkLWZyb20tc2V0
dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1iZWhh
dmlvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1iZWhhdmlvci5odG1sOgorICAgICAgICAg
ICAgTm93IHRlc3RzIHVuZGVyIHRoZSBjb25kaXRpb24gd2hlcmUgbG9jYWxob3N0IGFzIHRoaXJk
LXBhcnR5IGlzCisgICAgICAgICAgICBhbGxvd2VkIHRvIHNldCBhIG5ldyBjb29raWUgYXMgdGhp
cmQgcGFydHkuIEl0IGFsc28gbWFrZXMgc3VyZSB0byB1c2UKKyAgICAgICAgICAgIGNvb2tpZXMg
d2l0aCB0aGUgcGF0aCBzZXQgdG8gdGhlIHJvb3Qgc28gdGhhdCBhbGwgY29va2llcyBhcmUgdmlz
aWJsZS4KKwogMjAxOC0wNy0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBMYXlvdXQgVGVzdCBlZGl0aW5nL3NlbGVjdGlvbi9uYXZpZ2F0aW9uLWNsZWFycy1l
ZGl0b3Itc3RhdGUuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzCmluZGV4IDUx
YjVhYjY5NWVjYjYyNTA1YzVjMmVkYjVmY2IyNTgwMzJlZTM5MDUuLjBiOGZiMzRlYjA5YWZjYjA3
NjQ4ZjQ4NzE1ZDI5NWNjMTM1NjhhNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMKQEAgLTIy
OCwzICsyMjgsMTIgQEAgZnVuY3Rpb24gc2hvdWxkSGF2ZURPTUNvb2tpZVdpdGhWYWx1ZShuYW1l
LCBleHBlY3RlZFZhbHVlKQogICAgIGVsc2UKICAgICAgICAgdGVzdEZhaWxlZChgRE9NIGNvb2tp
ZSAiJHtuYW1lfSIgc2hvdWxkIGhhdmUgdmFsdWUgJHtleHBlY3RlZFZhbHVlfS4gV2FzICR7dmFs
dWV9LmApOwogfQorCitmdW5jdGlvbiBzZXRDb29raWVVc2luZ1dlYlNvY2tldEZyb21Ib3N0KGhv
c3QpCit7CisgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAg
ICAgdmFyIHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtob3N0fTo4ODgwL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nvb2tpZT9zZXRgKTsKKyAgICAgICAgd2Vic29ja2V0Lm9uY2xvc2Ug
PSAoKSA9PiByZXNvbHZlKCk7CisgICAgfSk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nvb2tp
ZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nv
b2tpZV93c2gucHkKaW5kZXggNjliNmEwZWVjNTZiY2FmMzEzMzdmODZhZGMxNWY5NzE0Nzc5ZTI5
My4uYWEwOGQ1MTQ4YzYzY2RlN2E0ZTY4YmQzNzRjMTljYmVmMjQ4MGNiMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb29raWVfd3NoLnB5
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29va2ll
X3dzaC5weQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDE0IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
OCwxMiArMzksMTMgQEAgZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgogICAgIGNvbW1hbmQgPSBjb21wb25lbnRzWzRdCiAKICAgICBPTkVfREFZX0xJRkUgPSAnTWF4
LUFnZT04NjQwMCcKKyAgICBST09UX1BBVEggPSAncGF0aD0vJwogCiAgICAgaWYgY29tbWFuZCA9
PSAnc2V0JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zv
bz1iYXInLCBPTkVfREFZX0xJRkVdKSkKKyAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3Qs
ICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkUsIFJPT1RfUEFUSF0pKQogICAgIGVs
aWYgY29tbWFuZCA9PSAnc2V0X2h0dHBvbmx5JzoKICAgICAgICAgX2FkZF9zZXRfY29va2llKHJl
cXVlc3QsCi0gICAgICAgICAgICAnOyAnLmpvaW4oWydodHRwT25seUZvbz1iYXInLCBPTkVfREFZ
X0xJRkUsICdodHRwT25seSddKSkKKyAgICAgICAgICAgICc7ICcuam9pbihbJ2h0dHBPbmx5Rm9v
PWJhcicsIE9ORV9EQVlfTElGRSwgUk9PVF9QQVRILCAnaHR0cE9ubHknXSkpCiAgICAgZWxpZiBj
b21tYW5kID09ICdjbGVhcic6CiAgICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnZm9v
PTA7IE1heC1BZ2U9MCcpCiAgICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnaHR0cE9u
bHlGb289MDsgTWF4LUFnZT0wJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGluZy1jb29raWUtYXMt
dGhpcmQtcGFydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYWxsb3dlZC1zZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1w
YXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ1NmY0OTlmMTYzNGMzNzM2MWZlMzNhNDU2
NGU2YmUwMTBmNDcxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGluZy1jb29raWUtYXMt
dGhpcmQtcGFydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIFdlYlNvY2tl
dCBTZXQtQ29va2llIGJlaGF2aW9yIGZvciB0aGlyZC1wYXJ0aWVzIHdpdGggZXhpc3RpbmcgY29v
a2llcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQubG9j
YXRpb24uaG9zdCBpcyAiMTI3LjAuMC4xOjgwMDAiCisKK1NldHRpbmcgdGhpcmQtcGFydHkgY29v
a2llICdmb28nIHRocm91Z2ggY3Jvc3Mtb3JpZ2luIFdlYlNvY2tldCBoYW5kc2hha2UuCisKK09w
ZW5pbmcgbG9jYWxob3N0IHRoaXJkLXBhcnR5IGlmcmFtZSB0byBjaGVjayBpdHMgY29va2llcy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0t
LS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorQ29va2llcyBhcmU6IHNl
dEFzRmlyc3RQYXJ0eSA9IHZhbHVlIGZvbyA9IGJhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYWxsb3dlZC1zZXR0aW5n
LWNvb2tpZS1hcy10aGlyZC1wYXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYWxsb3dlZC1zZXR0aW5nLWNvb2tpZS1hcy10aGly
ZC1wYXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YmI1NDllYmVmOGFkMDExNTQzYjEzMjFmOTM0N2Rj
Mzg3OGY2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1hbGxvd2VkLXNldHRpbmctY29va2llLWFzLXRoaXJk
LXBhcnR5Lmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vY29va2llcy9yZXNv
dXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9u
IHRlc3RUaGlyZFBhcnR5Q29va2llKCkKKyAgICAgICAgeworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb2N1bWVudC5sb2NhdGlvbi5ob3N0IiwgIjEyNy4wLjAuMTo4MDAwIik7
CisgICAgICAgICAgICBkZWJ1ZygiPGJyPlNldHRpbmcgdGhpcmQtcGFydHkgY29va2llICdmb28n
IHRocm91Z2ggY3Jvc3Mtb3JpZ2luIFdlYlNvY2tldCBoYW5kc2hha2UuIik7CisgICAgICAgICAg
ICBhd2FpdCBzZXRDb29raWVVc2luZ1dlYlNvY2tldEZyb21Ib3N0KCJsb2NhbGhvc3QiKTsKKyAg
ICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy
YW1lIik7CisgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0
OjgwMDAvY29va2llcy9yZXNvdXJjZXMvZWNoby1jb29raWVzLnBocCI7CisgICAgICAgICAgICBp
ZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZpbmlzaEpTVGVzdDsKKyAgICAgICAgICAgIGRlYnVnKCI8
YnI+T3BlbmluZyBsb2NhbGhvc3QgdGhpcmQtcGFydHkgaWZyYW1lIHRvIGNoZWNrIGl0cyBjb29r
aWVzLiIpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVt
ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAg
ICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlICIiOgorICAgICAgICAgICAgICAgICAgICAvLyBOYXZpZ2F0ZSB0
byBsb2NhbGhvc3QgdG8gc2V0IGZpcnN0LXBhcnR5IGNvb2tpZSAnc2V0QXNGaXJzdFBhcnR5Jy4K
KyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9ICJodHRwOi8vbG9j
YWxob3N0OjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWFsbG93ZWQtc2V0dGlu
Zy1jb29raWUtYXMtdGhpcmQtcGFydHkuaHRtbCNzZXRDb29raWVBc0ZpcnN0UGFydHkiOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICIjc2V0Q29va2ll
QXNGaXJzdFBhcnR5IjoKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2V0Q29va2llKCJzZXRB
c0ZpcnN0UGFydHkiLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTmF2aWdhdGUg
YmFjayB0byAxMjcuMC4wLjEgdG8gdGVzdCB0aGlyZC1wYXJ0eSBjb29raWUuCisgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1hbGxvd2VkLXNldHRpbmctY29va2llLWFz
LXRoaXJkLXBhcnR5Lmh0bWwjZGlkU2V0Q29va2llQXNGaXJzdFBhcnR5IjsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAiI2RpZFNldENvb2tpZUFzRmly
c3RQYXJ0eSI6CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRlc3RUaGlyZFBhcnR5Q29va2ll
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+
Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBXZWJTb2NrZXQgU2V0LUNvb2tpZSBi
ZWhhdmlvciBmb3IgdGhpcmQtcGFydGllcyB3aXRoIGV4aXN0aW5nIGNvb2tpZXMuIik7CisgICAg
cnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1ibG9ja2Vk
LWZyb20tc2V0dGluZy1jb29raWUtYXMtdGhpcmQtcGFydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYmxvY2tlZC1m
cm9tLXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYzc0YjgxNzk0N2I0NWJmODM0NmIzOWE0YTlkZDA0NzE4YjVkYjY2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2Nr
ZXQtYmxvY2tlZC1mcm9tLXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE5IEBACitUZXN0cyBXZWJTb2NrZXQgU2V0LUNvb2tpZSBiZWhhdmlvciBm
b3IgdGhpcmQtcGFydGllcyB3aXRob3V0IGV4aXN0aW5nIGNvb2tpZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgaXMgIjEyNy4w
LjAuMTo4MDAwIgorCitBdHRlbXB0aW5nIHRvIHNldCB0aGlyZC1wYXJ0eSBjb29raWUgJ2Zvbycg
dGhyb3VnaCBjcm9zcy1vcmlnaW4gV2ViU29ja2V0IGhhbmRzaGFrZS4KKworT3BlbmluZyBsb2Nh
bGhvc3QgdGhpcmQtcGFydHkgaWZyYW1lIHRvIGNoZWNrIGl0cyBjb29raWVzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0tLS0tCitDb29raWVzIGFyZToKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWJs
b2NrZWQtZnJvbS1zZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtYmxvY2tlZC1mcm9t
LXNldHRpbmctY29va2llLWFzLXRoaXJkLXBhcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJhODY0OGEx
YTdmYzliZWVjZTRjNWEwNTNjYzhjMGNmYmQxNjljZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWJsb2NrZWQt
ZnJvbS1zZXR0aW5nLWNvb2tpZS1hcy10aGlyZC1wYXJ0eS5odG1sCkBAIC0wLDAgKzEsMzAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQubG9jYXRpb24uaG9zdCIsICIxMjcuMC4wLjE6
ODAwMCIpOworICAgICAgICAgICAgZGVidWcoIjxicj5BdHRlbXB0aW5nIHRvIHNldCB0aGlyZC1w
YXJ0eSBjb29raWUgJ2ZvbycgdGhyb3VnaCBjcm9zcy1vcmlnaW4gV2ViU29ja2V0IGhhbmRzaGFr
ZS4iKTsKKyAgICAgICAgICAgIGF3YWl0IHNldENvb2tpZVVzaW5nV2ViU29ja2V0RnJvbUhvc3Qo
ImxvY2FsaG9zdCIpOworICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9jb29raWVzL3Jlc291cmNlcy9lY2hvLWNvb2tpZXMucGhw
IjsKKyAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZmluaXNoSlNUZXN0OworICAg
ICAgICAgICAgZGVidWcoIjxicj5PcGVuaW5nIGxvY2FsaG9zdCB0aGlyZC1wYXJ0eSBpZnJhbWUg
dG8gY2hlY2sgaXRzIGNvb2tpZXMuIik7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib3V0cHV0IikuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxz
Y3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIFdlYlNvY2tldCBTZXQtQ29va2llIGJlaGF2
aW9yIGZvciB0aGlyZC1wYXJ0aWVzIHdpdGhvdXQgZXhpc3RpbmcgY29va2llcy4iKTsKKyAgICBy
dW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWNvb2tpZS1v
dmVyd3JpdGUtYmVoYXZpb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1iZWhhdmlvci1l
eHBlY3RlZC50eHQKaW5kZXggZTliMWFkNzFmNDQ5YWI0NWNhOGZjZjVlYzgxZGJhMjNiMjZmYTYx
OS4uZTg2ZDAxMWUwN2QxMmNmMTM0OTFmNTVlN2RmNDk2N2E3NmJlYTBkYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtY29v
a2llLW92ZXJ3cml0ZS1iZWhhdmlvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1i
ZWhhdmlvci1leHBlY3RlZC50eHQKQEAgLTMsMTIgKzMsMTYgQEAgVGVzdHMgV2ViU29ja2V0IFNl
dC1Db29raWUgb3ZlcndyaXRpbmcgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIGEgZG9jdW1lbnQg
Y29va2kKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1TYW1lIG9yaWdpbiBXZWJTb2Nr
ZXQ6Ci1QQVNTIGNvb2tpZVZhbHVlIGlzICJmb289YmFyIgotCi1Dcm9zcyBvcmlnaW4gV2ViU29j
a2V0OgorU2V0dGluZyB0aGlyZC1wYXJ0eSBjb29raWUgJ2ZvbycgdGhyb3VnaCBjcm9zcy1vcmln
aW4gV2ViU29ja2V0IGhhbmRzaGFrZSBhbmQgY2hlY2tpbmcgdGhhdCBpdCBkb2Vzbid0IHdyaXRl
IGZpcnN0LXBhcnR5IGNvb2tpZXMuCiBQQVNTIGNvb2tpZVZhbHVlIGlzICIiCisKK09wZW5pbmcg
bG9jYWxob3N0IHRoaXJkLXBhcnR5IGlmcmFtZSB0byBjaGVjayBpdHMgY29va2llcy4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisKKy0tLS0tLS0t
CitGcmFtZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorQ29va2llcyBhcmU6IHNldEFzRmly
c3RQYXJ0eSA9IHZhbHVlIGZvbyA9IGJhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1iZWhh
dmlvci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
ZWJzb2NrZXQtY29va2llLW92ZXJ3cml0ZS1iZWhhdmlvci5odG1sCmluZGV4IGFjNGY3NDk2NTFl
ZGU2ODk2MTdhNTYwYzE3YWFhMTM1ZmFhYWNjZGQuLjE5YzBiNWQyODgxNmFiNTdjZmQ1YzlmNWQ4
NzJjNzg0YTdjMzAyZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWNvb2tpZS1vdmVyd3JpdGUtYmVoYXZpb3IuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tl
dC1jb29raWUtb3ZlcndyaXRlLWJlaGF2aW9yLmh0bWwKQEAgLTIsNiArMiw3IEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Nvb2tpZXMvcmVzb3VyY2Vz
L2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKIApAQCAtOSwxNiArMTAsNyBAQCB2YXIgY29va2llVmFsdWU7CiAKIGZ1
bmN0aW9uIGNsZWFyQ29va2llKCkKIHsKLSAgICBkb2N1bWVudC5jb29raWUgPSAiZm9vPTA7IE1h
eC1BZ2U9MCI7IC8vIFRoZSBrZXkgImZvbyIgbXVzdCBtYXRjaCB0aGUga2V5IHVzZWQgaW4gdGhl
IFdlYlNvY2tldCBTZXQtQ29va2llIGhlYWRlci4KLX0KLQotZnVuY3Rpb24gc2V0Q29va2llRnJv
bUhvc3QoaG9zdCkKLXsKLSAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
ewotICAgICAgICB2YXIgd2Vic29ja2V0ID0gbmV3IFdlYlNvY2tldChgd3M6Ly8ke2hvc3R9Ojg4
ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29va2llP3NldGApOwotICAgICAgICB3ZWJzb2NrZXQu
b25jbG9zZSA9ICgpID0+IHJlc29sdmUoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gcHJvbWlzZTsK
KyAgICBkb2N1bWVudC5jb29raWUgPSAiZm9vPTA7IE1heC1BZ2U9MDsgcGF0aD0vIjsgLy8gVGhl
IGtleSAiZm9vIiBtdXN0IG1hdGNoIHRoZSBrZXkgdXNlZCBpbiB0aGUgV2ViU29ja2V0IFNldC1D
b29raWUgaGVhZGVyLgogfQogCiBmdW5jdGlvbiBlY2hvQ29va2llKCkKQEAgLTI5LDggKzIxLDgg
QEAgZnVuY3Rpb24gZWNob0Nvb2tpZSgpCiBhc3luYyBmdW5jdGlvbiB0ZXN0U2FtZU9yaWdpbkNv
b2tpZSgpCiB7CiAgICAgY2xlYXJDb29raWUoKTsKLSAgICBkb2N1bWVudC5jb29raWUgPSAiZm9v
PXNob3VsZF9iZV9vdmVyd3JpdHRlbl9ieV93ZWJzb2NrZXRfc2V0X2Nvb2tpZSI7Ci0gICAgYXdh
aXQgc2V0Q29va2llRnJvbUhvc3QoIjEyNy4wLjAuMSIpOworICAgIGRvY3VtZW50LmNvb2tpZSA9
ICJmb289c2hvdWxkX2JlX292ZXJ3cml0dGVuX2J5X3dlYnNvY2tldF9zZXRfY29va2llOyBwYXRo
PS8iOworICAgIGF3YWl0IHNldENvb2tpZVVzaW5nV2ViU29ja2V0RnJvbUhvc3QoIjEyNy4wLjAu
MSIpOwogICAgIGNvb2tpZVZhbHVlID0gZWNob0Nvb2tpZSgpOwogICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29va2llVmFsdWUiLCAiZm9vPWJhciIpOwogfQpAQCAtMzgsMTggKzMwLDM4IEBA
IGFzeW5jIGZ1bmN0aW9uIHRlc3RTYW1lT3JpZ2luQ29va2llKCkKIGFzeW5jIGZ1bmN0aW9uIHRl
c3RDcm9zc09yaWdpbkNvb2tpZSgpCiB7CiAgICAgY2xlYXJDb29raWUoKTsKLSAgICBhd2FpdCBz
ZXRDb29raWVGcm9tSG9zdCgibG9jYWxob3N0Iik7CisgICAgYXdhaXQgc2V0Q29va2llVXNpbmdX
ZWJTb2NrZXRGcm9tSG9zdCgibG9jYWxob3N0Iik7CiAgICAgY29va2llVmFsdWUgPSBlY2hvQ29v
a2llKCk7CiAgICAgc2hvdWxkQmVFbXB0eVN0cmluZygiY29va2llVmFsdWUiKTsKIH0KIAogYXN5
bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQogewotICAgIGRlYnVnKCJTYW1lIG9yaWdpbiBXZWJTb2Nr
ZXQ6Iik7Ci0gICAgYXdhaXQgdGVzdFNhbWVPcmlnaW5Db29raWUoKTsKLSAgICBkZWJ1ZygiPGJy
PkNyb3NzIG9yaWdpbiBXZWJTb2NrZXQ6Iik7Ci0gICAgYXdhaXQgdGVzdENyb3NzT3JpZ2luQ29v
a2llKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7CisgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlv
bi5oYXNoKSB7CisgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICBhd2FpdCB0ZXN0U2FtZU9y
aWdpbkNvb2tpZSgpOworICAgICAgICAgICAgLy8gVGVzdCB0aGF0IGEgdGhpcmQtcGFydHkgd2l0
aG91dCBwcmUtZXhpc3RpbmcgY29va2llcyBkb2VzIG5vdCB3cml0ZSBmaXJzdC1wYXJ0eSBjb29r
aWVzLgorICAgICAgICAgICAgYXdhaXQgdGVzdENyb3NzT3JpZ2luQ29va2llKCk7CisgICAgICAg
ICAgICAvLyBOYXZpZ2F0ZSB0byBsb2NhbGhvc3QgdG8gc2V0IGZpcnN0LXBhcnR5IGNvb2tpZSAn
c2V0QXNGaXJzdFBhcnR5Jy4KKyAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1jb29r
aWUtb3ZlcndyaXRlLWJlaGF2aW9yLmh0bWwjc2V0Q29va2llQXNGaXJzdFBhcnR5IjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICIjc2V0Q29va2llQXNGaXJzdFBhcnR5IjoKKyAg
ICAgICAgICAgIGF3YWl0IHNldENvb2tpZSgic2V0QXNGaXJzdFBhcnR5IiwgInZhbHVlIik7Cisg
ICAgICAgICAgICAvLyBOYXZpZ2F0ZSBiYWNrIHRvIDEyNy4wLjAuMSB0byB0ZXN0IHRoaXJkLXBh
cnR5IGNvb2tpZS4KKyAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1jb29raWUtb3Zl
cndyaXRlLWJlaGF2aW9yLmh0bWwjZGlkU2V0Q29va2llQXNGaXJzdFBhcnR5IjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICIjZGlkU2V0Q29va2llQXNGaXJzdFBhcnR5IjoKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAg
ICAvLyBUZXN0IHRoYXQgYSB0aGlyZC1wYXJ0eSB3aXRoIGEgcHJlLWV4aXN0aW5nIGNvb2tpZSBk
b2VzIG5vdCB3cml0ZSBmaXJzdC1wYXJ0eSBjb29raWVzLgorICAgICAgICAgICAgZGVidWcoIlNl
dHRpbmcgdGhpcmQtcGFydHkgY29va2llICdmb28nIHRocm91Z2ggY3Jvc3Mtb3JpZ2luIFdlYlNv
Y2tldCBoYW5kc2hha2UgYW5kIGNoZWNraW5nIHRoYXQgaXQgZG9lc24ndCB3cml0ZSBmaXJzdC1w
YXJ0eSBjb29raWVzLiIpOworICAgICAgICAgICAgYXdhaXQgdGVzdENyb3NzT3JpZ2luQ29va2ll
KCk7CisgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOworICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2Nvb2tpZXMvcmVzb3VyY2VzL2VjaG8tY29va2llcy5waHAiOworICAgICAg
ICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBmaW5pc2hKU1Rlc3Q7CisgICAgICAgICAgICBk
ZWJ1ZygiPGJyPk9wZW5pbmcgbG9jYWxob3N0IHRoaXJkLXBhcnR5IGlmcmFtZSB0byBjaGVjayBp
dHMgY29va2llcy4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZy
YW1lRWxlbWVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CiB9CiA8L3NjcmlwdD4KIDwv
aGVhZD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>