<?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>41055</bug_id>
          
          <creation_ts>2010-06-23 02:46:12 -0700</creation_ts>
          <short_desc>Simplify hash lookups at RegExp caching</short_desc>
          <delta_ts>2010-07-02 14:34:55 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>41205</dependson>
    
    <dependson>41240</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Renata Hodovan">rhodovan.u-szeged</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241776</commentid>
    <comment_count>0</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2010-06-23 02:46:12 -0700</bug_when>
    <thetext>1) With giving to RegExpCache::create an extra iterator parameter we can simplify some hash lookups.
2) We can collapse the two version of RegExp::create into one, in which we check whether flags are given or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241777</commentid>
    <comment_count>1</comment_count>
      <attachid>59496</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2010-06-23 02:52:02 -0700</bug_when>
    <thetext>Created attachment 59496
Simplify hash lookups in RegExp caching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242380</commentid>
    <comment_count>2</comment_count>
      <attachid>59496</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-06-24 01:55:35 -0700</bug_when>
    <thetext>Comment on attachment 59496
Simplify hash lookups in RegExp caching

&gt; +PassRefPtr&lt;RegExp&gt; RegExpCache::create(const UString&amp; patternString, const UString&amp; flags, HashMap&lt;RegExpKey, RefPtr&lt;RegExp&gt; &gt;::iterator iterator) 

The RegExpCacheMap::iterator will look better.

&gt; -PassRefPtr&lt;RegExp&gt; RegExp::create(JSGlobalData* globalData, const UString&amp; pattern)
&gt; -{
&gt; -    return adoptRef(new RegExp(globalData, pattern));
&gt; -}
&gt; -
&gt;  PassRefPtr&lt;RegExp&gt; RegExp::create(JSGlobalData* globalData, const UString&amp; pattern, const UString&amp; flags)
&gt;  {
&gt; +    if (flags.isNull())
&gt; +        return adoptRef(new RegExp(globalData, pattern));
&gt;      return adoptRef(new RegExp(globalData, pattern, flags));
&gt;  }

If you propose this merge, what is the reason not to merge the RegExp constructors and create functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242529</commentid>
    <comment_count>3</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2010-06-24 08:44:32 -0700</bug_when>
    <thetext>&gt; The RegExpCacheMap::iterator will look better.
You&apos;re right. This way is really better.

&gt; &gt; -PassRefPtr&lt;RegExp&gt; RegExp::create(JSGlobalData* globalData, const UString&amp; pattern)
&gt; &gt; -{
&gt; &gt; -    return adoptRef(new RegExp(globalData, pattern));
&gt; &gt; -}
&gt; &gt; -
&gt; &gt;  PassRefPtr&lt;RegExp&gt; RegExp::create(JSGlobalData* globalData, const UString&amp; pattern, const UString&amp; flags)
&gt; &gt;  {
&gt; &gt; +    if (flags.isNull())
&gt; &gt; +        return adoptRef(new RegExp(globalData, pattern));
&gt; &gt;      return adoptRef(new RegExp(globalData, pattern, flags));
&gt; &gt;  }
&gt; 
&gt; If you propose this merge, what is the reason not to merge the RegExp constructors and create functions?

I agree that we should merge RegExp constructors. But I think it&apos;s more prefered to call the public RegExp constructor from the public create function. I have seen examples for this, but maybe I&apos;m wrong. Any comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242530</commentid>
    <comment_count>4</comment_count>
      <attachid>59657</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2010-06-24 08:45:12 -0700</bug_when>
    <thetext>Created attachment 59657
Simplify hash lookups in RegExp caching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242613</commentid>
    <comment_count>5</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2010-06-24 11:59:00 -0700</bug_when>
    <thetext>
&gt; ... to call the public RegExp constructor from the public create function. 
... to call the *private* RegExp constructor from the public create function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242660</commentid>
    <comment_count>6</comment_count>
      <attachid>59657</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-24 14:12:27 -0700</bug_when>
    <thetext>Comment on attachment 59657
Simplify hash lookups in RegExp caching

r=me

Nice cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242870</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 00:22:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61833 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242926</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-06-25 03:21:31 -0700</bug_when>
    <thetext>Reopen because it was rolled out by http://trac.webkit.org/changeset/61845</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243279</commentid>
    <comment_count>9</comment_count>
      <attachid>59657</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 17:42:03 -0700</bug_when>
    <thetext>Comment on attachment 59657
Simplify hash lookups in RegExp caching

Clearing flags on attachment: 59657

Committed r61924: &lt;http://trac.webkit.org/changeset/61924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243280</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 17:42:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243287</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-06-25 17:49:25 -0700</bug_when>
    <thetext>Rolled out and reopened again. Sorry, I missed 
to remove cq+ after the previous roll-out. :(

Zoltan, if you would like to land cq+ -ed patch manually, 
next time please set cq- before it, and add comment to
the bug with the revision number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243293</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-25 18:03:19 -0700</bug_when>
    <thetext>Or you can use &quot;webkit-patch land&quot; which will take care of all that for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243803</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-28 11:59:35 -0700</bug_when>
    <thetext>The reason this patch was crashing:

In the case where the cache is full, it reuses the insertion iterator after evicting an item. You can&apos;t modify the table while maintaining an iterator into the table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243811</commentid>
    <comment_count>14</comment_count>
      <attachid>59920</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-28 12:15:44 -0700</bug_when>
    <thetext>Created attachment 59920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243813</commentid>
    <comment_count>15</comment_count>
      <attachid>59921</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-28 12:18:13 -0700</bug_when>
    <thetext>Created attachment 59921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246036</commentid>
    <comment_count>16</comment_count>
      <attachid>59921</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-02 12:40:53 -0700</bug_when>
    <thetext>Comment on attachment 59921
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246095</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-07-02 14:34:55 -0700</bug_when>
    <thetext>Committed revision 62405.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59496</attachid>
            <date>2010-06-23 02:52:02 -0700</date>
            <delta_ts>2010-06-24 08:45:12 -0700</delta_ts>
            <desc>Simplify hash lookups in RegExp caching</desc>
            <filename>cache_jav.patch</filename>
            <type>text/plain</type>
            <size>3911</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCShyZXZpc2lvbiA2MTY3
MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNywxOSArMzcsMTYgQEAKICAgICAgICAgcGFpcjxIYXNoTWFwPFJlZ0V4cEtleSwg
UmVmUHRyPFJlZ0V4cD4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fY2FjaGVNYXAuYWRk
KFJlZ0V4cEtleShmbGFncywgcGF0dGVyblN0cmluZyksIDApOwogICAgICAgICBpZiAoIXJlc3Vs
dC5zZWNvbmQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGUocGF0dGVyblN0cmluZywgZmxhZ3Ms
IHJlc3VsdC5maXJzdCk7CiAgICAgfQotICAgIHJldHVybiBjcmVhdGUocGF0dGVyblN0cmluZywg
ZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGUocGF0dGVyblN0cmluZywgZmxhZ3MsIG1fY2FjaGVN
YXAuZW5kKCkpOwogfQogCi1QYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwQ2FjaGU6OmNyZWF0ZShj
b25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncykgCitQYXNz
UmVmUHRyPFJlZ0V4cD4gUmVnRXhwQ2FjaGU6OmNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
U3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncywgSGFzaE1hcDxSZWdFeHBLZXksIFJlZlB0cjxS
ZWdFeHA+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yKSAKIHsKLSAgICBSZWZQdHI8UmVnRXhwPiByZWdF
eHA7CisgICAgUmVmUHRyPFJlZ0V4cD4gcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUobV9nbG9iYWxE
YXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CiAKLSAgICBpZiAoIWZsYWdzLmlzTnVsbCgpKQot
ICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZShtX2dsb2JhbERhdGEsIHBhdHRlcm5TdHJp
bmcsIGZsYWdzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKG1f
Z2xvYmFsRGF0YSwgcGF0dGVyblN0cmluZyk7Ci0KICAgICBpZiAocGF0dGVyblN0cmluZy5zaXpl
KCkgPj0gbWF4Q2FjaGVhYmxlUGF0dGVybkxlbmd0aCkKICAgICAgICAgcmV0dXJuIHJlZ0V4cDsK
IApAQCAtNjIsNyArNTksOCBAQAogICAgICAgICBtX2NhY2hlTWFwLnJlbW92ZShSZWdFeHBLZXko
cGF0dGVybktleUFycmF5W21fbmV4dEtleVRvRXZpY3RdLmZsYWdzVmFsdWUsIHBhdHRlcm5LZXlB
cnJheVttX25leHRLZXlUb0V2aWN0XS5wYXR0ZXJuKSk7CiAKICAgICBSZWdFeHBLZXkga2V5ID0g
UmVnRXhwS2V5KGZsYWdzLCBwYXR0ZXJuU3RyaW5nKTsKLSAgICBtX2NhY2hlTWFwLnNldChrZXks
IHJlZ0V4cCk7CisgICAgaXRlcmF0b3ItPmZpcnN0ID0ga2V5OworICAgIGl0ZXJhdG9yLT5zZWNv
bmQgPSByZWdFeHA7CiAgICAgcGF0dGVybktleUFycmF5W21fbmV4dEtleVRvRXZpY3RdLmZsYWdz
VmFsdWUgPSBrZXkuZmxhZ3NWYWx1ZTsKICAgICBwYXR0ZXJuS2V5QXJyYXlbbV9uZXh0S2V5VG9F
dmljdF0ucGF0dGVybiA9IHBhdHRlcm5TdHJpbmcucmVwKCk7CiAgICAgcmV0dXJuIHJlZ0V4cDsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDYxNjcxKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBACiBjbGFzcyBSZWdFeHBDYWNoZSB7CiBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxSZWdFeHA+IGxvb2t1cE9yQ3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcs
IGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsKLSAgICBQYXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRlKGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsKKyAgICBQ
YXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIGNv
bnN0IFVTdHJpbmcmIGZsYWdzLCBIYXNoTWFwPFJlZ0V4cEtleSwgUmVmUHRyPFJlZ0V4cD4gPjo6
aXRlcmF0b3IgaXRlcmF0b3IpOwogICAgIFJlZ0V4cENhY2hlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSk7CiAKIHByaXZhdGU6CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZp
c2lvbiA2MTY3MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMTMgKzgwLDEwIEBACiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxSZWdF
eHA+IFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmlu
ZyYgcGF0dGVybikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZ0V4cChnbG9iYWxEYXRh
LCBwYXR0ZXJuKSk7Ci19Ci0KIFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJp
bmcmIGZsYWdzKQogeworICAgIGlmIChmbGFncy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVybikpOwogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVnRXhwKGdsb2JhbERhdGEsIHBhdHRlcm4sIGZsYWdzKSk7CiB9CiAKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYxNjc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMjMgIFJlbmF0YSBIb2RvdmFu
ICA8cmVuaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgR2l2ZSBhbiBleHRyYSBpdGVyYXRvciBwYXJhbWV0ZXIgdG8gUmVn
RXhwQ2FjaGU6OmNyZWF0ZSB0byBzYXZlIGhhc2ggbG9va3Vwcy4KKyAgICAgICAgQ29sbGFwc2Ug
dGhlIHR3byB2ZXJzaW9uIG9mIFJlZ0V4cDo6Y3JlYXRlIGludG8gb25lLCBpbiB3aGljaCB3ZSBj
aGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggdHdvIG9yIHRocmVlIHBh
cmFtZXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxMDU1CisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJl
Z0V4cDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcDoKKyAgICAg
ICAgKEpTQzo6UmVnRXhwQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwQ2FjaGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZS5oOgorCiAy
MDEwLTA2LTIyICBSZW5hdGEgSG9kb3ZhbiAgPGhvZG92YW5AaW5mLnUtc3plZ2VkLmh1PgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59657</attachid>
            <date>2010-06-24 08:45:12 -0700</date>
            <delta_ts>2010-06-28 12:15:41 -0700</delta_ts>
            <desc>Simplify hash lookups in RegExp caching</desc>
            <filename>cache_jav.patch</filename>
            <type>text/plain</type>
            <size>6220</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gNjE3NjEpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBA
CiAKICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWdFeHA+IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybik7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgcGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpOwogI2lmICFFTkFCTEUo
WUFSUikKICAgICAgICAgflJlZ0V4cCgpOwpAQCAtNTYsNyArNTUsNiBAQAogICAgICAgICB1bnNp
Z25lZCBudW1TdWJwYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtU3VicGF0dGVybnM7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4pOwogICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7
CiAKICAgICAgICAgdm9pZCBjb21waWxlKEpTR2xvYmFsRGF0YSopOwpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAJKHJldmlzaW9uIDYxNzYxKQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE5ICsz
NywxNiBAQAogICAgICAgICBwYWlyPEhhc2hNYXA8UmVnRXhwS2V5LCBSZWZQdHI8UmVnRXhwPiA+
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9jYWNoZU1hcC5hZGQoUmVnRXhwS2V5KGZsYWdz
LCBwYXR0ZXJuU3RyaW5nKSwgMCk7CiAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZShwYXR0ZXJuU3RyaW5nLCBmbGFncywgcmVzdWx0LmZpcnN0KTsK
ICAgICB9Ci0gICAgcmV0dXJuIGNyZWF0ZShwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CisgICAgcmV0
dXJuIGNyZWF0ZShwYXR0ZXJuU3RyaW5nLCBmbGFncywgbV9jYWNoZU1hcC5lbmQoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHBDYWNoZTo6Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm5TdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdzKSAKK1Bhc3NSZWZQdHI8UmVnRXhwPiBS
ZWdFeHBDYWNoZTo6Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIGNvbnN0IFVT
dHJpbmcmIGZsYWdzLCBSZWdFeHBDYWNoZU1hcDo6aXRlcmF0b3IgaXRlcmF0b3IpIAogewotICAg
IFJlZlB0cjxSZWdFeHA+IHJlZ0V4cDsKKyAgICBSZWZQdHI8UmVnRXhwPiByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZShtX2dsb2JhbERhdGEsIHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKIAotICAgIGlm
ICghZmxhZ3MuaXNOdWxsKCkpCi0gICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKG1fZ2xv
YmFsRGF0YSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwotICAgIGVsc2UKLSAgICAgICAgcmVnRXhw
ID0gUmVnRXhwOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBwYXR0ZXJuU3RyaW5nKTsKLQogICAgIGlm
IChwYXR0ZXJuU3RyaW5nLnNpemUoKSA+PSBtYXhDYWNoZWFibGVQYXR0ZXJuTGVuZ3RoKQogICAg
ICAgICByZXR1cm4gcmVnRXhwOwogCkBAIC02Miw3ICs1OSw4IEBACiAgICAgICAgIG1fY2FjaGVN
YXAucmVtb3ZlKFJlZ0V4cEtleShwYXR0ZXJuS2V5QXJyYXlbbV9uZXh0S2V5VG9FdmljdF0uZmxh
Z3NWYWx1ZSwgcGF0dGVybktleUFycmF5W21fbmV4dEtleVRvRXZpY3RdLnBhdHRlcm4pKTsKIAog
ICAgIFJlZ0V4cEtleSBrZXkgPSBSZWdFeHBLZXkoZmxhZ3MsIHBhdHRlcm5TdHJpbmcpOwotICAg
IG1fY2FjaGVNYXAuc2V0KGtleSwgcmVnRXhwKTsKKyAgICBpdGVyYXRvci0+Zmlyc3QgPSBrZXk7
CisgICAgaXRlcmF0b3ItPnNlY29uZCA9IHJlZ0V4cDsKICAgICBwYXR0ZXJuS2V5QXJyYXlbbV9u
ZXh0S2V5VG9FdmljdF0uZmxhZ3NWYWx1ZSA9IGtleS5mbGFnc1ZhbHVlOwogICAgIHBhdHRlcm5L
ZXlBcnJheVttX25leHRLZXlUb0V2aWN0XS5wYXR0ZXJuID0gcGF0dGVyblN0cmluZy5yZXAoKTsK
ICAgICByZXR1cm4gcmVnRXhwOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUu
aAkocmV2aXNpb24gNjE3NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwxOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIFJlZ0V4cENhY2hlIHsKKwordHlwZWRlZiBIYXNoTWFwPFJlZ0V4cEtleSwgUmVmUHRy
PFJlZ0V4cD4gPiBSZWdFeHBDYWNoZU1hcDsKKwogcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmVn
RXhwPiBsb29rdXBPckNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBV
U3RyaW5nJiBmbGFncyk7Ci0gICAgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7CisgICAgUGFzc1JlZlB0
cjxSZWdFeHA+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3Ry
aW5nJiBmbGFncywgUmVnRXhwQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yKTsKICAgICBSZWdF
eHBDYWNoZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpOwogCiBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZWFibGVQYXR0ZXJuTGVuZ3RoID0gMjU2OwogICAgIHN0
YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVhYmxlRW50cmllcyA9IDI1NjsKIAotICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWdFeHBLZXksIFJlZlB0cjxSZWdFeHA+ID4gUmVnRXhwQ2FjaGVNYXA7CiAgICAg
UmVnRXhwS2V5IHBhdHRlcm5LZXlBcnJheVttYXhDYWNoZWFibGVFbnRyaWVzXTsKICAgICBSZWdF
eHBDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gNjE3NjEpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0
Niw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgUmVnRXhwOjpSZWdFeHAoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKQotICAgIDogbV9wYXR0
ZXJuKHBhdHRlcm4pCi0gICAgLCBtX2ZsYWdCaXRzKDApCi0gICAgLCBtX2NvbnN0cnVjdGlvbkVy
cm9yKDApCi0gICAgLCBtX251bVN1YnBhdHRlcm5zKDApCi17Ci0gICAgY29tcGlsZShnbG9iYWxE
YXRhKTsKLX0KLQogaW5saW5lIFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpCiAgICAgOiBt
X3BhdHRlcm4ocGF0dGVybikKICAgICAsIG1fZmxhZ0JpdHMoMCkKQEAgLTYzLDEzICs1NCwxNCBA
QAogewogICAgIC8vIE5PVEU6IFRoZSBnbG9iYWwgZmxhZyBpcyBoYW5kbGVkIG9uIGEgY2FzZS1i
eS1jYXNlIGJhc2lzIGJ5IGZ1bmN0aW9ucyBsaWtlCiAgICAgLy8gU3RyaW5nOjptYXRjaCBhbmQg
UmVnRXhwT2JqZWN0OjptYXRjaC4KLSAgICBpZiAoZmxhZ3MuZmluZCgnZycpICE9IFVTdHJpbmc6
Ok5vdEZvdW5kKQotICAgICAgICBtX2ZsYWdCaXRzIHw9IEdsb2JhbDsKLSAgICBpZiAoZmxhZ3Mu
ZmluZCgnaScpICE9IFVTdHJpbmc6Ok5vdEZvdW5kKQotICAgICAgICBtX2ZsYWdCaXRzIHw9IEln
bm9yZUNhc2U7Ci0gICAgaWYgKGZsYWdzLmZpbmQoJ20nKSAhPSBVU3RyaW5nOjpOb3RGb3VuZCkK
LSAgICAgICAgbV9mbGFnQml0cyB8PSBNdWx0aWxpbmU7Ci0KKyAgICBpZiAoIWZsYWdzLmlzTnVs
bCgpKSB7CisgICAgICAgIGlmIChmbGFncy5maW5kKCdnJykgIT0gVVN0cmluZzo6Tm90Rm91bmQp
CisgICAgICAgICAgICBtX2ZsYWdCaXRzIHw9IEdsb2JhbDsKKyAgICAgICAgaWYgKGZsYWdzLmZp
bmQoJ2knKSAhPSBVU3RyaW5nOjpOb3RGb3VuZCkKKyAgICAgICAgICAgIG1fZmxhZ0JpdHMgfD0g
SWdub3JlQ2FzZTsKKyAgICAgICAgaWYgKGZsYWdzLmZpbmQoJ20nKSAhPSBVU3RyaW5nOjpOb3RG
b3VuZCkKKyAgICAgICAgICAgIG1fZmxhZ0JpdHMgfD0gTXVsdGlsaW5lOworICAgIH0KICAgICBj
b21waWxlKGdsb2JhbERhdGEpOwogfQogCkBAIC04MCwxMSArNzIsNiBAQAogfQogI2VuZGlmCiAK
LVBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVybikpOwotfQotCiBQYXNzUmVmUHRyPFJlZ0V4cD4gUmVn
RXhwOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0
ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJl
Z0V4cChnbG9iYWxEYXRhLCBwYXR0ZXJuLCBmbGFncykpOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gNjE3NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMiBAQAorMjAxMC0wNi0yNCAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQGluZi51LXN6
ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNZXJnZSBSZWdFeHAgY29uc3RydWN0b3IgYW5kIFJlZ0V4cDo6Y3JlYXRlIG1ldGhvZHMgaW50
byBvbmUuCisgICAgICAgIEJvdGggb2YgZnVuY3Rpb24gYXJlIGNhbGxlZCB3aXRoIHRyZWUgcGFy
YW1ldGVycyBhbmQgY2hlY2sgd2hldGhlciAKKyAgICAgICAgZmxhZ3MgKHRoZSB0aGlyZCBwYXJh
bSkgaXMgZ2l2ZW4gb3Igbm90LgorICAgICAgICBTaW1wbGlmeSBoYXNoIGxvb2t1cHMgaW4gUmVn
RXhwQ2FjaGU6OmNyZWF0ZSB3aXRoIGdpdmluZyB0aGVtIGFuIGV4dHJhIAorICAgICAgICBpdGVy
YXRvciBwYXJhbWV0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MTA1NQorCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAo
SlNDOjpSZWdFeHA6OlJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGU6
Omxvb2t1cE9yQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZS5oOgorCiAyMDEwLTA2LTI0ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNo
b3dpYWsuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59920</attachid>
            <date>2010-06-28 12:15:44 -0700</date>
            <delta_ts>2010-06-28 12:18:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41055-20100628121543.patch</filename>
            <type>text/plain</type>
            <size>7474</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMDE4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDYtMjggIFJlbmF0YSBI
b2RvdmFuICA8cmVuaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBbIFVwZGF0ZWQgYWZ0ZXIgcm9sbG91dC4g
XQorCisgICAgICAgIE1lcmdlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhbmQgUmVnRXhwOjpjcmVhdGUg
bWV0aG9kcyBpbnRvIG9uZS4KKyAgICAgICAgQm90aCBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRo
IHRocmVlIHBhcmFtZXRlcnMgYW5kIGNoZWNrIHdoZXRoZXIgCisgICAgICAgIGZsYWdzICh0aGUg
dGhpcmQgcGFyYW0pIGlzIGdpdmVuIG9yIG5vdC4KKyAgICAgICAgQXZvaWQgZXh0cmEgaGFzaCBs
b29rdXBzIGluIFJlZ0V4cENhY2hlOjpjcmVhdGUgYnkgcGFzc2luZyB0aGVtIGEKKyAgICAgICAg
cHJlLWNvbXB1dGVkIGl0ZXJhdG9yIHBhcmFtZXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMDU1CisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwOgorICAgICAgICAo
SlNDOjpSZWdFeHBDYWNoZTo6bG9va3VwT3JDcmVhdGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBD
YWNoZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmg6CisKIDIwMTAt
MDYtMjggIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcAkocmV2aXNpb24gNjIwMTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0Niw2IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1pbmxpbmUgUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiBwYXR0ZXJuKQotICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgLCBtX2Zs
YWdCaXRzKDApCi0gICAgLCBtX2NvbnN0cnVjdGlvbkVycm9yKDApCi0gICAgLCBtX251bVN1YnBh
dHRlcm5zKDApCi17Ci0gICAgY29tcGlsZShnbG9iYWxEYXRhKTsKLX0KLQogaW5saW5lIFJlZ0V4
cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVy
biwgY29uc3QgVVN0cmluZyYgZmxhZ3MpCiAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKICAgICAs
IG1fZmxhZ0JpdHMoMCkKQEAgLTYzLDEzICs1NCwxNCBAQCBpbmxpbmUgUmVnRXhwOjpSZWdFeHAo
SlNHbG9iYWxEYXRhKiBnbG9iCiB7CiAgICAgLy8gTk9URTogVGhlIGdsb2JhbCBmbGFnIGlzIGhh
bmRsZWQgb24gYSBjYXNlLWJ5LWNhc2UgYmFzaXMgYnkgZnVuY3Rpb25zIGxpa2UKICAgICAvLyBT
dHJpbmc6Om1hdGNoIGFuZCBSZWdFeHBPYmplY3Q6Om1hdGNoLgotICAgIGlmIChmbGFncy5maW5k
KCdnJykgIT0gVVN0cmluZzo6Tm90Rm91bmQpCi0gICAgICAgIG1fZmxhZ0JpdHMgfD0gR2xvYmFs
OwotICAgIGlmIChmbGFncy5maW5kKCdpJykgIT0gVVN0cmluZzo6Tm90Rm91bmQpCi0gICAgICAg
IG1fZmxhZ0JpdHMgfD0gSWdub3JlQ2FzZTsKLSAgICBpZiAoZmxhZ3MuZmluZCgnbScpICE9IFVT
dHJpbmc6Ok5vdEZvdW5kKQotICAgICAgICBtX2ZsYWdCaXRzIHw9IE11bHRpbGluZTsKLQorICAg
IGlmICghZmxhZ3MuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGZsYWdzLmZpbmQoJ2cnKSAhPSBV
U3RyaW5nOjpOb3RGb3VuZCkKKyAgICAgICAgICAgIG1fZmxhZ0JpdHMgfD0gR2xvYmFsOworICAg
ICAgICBpZiAoZmxhZ3MuZmluZCgnaScpICE9IFVTdHJpbmc6Ok5vdEZvdW5kKQorICAgICAgICAg
ICAgbV9mbGFnQml0cyB8PSBJZ25vcmVDYXNlOworICAgICAgICBpZiAoZmxhZ3MuZmluZCgnbScp
ICE9IFVTdHJpbmc6Ok5vdEZvdW5kKQorICAgICAgICAgICAgbV9mbGFnQml0cyB8PSBNdWx0aWxp
bmU7CisgICAgfQogICAgIGNvbXBpbGUoZ2xvYmFsRGF0YSk7CiB9CiAKQEAgLTgwLDExICs3Miw2
IEBAIFJlZ0V4cDo6flJlZ0V4cCgpCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxSZWdFeHA+IFJl
Z0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGVybikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZ0V4cChnbG9iYWxEYXRhLCBwYXR0
ZXJuKSk7Ci19Ci0KIFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZs
YWdzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVnRXhwKGdsb2JhbERhdGEsIHBhdHRl
cm4sIGZsYWdzKSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDYyMDE4
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBV
U3RyaW5nJiBmbGFncyk7CiAjaWYgIUVOQUJMRShZQVJSKQogICAgICAgICB+UmVnRXhwKCk7CkBA
IC01Niw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBudW1TdWJw
YXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtU3VicGF0dGVybnM7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIFJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIHBhdHRlcm4pOwogICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7CiAKICAgICAgICAg
dm9pZCBjb21waWxlKEpTR2xvYmFsRGF0YSopOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDYWNoZS5jcHAJKHJldmlzaW9uIDYyMDE4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICszNCwyNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHBDYWNoZTo6bG9va3VwT3JDcmVh
dGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgY29uc3QgVVN0cmluZyYgZmxhZ3MpCiB7
CiAgICAgaWYgKHBhdHRlcm5TdHJpbmcuc2l6ZSgpIDwgbWF4Q2FjaGVhYmxlUGF0dGVybkxlbmd0
aCkgewotICAgICAgICBwYWlyPEhhc2hNYXA8UmVnRXhwS2V5LCBSZWZQdHI8UmVnRXhwPiA+Ojpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9jYWNoZU1hcC5hZGQoUmVnRXhwS2V5KGZsYWdzLCBw
YXR0ZXJuU3RyaW5nKSwgMCk7CisgICAgICAgIHBhaXI8UmVnRXhwQ2FjaGVNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBtX2NhY2hlTWFwLmFkZChSZWdFeHBLZXkoZmxhZ3MsIHBhdHRlcm5T
dHJpbmcpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1
cm4gY3JlYXRlKHBhdHRlcm5TdHJpbmcsIGZsYWdzLCByZXN1bHQuZmlyc3QpOwogICAgIH0KLSAg
ICByZXR1cm4gY3JlYXRlKHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKKyAgICByZXR1cm4gY3JlYXRl
KHBhdHRlcm5TdHJpbmcsIGZsYWdzLCBtX2NhY2hlTWFwLmVuZCgpKTsKIH0KIAotUGFzc1JlZlB0
cjxSZWdFeHA+IFJlZ0V4cENhY2hlOjpjcmVhdGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmlu
ZywgY29uc3QgVVN0cmluZyYgZmxhZ3MpIAorUGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cENhY2hl
OjpjcmVhdGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgY29uc3QgVVN0cmluZyYgZmxh
Z3MsIFJlZ0V4cENhY2hlTWFwOjppdGVyYXRvciBpdGVyYXRvcikgCiB7Ci0gICAgUmVmUHRyPFJl
Z0V4cD4gcmVnRXhwOwotCi0gICAgaWYgKCFmbGFncy5pc051bGwoKSkKLSAgICAgICAgcmVnRXhw
ID0gUmVnRXhwOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7Ci0g
ICAgZWxzZQotICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZShtX2dsb2JhbERhdGEsIHBh
dHRlcm5TdHJpbmcpOworICAgIFJlZlB0cjxSZWdFeHA+IHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRl
KG1fZ2xvYmFsRGF0YSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwogCiAgICAgaWYgKHBhdHRlcm5T
dHJpbmcuc2l6ZSgpID49IG1heENhY2hlYWJsZVBhdHRlcm5MZW5ndGgpCiAgICAgICAgIHJldHVy
biByZWdFeHA7CiAKKyAgICBSZWdFeHBLZXkga2V5ID0gUmVnRXhwS2V5KGZsYWdzLCBwYXR0ZXJu
U3RyaW5nKTsKKyAgICBpdGVyYXRvci0+Zmlyc3QgPSBrZXk7CisgICAgaXRlcmF0b3ItPnNlY29u
ZCA9IHJlZ0V4cDsKKwogICAgICsrbV9uZXh0S2V5VG9FdmljdDsKICAgICBpZiAobV9uZXh0S2V5
VG9FdmljdCA9PSBtYXhDYWNoZWFibGVFbnRyaWVzKSB7CiAgICAgICAgIG1fbmV4dEtleVRvRXZp
Y3QgPSAwOwpAQCAtNjEsOCArNjIsNiBAQCBQYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwQ2FjaGU6
OmNyZWF0ZShjCiAgICAgaWYgKG1faXNGdWxsKQogICAgICAgICBtX2NhY2hlTWFwLnJlbW92ZShS
ZWdFeHBLZXkocGF0dGVybktleUFycmF5W21fbmV4dEtleVRvRXZpY3RdLmZsYWdzVmFsdWUsIHBh
dHRlcm5LZXlBcnJheVttX25leHRLZXlUb0V2aWN0XS5wYXR0ZXJuKSk7CiAKLSAgICBSZWdFeHBL
ZXkga2V5ID0gUmVnRXhwS2V5KGZsYWdzLCBwYXR0ZXJuU3RyaW5nKTsKLSAgICBtX2NhY2hlTWFw
LnNldChrZXksIHJlZ0V4cCk7CiAgICAgcGF0dGVybktleUFycmF5W21fbmV4dEtleVRvRXZpY3Rd
LmZsYWdzVmFsdWUgPSBrZXkuZmxhZ3NWYWx1ZTsKICAgICBwYXR0ZXJuS2V5QXJyYXlbbV9uZXh0
S2V5VG9FdmljdF0ucGF0dGVybiA9IHBhdHRlcm5TdHJpbmcucmVwKCk7CiAgICAgcmV0dXJuIHJl
Z0V4cDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDYy
MDE4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxNiArMzUsMTggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBSZWdFeHBD
YWNoZSB7CisKK3R5cGVkZWYgSGFzaE1hcDxSZWdFeHBLZXksIFJlZlB0cjxSZWdFeHA+ID4gUmVn
RXhwQ2FjaGVNYXA7CisKIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJlZ0V4cD4gbG9va3VwT3JD
cmVhdGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgY29uc3QgVVN0cmluZyYgZmxhZ3Mp
OwotICAgIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0
cmluZywgY29uc3QgVVN0cmluZyYgZmxhZ3MpOworICAgIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVh
dGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgY29uc3QgVVN0cmluZyYgZmxhZ3MsIFJl
Z0V4cENhY2hlTWFwOjppdGVyYXRvciBpdGVyYXRvcik7CiAgICAgUmVnRXhwQ2FjaGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4Q2FjaGVhYmxlUGF0dGVybkxlbmd0aCA9IDI1NjsKICAgICBzdGF0aWMgY29uc3QgaW50
IG1heENhY2hlYWJsZUVudHJpZXMgPSAyNTY7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVnRXhw
S2V5LCBSZWZQdHI8UmVnRXhwPiA+IFJlZ0V4cENhY2hlTWFwOwogICAgIFJlZ0V4cEtleSBwYXR0
ZXJuS2V5QXJyYXlbbWF4Q2FjaGVhYmxlRW50cmllc107CiAgICAgUmVnRXhwQ2FjaGVNYXAgbV9j
YWNoZU1hcDsKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMva2RlL3NjcmlwdC10ZXN0cy9SZWdFeHAuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9rZGUvc2NyaXB0LXRlc3RzL1JlZ0V4cC5qcwkocmV2aXNpb24gNjIw
MTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9zY3JpcHQtdGVzdHMvUmVnRXhwLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGEsIGIpCit7
CisgICAgcmV0dXJuIGV2YWwoYSkgPT0gZXZhbChiKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVU
cnVlKGEpCit7CisgICAgc2hvdWxkQmUoYSwgInRydWUiKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVGYWxzZShhKQoreworICAgIHNob3VsZEJlKGEsICJmYWxzZSIpOworfQorCiBzaG91bGRCZSgi
KG5ldyBSZWdFeHAoKSkuc291cmNlIiwgIicnIik7CiBzaG91bGRCZSgiQm9vbGVhbihuZXcgUmVn
RXhwKCkpIiwgInRydWUiKTsKIHNob3VsZEJlVHJ1ZSgiaXNOYU4oTnVtYmVyKG5ldyBSZWdFeHAo
KSkpIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59921</attachid>
            <date>2010-06-28 12:18:13 -0700</date>
            <delta_ts>2010-07-02 12:40:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41055-20100628121812.patch</filename>
            <type>text/plain</type>
            <size>6869</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMDE4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDYtMjggIFJlbmF0YSBI
b2RvdmFuICA8cmVuaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBbIFVwZGF0ZWQgYWZ0ZXIgcm9sbG91dC4g
XQorCisgICAgICAgIE1lcmdlZCBSZWdFeHAgY29uc3RydWN0b3IgYW5kIFJlZ0V4cDo6Y3JlYXRl
IG1ldGhvZHMuCisgICAgICAgIEJvdGggZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aCB0aHJlZSBw
YXJhbWV0ZXJzIGFuZCBjaGVjayB3aGV0aGVyIAorICAgICAgICBmbGFncyAodGhlIHRoaXJkIHBh
cmFtKSBpcyBnaXZlbiBvciBub3QuCisgICAgICAgIEF2b2lkIGV4dHJhIGhhc2ggbG9va3VwcyBp
biBSZWdFeHBDYWNoZTo6Y3JlYXRlIGJ5IHBhc3NpbmcgYSBwcmUtY29tcHV0ZWQKKyAgICAgICAg
aXRlcmF0b3IgcGFyYW1ldGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDEwNTUKKworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjpSZWdFeHApOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cENh
Y2hlOjpsb29rdXBPckNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGUuaDoKKwogMjAxMC0wNi0yOCAgTHVjYXMg
RGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBidWlsZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZp
c2lvbiA2MjAxOCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSBS
ZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm4pCi0gICAgOiBtX3BhdHRlcm4ocGF0dGVybikKLSAgICAsIG1fZmxhZ0JpdHMoMCkKLSAg
ICAsIG1fY29uc3RydWN0aW9uRXJyb3IoMCkKLSAgICAsIG1fbnVtU3VicGF0dGVybnMoMCkKLXsK
LSAgICBjb21waWxlKGdsb2JhbERhdGEpOwotfQotCiBpbmxpbmUgUmVnRXhwOjpSZWdFeHAoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3Ry
aW5nJiBmbGFncykKICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICwgbV9mbGFnQml0cygw
KQpAQCAtNjMsMTMgKzU0LDE0IEBAIGlubGluZSBSZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEq
IGdsb2IKIHsKICAgICAvLyBOT1RFOiBUaGUgZ2xvYmFsIGZsYWcgaXMgaGFuZGxlZCBvbiBhIGNh
c2UtYnktY2FzZSBiYXNpcyBieSBmdW5jdGlvbnMgbGlrZQogICAgIC8vIFN0cmluZzo6bWF0Y2gg
YW5kIFJlZ0V4cE9iamVjdDo6bWF0Y2guCi0gICAgaWYgKGZsYWdzLmZpbmQoJ2cnKSAhPSBVU3Ry
aW5nOjpOb3RGb3VuZCkKLSAgICAgICAgbV9mbGFnQml0cyB8PSBHbG9iYWw7Ci0gICAgaWYgKGZs
YWdzLmZpbmQoJ2knKSAhPSBVU3RyaW5nOjpOb3RGb3VuZCkKLSAgICAgICAgbV9mbGFnQml0cyB8
PSBJZ25vcmVDYXNlOwotICAgIGlmIChmbGFncy5maW5kKCdtJykgIT0gVVN0cmluZzo6Tm90Rm91
bmQpCi0gICAgICAgIG1fZmxhZ0JpdHMgfD0gTXVsdGlsaW5lOwotCisgICAgaWYgKCFmbGFncy5p
c051bGwoKSkgeworICAgICAgICBpZiAoZmxhZ3MuZmluZCgnZycpICE9IFVTdHJpbmc6Ok5vdEZv
dW5kKQorICAgICAgICAgICAgbV9mbGFnQml0cyB8PSBHbG9iYWw7CisgICAgICAgIGlmIChmbGFn
cy5maW5kKCdpJykgIT0gVVN0cmluZzo6Tm90Rm91bmQpCisgICAgICAgICAgICBtX2ZsYWdCaXRz
IHw9IElnbm9yZUNhc2U7CisgICAgICAgIGlmIChmbGFncy5maW5kKCdtJykgIT0gVVN0cmluZzo6
Tm90Rm91bmQpCisgICAgICAgICAgICBtX2ZsYWdCaXRzIHw9IE11bHRpbGluZTsKKyAgICB9CiAg
ICAgY29tcGlsZShnbG9iYWxEYXRhKTsKIH0KIApAQCAtODAsMTEgKzcyLDYgQEAgUmVnRXhwOjp+
UmVnRXhwKCkKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwOjpjcmVhdGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVnRXhwKGdsb2JhbERhdGEsIHBhdHRlcm4pKTsKLX0KLQog
UGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVybiwgZmxhZ3MpKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gNjIwMTgpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVnRXhwPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+
IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4p
OwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdz
KTsKICNpZiAhRU5BQkxFKFlBUlIpCiAgICAgICAgIH5SZWdFeHAoKTsKQEAgLTU2LDcgKzU1LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zKCkgY29u
c3QgeyByZXR1cm4gbV9udW1TdWJwYXR0ZXJuczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybik7
CiAgICAgICAgIFJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsKIAogICAgICAgICB2b2lkIGNvbXBpbGUo
SlNHbG9iYWxEYXRhKik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNw
cAkocmV2aXNpb24gNjIwMTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjUgKzM0LDI2IEBAIG5hbWVzcGFjZSBKU0Mgewog
UGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cENhY2hlOjpsb29rdXBPckNyZWF0ZShjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncykKIHsKICAgICBpZiAocGF0
dGVyblN0cmluZy5zaXplKCkgPCBtYXhDYWNoZWFibGVQYXR0ZXJuTGVuZ3RoKSB7Ci0gICAgICAg
IHBhaXI8SGFzaE1hcDxSZWdFeHBLZXksIFJlZlB0cjxSZWdFeHA+ID46Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtX2NhY2hlTWFwLmFkZChSZWdFeHBLZXkoZmxhZ3MsIHBhdHRlcm5TdHJpbmcp
LCAwKTsKKyAgICAgICAgcGFpcjxSZWdFeHBDYWNoZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1fY2FjaGVNYXAuYWRkKFJlZ0V4cEtleShmbGFncywgcGF0dGVyblN0cmluZyksIDApOwog
ICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGUocGF0
dGVyblN0cmluZywgZmxhZ3MsIHJlc3VsdC5maXJzdCk7CiAgICAgfQotICAgIHJldHVybiBjcmVh
dGUocGF0dGVyblN0cmluZywgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGUocGF0dGVyblN0cmlu
ZywgZmxhZ3MsIG1fY2FjaGVNYXAuZW5kKCkpOwogfQogCi1QYXNzUmVmUHRyPFJlZ0V4cD4gUmVn
RXhwQ2FjaGU6OmNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3Ry
aW5nJiBmbGFncykgCitQYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwQ2FjaGU6OmNyZWF0ZShjb25z
dCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncywgUmVnRXhwQ2Fj
aGVNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yKSAKIHsKLSAgICBSZWZQdHI8UmVnRXhwPiByZWdFeHA7
Ci0KLSAgICBpZiAoIWZsYWdzLmlzTnVsbCgpKQotICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNy
ZWF0ZShtX2dsb2JhbERhdGEsIHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKLSAgICBlbHNlCi0gICAg
ICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKG1fZ2xvYmFsRGF0YSwgcGF0dGVyblN0cmluZyk7
CisgICAgUmVmUHRyPFJlZ0V4cD4gcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUobV9nbG9iYWxEYXRh
LCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CiAKICAgICBpZiAocGF0dGVyblN0cmluZy5zaXplKCkg
Pj0gbWF4Q2FjaGVhYmxlUGF0dGVybkxlbmd0aCkKICAgICAgICAgcmV0dXJuIHJlZ0V4cDsKIAor
ICAgIFJlZ0V4cEtleSBrZXkgPSBSZWdFeHBLZXkoZmxhZ3MsIHBhdHRlcm5TdHJpbmcpOworICAg
IGl0ZXJhdG9yLT5maXJzdCA9IGtleTsKKyAgICBpdGVyYXRvci0+c2Vjb25kID0gcmVnRXhwOwor
CiAgICAgKyttX25leHRLZXlUb0V2aWN0OwogICAgIGlmIChtX25leHRLZXlUb0V2aWN0ID09IG1h
eENhY2hlYWJsZUVudHJpZXMpIHsKICAgICAgICAgbV9uZXh0S2V5VG9FdmljdCA9IDA7CkBAIC02
MSw4ICs2Miw2IEBAIFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHBDYWNoZTo6Y3JlYXRlKGMKICAg
ICBpZiAobV9pc0Z1bGwpCiAgICAgICAgIG1fY2FjaGVNYXAucmVtb3ZlKFJlZ0V4cEtleShwYXR0
ZXJuS2V5QXJyYXlbbV9uZXh0S2V5VG9FdmljdF0uZmxhZ3NWYWx1ZSwgcGF0dGVybktleUFycmF5
W21fbmV4dEtleVRvRXZpY3RdLnBhdHRlcm4pKTsKIAotICAgIFJlZ0V4cEtleSBrZXkgPSBSZWdF
eHBLZXkoZmxhZ3MsIHBhdHRlcm5TdHJpbmcpOwotICAgIG1fY2FjaGVNYXAuc2V0KGtleSwgcmVn
RXhwKTsKICAgICBwYXR0ZXJuS2V5QXJyYXlbbV9uZXh0S2V5VG9FdmljdF0uZmxhZ3NWYWx1ZSA9
IGtleS5mbGFnc1ZhbHVlOwogICAgIHBhdHRlcm5LZXlBcnJheVttX25leHRLZXlUb0V2aWN0XS5w
YXR0ZXJuID0gcGF0dGVyblN0cmluZy5yZXAoKTsKICAgICByZXR1cm4gcmVnRXhwOwpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAkocmV2aXNpb24gNjIwMTgpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2
ICszNSwxOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFJlZ0V4cENhY2hlIHsKKwordHlw
ZWRlZiBIYXNoTWFwPFJlZ0V4cEtleSwgUmVmUHRyPFJlZ0V4cD4gPiBSZWdFeHBDYWNoZU1hcDsK
KwogcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmVnRXhwPiBsb29rdXBPckNyZWF0ZShjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7Ci0gICAgUGFzc1Jl
ZlB0cjxSZWdFeHA+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBV
U3RyaW5nJiBmbGFncyk7CisgICAgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncywgUmVnRXhwQ2FjaGVNYXA6
Oml0ZXJhdG9yIGl0ZXJhdG9yKTsKICAgICBSZWdFeHBDYWNoZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZWFi
bGVQYXR0ZXJuTGVuZ3RoID0gMjU2OwogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVhYmxl
RW50cmllcyA9IDI1NjsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWdFeHBLZXksIFJlZlB0cjxS
ZWdFeHA+ID4gUmVnRXhwQ2FjaGVNYXA7CiAgICAgUmVnRXhwS2V5IHBhdHRlcm5LZXlBcnJheVtt
YXhDYWNoZWFibGVFbnRyaWVzXTsKICAgICBSZWdFeHBDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAg
IEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwo=
</data>
<flag name="review"
          id="47088"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>