<?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>81361</bug_id>
          
          <creation_ts>2012-03-16 09:30:16 -0700</creation_ts>
          <short_desc>[WebSocket]A client MUST close a connection if it detects a masked frame</short_desc>
          <delta_ts>2012-03-22 23:09:02 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bashi</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580578</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-16 09:30:16 -0700</bug_when>
    <thetext>From RFC6455, A server MUST NOT mask any frames that it sends to the client. 
A client MUST close a connection if it detects a masked frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580598</commentid>
    <comment_count>1</comment_count>
      <attachid>132303</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-16 09:47:08 -0700</bug_when>
    <thetext>Created attachment 132303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580603</commentid>
    <comment_count>2</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-16 09:52:33 -0700</bug_when>
    <thetext>We can get the notes from the followed address.
http://tools.ietf.org/html/rfc6455#section-5.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580631</commentid>
    <comment_count>3</comment_count>
      <attachid>132303</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-16 10:19:40 -0700</bug_when>
    <thetext>Comment on attachment 132303
Patch

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

This is a good thing to do. Thanks for doing this.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:647
&gt; +    if (frame.masked) {
&gt; +        fail(&quot;A server MUST NOT mask any frames that it sends to the client.&quot;);
&gt; +        return false;
&gt; +    }
&gt; +

This check should be done inside parseFrame(), and you can safely remove unmasking code there (line 595-600).

You can also remove the stale comment in WebSocketChannel.h (&quot;May modify part of ...&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581101</commentid>
    <comment_count>4</comment_count>
      <attachid>132417</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-16 16:49:28 -0700</bug_when>
    <thetext>Created attachment 132417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582510</commentid>
    <comment_count>5</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-19 17:28:32 -0700</bug_when>
    <thetext>Hi tkent,yuta,
  Can you review this patch? 
  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583203</commentid>
    <comment_count>6</comment_count>
      <attachid>132417</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-20 10:31:43 -0700</bug_when>
    <thetext>Comment on attachment 132417
Patch

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

Except for some style issues, the patch looks fine to me. (Please wait for comments from a reviewer, as I&apos;m not a WebKit reviewer yet.)

&gt; Source/WebCore/ChangeLog:7
&gt; +        A client MUST close a connection if it detects a masked frame
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=81361
&gt; +        A server MUST NOT mask any frames that it sends to the client.
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

Usual ChangeLog format is:

  &lt;bug title&gt;
  &lt;bug URL&gt;

  Reviewed by ...

  &lt;more description&gt;

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:562
&gt; +        fail(&quot;A server MUST NOT mask any frames that it sends to the client.&quot;);

Nitpick: Capital &quot;MUST NOT&quot; sounds too exaggerated; just small letters would work fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583866</commentid>
    <comment_count>7</comment_count>
      <attachid>132983</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-21 00:19:07 -0700</bug_when>
    <thetext>Created attachment 132983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583870</commentid>
    <comment_count>8</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-21 00:28:05 -0700</bug_when>
    <thetext>Add a new test case to track whether the browser failed the connection or not, when it received the masked frame from the server.

In addition, rename the test case masked-frame* into unmasked-frame*, and using unmasked frames to replace masked frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584400</commentid>
    <comment_count>9</comment_count>
      <attachid>132983</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-21 11:25:51 -0700</bug_when>
    <thetext>Comment on attachment 132983
Patch

Looks fine to me. Please wait for comments from a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584773</commentid>
    <comment_count>10</comment_count>
      <attachid>132983</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-21 17:03:39 -0700</bug_when>
    <thetext>Comment on attachment 132983
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586100</commentid>
    <comment_count>11</comment_count>
      <attachid>132983</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 23:08:57 -0700</bug_when>
    <thetext>Comment on attachment 132983
Patch

Clearing flags on attachment: 132983

Committed r111829: &lt;http://trac.webkit.org/changeset/111829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586101</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 23:09:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132303</attachid>
            <date>2012-03-16 09:47:08 -0700</date>
            <delta_ts>2012-03-16 16:49:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81361-20120318004904.patch</filename>
            <type>text/plain</type>
            <size>4216</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiZTIyMDlkODFiMjk1
ZTI1NmIzNjZkYmU3MDJmOTI4MTBiNTZlYi4uOTgyY2ExZTc5MDI3MGE4YTNiMDYxZTQxOTA5ZmRi
ZDlhMGYwMmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTE3ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEEgY2xpZW50IE1VU1QgY2xvc2UgYSBj
b25uZWN0aW9uIGlmIGl0IGRldGVjdHMgYSBtYXNrZWQgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzYxCisgICAgICAgIEEgc2VydmVyIE1V
U1QgTk9UIG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNlbmRzIHRvIHRoZSBjbGllbnQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSB0
ZXN0IGNhc2UsIG5vdCBtYXNrIHRoZSBmcmFtZXMgZnJvbSBzZXJ2ZXIgdG8gY2xpZW50LgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKwogMjAxMi0wMy0x
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBi
dWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA2Yzk3NmFhYzllZTI2ZjJiZTcyNWJlMjhmNWMwMjJmMWZi
MDVjMjlhLi4wYWNjYTQyNmY3ODdjOTM1MGNhNWM0YzZkMDlkZGI5MzgzNTBmNGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC02NDAsNiArNjQwLDExIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vz
c0ZyYW1lKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChmcmFtZS5t
YXNrZWQpIHsKKyAgICAgICAgZmFpbCgiQSBzZXJ2ZXIgTVVTVCBOT1QgbWFzayBhbnkgZnJhbWVz
IHRoYXQgaXQgc2VuZHMgdG8gdGhlIGNsaWVudC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIC8vIEFsbCBjb250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVk
LgogICAgIGlmIChXZWJTb2NrZXRGcmFtZTo6aXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkg
JiYgIWZyYW1lLmZpbmFsKSB7CiAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGZyYWdtZW50ZWQgY29u
dHJvbCBmcmFtZTogb3Bjb2RlID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDZmMzZlNzIxZjYxYjRhYjEyYmI1ZjA0N2RlMDhjYTk4MTBiZDM5YTEuLjZiODQwMGU5
YTZkNzMxMTRiOTRjMmYzNDMyZDg0ZjY2MGE4YmExMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wMy0xNyAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBBIGNsaWVu
dCBNVVNUIGNsb3NlIGEgY29ubmVjdGlvbiBpZiBpdCBkZXRlY3RzIGEgbWFza2VkIGZyYW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM2MQorICAg
ICAgICBBIHNlcnZlciBNVVNUIE5PVCBtYXNrIGFueSBmcmFtZXMgdGhhdCBpdCBzZW5kcyB0byB0
aGUgY2xpZW50LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzX3dzaC5w
eToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisKIDIwMTItMDMtMTQgIEpl
c3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBmdWxsc2NyZWVuL3Zp
ZGVvLWNvbnRyb2xzLWRyYWcuaHRtbCBmYWlsaW5nIG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZy
YW1lc193c2gucHkKaW5kZXggMmQwM2I2Nzk3MzM0ODQ0MmQ4YjU0YTdiYzVmOThhYzc5ZjAwN2Rk
Ni4uMTY0Y2M1YmYyMmE5N2Y5ZGFkNzg1YmU2ODYzOGRkZWUxYjJhYTJjMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVz
X3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L21hc2tlZC1mcmFtZXNfd3NoLnB5CkBAIC0xMCwxMiArMTAsMTIgQEAgZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogCiBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgogICAgICMgcHl3ZWJzb2NrZXQgZG9lcyBub3QgbWFzayBtZXNzYWdlIGJ5
IGRlZmF1bHQuIFdlIG5lZWQgdG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseSB0byBtYXNrIGl0Lgot
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0Zp
cnN0IG1lc3NhZ2UnLCBtYXNrPVRydWUpKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShz
dHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0ZpcnN0IG1lc3NhZ2UnLCBtYXNrPUZhbHNlKSkKIAot
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0Zy
YWdtZW50ZWQgJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwgZmluPTAsIG1hc2s9VHJ1ZSkp
Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgn
bWVzc2FnZScsIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTiwgZmluPTEsIG1hc2s9
VHJ1ZSkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9m
cmFtZSgnRnJhZ21lbnRlZCAnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULCBmaW49MCwgbWFz
az1GYWxzZSkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4
dF9mcmFtZSgnbWVzc2FnZScsIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTiwgZmlu
PTEsIG1hc2s9RmFsc2UpKQogCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5j
cmVhdGVfdGV4dF9mcmFtZSgnJywgbWFzaz1UcnVlKSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCcnLCBtYXNrPUZhbHNlKSkKIAogICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdFTkQnKQogCkBAIC0zMCw2ICszMCw2IEBAIGRl
ZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CiAKICAgICAjIFNlbmQgYSBtYXNr
ZWQgY2xvc2UgZnJhbWUuIENsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMgZnJh
bWUgYW5kCiAgICAgIyB0aGUgV2ViU29ja2V0IG9iamVjdCBzaG91bGQgYmUgY2xvc2VkIGNsZWFu
bHkuCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfY2xvc2VfZnJh
bWUoJycsIG1hc2s9VHJ1ZSkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5j
cmVhdGVfY2xvc2VfZnJhbWUoJycsIG1hc2s9RmFsc2UpKQogCiAgICAgcmFpc2UgaGFuZHNoYWtl
LkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50
cyBweXdlYnNvY2tldCBmcm9tIHN0YXJ0aW5nIGl0cyBvd24gY2xvc2luZyBoYW5kc2hha2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132417</attachid>
            <date>2012-03-16 16:49:28 -0700</date>
            <delta_ts>2012-03-21 00:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81361-20120318075124.patch</filename>
            <type>text/plain</type>
            <size>6499</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiZTIyMDlkODFiMjk1
ZTI1NmIzNjZkYmU3MDJmOTI4MTBiNTZlYi4uOTgyY2ExZTc5MDI3MGE4YTNiMDYxZTQxOTA5ZmRi
ZDlhMGYwMmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTE3ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEEgY2xpZW50IE1VU1QgY2xvc2UgYSBj
b25uZWN0aW9uIGlmIGl0IGRldGVjdHMgYSBtYXNrZWQgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzYxCisgICAgICAgIEEgc2VydmVyIE1V
U1QgTk9UIG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNlbmRzIHRvIHRoZSBjbGllbnQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSB0
ZXN0IGNhc2UsIG5vdCBtYXNrIHRoZSBmcmFtZXMgZnJvbSBzZXJ2ZXIgdG8gY2xpZW50LgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKwogMjAxMi0wMy0x
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBi
dWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA2Yzk3NmFhYzllZTI2ZjJiZTcyNWJlMjhmNWMwMjJmMWZi
MDVjMjlhLi44YzhjNWQ4ZmIyMWMxNzc1NGYyM2UzMmQ3ZGJmYzFkNTQ4NTFjZDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC01NTgsNiArNTU4LDEwIEBAIFdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVS
ZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShXZWJTb2NrZXRGcmFtZSYKICAgICB1
bnNpZ25lZCBjaGFyIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9wQ29kZU1hc2s7CiAKICAgICBib29s
IG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OworICAgIGlmIChtYXNrZWQpIHsKKyAgICAg
ICAgZmFpbCgiQSBzZXJ2ZXIgTVVTVCBOT1QgbWFzayBhbnkgZnJhbWVzIHRoYXQgaXQgc2VuZHMg
dG8gdGhlIGNsaWVudC4iKTsKKyAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7CisgICAgfQogICAg
IHVpbnQ2NF90IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFz
azsKICAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkKSB7CiAgICAgICAgIGludCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXpl
OwpAQCAtNTgyLDMyICs1ODYsMjQgQEAgV2ViU29ja2V0Q2hhbm5lbDo6UGFyc2VGcmFtZVJlc3Vs
dCBXZWJTb2NrZXRDaGFubmVsOjpwYXJzZUZyYW1lKFdlYlNvY2tldEZyYW1lJgogI2Vsc2UKICAg
ICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZG
RkZGRnVsbDsKICNlbmRpZgotICAgIHNpemVfdCBtYXNraW5nS2V5TGVuZ3RoID0gbWFza2VkID8g
bWFza2luZ0tleVdpZHRoSW5CeXRlcyA6IDA7Ci0gICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1h
eFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IG51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7CisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+
IG1heFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ID4gbnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpIHsKICAgICAgICAgZmFpbCgiV2ViU29ja2V0IGZyYW1lIGxlbmd0aCB0b28g
bGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3RoNjQpICsgIiBieXRlcyIpOwog
ICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKICAgICB9CiAgICAgc2l6ZV90IHBheWxvYWRMZW5n
dGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2NCk7CiAKLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmQgLSBwKSA8IG1hc2tpbmdLZXlMZW5ndGggKyBwYXls
b2FkTGVuZ3RoKQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckVuZCAtIHApIDwg
cGF5bG9hZExlbmd0aCkKICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKIAotICAgIGlm
IChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hhciogbWFza2luZ0tleSA9IHA7Ci0gICAgICAg
IGNoYXIqIHBheWxvYWQgPSBjb25zdF9jYXN0PGNoYXIqPihwICsgbWFza2luZ0tleVdpZHRoSW5C
eXRlcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZExlbmd0aDsgKytp
KQotICAgICAgICAgICAgcGF5bG9hZFtpXSBePSBtYXNraW5nS2V5W2kgJSBtYXNraW5nS2V5V2lk
dGhJbkJ5dGVzXTsgLy8gVW5tYXNrIHRoZSBwYXlsb2FkLgotICAgIH0KLQogICAgIGZyYW1lLm9w
Q29kZSA9IHN0YXRpY19jYXN0PFdlYlNvY2tldEZyYW1lOjpPcENvZGU+KG9wQ29kZSk7CiAgICAg
ZnJhbWUuZmluYWwgPSBmaW5hbDsKICAgICBmcmFtZS5jb21wcmVzcyA9IGNvbXByZXNzOwogICAg
IGZyYW1lLnJlc2VydmVkMiA9IHJlc2VydmVkMjsKICAgICBmcmFtZS5yZXNlcnZlZDMgPSByZXNl
cnZlZDM7CiAgICAgZnJhbWUubWFza2VkID0gbWFza2VkOwotICAgIGZyYW1lLnBheWxvYWQgPSBw
ICsgbWFza2luZ0tleUxlbmd0aDsKKyAgICBmcmFtZS5wYXlsb2FkID0gcDsKICAgICBmcmFtZS5w
YXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aDsKLSAgICBmcmFtZUVuZCA9IHAgKyBtYXNraW5n
S2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aDsKKyAgICBmcmFtZUVuZCA9IHAgKyBwYXlsb2FkTGVu
Z3RoOwogICAgIHJldHVybiBGcmFtZU9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA2MmI0ZmQzNWY5MzY2
NTk4YmM5NWFhMDU1ZjQ3YWZhNWM5NmQ2NWEyLi41N2NmMWIyNWUwYTQxZWE3MTZhZWJkZDM5OTAy
ZmNlOTFlZDIwN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBGcmFtZUVycm9yCiAgICAgfTsKIAotICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFt
ZShXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCk7IC8vIE1heSBtb2RpZnkg
cGFydCBvZiBtX2J1ZmZlciB0byB1bm1hc2sgdGhlIGZyYW1lLgorICAgIFBhcnNlRnJhbWVSZXN1
bHQgcGFyc2VGcmFtZShXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCk7CiAK
ICAgICBib29sIHByb2Nlc3NGcmFtZSgpOwogICAgIGJvb2wgcHJvY2Vzc0ZyYW1lSGl4aWU3Nigp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDZmMzZlNzIxZjYxYjRhYjEyYmI1ZjA0N2RlMDhjYTk4MTBiZDM5YTEuLjZiODQw
MGU5YTZkNzMxMTRiOTRjMmYzNDMyZDg0ZjY2MGE4YmExMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMi0wMy0xNyAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBBIGNs
aWVudCBNVVNUIGNsb3NlIGEgY29ubmVjdGlvbiBpZiBpdCBkZXRlY3RzIGEgbWFza2VkIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM2MQor
ICAgICAgICBBIHNlcnZlciBNVVNUIE5PVCBtYXNrIGFueSBmcmFtZXMgdGhhdCBpdCBzZW5kcyB0
byB0aGUgY2xpZW50LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzX3dz
aC5weToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisKIDIwMTItMDMtMTQg
IEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBmdWxsc2NyZWVu
L3ZpZGVvLWNvbnRyb2xzLWRyYWcuaHRtbCBmYWlsaW5nIG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzX3dz
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2Vk
LWZyYW1lc193c2gucHkKaW5kZXggMmQwM2I2Nzk3MzM0ODQ0MmQ4YjU0YTdiYzVmOThhYzc5ZjAw
N2RkNi4uMTY0Y2M1YmYyMmE5N2Y5ZGFkNzg1YmU2ODYzOGRkZWUxYjJhYTJjMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJh
bWVzX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5CkBAIC0xMCwxMiArMTAsMTIgQEAgZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogCiBkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgogICAgICMgcHl3ZWJzb2NrZXQgZG9lcyBub3QgbWFzayBtZXNzYWdl
IGJ5IGRlZmF1bHQuIFdlIG5lZWQgdG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseSB0byBtYXNrIGl0
LgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUo
J0ZpcnN0IG1lc3NhZ2UnLCBtYXNrPVRydWUpKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0ZpcnN0IG1lc3NhZ2UnLCBtYXNrPUZhbHNlKSkK
IAotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUo
J0ZyYWdtZW50ZWQgJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwgZmluPTAsIG1hc2s9VHJ1
ZSkpCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFt
ZSgnbWVzc2FnZScsIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTiwgZmluPTEsIG1h
c2s9VHJ1ZSkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4
dF9mcmFtZSgnRnJhZ21lbnRlZCAnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULCBmaW49MCwg
bWFzaz1GYWxzZSkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVf
dGV4dF9mcmFtZSgnbWVzc2FnZScsIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTiwg
ZmluPTEsIG1hc2s9RmFsc2UpKQogCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVh
bS5jcmVhdGVfdGV4dF9mcmFtZSgnJywgbWFzaz1UcnVlKSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCcnLCBtYXNrPUZhbHNlKSkKIAogICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdFTkQnKQogCkBAIC0zMCw2ICszMCw2IEBA
IGRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CiAKICAgICAjIFNlbmQgYSBt
YXNrZWQgY2xvc2UgZnJhbWUuIENsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMg
ZnJhbWUgYW5kCiAgICAgIyB0aGUgV2ViU29ja2V0IG9iamVjdCBzaG91bGQgYmUgY2xvc2VkIGNs
ZWFubHkuCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfY2xvc2Vf
ZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVh
bS5jcmVhdGVfY2xvc2VfZnJhbWUoJycsIG1hc2s9RmFsc2UpKQogCiAgICAgcmFpc2UgaGFuZHNo
YWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2
ZW50cyBweXdlYnNvY2tldCBmcm9tIHN0YXJ0aW5nIGl0cyBvd24gY2xvc2luZyBoYW5kc2hha2Uu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132983</attachid>
            <date>2012-03-21 00:19:07 -0700</date>
            <delta_ts>2012-03-22 23:08:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81361-20120322152110.patch</filename>
            <type>text/plain</type>
            <size>17544</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiZTIyMDlkODFiMjk1
ZTI1NmIzNjZkYmU3MDJmOTI4MTBiNTZlYi4uOWZmNTEyMDdhM2YxOWVjMWY2MWMxMWIwNmU2MjBh
MzA4MjdhNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTE3ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEEgY2xpZW50IE1VU1QgY2xvc2UgYSBj
b25uZWN0aW9uIGlmIGl0IGRldGVjdHMgYSBtYXNrZWQgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzYxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBzZXJ2ZXIgbXVzdCBub3QgbWFzayBhbnkg
ZnJhbWVzIHRoYXQgaXQgc2VuZHMgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgQ2hhbmdlIHRoZSB0
ZXN0IGNhc2UsIG5vdCBtYXNrIHRoZSBmcmFtZXMgZnJvbSBzZXJ2ZXIgdG8gY2xpZW50LgorICAg
ICAgICAKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnZh
bGlkLW1hc2tlZC1mcmFtZXMtZnJvbS1zZXJ2ZXIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKwogMjAxMi0wMy0xNCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCA2Yzk3NmFhYzllZTI2ZjJiZTcyNWJlMjhmNWMwMjJmMWZiMDVjMjlhLi5mNGU0MWFmYjVh
YjUxZDVhNDA3MjBmZGZhNzYyZDUxMDc1MTIwY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01NTgsNiAr
NTU4LDEwIEBAIFdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hh
bm5lbDo6cGFyc2VGcmFtZShXZWJTb2NrZXRGcmFtZSYKICAgICB1bnNpZ25lZCBjaGFyIG9wQ29k
ZSA9IGZpcnN0Qnl0ZSAmIG9wQ29kZU1hc2s7CiAKICAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5
dGUgJiBtYXNrQml0OworICAgIGlmIChtYXNrZWQpIHsKKyAgICAgICAgZmFpbCgiQSBzZXJ2ZXIg
bXVzdCBub3QgbWFzayBhbnkgZnJhbWVzIHRoYXQgaXQgc2VuZHMgdG8gdGhlIGNsaWVudC4iKTsK
KyAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7CisgICAgfQogICAgIHVpbnQ2NF90IHBheWxvYWRM
ZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFzazsKICAgICBpZiAocGF5bG9h
ZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKSB7
CiAgICAgICAgIGludCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplOwpAQCAtNTgyLDMyICs1ODYs
MjQgQEAgV2ViU29ja2V0Q2hhbm5lbDo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRDaGFubmVs
OjpwYXJzZUZyYW1lKFdlYlNvY2tldEZyYW1lJgogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZGRkZGRnVsbDsKICNlbmRpZgot
ICAgIHNpemVfdCBtYXNraW5nS2V5TGVuZ3RoID0gbWFza2VkID8gbWFza2luZ0tleVdpZHRoSW5C
eXRlcyA6IDA7Ci0gICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGggfHwg
cGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKSB7CisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGgg
fHwgcGF5bG9hZExlbmd0aDY0ID4gbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKICAg
ICAgICAgZmFpbCgiV2ViU29ja2V0IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6
Om51bWJlcihwYXlsb2FkTGVuZ3RoNjQpICsgIiBieXRlcyIpOwogICAgICAgICByZXR1cm4gRnJh
bWVFcnJvcjsKICAgICB9CiAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHBheWxvYWRMZW5ndGg2NCk7CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
dWZmZXJFbmQgLSBwKSA8IG1hc2tpbmdLZXlMZW5ndGggKyBwYXlsb2FkTGVuZ3RoKQorICAgIGlm
IChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckVuZCAtIHApIDwgcGF5bG9hZExlbmd0aCkKICAg
ICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKIAotICAgIGlmIChtYXNrZWQpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogbWFza2luZ0tleSA9IHA7Ci0gICAgICAgIGNoYXIqIHBheWxvYWQgPSBj
b25zdF9jYXN0PGNoYXIqPihwICsgbWFza2luZ0tleVdpZHRoSW5CeXRlcyk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZExlbmd0aDsgKytpKQotICAgICAgICAgICAgcGF5
bG9hZFtpXSBePSBtYXNraW5nS2V5W2kgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsgLy8gVW5t
YXNrIHRoZSBwYXlsb2FkLgotICAgIH0KLQogICAgIGZyYW1lLm9wQ29kZSA9IHN0YXRpY19jYXN0
PFdlYlNvY2tldEZyYW1lOjpPcENvZGU+KG9wQ29kZSk7CiAgICAgZnJhbWUuZmluYWwgPSBmaW5h
bDsKICAgICBmcmFtZS5jb21wcmVzcyA9IGNvbXByZXNzOwogICAgIGZyYW1lLnJlc2VydmVkMiA9
IHJlc2VydmVkMjsKICAgICBmcmFtZS5yZXNlcnZlZDMgPSByZXNlcnZlZDM7CiAgICAgZnJhbWUu
bWFza2VkID0gbWFza2VkOwotICAgIGZyYW1lLnBheWxvYWQgPSBwICsgbWFza2luZ0tleUxlbmd0
aDsKKyAgICBmcmFtZS5wYXlsb2FkID0gcDsKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gcGF5
bG9hZExlbmd0aDsKLSAgICBmcmFtZUVuZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoICsgcGF5bG9h
ZExlbmd0aDsKKyAgICBmcmFtZUVuZCA9IHAgKyBwYXlsb2FkTGVuZ3RoOwogICAgIHJldHVybiBG
cmFtZU9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA2MmI0ZmQzNWY5MzY2NTk4YmM5NWFhMDU1ZjQ3YWZh
NWM5NmQ2NWEyLi41N2NmMWIyNWUwYTQxZWE3MTZhZWJkZDM5OTAyZmNlOTFlZDIwN2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgICAgICBGcmFtZUVycm9yCiAg
ICAgfTsKIAotICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZShXZWJTb2NrZXRGcmFtZSYs
IGNvbnN0IGNoYXIqJiBmcmFtZUVuZCk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiBtX2J1ZmZlciB0
byB1bm1hc2sgdGhlIGZyYW1lLgorICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZShXZWJT
b2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCk7CiAKICAgICBib29sIHByb2Nlc3NG
cmFtZSgpOwogICAgIGJvb2wgcHJvY2Vzc0ZyYW1lSGl4aWU3NigpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZmMzZlNzIx
ZjYxYjRhYjEyYmI1ZjA0N2RlMDhjYTk4MTBiZDM5YTEuLjE4YWEyZWVlN2I1NTAwZTM1ZWRmMjY1
YjQ3NTBhZDZkZTg1YzlhYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMy0yMiAgTGkg
WWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBbV2ViU29ja2V0XUEgY2xpZW50IG11
c3QgY2xvc2UgYSBjb25uZWN0aW9uIGlmIGl0IGRldGVjdHMgYSBtYXNrZWQgZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ludmFsaWQtbWFza2VkLWZyYW1lcy1mcm9tLXNlcnZlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW52YWxpZC1tYXNrZWQtZnJhbWVzLWZyb20tc2VydmVyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52YWxpZC1tYXNrZWQtZnJhbWVz
LWZyb20tc2VydmVyX3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS91bm1hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVz
LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VubWFza2VkLWZyYW1lcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLmh0bWwuCisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bm1hc2tlZC1mcmFtZXNfd3NoLnB5OiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzX3dzaC5weS4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisKIDIwMTItMDMtMTQgIEpl
c3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBmdWxsc2NyZWVuL3Zp
ZGVvLWNvbnRyb2xzLWRyYWcuaHRtbCBmYWlsaW5nIG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnZhbGlkLW1hc2tlZC1mcmFt
ZXMtZnJvbS1zZXJ2ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9pbnZhbGlkLW1hc2tlZC1mcmFtZXMtZnJvbS1zZXJ2ZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJjMDk3MTRkM2NiMDViNWMzNzFhOTQ4OWFlMTY0ODI0YTEzZDNi
ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2ludmFsaWQtbWFza2VkLWZyYW1lcy1mcm9tLXNlcnZlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBBIHNlcnZlciBtdXN0IG5vdCBtYXNr
IGFueSBmcmFtZXMgdGhhdCBpdCBzZW5kcyB0byB0aGUgY2xpZW50LgorVGVzdCB3aGV0aGVyIFdl
YlNvY2tldCBhYm9ydHMgdGhlIGNvbm5lY3Rpb24gd2hlbiBpdCByZWNlaXZlcyBhbiBtYXNrZWQg
ZnJhbWVzIGZyb20gc2VydmVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3Bl
bigpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludmFsaWQtbWFz
a2VkLWZyYW1lcy1mcm9tLXNlcnZlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9pbnZhbGlkLW1hc2tlZC1mcmFtZXMtZnJvbS1zZXJ2ZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NzAwMTI1MDQyNjNhYTJlY2Q1NzhkYWY3OTAwZDkwOTM2NmE5MjZmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnZhbGlkLW1hc2tlZC1mcmFtZXMtZnJvbS1zZXJ2ZXIuaHRtbApAQCAtMCwwICsxLDQxIEBA
Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBhYm9y
dHMgdGhlIGNvbm5lY3Rpb24gd2hlbiBpdCByZWNlaXZlcyBhbiBtYXNrZWQgZnJhbWVzIGZyb20g
c2VydmVyLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2
YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52YWxp
ZC1tYXNrZWQtZnJhbWVzLWZyb20tc2VydmVyIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJs
KTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVi
dWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxl
ZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwi
KSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZl
bnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9pbnZhbGlkLW1hc2tlZC1mcmFtZXMtZnJvbS1zZXJ2ZXJfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnZhbGlkLW1hc2tlZC1m
cmFtZXMtZnJvbS1zZXJ2ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ZWY4NTQ0MjdmZTMyMGI1OWI0
NjRmNzYwN2ZkZTk5ZGIxZWYzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludmFsaWQtbWFza2VkLWZyYW1lcy1mcm9tLXNl
cnZlcl93c2gucHkKQEAgLTAsMCArMSw4IEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
c3RyZWFtCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAg
ICBwYXNzCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgIyBw
eXdlYnNvY2tldCBkb2VzIG5vdCBtYXNrIG1lc3NhZ2UgYnkgZGVmYXVsdC4gV2UgbmVlZCB0byBi
dWlsZCBhIGZyYW1lIG1hbnVhbGx5IHRvIG1hc2sgaXQuCisgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnVGhlIE1hc2tlZCBNZXNzYWdlJywgbWFz
az1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjdiMDE3ZWUyMDc5YWFmNTExYjBmMWJlZTBiNGJl
OGRiN2I2MTFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1l
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1SZWNlaXZlIG1h
c2tlZCBXZWJTb2NrZXQgZnJhbWVzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLW9u
b3BlbigpIHdhcyBjYWxsZWQuCi1vbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJG
aXJzdCBtZXNzYWdlIikKLW9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gIkZyYWdt
ZW50ZWQgbWVzc2FnZSIpCi1vbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICIiKQot
b25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiRU5EIikKLVBBU1MgYWN0dWFsTWVz
c2FnZXMubGVuZ3RoID09PSBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aCBpcyB0cnVlCi1QQVNTIGFj
dHVhbE1lc3NhZ2VzWzBdIGlzICJGaXJzdCBtZXNzYWdlIgotUEFTUyBhY3R1YWxNZXNzYWdlc1sx
XSBpcyAiRnJhZ21lbnRlZCBtZXNzYWdlIgotUEFTUyBhY3R1YWxNZXNzYWdlc1syXSBpcyAiIgot
UEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjA4NWVkZDA0ODhmNTdmYWRkODQ4YjEyZmYx
NjE1OGM1M2Q4NzEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZy
YW1lcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgot
ZGVzY3JpcHRpb24oIlJlY2VpdmUgbWFza2VkIFdlYlNvY2tldCBmcmFtZXMuIik7Ci0KLXdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7Ci0KLXZhciB1cmwgPSAid3M6Ly9sb2Nh
bGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzIjsKLXZhciB3cyA9
IG5ldyBXZWJTb2NrZXQodXJsKTsKLXZhciBjbG9zZUV2ZW50OwotdmFyIGV4cGVjdGVkTWVzc2Fn
ZXMgPSBbIkZpcnN0IG1lc3NhZ2UiLCAiRnJhZ21lbnRlZCBtZXNzYWdlIiwgIiJdOwotdmFyIGFj
dHVhbE1lc3NhZ2VzID0gW107Ci0KLXdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKLXsKLSAgICBkZWJ1
Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKLSAgICB3cy5jbG9zZSgpOwotfTsKLQotd3Mub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRh
OwotICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1l
c3NhZ2UgKyAiXCIpIik7Ci0gICAgaWYgKG1lc3NhZ2UgPT09ICJFTkQiKSB7Ci0gICAgICAgIHdz
LmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYWN0dWFsTWVzc2FnZXMucHVz
aChtZXNzYWdlKTsKLX07Ci0KLXdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICBj
bG9zZUV2ZW50ID0gZXZlbnQ7Ci0gICAgc2hvdWxkQmVUcnVlKCJhY3R1YWxNZXNzYWdlcy5sZW5n
dGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQotICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImFjdHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0iLCBleHBlY3RlZE1lc3NhZ2VzW2ldKTsK
LSAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX07Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21h
c2tlZC1mcmFtZXNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9tYXNrZWQtZnJhbWVzX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmQwM2I2Nzk3MzM0ODQ0MmQ4YjU0YTdiYzVmOThhYzc5ZjAwN2RkNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMzUgKzAsMCBAQAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLQotCi1k
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0K
LWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgIyBweXdlYnNvY2tl
dCBkb2VzIG5vdCBtYXNrIG1lc3NhZ2UgYnkgZGVmYXVsdC4gV2UgbmVlZCB0byBidWlsZCBhIGZy
YW1lIG1hbnVhbGx5IHRvIG1hc2sgaXQuCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0
cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnRmlyc3QgbWVzc2FnZScsIG1hc2s9VHJ1ZSkpCi0KLSAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdGcmFn
bWVudGVkICcsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQsIGZpbj0wLCBtYXNrPVRydWUpKQot
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ21l
c3NhZ2UnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04sIGZpbj0xLCBtYXNrPVRy
dWUpKQotCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9m
cmFtZSgnJywgbWFzaz1UcnVlKSkKLQotICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdFTkQnKQotCi0gICAgIyBXYWl0IGZvciB0aGUgY2xpZW50IHRvIHN0YXJ0IGNsb3NpbmcgaGFu
ZHNoYWtlLgotICAgICMgVG8gcmVjZWl2ZSBhIGNsb3NlIGZyYW1lLCB3ZSBtdXN0IHVzZSBhbiBp
bnRlcm5hbCBtZXRob2Qgb2YgcmVxdWVzdC53c19zdHJlYW0uCi0gICAgb3Bjb2RlLCBwYXlsb2Fk
LCBmaW5hbCwgcmVzZXJ2ZWQxLCByZXNlcnZlZDIsIHJlc2VydmVkMyA9IHJlcXVlc3Qud3Nfc3Ry
ZWFtLl9yZWNlaXZlX2ZyYW1lKCkKLSAgICBhc3NlcnQgb3Bjb2RlID09IGNvbW1vbi5PUENPREVf
Q0xPU0UKLSAgICBhc3NlcnQgZmluYWwKLSAgICBhc3NlcnQgbm90IHJlc2VydmVkMQotICAgIGFz
c2VydCBub3QgcmVzZXJ2ZWQyCi0gICAgYXNzZXJ0IG5vdCByZXNlcnZlZDMKLQotICAgICMgU2Vu
ZCBhIG1hc2tlZCBjbG9zZSBmcmFtZS4gQ2xpZW50cyBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUg
dGhpcyBmcmFtZSBhbmQKLSAgICAjIHRoZSBXZWJTb2NrZXQgb2JqZWN0IHNob3VsZCBiZSBjbG9z
ZWQgY2xlYW5seS4KLSAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9j
bG9zZV9mcmFtZSgnJywgbWFzaz1UcnVlKSkKLQotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVk
QnlVc2VyRXhjZXB0aW9uKCdBYm9ydCB0aGUgY29ubmVjdGlvbicpICMgUHJldmVudHMgcHl3ZWJz
b2NrZXQgZnJvbSBzdGFydGluZyBpdHMgb3duIGNsb3NpbmcgaGFuZHNoYWtlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bm1hc2tlZC1m
cmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS91bm1hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYTU2OGFi
MGVkOGVlMzUxMGU3MTJiOGU2NjkzMWI1NGE5NzEwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VubWFza2VkLWZyYW1lcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorUmVjZWl2ZSB1bm1hc2tlZCBXZWJTb2NrZXQg
ZnJhbWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxs
ZWQuCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJGaXJzdCBtZXNzYWdlIikK
K29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gIkZyYWdtZW50ZWQgbWVzc2FnZSIp
Citvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICIiKQorb25tZXNzYWdlKCkgd2Fz
IGNhbGxlZC4gKG1lc3NhZ2UgPSAiRU5EIikKK1BBU1MgYWN0dWFsTWVzc2FnZXMubGVuZ3RoID09
PSBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aCBpcyB0cnVlCitQQVNTIGFjdHVhbE1lc3NhZ2VzWzBd
IGlzICJGaXJzdCBtZXNzYWdlIgorUEFTUyBhY3R1YWxNZXNzYWdlc1sxXSBpcyAiRnJhZ21lbnRl
ZCBtZXNzYWdlIgorUEFTUyBhY3R1YWxNZXNzYWdlc1syXSBpcyAiIgorUEFTUyBjbG9zZUV2ZW50
Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VubWFza2VkLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bm1hc2tlZC1mcmFtZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YzIyYjc1Y2U0NmQ4MmJkNjc3NDY1MmIyMWMzZjUzYjRkN2E4NTQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bm1hc2tlZC1m
cmFtZXMuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
UmVjZWl2ZSB1bm1hc2tlZCBXZWJTb2NrZXQgZnJhbWVzLiIpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5tYXNrZWQtZnJhbWVzIjsKK3ZhciB3cyA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OwordmFyIGV4cGVjdGVkTWVzc2FnZXMgPSBbIkZp
cnN0IG1lc3NhZ2UiLCAiRnJhZ21lbnRlZCBtZXNzYWdlIiwgIiJdOwordmFyIGFjdHVhbE1lc3Nh
Z2VzID0gW107CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVu
KCkgd2FzIGNhbGxlZC4iKTsKKyAgICB3cy5jbG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRl
YnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAi
XCIpIik7CisgICAgaWYgKG1lc3NhZ2UgPT09ICJFTkQiKSB7CisgICAgICAgIHdzLmNsb3NlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYWN0dWFsTWVzc2FnZXMucHVzaChtZXNzYWdl
KTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50
ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJhY3R1YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4
cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQorICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImFj
dHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0iLCBleHBlY3RlZE1lc3NhZ2VzW2ldKTsKKyAgICBzaG91
bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VubWFza2VkLWZy
YW1lc193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VubWFza2VkLWZyYW1lc193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0Y2M1YmYyMmE5N2Y5ZGFkNzg1
YmU2ODYzOGRkZWUxYjJhYTJjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5tYXNrZWQtZnJhbWVzX3dzaC5weQpAQCAtMCww
ICsxLDM1IEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
c3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIHB5d2Vic29ja2V0IGRvZXMg
bm90IG1hc2sgbWVzc2FnZSBieSBkZWZhdWx0LiBXZSBuZWVkIHRvIGJ1aWxkIGEgZnJhbWUgbWFu
dWFsbHkgdG8gbWFzayBpdC4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNy
ZWF0ZV90ZXh0X2ZyYW1lKCdGaXJzdCBtZXNzYWdlJywgbWFzaz1GYWxzZSkpCisKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdGcmFnbWVudGVk
ICcsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQsIGZpbj0wLCBtYXNrPUZhbHNlKSkKKyAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdtZXNzYWdl
Jywgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OLCBmaW49MSwgbWFzaz1GYWxzZSkp
CisKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1l
KCcnLCBtYXNrPUZhbHNlKSkKKworICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdF
TkQnKQorCisgICAgIyBXYWl0IGZvciB0aGUgY2xpZW50IHRvIHN0YXJ0IGNsb3NpbmcgaGFuZHNo
YWtlLgorICAgICMgVG8gcmVjZWl2ZSBhIGNsb3NlIGZyYW1lLCB3ZSBtdXN0IHVzZSBhbiBpbnRl
cm5hbCBtZXRob2Qgb2YgcmVxdWVzdC53c19zdHJlYW0uCisgICAgb3Bjb2RlLCBwYXlsb2FkLCBm
aW5hbCwgcmVzZXJ2ZWQxLCByZXNlcnZlZDIsIHJlc2VydmVkMyA9IHJlcXVlc3Qud3Nfc3RyZWFt
Ll9yZWNlaXZlX2ZyYW1lKCkKKyAgICBhc3NlcnQgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ0xP
U0UKKyAgICBhc3NlcnQgZmluYWwKKyAgICBhc3NlcnQgbm90IHJlc2VydmVkMQorICAgIGFzc2Vy
dCBub3QgcmVzZXJ2ZWQyCisgICAgYXNzZXJ0IG5vdCByZXNlcnZlZDMKKworICAgICMgU2VuZCBh
IG1hc2tlZCBjbG9zZSBmcmFtZS4gQ2xpZW50cyBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhp
cyBmcmFtZSBhbmQKKyAgICAjIHRoZSBXZWJTb2NrZXQgb2JqZWN0IHNob3VsZCBiZSBjbG9zZWQg
Y2xlYW5seS4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9z
ZV9mcmFtZSgnJywgbWFzaz1GYWxzZSkpCisKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbignQWJvcnQgdGhlIGNvbm5lY3Rpb24nKSAjIFByZXZlbnRzIHB5d2Vic29j
a2V0IGZyb20gc3RhcnRpbmcgaXRzIG93biBjbG9zaW5nIGhhbmRzaGFrZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>