<?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>35180</bug_id>
          
          <creation_ts>2010-02-19 14:43:55 -0800</creation_ts>
          <short_desc>[V8] V8LocationCustom.cpp doesn&apos;t handle location.hash updates properly</short_desc>
          <delta_ts>2010-02-26 08:36:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>brettw</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eroman</cc>
    
    <cc>fishd</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>192065</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-19 14:43:55 -0800</bug_when>
    <thetext>See http://crbug.com/32633 .

If we update the hash on an &quot;about:blank&quot; URL, the code first decides that we&apos;re changing the location and then thinks that we&apos;re changing it in a way that triggers a navigation, producing an infinite loop in the following HTML:

&lt;script&gt; 
  function displayPrivacy() {
    alert(trm2.location);
    trm2.location.hash = &apos;Privacy&apos;;
  }
&lt;/script&gt;
&lt;iframe name=trm2 id=trm2 onload=&quot;displayPrivacy()&quot; 
src=&quot;about:blank&quot;&gt;&lt;/iframe&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192580</commentid>
    <comment_count>1</comment_count>
      <attachid>49238</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-22 13:05:16 -0800</bug_when>
    <thetext>Created attachment 49238
tentative patch for this fix - don&apos;t review / land, it doesn&apos;t have the changelog entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192597</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-22 13:38:53 -0800</bug_when>
    <thetext>This change looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193606</commentid>
    <comment_count>3</comment_count>
      <attachid>49462</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-24 19:48:10 -0800</bug_when>
    <thetext>Created attachment 49462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193644</commentid>
    <comment_count>4</comment_count>
      <attachid>49462</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-24 23:08:31 -0800</bug_when>
    <thetext>Comment on attachment 49462
Patch

&gt; +++ b/LayoutTests/fast/loader/about-blank-hash-change.html
&gt; @@ -0,0 +1,34 @@
&gt; +&lt;script&gt;
&gt; +if (window.layoutTestController) {
&gt; +    layoutTestController.dumpAsText();
&gt; +}
&gt; +
&gt; +function onload_callback() {
&gt; +  var old_hash = inner.location.hash;
&gt; +  inner.location.hash = &apos;hash-ref&apos;;
&gt; +  var c = document.getElementById(&apos;content&apos;);
&gt; +  if (c.innerHTML.match(/^No callback/)) {
&gt; +    c.innerHTML = &apos;PASS: inner.location.hash = &quot;&apos; + inner.location.hash + &apos;&quot;&apos;;
&gt; +  } else if (c.innerHTML.match(/^PASS/)) {
&gt; +    c.innerHTML = c.innerHTML + &apos;FAIL: inner.location.hash = &quot;&apos; + inner.location.hash + &apos;&quot;&apos;;
&gt; +  }

up top you use 4 space indent, but here you use 2 spaces.  it&apos;d be
good to use consistent indentation.


&gt; +++ b/WebCore/bindings/v8/custom/V8LocationCustom.cpp
&gt; @@ -70,15 +70,23 @@ void V8Location::hashAccessorSetter(v8::Local&lt;v8::String&gt; name, v8::Local&lt;v8::Va
&gt;      if (!frame)
&gt;          return;
&gt;  
&gt; -    KURL url = frame-&gt;loader()-&gt;url();
&gt; +    // We copy the URL to avoid accidentally modifying it in place
&gt; +    // and then returning without actually doing anything. This is
&gt; +    // perhaps overly conservative.
&gt; +    KURL url = frame-&gt;loader()-&gt;url().copy();

This is unnecessary.  The .copy method is used when you need to copy
a KURL to another thread.  The existing code was using the copy ctor
which is perfect for this single threaded use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193804</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-25 10:28:31 -0800</bug_when>
    <thetext>&gt; &gt; +++ b/WebCore/bindings/v8/custom/V8LocationCustom.cpp
&gt; &gt; @@ -70,15 +70,23 @@ void V8Location::hashAccessorSetter(v8::Local&lt;v8::String&gt; name, v8::Local&lt;v8::Va
&gt; &gt;      if (!frame)
&gt; &gt;          return;
&gt; &gt;  
&gt; &gt; -    KURL url = frame-&gt;loader()-&gt;url();
&gt; &gt; +    // We copy the URL to avoid accidentally modifying it in place
&gt; &gt; +    // and then returning without actually doing anything. This is
&gt; &gt; +    // perhaps overly conservative.
&gt; &gt; +    KURL url = frame-&gt;loader()-&gt;url().copy();
&gt; 
&gt; This is unnecessary.  The .copy method is used when you need to copy
&gt; a KURL to another thread.  The existing code was using the copy ctor
&gt; which is perfect for this single threaded use case.

I thought from reading the comments in kurl.h that the copy ctor was only doing a shallow copy and so when I updated the .hash in the copy the original would also be updated. I&apos;m wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193807</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-25 10:41:51 -0800</bug_when>
    <thetext>Right.  It does a shallow copy of objects that are copy-on-write.  Those objects (String, CString) do not implement threadsafe copy-on-write, so it is not safe to use the copy constructor to create a KURL instance that you can then pass to another thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193852</commentid>
    <comment_count>7</comment_count>
      <attachid>49526</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-25 12:52:11 -0800</bug_when>
    <thetext>Created attachment 49526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193930</commentid>
    <comment_count>8</comment_count>
      <attachid>49545</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-25 16:38:05 -0800</bug_when>
    <thetext>Created attachment 49545
revised patch - fix js indentation in test file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193932</commentid>
    <comment_count>9</comment_count>
      <attachid>49546</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-25 16:42:36 -0800</bug_when>
    <thetext>Created attachment 49546
whoops - lost the changelogs; reattaching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194118</commentid>
    <comment_count>10</comment_count>
      <attachid>49546</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-26 08:36:38 -0800</bug_when>
    <thetext>Comment on attachment 49546
whoops - lost the changelogs; reattaching

Clearing flags on attachment: 49546

Committed r55285: &lt;http://trac.webkit.org/changeset/55285&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194119</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-26 08:36:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49238</attachid>
            <date>2010-02-22 13:05:16 -0800</date>
            <delta_ts>2010-02-24 19:48:07 -0800</delta_ts>
            <desc>tentative patch for this fix - don&apos;t review / land, it doesn&apos;t have the changelog entry</desc>
            <filename>35180.diff</filename>
            <type>text/plain</type>
            <size>967</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5k
ZXggYjVkZjYwMS4uY2Q0NmNhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTc1LDEwICs3NSwxNSBAQCB2b2lkIFY4TG9jYXRpb246
Omhhc2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYQogCiAgICAgaWYgKGhhc2guc3RhcnRzV2l0aCgiIyIpKQogICAgICAgICBoYXNoID0g
aGFzaC5zdWJzdHJpbmcoMSk7Ci0gICAgaWYgKG9sZFJlZiA9PSBoYXNoIHx8IChvbGRSZWYuaXNO
dWxsKCkgJiYgaGFzaC5pc0VtcHR5KCkpKQotICAgICAgICByZXR1cm47Ci0gICAgdXJsLnNldEZy
YWdtZW50SWRlbnRpZmllcihoYXNoKTsKIAorICAgIC8vIE5vdGUgdGhhdCBieSBkb2luZyB0aGUg
Y2hlY2sgdGhpcyB3YXksIHdlIGFyZSBjb21wYXJpbmcgZnJhZ21lbnRzIAorICAgIC8vIHBvc3Qt
Y2Fub25pY2FsaXphdGlvbiBzbyB0aGlzIGFsc28gaGFuZGxlcyB0aGUgY2FzZXMgd2hlcmUgZnJh
Z21lbnQgCisgICAgLy8gaWRlbnRpZmllcnMgYXJlIGlnbm9yZWQgb3IgaW52YWxpZC4gCisgICAg
dXJsLnNldEZyYWdtZW50SWRlbnRpZmllcihoYXNoKTsKKyAgICBTdHJpbmcgbmV3UmVmID0gdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGlmIChvbGRSZWYgPT0gbmV3UmVmIHx8IChvbGRS
ZWYuaXNOdWxsKCkgJiYgbmV3UmVmLmlzRW1wdHkoKSkpCisgICAgICAgIHJldHVybjsKKyAgICAK
ICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49462</attachid>
            <date>2010-02-24 19:48:10 -0800</date>
            <delta_ts>2010-02-25 12:52:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35180-20100224194809.patch</filename>
            <type>text/plain</type>
            <size>6237</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZWJmMjA3Li5jZWRhMTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDIt
MjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRoZSBoYW5kbGluZyBvZiB1cGRh
dGVzIHRvICNoYXNoIGZyYWdtZW50cyB0byBjaGVjayBmb3IgZGlmZmVyZW5jZXMKKyAgICAgICAg
cG9zdC1jYW5vbmljYWxpemF0aW9uIHJhdGhlciB0aGFuIGNvbXBhcmluZyBwcmUtIHRvIHBvc3Qt
LiBDaHJvbWl1bQorICAgICAgICBoYWQgYSBidWcgd2hlcmUgd2Ugd291bGQgc2V0IHRoZSAjaGFz
aCBvbiBhbiBhYm91dDpibGFuayBVUkwgYW5kIGdlbmVyYXRlCisgICAgICAgIGFuIG9ubG9hZCBl
dmVudCBiZWNhdXNlIHdlIHRob3VnaHQgdGhlIFVSTCB3YXMgY2hhbmdpbmcuCisKKyAgICAgICAg
Tm90ZSB0aGF0IHRoZSBhY3R1YWwgYmVoYXZpb3Igb2YgdXBkYXRpbmcgaGFzaCBmcmFnbWVudHMg
bWF5IGJlCisgICAgICAgIHNvbWV3aGF0IGltcGxtZW50YXRpb24tZGVmaW5lZDsgQ2hyb21pdW0g
KGxpa2UgRmlyZUZveCkgdGhyb3dzIHRoZW0KKyAgICAgICAgYXdheSBmb3IgYWJvdXQ6IFVSTHMg
d2hpbGUgU2FmYXJpIGtlZXBzIHRoZW0uIFRoaXMgaXMgcHJvYmFibHkKKyAgICAgICAgc29tZXRo
aW5nIHRoYXQgc2hvdWxkIGJlIGNoYW5nZWQgKGluIGEgc2VwYXJhdGUgYnVnL2NoYW5nZSksIGJ1
dCBmb3IKKyAgICAgICAgbm93IHRoaXMgdGVzdCBtYXkgcmVzdWx0IGluIHBsYXRmb3JtLXNwZWNp
ZmljIGV4cGVjdGF0aW9ucy4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTE4MAorCisgICAgICAgICogZmFzdC9sb2FkZXIvYWJvdXQtYmxhbmstaGFz
aC1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9hYm91
dC1ibGFuay1oYXNoLWNoYW5nZS5odG1sOiBBZGRlZC4KKwogMjAxMC0wMi0yNCAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJs
c3Nvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhh
c2gtY2hhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJs
YW5rLWhhc2gtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lMGViMzMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvYWJvdXQtYmxhbmstaGFzaC1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAor
VGhpcyB0ZXN0IHRlc3RzIHBhcnNpbmcgb2YgaGFzaCBmcmFnbWVudHMgaW4gYWJvdXQ6Ymxhbmsg
VVJMcy4gQ2hyb21pdW0gaGFkIGEgYnVnIGF0IG9uZSBwb2ludCB3aGVyZSBzZXR0aW5nIHRoZSBo
YXNoIGZyYWdtZW50IHdvdWxkIGNhdXNlIGEgbG9hZCBldmVudCBhbmQgaW4gc29tZSBjYXNlcyBh
biBpbmZpbml0ZSBsb29wLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1MTgwLiBJZiB0aGUgdGV4dCBzYXlzICJQQVNTOiAiIHRoZW4gdGhlIG9ubG9hZCgpIGV2
ZW50IG9ubHkgZmlyZWQgb25jZS4gSWYgaXQgc2F5cyAnRkFJTDogJyB0aGVuIGl0IGZpcmVkIHR3
byBvciBtb3JlIHRpbWVzLiBBbHNvLCB0aGUgdGVzdCBtYXkgdGltZSBvdXQgbG9vcGluZyBvbiB0
aGlzIGV2ZW50IGhhbmRsZXIgKHdoaWNoIGlzIGFsc28gYSBmYWlsdXJlKS4gTm90ZSB0aGF0IHRo
ZSBvdXRwdXQgb2YgdGhpcyB0ZXN0IG1heSB2YXJ5IGJldHdlZW4gYnJvd3NlcnMgZGVwZW5kaW5n
IG9uIGhvdyB0aGV5IGludGVycHJldCBoYXNoIGZyYWdtZW50cyBvbiBhYm91dDpibGFuayBVUkxz
LiBTYWZhcmkgcHJlc2VydmVzIHRoZW0sIENocm9taXVtIGFuZCBGaXJlZm94IGRvbid0LgorCitQ
QVNTOiBpbm5lci5sb2NhdGlvbi5oYXNoID0gIiNoYXNoLXJlZiIKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvYWJvdXQtYmxhbmstaGFzaC1jaGFuZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhNDY2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdlLmh0bWwKQEAgLTAs
MCArMSwzNCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIG9u
bG9hZF9jYWxsYmFjaygpIHsKKyAgdmFyIG9sZF9oYXNoID0gaW5uZXIubG9jYXRpb24uaGFzaDsK
KyAgaW5uZXIubG9jYXRpb24uaGFzaCA9ICdoYXNoLXJlZic7CisgIHZhciBjID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKTsKKyAgaWYgKGMuaW5uZXJIVE1MLm1hdGNoKC9eTm8g
Y2FsbGJhY2svKSkgeworICAgIGMuaW5uZXJIVE1MID0gJ1BBU1M6IGlubmVyLmxvY2F0aW9uLmhh
c2ggPSAiJyArIGlubmVyLmxvY2F0aW9uLmhhc2ggKyAnIic7CisgIH0gZWxzZSBpZiAoYy5pbm5l
ckhUTUwubWF0Y2goL15QQVNTLykpIHsKKyAgICBjLmlubmVySFRNTCA9IGMuaW5uZXJIVE1MICsg
J0ZBSUw6IGlubmVyLmxvY2F0aW9uLmhhc2ggPSAiJyArIGlubmVyLmxvY2F0aW9uLmhhc2ggKyAn
Iic7CisgIH0KK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IHRlc3RzIHBhcnNpbmcgb2YgaGFz
aCBmcmFnbWVudHMgaW4gYWJvdXQ6YmxhbmsgVVJMcy4gQ2hyb21pdW0gaGFkCithIGJ1ZyBhdCBv
bmUgcG9pbnQgd2hlcmUgc2V0dGluZyB0aGUgaGFzaCBmcmFnbWVudCB3b3VsZCBjYXVzZSBhIGxv
YWQgZXZlbnQKK2FuZCBpbiBzb21lIGNhc2VzIGFuIGluZmluaXRlIGxvb3AuCisKK1NlZSA8YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUxODAiPgoraHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MTgwPC9hPi4KKworSWYgdGhl
IHRleHQgc2F5cyAiUEFTUzogIiB0aGVuIHRoZSBvbmxvYWQoKSBldmVudCBvbmx5IGZpcmVkIG9u
Y2UuIElmIGl0CitzYXlzICdGQUlMOiAnIHRoZW4gaXQgZmlyZWQgdHdvIG9yIG1vcmUgdGltZXMu
IEFsc28sIHRoZSB0ZXN0IG1heSB0aW1lIG91dAorbG9vcGluZyBvbiB0aGlzIGV2ZW50IGhhbmRs
ZXIgKHdoaWNoIGlzIGFsc28gYSBmYWlsdXJlKS4KKworTm90ZSB0aGF0IHRoZSBvdXRwdXQgb2Yg
dGhpcyB0ZXN0IG1heSB2YXJ5IGJldHdlZW4gYnJvd3NlcnMgZGVwZW5kaW5nIG9uCitob3cgdGhl
eSBpbnRlcnByZXQgaGFzaCBmcmFnbWVudHMgb24gYWJvdXQ6YmxhbmsgVVJMcy4gU2FmYXJpIHBy
ZXNlcnZlcyB0aGVtLAorQ2hyb21pdW0gYW5kIEZpcmVmb3ggZG9uJ3QuPC9wPgorPHA+Cis8ZGl2
IGlkPSJjb250ZW50Ij5ObyBjYWxsYmFjazwvZGl2PgorPGlmcmFtZSBuYW1lPWlubmVyIGlkPWlu
bmVyIG9ubG9hZD0ib25sb2FkX2NhbGxiYWNrKCkiCitzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFt
ZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjZhN2VhZi4uZDk4YjNlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wMi0yNCAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGhhbmRsaW5nIG9mIHVwZGF0ZXMgdG8gI2hhc2gg
ZnJhZ21lbnRzIHRvIGNoZWNrIGZvciBkaWZmZXJlbmNlcworICAgICAgICBwb3N0LWNhbm9uaWNh
bGl6YXRpb24gcmF0aGVyIHRoYW4gY29tcGFyaW5nIHByZS0gdG8gcG9zdC0uIENocm9taXVtCisg
ICAgICAgIGhhZCBhIGJ1ZyB3aGVyZSB3ZSB3b3VsZCBzZXQgdGhlICNoYXNoIG9uIGFuIGFib3V0
OmJsYW5rIFVSTCBhbmQgZ2VuZXJhdGUKKyAgICAgICAgYW4gb25sb2FkIGV2ZW50IGJlY2F1c2Ug
d2UgdGhvdWdodCB0aGUgVVJMIHdhcyBjaGFuZ2luZy4KKworICAgICAgICBOb3RlIHRoYXQgdGhl
IGFjdHVhbCBiZWhhdmlvciBvZiB1cGRhdGluZyBoYXNoIGZyYWdtZW50cyBtYXkgYmUKKyAgICAg
ICAgc29tZXdoYXQgaW1wbG1lbnRhdGlvbi1kZWZpbmVkOyBDaHJvbWl1bSAobGlrZSBGaXJlRm94
KSB0aHJvd3MgdGhlbQorICAgICAgICBhd2F5IGZvciBhYm91dDogVVJMcyB3aGlsZSBTYWZhcmkg
a2VlcHMgdGhlbS4gVGhpcyBpcyBwcm9iYWJseQorICAgICAgICBzb21ldGhpbmcgdGhhdCBzaG91
bGQgYmUgY2hhbmdlZCAoaW4gYSBzZXBhcmF0ZSBidWcvY2hhbmdlKS4KKworICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTE4MAorCisgICAgICAgIFRlc3Q6
IGZhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdlLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4TG9jYXRpb246Omhhc2hBY2Nlc3NvclNldHRlcik6CisKIDIwMTAtMDItMjQgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3Bw
CmluZGV4IGI1ZGY2MDEuLjhjNjkxZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC03MCwxNSArNzAsMjMgQEAgdm9pZCBWOExvY2F0
aW9uOjpoYXNoQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmEKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJM
IHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgLy8gV2UgY29weSB0aGUgVVJMIHRv
IGF2b2lkIGFjY2lkZW50YWxseSBtb2RpZnlpbmcgaXQgaW4gcGxhY2UKKyAgICAvLyBhbmQgdGhl
biByZXR1cm5pbmcgd2l0aG91dCBhY3R1YWxseSBkb2luZyBhbnl0aGluZy4gVGhpcyBpcworICAg
IC8vIHBlcmhhcHMgb3Zlcmx5IGNvbnNlcnZhdGl2ZS4KKyAgICBLVVJMIHVybCA9IGZyYW1lLT5s
b2FkZXIoKS0+dXJsKCkuY29weSgpOwogICAgIFN0cmluZyBvbGRSZWYgPSB1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCk7CiAKICAgICBpZiAoaGFzaC5zdGFydHNXaXRoKCIjIikpCiAgICAgICAgIGhh
c2ggPSBoYXNoLnN1YnN0cmluZygxKTsKLSAgICBpZiAob2xkUmVmID09IGhhc2ggfHwgKG9sZFJl
Zi5pc051bGwoKSAmJiBoYXNoLmlzRW1wdHkoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICB1cmwu
c2V0RnJhZ21lbnRJZGVudGlmaWVyKGhhc2gpOwogCisgICAgLy8gTm90ZSB0aGF0IGJ5IHBhcnNp
bmcgdGhlIFVSTCBhbmQgKnRoZW4qIGNvbXBhcmluZyBmcmFnbWVudHMsIHdlIGFyZSAKKyAgICAv
LyBjb21wYXJpbmcgZnJhZ21lbnRzIHBvc3QtY2Fub25pY2FsaXphdGlvbiwgYW5kIHNvIHRoaXMg
aGFuZGxlcyB0aGUKKyAgICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUg
aWdub3JlZCBvciBpbnZhbGlkLiAKKyAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKGhhc2gp
OworICAgIFN0cmluZyBuZXdSZWYgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgaWYg
KG9sZFJlZiA9PSBuZXdSZWYgfHwgKG9sZFJlZi5pc051bGwoKSAmJiBuZXdSZWYuaXNFbXB0eSgp
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1
cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49526</attachid>
            <date>2010-02-25 12:52:11 -0800</date>
            <delta_ts>2010-02-25 16:38:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35180-20100225125210.patch</filename>
            <type>text/plain</type>
            <size>4883</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZWJmMjA3Li4zYmQxN2RmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MjUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRoZSBoYW5kbGluZyBvZiB1cGRh
dGVzIHRvICNoYXNoIGZyYWdtZW50cyB0byBjaGVjayBmb3IgZGlmZmVyZW5jZXMKKyAgICAgICAg
cG9zdC1jYW5vbmljYWxpemF0aW9uIHJhdGhlciB0aGFuIGNvbXBhcmluZyBwcmUtIHRvIHBvc3Qt
LiBDaHJvbWl1bQorICAgICAgICBoYWQgYSBidWcgd2hlcmUgd2Ugd291bGQgc2V0IHRoZSAjaGFz
aCBvbiBhbiBhYm91dDpibGFuayBVUkwgYW5kIGdlbmVyYXRlCisgICAgICAgIGFuIG9ubG9hZCBl
dmVudCBiZWNhdXNlIHdlIHRob3VnaHQgdGhlIFVSTCAobm90IGp1c3QgdGhlIGZyYWdtZW50KSB3
YXMKKyAgICAgICAgY2hhbmdpbmcuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzUxODAKKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Fib3V0LWJsYW5r
LWhhc2gtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIv
YWJvdXQtYmxhbmstaGFzaC1jaGFuZ2UuaHRtbDogQWRkZWQuCisKIDIwMTAtMDItMjQgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1ibGFu
ay1oYXNoLWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91
dC1ibGFuay1oYXNoLWNoYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOGExYjRmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcg
QEAKK1RoaXMgdGVzdCB0ZXN0cyBwYXJzaW5nIG9mIGhhc2ggZnJhZ21lbnRzIGluIGFib3V0OmJs
YW5rIFVSTHMuIENocm9taXVtIGhhZCBhIGJ1ZyBhdCBvbmUgcG9pbnQgd2hlcmUgc2V0dGluZyB0
aGUgaGFzaCBmcmFnbWVudCB3b3VsZCBjYXVzZSBhIGxvYWQgZXZlbnQgYW5kIGluIHNvbWUgY2Fz
ZXMgYW4gaW5maW5pdGUgbG9vcC4KKworU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTE4MC4KKworSWYgdGhlIHRleHQgc2F5cyAiUEFTUyIgdGhlbiB0aGUgb25s
b2FkKCkgZXZlbnQgb25seSBmaXJlZCBvbmNlLiBJZiBpdCBzYXlzICJGQUlMIiB0aGVuIGl0IGZp
cmVkIHR3byBvciBtb3JlIHRpbWVzLiBBbHNvLCB0aGUgdGVzdCBtYXkgdGltZSBvdXQgbG9vcGlu
ZyBvbiB0aGlzIGV2ZW50IGhhbmRsZXIgKHdoaWNoIGlzIGFsc28gYSBmYWlsdXJlKS4gSWYgdGhl
IHRleHQgc2F5cyAiTm8gY2FsbGJhY2siIHRoZW4gc29tZXRoaW5nIGVsc2UgaXMgYnJva2VuIDop
CisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5r
LWhhc2gtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1ibGFuay1o
YXNoLWNoYW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjQ2
ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1ibGFu
ay1oYXNoLWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxwPlRoaXMgdGVzdCB0ZXN0cyBw
YXJzaW5nIG9mIGhhc2ggZnJhZ21lbnRzIGluIGFib3V0OmJsYW5rIFVSTHMuIENocm9taXVtIGhh
ZAorYSBidWcgYXQgb25lIHBvaW50IHdoZXJlIHNldHRpbmcgdGhlIGhhc2ggZnJhZ21lbnQgd291
bGQgY2F1c2UgYSBsb2FkIGV2ZW50CithbmQgaW4gc29tZSBjYXNlcyBhbiBpbmZpbml0ZSBsb29w
LjwvcD4KKworPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTE4MCI+CitodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzUxODA8L2E+LjwvcD4KKworPHA+SWYgdGhlIHRleHQgc2F5cyAiUEFTUyIgdGhlbiB0aGUgb25s
b2FkKCkgZXZlbnQgb25seSBmaXJlZCBvbmNlLiBJZiBpdAorc2F5cyAiRkFJTCIgdGhlbiBpdCBm
aXJlZCB0d28gb3IgbW9yZSB0aW1lcy4gQWxzbywgdGhlIHRlc3QgbWF5IHRpbWUgb3V0Citsb29w
aW5nIG9uIHRoaXMgZXZlbnQgaGFuZGxlciAod2hpY2ggaXMgYWxzbyBhIGZhaWx1cmUpLiBJZiB0
aGUgdGV4dCBzYXlzICJObyBjYWxsYmFjayIgdGhlbiBzb21ldGhpbmcgZWxzZSBpcyBicm9rZW4g
Oik8L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIG9ubG9hZF9j
YWxsYmFjaygpIHsKKyAgdmFyIG9sZF9oYXNoID0gaW5uZXIubG9jYXRpb24uaGFzaDsKKyAgaW5u
ZXIubG9jYXRpb24uaGFzaCA9ICJoYXNoLXJlZiI7CisgIHZhciBjID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgaWYgKGMuaW5uZXJIVE1MLm1hdGNoKC9eTm8gY2FsbGJh
Y2svKSkgeworICAgIGMuaW5uZXJIVE1MID0gIlBBU1MiOworICB9IGVsc2UgaWYgKGMuaW5uZXJI
VE1MLm1hdGNoKC9eUEFTUy8pKSB7CisgICAgYy5pbm5lckhUTUwgPSAiRkFJTCI7CisgIH0KK30K
Kzwvc2NyaXB0PgorPGRpdiBpZD0iY29udGVudCI+Tm8gY2FsbGJhY2s8L2Rpdj4KKzxpZnJhbWUg
bmFtZT1pbm5lciBpZD1pbm5lciBzdHlsZT0iZGlzcGxheTogbm9uZSIgb25sb2FkPSJvbmxvYWRf
Y2FsbGJhY2soKSIKK3NyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NmE3ZWFmLi5kYTNkYjFi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEwLTAyLTI1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeCB0aGUgaGFuZGxpbmcgb2YgdXBkYXRlcyB0byAjaGFzaCBmcmFnbWVudHMgdG8gY2hlY2sg
Zm9yIGRpZmZlcmVuY2VzCisgICAgICAgIHBvc3QtY2Fub25pY2FsaXphdGlvbiByYXRoZXIgdGhh
biBjb21wYXJpbmcgcHJlLSB0byBwb3N0LS4gQ2hyb21pdW0KKyAgICAgICAgaGFkIGEgYnVnIHdo
ZXJlIHdlIHdvdWxkIHNldCB0aGUgI2hhc2ggb24gYW4gYWJvdXQ6YmxhbmsgVVJMIGFuZCBnZW5l
cmF0ZQorICAgICAgICBhbiBvbmxvYWQgZXZlbnQgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBVUkwg
KG5vdCBqdXN0IHRoZSBmcmFnbWVudCkgd2FzCisgICAgICAgIGNoYW5naW5nLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MTgwCisKKyAgICAgICAg
VGVzdDogZmFzdC9sb2FkZXIvYWJvdXQtYmxhbmstaGFzaC1jaGFuZ2UuaHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKToKKwogMjAxMC0wMi0yNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRp
b25DdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3Rv
bS5jcHAKaW5kZXggYjVkZjYwMS4uOGVhOGJmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTc1LDkgKzc1LDE0IEBAIHZvaWQgVjhM
b2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhCiAKICAgICBpZiAoaGFzaC5zdGFydHNXaXRoKCIjIikpCiAgICAgICAg
IGhhc2ggPSBoYXNoLnN1YnN0cmluZygxKTsKLSAgICBpZiAob2xkUmVmID09IGhhc2ggfHwgKG9s
ZFJlZi5pc051bGwoKSAmJiBoYXNoLmlzRW1wdHkoKSkpCi0gICAgICAgIHJldHVybjsKKworICAg
IC8vIE5vdGUgdGhhdCBieSBwYXJzaW5nIHRoZSBVUkwgYW5kICp0aGVuKiBjb21wYXJpbmcgZnJh
Z21lbnRzLCB3ZSBhcmUKKyAgICAvLyBjb21wYXJpbmcgZnJhZ21lbnRzIHBvc3QtY2Fub25pY2Fs
aXphdGlvbiwgYW5kIHNvIHRoaXMgaGFuZGxlcyB0aGUKKyAgICAvLyBjYXNlcyB3aGVyZSBmcmFn
bWVudCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZhbGlkLgogICAgIHVybC5zZXRGcmFn
bWVudElkZW50aWZpZXIoaGFzaCk7CisgICAgU3RyaW5nIG5ld1JlZiA9IHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKTsKKyAgICBpZiAob2xkUmVmID09IG5ld1JlZiB8fCAob2xkUmVmLmlzTnVsbCgp
ICYmIG5ld1JlZi5pc0VtcHR5KCkpKQorICAgICAgICByZXR1cm47CiAKICAgICBuYXZpZ2F0ZUlm
QWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49545</attachid>
            <date>2010-02-25 16:38:05 -0800</date>
            <delta_ts>2010-02-25 16:42:36 -0800</delta_ts>
            <desc>revised patch - fix js indentation in test file.</desc>
            <filename>wk35180_hash_update.diff</filename>
            <type>text/plain</type>
            <size>3160</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hh
bmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhh
c2gtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44YTFiNGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvYWJv
dXQtYmxhbmstaGFzaC1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0
ZXN0IHRlc3RzIHBhcnNpbmcgb2YgaGFzaCBmcmFnbWVudHMgaW4gYWJvdXQ6YmxhbmsgVVJMcy4g
Q2hyb21pdW0gaGFkIGEgYnVnIGF0IG9uZSBwb2ludCB3aGVyZSBzZXR0aW5nIHRoZSBoYXNoIGZy
YWdtZW50IHdvdWxkIGNhdXNlIGEgbG9hZCBldmVudCBhbmQgaW4gc29tZSBjYXNlcyBhbiBpbmZp
bml0ZSBsb29wLgorCitTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM1MTgwLgorCitJZiB0aGUgdGV4dCBzYXlzICJQQVNTIiB0aGVuIHRoZSBvbmxvYWQoKSBldmVu
dCBvbmx5IGZpcmVkIG9uY2UuIElmIGl0IHNheXMgIkZBSUwiIHRoZW4gaXQgZmlyZWQgdHdvIG9y
IG1vcmUgdGltZXMuIEFsc28sIHRoZSB0ZXN0IG1heSB0aW1lIG91dCBsb29waW5nIG9uIHRoaXMg
ZXZlbnQgaGFuZGxlciAod2hpY2ggaXMgYWxzbyBhIGZhaWx1cmUpLiBJZiB0aGUgdGV4dCBzYXlz
ICJObyBjYWxsYmFjayIgdGhlbiBzb21ldGhpbmcgZWxzZSBpcyBicm9rZW4gOikKKworUEFTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvYWJvdXQtYmxhbmstaGFzaC1jaGFu
Z2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmMmQ1NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hh
bmdlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPHA+VGhpcyB0ZXN0IHRlc3RzIHBhcnNpbmcgb2Yg
aGFzaCBmcmFnbWVudHMgaW4gYWJvdXQ6YmxhbmsgVVJMcy4gQ2hyb21pdW0gaGFkCithIGJ1ZyBh
dCBvbmUgcG9pbnQgd2hlcmUgc2V0dGluZyB0aGUgaGFzaCBmcmFnbWVudCB3b3VsZCBjYXVzZSBh
IGxvYWQgZXZlbnQKK2FuZCBpbiBzb21lIGNhc2VzIGFuIGluZmluaXRlIGxvb3AuPC9wPgorCis8
cD5TZWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1
MTgwIj4KK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTE4MDwvYT4u
PC9wPgorCis8cD5JZiB0aGUgdGV4dCBzYXlzICJQQVNTIiB0aGVuIHRoZSBvbmxvYWQoKSBldmVu
dCBvbmx5IGZpcmVkIG9uY2UuIElmIGl0CitzYXlzICJGQUlMIiB0aGVuIGl0IGZpcmVkIHR3byBv
ciBtb3JlIHRpbWVzLiBBbHNvLCB0aGUgdGVzdCBtYXkgdGltZSBvdXQKK2xvb3Bpbmcgb24gdGhp
cyBldmVudCBoYW5kbGVyICh3aGljaCBpcyBhbHNvIGEgZmFpbHVyZSkuIElmIHRoZSB0ZXh0IHNh
eXMgIk5vIGNhbGxiYWNrIiB0aGVuIHNvbWV0aGluZyBlbHNlIGlzIGJyb2tlbiA6KTwvcD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBvbmxvYWRfY2FsbGJhY2so
KSB7CisgICAgdmFyIG9sZF9oYXNoID0gaW5uZXIubG9jYXRpb24uaGFzaDsKKyAgICBpbm5lci5s
b2NhdGlvbi5oYXNoID0gImhhc2gtcmVmIjsKKyAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb250ZW50Iik7CisgICAgaWYgKGMuaW5uZXJIVE1MLm1hdGNoKC9eTm8gY2FsbGJh
Y2svKSkgeworICAgICAgICBjLmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICB9IGVsc2UgaWYgKGMu
aW5uZXJIVE1MLm1hdGNoKC9eUEFTUy8pKSB7CisgICAgICAgIGMuaW5uZXJIVE1MID0gIkZBSUwi
OworICAgIH0KK30KKzwvc2NyaXB0PgorPGRpdiBpZD0iY29udGVudCI+Tm8gY2FsbGJhY2s8L2Rp
dj4KKzxpZnJhbWUgbmFtZT1pbm5lciBpZD1pbm5lciBzdHlsZT0iZGlzcGxheTogbm9uZSIgb25s
b2FkPSJvbmxvYWRfY2FsbGJhY2soKSIKK3NyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBi
NWRmNjAxLi44ZWE4YmZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcApAQCAtNzUsOSArNzUsMTQgQEAgdm9pZCBWOExvY2F0aW9uOjpoYXNo
QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmEKIAogICAgIGlmIChoYXNoLnN0YXJ0c1dpdGgoIiMiKSkKICAgICAgICAgaGFzaCA9IGhhc2gu
c3Vic3RyaW5nKDEpOwotICAgIGlmIChvbGRSZWYgPT0gaGFzaCB8fCAob2xkUmVmLmlzTnVsbCgp
ICYmIGhhc2guaXNFbXB0eSgpKSkKLSAgICAgICAgcmV0dXJuOworCisgICAgLy8gTm90ZSB0aGF0
IGJ5IHBhcnNpbmcgdGhlIFVSTCBhbmQgKnRoZW4qIGNvbXBhcmluZyBmcmFnbWVudHMsIHdlIGFy
ZQorICAgIC8vIGNvbXBhcmluZyBmcmFnbWVudHMgcG9zdC1jYW5vbmljYWxpemF0aW9uLCBhbmQg
c28gdGhpcyBoYW5kbGVzIHRoZQorICAgIC8vIGNhc2VzIHdoZXJlIGZyYWdtZW50IGlkZW50aWZp
ZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuCiAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmll
cihoYXNoKTsKKyAgICBTdHJpbmcgbmV3UmVmID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgIGlmIChvbGRSZWYgPT0gbmV3UmVmIHx8IChvbGRSZWYuaXNOdWxsKCkgJiYgbmV3UmVmLmlz
RW1wdHkoKSkpCisgICAgICAgIHJldHVybjsKIAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1l
LCB1cmwsIGZhbHNlLCBmYWxzZSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49546</attachid>
            <date>2010-02-25 16:42:36 -0800</date>
            <delta_ts>2010-02-26 08:36:38 -0800</delta_ts>
            <desc>whoops - lost the changelogs; reattaching</desc>
            <filename>wk35180_hash_update.diff</filename>
            <type>text/plain</type>
            <size>4915</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYTU1YWVlLi5mMWY1Yjg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MjUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRoZSBoYW5kbGluZyBvZiB1cGRh
dGVzIHRvICNoYXNoIGZyYWdtZW50cyB0byBjaGVjayBmb3IgZGlmZmVyZW5jZXMKKyAgICAgICAg
cG9zdC1jYW5vbmljYWxpemF0aW9uIHJhdGhlciB0aGFuIGNvbXBhcmluZyBwcmUtIHRvIHBvc3Qt
LiBDaHJvbWl1bQorICAgICAgICBoYWQgYSBidWcgd2hlcmUgd2Ugd291bGQgc2V0IHRoZSAjaGFz
aCBvbiBhbiBhYm91dDpibGFuayBVUkwgYW5kIGdlbmVyYXRlCisgICAgICAgIGFuIG9ubG9hZCBl
dmVudCBiZWNhdXNlIHdlIHRob3VnaHQgdGhlIFVSTCAobm90IGp1c3QgdGhlIGZyYWdtZW50KSB3
YXMKKyAgICAgICAgY2hhbmdpbmcuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzUxODAKKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Fib3V0LWJsYW5r
LWhhc2gtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIv
YWJvdXQtYmxhbmstaGFzaC1jaGFuZ2UuaHRtbDogQWRkZWQuCisKIDIwMTAtMDItMjUgIERpcmsg
U2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFz
IFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1i
bGFuay1oYXNoLWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9h
Ym91dC1ibGFuay1oYXNoLWNoYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOGExYjRmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDcgQEAKK1RoaXMgdGVzdCB0ZXN0cyBwYXJzaW5nIG9mIGhhc2ggZnJhZ21lbnRzIGluIGFib3V0
OmJsYW5rIFVSTHMuIENocm9taXVtIGhhZCBhIGJ1ZyBhdCBvbmUgcG9pbnQgd2hlcmUgc2V0dGlu
ZyB0aGUgaGFzaCBmcmFnbWVudCB3b3VsZCBjYXVzZSBhIGxvYWQgZXZlbnQgYW5kIGluIHNvbWUg
Y2FzZXMgYW4gaW5maW5pdGUgbG9vcC4KKworU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTE4MC4KKworSWYgdGhlIHRleHQgc2F5cyAiUEFTUyIgdGhlbiB0aGUg
b25sb2FkKCkgZXZlbnQgb25seSBmaXJlZCBvbmNlLiBJZiBpdCBzYXlzICJGQUlMIiB0aGVuIGl0
IGZpcmVkIHR3byBvciBtb3JlIHRpbWVzLiBBbHNvLCB0aGUgdGVzdCBtYXkgdGltZSBvdXQgbG9v
cGluZyBvbiB0aGlzIGV2ZW50IGhhbmRsZXIgKHdoaWNoIGlzIGFsc28gYSBmYWlsdXJlKS4gSWYg
dGhlIHRleHQgc2F5cyAiTm8gY2FsbGJhY2siIHRoZW4gc29tZXRoaW5nIGVsc2UgaXMgYnJva2Vu
IDopCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJs
YW5rLWhhc2gtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1ibGFu
ay1oYXNoLWNoYW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3
ZjJkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1i
bGFuay1oYXNoLWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxwPlRoaXMgdGVzdCB0ZXN0
cyBwYXJzaW5nIG9mIGhhc2ggZnJhZ21lbnRzIGluIGFib3V0OmJsYW5rIFVSTHMuIENocm9taXVt
IGhhZAorYSBidWcgYXQgb25lIHBvaW50IHdoZXJlIHNldHRpbmcgdGhlIGhhc2ggZnJhZ21lbnQg
d291bGQgY2F1c2UgYSBsb2FkIGV2ZW50CithbmQgaW4gc29tZSBjYXNlcyBhbiBpbmZpbml0ZSBs
b29wLjwvcD4KKworPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTE4MCI+CitodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzUxODA8L2E+LjwvcD4KKworPHA+SWYgdGhlIHRleHQgc2F5cyAiUEFTUyIgdGhlbiB0aGUg
b25sb2FkKCkgZXZlbnQgb25seSBmaXJlZCBvbmNlLiBJZiBpdAorc2F5cyAiRkFJTCIgdGhlbiBp
dCBmaXJlZCB0d28gb3IgbW9yZSB0aW1lcy4gQWxzbywgdGhlIHRlc3QgbWF5IHRpbWUgb3V0Cits
b29waW5nIG9uIHRoaXMgZXZlbnQgaGFuZGxlciAod2hpY2ggaXMgYWxzbyBhIGZhaWx1cmUpLiBJ
ZiB0aGUgdGV4dCBzYXlzICJObyBjYWxsYmFjayIgdGhlbiBzb21ldGhpbmcgZWxzZSBpcyBicm9r
ZW4gOik8L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gb25s
b2FkX2NhbGxiYWNrKCkgeworICAgIHZhciBvbGRfaGFzaCA9IGlubmVyLmxvY2F0aW9uLmhhc2g7
CisgICAgaW5uZXIubG9jYXRpb24uaGFzaCA9ICJoYXNoLXJlZiI7CisgICAgdmFyIGMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgIGlmIChjLmlubmVySFRNTC5tYXRj
aCgvXk5vIGNhbGxiYWNrLykpIHsKKyAgICAgICAgYy5pbm5lckhUTUwgPSAiUEFTUyI7CisgICAg
fSBlbHNlIGlmIChjLmlubmVySFRNTC5tYXRjaCgvXlBBU1MvKSkgeworICAgICAgICBjLmlubmVy
SFRNTCA9ICJGQUlMIjsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9ImNvbnRlbnQiPk5v
IGNhbGxiYWNrPC9kaXY+Cis8aWZyYW1lIG5hbWU9aW5uZXIgaWQ9aW5uZXIgc3R5bGU9ImRpc3Bs
YXk6IG5vbmUiIG9ubG9hZD0ib25sb2FkX2NhbGxiYWNrKCkiCitzcmM9ImFib3V0OmJsYW5rIj48
L2lmcmFtZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWYyYmIyOS4uZmI5OTliNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMi0yNSAgRGly
ayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGhhbmRsaW5nIG9mIHVwZGF0ZXMgdG8g
I2hhc2ggZnJhZ21lbnRzIHRvIGNoZWNrIGZvciBkaWZmZXJlbmNlcworICAgICAgICBwb3N0LWNh
bm9uaWNhbGl6YXRpb24gcmF0aGVyIHRoYW4gY29tcGFyaW5nIHByZS0gdG8gcG9zdC0uIENocm9t
aXVtCisgICAgICAgIGhhZCBhIGJ1ZyB3aGVyZSB3ZSB3b3VsZCBzZXQgdGhlICNoYXNoIG9uIGFu
IGFib3V0OmJsYW5rIFVSTCBhbmQgZ2VuZXJhdGUKKyAgICAgICAgYW4gb25sb2FkIGV2ZW50IGJl
Y2F1c2Ugd2UgdGhvdWdodCB0aGUgVVJMIChub3QganVzdCB0aGUgZnJhZ21lbnQpIHdhcworICAg
ICAgICBjaGFuZ2luZy4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTE4MAorCisgICAgICAgIFRlc3Q6IGZhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhh
c2gtY2hhbmdlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246Omhhc2hBY2Nlc3NvclNl
dHRlcik6CisKIDIwMTAtMDItMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBiNWRmNjAxLi44ZWE4
YmZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcApAQCAtNzUsOSArNzUsMTQgQEAgdm9pZCBWOExvY2F0aW9uOjpoYXNoQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmEKIAogICAgIGlm
IChoYXNoLnN0YXJ0c1dpdGgoIiMiKSkKICAgICAgICAgaGFzaCA9IGhhc2guc3Vic3RyaW5nKDEp
OwotICAgIGlmIChvbGRSZWYgPT0gaGFzaCB8fCAob2xkUmVmLmlzTnVsbCgpICYmIGhhc2guaXNF
bXB0eSgpKSkKLSAgICAgICAgcmV0dXJuOworCisgICAgLy8gTm90ZSB0aGF0IGJ5IHBhcnNpbmcg
dGhlIFVSTCBhbmQgKnRoZW4qIGNvbXBhcmluZyBmcmFnbWVudHMsIHdlIGFyZQorICAgIC8vIGNv
bXBhcmluZyBmcmFnbWVudHMgcG9zdC1jYW5vbmljYWxpemF0aW9uLCBhbmQgc28gdGhpcyBoYW5k
bGVzIHRoZQorICAgIC8vIGNhc2VzIHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25v
cmVkIG9yIGludmFsaWQuCiAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmllcihoYXNoKTsKKyAg
ICBTdHJpbmcgbmV3UmVmID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGlmIChvbGRS
ZWYgPT0gbmV3UmVmIHx8IChvbGRSZWYuaXNOdWxsKCkgJiYgbmV3UmVmLmlzRW1wdHkoKSkpCisg
ICAgICAgIHJldHVybjsKIAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNl
LCBmYWxzZSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>