<?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>40356</bug_id>
          
          <creation_ts>2010-06-09 00:48:25 -0700</creation_ts>
          <short_desc>Fix handling of bytes received from the network while in document.write</short_desc>
          <delta_ts>2010-06-09 17:49:44 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235692</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 00:48:25 -0700</bug_when>
    <thetext>Fix handling of bytes received from the network while in document.write</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235694</commentid>
    <comment_count>1</comment_count>
      <attachid>58220</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 00:58:22 -0700</bug_when>
    <thetext>Created attachment 58220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235696</commentid>
    <comment_count>2</comment_count>
      <attachid>58220</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-09 01:07:39 -0700</bug_when>
    <thetext>Comment on attachment 58220
Patch

WebCore/html/HTML5Tokenizer.cpp:126
 +              // We don&apos;t want to consume any more of the input stream now.  Do
This is confusing.  I think you mean:
&quot;We were just passed data off the network in a nested call to write().  We append this data to the end, but we don&apos;t process it until we unwind to a less nested write().&quot; or similar.

WebCore/ChangeLog:18
 +          tokenizer.
You should explain here how you also fixed the close() stuff to be more sane.

WebCore/html/HTML5Tokenizer.h:111
 +                  m_inputStream-&gt;m_last = &amp;m_afterInsertionPoint;
This line is not clear to me.

WebCore/html/HTML5Tokenizer.h:117
 +              if (m_inputStream-&gt;m_last == &amp;m_afterInsertionPoint)
This is also not clear.

I think InsertionPointRecord needs more explanation.  And the ChangeLog needs to explain the close() stuff.  I assume you ran all the tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235702</commentid>
    <comment_count>3</comment_count>
      <attachid>58223</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 01:37:15 -0700</bug_when>
    <thetext>Created attachment 58223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235703</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-09 01:41:40 -0700</bug_when>
    <thetext>Attachment 58223 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3198078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235814</commentid>
    <comment_count>5</comment_count>
      <attachid>58223</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-09 09:07:57 -0700</bug_when>
    <thetext>Comment on attachment 58223
Patch

r- due to mac build break.

Tricky, it appears the problem is the \ at the end of the line here &quot;//            /\&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235818</commentid>
    <comment_count>6</comment_count>
      <attachid>58251</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 09:13:47 -0700</bug_when>
    <thetext>Created attachment 58251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235974</commentid>
    <comment_count>7</comment_count>
      <attachid>58251</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-09 13:41:10 -0700</bug_when>
    <thetext>Comment on attachment 58251
Patch

WebCore/html/HTML5Tokenizer.h:126
 +              if (m_inputStream-&gt;m_last == &amp;m_inputStream-&gt;m_current)
You&apos;re right that this would be cleaner if this code was moved onto InputStream itself.  I don&apos;t really have good naming suggestions for you. :(

I think  my biggest gripe is that this m_last == check doesn&apos;t have a comment to explain what it&apos;s doing.  I&apos;m still confused by both of the save and restore logic, even after some sleep. :)  Yes, I know what it does, but the code isn&apos;t easy to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236076</commentid>
    <comment_count>8</comment_count>
      <attachid>58307</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 16:29:35 -0700</bug_when>
    <thetext>Created attachment 58307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236087</commentid>
    <comment_count>9</comment_count>
      <attachid>58310</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 17:06:51 -0700</bug_when>
    <thetext>Created attachment 58310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236099</commentid>
    <comment_count>10</comment_count>
      <attachid>58310</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-09 17:32:19 -0700</bug_when>
    <thetext>Comment on attachment 58310
Patch

The names &quot;splitInto&quot; and &quot;mergeFrom&quot; aren&apos;t very clear to me.  BUt the code looks good.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236105</commentid>
    <comment_count>11</comment_count>
      <attachid>58310</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 17:49:36 -0700</bug_when>
    <thetext>Comment on attachment 58310
Patch

Clearing flags on attachment: 58310

Committed r60926: &lt;http://trac.webkit.org/changeset/60926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236107</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-09 17:49:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58220</attachid>
            <date>2010-06-09 00:58:22 -0700</date>
            <delta_ts>2010-06-09 01:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40356-20100609005821.patch</filename>
            <type>text/plain</type>
            <size>8567</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGE3YzM2YjU4ZDU1NTQwMzk5YTRiMzI0MGJhYWMyYTU5ZjBjNWM5MS4uODk2Y2Q2MTExMTBlYTc3
YTVhNDAyZTdmODBjMmRhNjRlMDZlMzAxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wNi0wOSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBoYW5kbGluZyBvZiBieXRlcyByZWNlaXZlZCBmcm9t
IHRoZSBuZXR3b3JrIHdoaWxlIGluIGRvY3VtZW50LndyaXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM1NgorCisgICAgICAgIFRoZSBvbGQgdG9r
ZW5pemVyIGhhcyBzcGVjaWFsbHkgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBjYXNlIG9mCisgICAg
ICAgIHJlY2VpdmluZyBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIHdoaWxlIGluIGEgbmVzdGVkIGNh
bGwgdG8KKyAgICAgICAgZG9jdW1lbnQud3JpdGUuICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc2lt
aWxhciBsb2dpYyBmb3IgdGhlIEhUTUw1CisgICAgICAgIHRva2VuaXplci4gIEFsc28sIHRoaXMg
cGF0Y2ggYWJzdHJhY3RzIHRoZSB0cmlja3kgc2h1ZmZsaW5nIG9mCisgICAgICAgIFNlZ21lbnRl
ZFN0cmluZ3MgYmVoaW5kIGEgc2ltcGxlIEFQSS4KKworICAgICAgICBJJ20gbm90IHN1cmUgaG93
IHRvIHRyaWdnZXIgdGhpcyBjYXNlLiAgTXkgZ3Vlc3MgaXMgd2UgY2FuIHRyaWdnZXIgaXQKKyAg
ICAgICAgdXNpbmcgYSBuZXN0ZWQgZXZlbnQgbG9vcCwgZS5nLiwgdmlhIGFsZXJ0KCksIGJ1dCBJ
J20gbm90IHN1cmUgaG93IHRvCisgICAgICAgIHRlc3QgdGhhdCBpbiBhIExheW91dFRlc3QuICBU
aGVyZSBkb24ndCBhcHBlYXIgdG8gYmUgYW55IExheW91dFRlc3RzCisgICAgICAgIHRoYXQgY3Vy
cmVudGx5IHRlc3QgdGhpcyBiZWhhdmlvciBkZXNwaXRlIGl0IGJlaW5nIHByZXNlbnQgaW4gdGhl
IG9sZAorICAgICAgICB0b2tlbml6ZXIuCisKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpwdW1wTGV4ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgICAgIC0gQWRk
ZWQgYSBicmFuY2ggZm9yIHRoZSB8YXBwZW5kfCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUw1VG9rZW5pemVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlw
dCk6CisgICAgICAgICAgICAtIFN3aXRjaCBvdmVyIHRvIHVzaW5nIGEgUkFJSSBwYXR0ZXJuIGZv
ciByZWNvcmRpbmcgYW5kIHJlc3RvcmluZworICAgICAgICAgICAgICBpbnNlcnRpb24gcG9pbnRz
LgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tlbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUw1VG9rZW5pemVyOjpJbnB1dFN0cmVhbTo6SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVUb2tlbml6ZXI6OklucHV0U3RyZWFtOjphcHBlbmRUb0VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06Omluc2VydEF0Q3VycmVudEluc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnB1dFN0cmVh
bTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OklucHV0U3RyZWFt
OjpjdXJyZW50KToKKyAgICAgICAgICAgIC0gVGhpcyBjbGFzcyBjb3VsZCBiZSBtb3ZlZCB0byBp
dHMgb3duIGZpbGUsIGJ1dCBpdCBzaG91bGRuJ3QgYmUKKyAgICAgICAgICAgICAgdXNlZCBvdXRz
aWRlIG9mIHRoZSB0b2tlbml6ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6
SW5zZXJ0aW9uUG9pbnRSZWNvcmQ6Okluc2VydGlvblBvaW50UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnNlcnRpb25Qb2ludFJlY29yZDo6fkluc2VydGlvblBv
aW50UmVjb3JkKToKKyAgICAgICAgICAgIC0gQSBzaW1wbGUgUkFJSSBjbGFzcyBmb3IgbWFuYWdp
bmcgc2F2ZWQgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1NlZ21l
bnRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6Om9wZXJh
dG9yPSk6CisgICAgICAgICAgICAtIEZpeCBhIHJlbGF0ZWQgYnVnIHdoZXJlIG1fY2xvc2VkIHdh
cyBub3QgYmVpbmcgY29waWVkIHByb3Blcmx5IGluCisgICAgICAgICAgICAgIHRoZSBhc3NpZ25t
ZW50IG9wZXJhdG9yLgorCiAyMDEwLTA1LTE4ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVU
b2tlbml6ZXIuY3BwCmluZGV4IDM3NWFkZTQzMzE0M2M4Y2FhNTFhOTJhZWQxOGRmNjIxMTg2ZThl
NjcuLmFjNzMyYjI3N2E5ZDk4N2IxYzJmZDEzYTM4YWZiNjI0MWVmZmRjY2QgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1
VG9rZW5pemVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjpwdW1w
TGV4ZXIoKQogewogICAgIEFTU0VSVCghbV9wYXJzZXJTdG9wcGVkKTsKICAgICBBU1NFUlQoIW1f
dHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwotICAgIHdoaWxlICghbV9wYXJzZXJTdG9wcGVkICYm
IG1fbGV4ZXItPm5leHRUb2tlbihtX3NvdXJjZSwgbV90b2tlbikpIHsKKyAgICB3aGlsZSAoIW1f
cGFyc2VyU3RvcHBlZCAmJiBtX2xleGVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1f
dG9rZW4pKSB7CiAgICAgICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4o
bV90b2tlbik7CiAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKIApAQCAtMTEyLDIyICsxMTIsMzAg
QEAgdm9pZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVyKCkKICAgICB9CiB9CiAKLXZvaWQgSFRN
TDVUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sKQor
dm9pZCBIVE1MNVRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IGJvb2wgYXBwZW5kRGF0YSkKIHsKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlcihtX3dyaXRlTmVzdGluZ0xldmVsKTsKIAotICAgIC8vIEhUTUw1VG9rZW5pemVyOjpleGVj
dXRlU2NyaXB0IGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBzYXZpbmcgbV9zb3VyY2UgYmVm
b3JlIHJlLWVudHJ5LgotICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOworICAgIGlmIChhcHBl
bmREYXRhKSB7CisgICAgICAgIG1faW5wdXQuYXBwZW5kVG9FbmQoc291cmNlKTsKKyAgICAgICAg
aWYgKG1fd3JpdGVOZXN0aW5nTGV2ZWwgPiAxKSB7CisgICAgICAgICAgICAvLyBXZSd2ZSBnb3R0
ZW4gZGF0YSBvZmYgdGhlIG5ldHdvcmsgaW4gYSBuZXN0ZWQgY2FsbCB0byB3cml0ZSgpLgorICAg
ICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb25zdW1lIGFueSBtb3JlIG9mIHRoZSBpbnB1
dCBzdHJlYW0gbm93LiAgRG8KKyAgICAgICAgICAgIC8vIG5vdCB3b3JyeS4gIFdlJ2xsIGNvbnN1
bWUgdGhpcyBkYXRhIGluIGEgbGVzcy1uZXN0ZWQgd3JpdGUoKS4KKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX2lucHV0Lmluc2VydEF0Q3VycmVu
dEluc2VydGlvblBvaW50KHNvdXJjZSk7CisKICAgICBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAg
ICAgZW5kSWZEZWxheWVkKCk7CiB9CiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmVuZCgpCiB7Ci0g
ICAgbV9zb3VyY2UuY2xvc2UoKTsKICAgICBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAgICAgLy8g
SW5mb3JtcyB0aGUgdGhlIHJlc3Qgb2YgV2ViQ29yZSB0aGF0IHBhcnNpbmcgaXMgcmVhbGx5IGZp
bmlzaGVkLgogICAgIG1fdHJlZUJ1aWxkZXItPmZpbmlzaGVkKCk7CkBAIC0xNTYsOSArMTY0LDkg
QEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZW5kSWZEZWxheWVkKCkKIAogdm9pZCBIVE1MNVRva2Vu
aXplcjo6ZmluaXNoKCkKIHsKLSAgICAvLyBXZSBjYW4ndCBjYWxsIG1fc291cmNlLmNsb3NlKCkg
eWV0IGFzIHdlIG1heSBoYXZlIGEgPHNjcmlwdD4gZXhlY3V0aW9uCi0gICAgLy8gcGVuZGluZyB3
aGljaCB3aWxsIGNhbGwgZG9jdW1lbnQud3JpdGUoKS4gIE5vIG1vcmUgZGF0YSBvZmYgdGhlIG5l
dHdvcmsgdGhvdWdoLgotICAgIC8vIGVuZCgpIGNhbGxzIERvY3VtZW50OjpmaW5pc2hlZFBhcnNp
bmcoKSBvbmNlIHdlJ3JlIGFjdHVhbGx5IGRvbmUgcGFyc2luZy4KKyAgICAvLyBXZSdyZSBub3Qg
Z29pbmcgdG8gZ2V0IGFueSBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrLCBzbyB3ZSBjbG9zZSB0
aGUKKyAgICAvLyBpbnB1dCBzdHJlYW0gdG8gaW5kaWNhdGUgRU9GLgorICAgIG1faW5wdXQuY2xv
c2UoKTsKICAgICBhdHRlbXB0VG9FbmQoKTsKIH0KIApAQCAtMjExLDE3ICsyMTksOCBAQCB2b2lk
IEhUTUw1VG9rZW5pemVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUpCiAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigp
KTsKICAgICBpZiAoIW1fZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKLQotICAg
IFNlZ21lbnRlZFN0cmluZyBvbGRJbnNlcnRpb25Qb2ludCA9IG1fc291cmNlOwotICAgIG1fc291
cmNlID0gU2VnbWVudGVkU3RyaW5nKCk7CisgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgc2F2ZWRJ
bnNlcnRpb25Qb2ludChtX2lucHV0KTsKICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQo
KS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKLSAgICAvLyBBcHBlbmQgb2xkSW5zZXJ0aW9u
UG9pbnQgb250byB0aGUgbmV3IChsaWtlbHkgZW1wdHkpIG1fc291cmNlIGluc3RlYWQgb2YKLSAg
ICAvLyBvbGRJbnNlcnRpb25Qb2ludC5wcmVwZW50KG1fc291cmNlKSBhcyB0aGF0IHdvdWxkIEFT
U0VSVCBpZgotICAgIC8vIG1fc291cmNlLmVzY2FwZWQoKSAoaXQgaGFkIGNoYXJhY3RlcnMgcHVz
aGVkIGJhY2sgb250byBpdCkuCi0gICAgLy8gSWYgbV9zb3VyY2Ugd2FzIGNsb3NlZCwgdGhlbiB0
aGUgdG9rZW5pemVyIHdhcyBzdG9wcGVkLCBhbmQgd2UgZGlzY2FyZAotICAgIC8vIGFueSBwZW5k
aW5nIGRhdGEgYXMgdGhvdWdoIGFuIEVPRiBjaGFyYWN0ZXIgd2FzIGluc2VydGVkIGludG8gdGhl
IHN0cmVhbS4KLSAgICBpZiAoIW1fc291cmNlLmlzQ2xvc2VkKCkpCi0gICAgICAgIG1fc291cmNl
LmFwcGVuZChvbGRJbnNlcnRpb25Qb2ludCk7CiB9CiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5p
emVyLmgKaW5kZXggMTBmM2M4MDk3NmMxYzdmOTIxYjdkOGI1OGM5MDg2NjgzN2I2MjRkOC4uYzk5
Yzg0NWZhMTYyMGJkYzQxMzY1ZGQyMWE2NTFiNTJlM2VmOTc3YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVy
LmgKQEAgLTY5LDYgKzY5LDYyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBJbnB1dFN0cmVh
bTsKKyAgICBjbGFzcyBJbnNlcnRpb25Qb2ludFJlY29yZDsKKworICAgIGNsYXNzIElucHV0U3Ry
ZWFtIHsKKyAgICBwdWJsaWM6CisgICAgICAgIElucHV0U3RyZWFtKCkKKyAgICAgICAgICAgIDog
bV9sYXN0KCZtX2N1cnJlbnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHJpbmcpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fbGFzdC0+YXBwZW5kKHN0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGluc2VydEF0Q3VycmVudEluc2VydGlvblBvaW50KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYg
c3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2N1cnJlbnQuYXBwZW5kKHN0cmluZyk7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsb3NlKCkgeyBtX2xhc3QtPmNsb3NlKCk7IH0K
KworICAgICAgICBTZWdtZW50ZWRTdHJpbmcmIGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQ7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25Qb2ludFJl
Y29yZDsKKworICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9jdXJyZW50OworICAgICAgICBTZWdt
ZW50ZWRTdHJpbmcqIG1fbGFzdDsKKyAgICB9OworCisgICAgY2xhc3MgSW5zZXJ0aW9uUG9pbnRS
ZWNvcmQgeworICAgIHB1YmxpYzoKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQoSW5wdXRT
dHJlYW0mIGlucHV0U3RyZWFtKQorICAgICAgICAgICAgOiBtX2lucHV0U3RyZWFtKCZpbnB1dFN0
cmVhbSkKKyAgICAgICAgICAgICwgbV9hZnRlckluc2VydGlvblBvaW50KGlucHV0U3RyZWFtLm1f
Y3VycmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnB1dFN0cmVhbS0+bV9jdXJyZW50
ID0gU2VnbWVudGVkU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAobV9pbnB1dFN0cmVhbS0+bV9s
YXN0ID09ICZtX2lucHV0U3RyZWFtLT5tX2N1cnJlbnQpCisgICAgICAgICAgICAgICAgbV9pbnB1
dFN0cmVhbS0+bV9sYXN0ID0gJm1fYWZ0ZXJJbnNlcnRpb25Qb2ludDsKKyAgICAgICAgfQorCisg
ICAgICAgIH5JbnNlcnRpb25Qb2ludFJlY29yZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
aW5wdXRTdHJlYW0tPm1fY3VycmVudC5hcHBlbmQobV9hZnRlckluc2VydGlvblBvaW50KTsKKyAg
ICAgICAgICAgIGlmIChtX2lucHV0U3RyZWFtLT5tX2xhc3QgPT0gJm1fYWZ0ZXJJbnNlcnRpb25Q
b2ludCkKKyAgICAgICAgICAgICAgICBtX2lucHV0U3RyZWFtLT5tX2xhc3QgPSAmbV9pbnB1dFN0
cmVhbS0+bV9jdXJyZW50OworICAgICAgICAgICAgaWYgKG1fYWZ0ZXJJbnNlcnRpb25Qb2ludC5p
c0Nsb3NlZCgpKQorICAgICAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPm1fY3VycmVudC5jbG9z
ZSgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJbnB1dFN0cmVhbSogbV9p
bnB1dFN0cmVhbTsKKyAgICAgICAgU2VnbWVudGVkU3RyaW5nIG1fYWZ0ZXJJbnNlcnRpb25Qb2lu
dDsKKyAgICB9OworCiAgICAgdm9pZCBwdW1wTGV4ZXIoKTsKICAgICB2b2lkIHB1bXBMZXhlcklm
UG9zc2libGUoKTsKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigp
OwpAQCAtNzcsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuZElmRGVsYXllZCgpOwog
ICAgIGJvb2wgaW5Xcml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVOZXN0aW5nTGV2ZWwgPiAw
OyB9CiAKLSAgICBTZWdtZW50ZWRTdHJpbmcgbV9zb3VyY2U7CisgICAgSW5wdXRTdHJlYW0gbV9p
bnB1dDsKIAogICAgIC8vIFdlIGhvbGQgbV90b2tlbiBoZXJlIGJlY2F1c2UgaXQgbWlnaHQgYmUg
cGFydGlhbGx5IGNvbXBsZXRlLgogICAgIEhUTUw1VG9rZW4gbV90b2tlbjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKaW5kZXggMmNmOWEwMTYxZTk0MzZlMTRiYmVh
YzE2MDAwMDk3ZmI5NDMyODkwOC4uOWZmMWM0NTdiMzZmNDhjNDVjMTE5ZGY3ZDZlNTgwOTc1ODI2
NzhhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKQEAgLTUx
LDYgKzUxLDcgQEAgY29uc3QgU2VnbWVudGVkU3RyaW5nJiBTZWdtZW50ZWRTdHJpbmc6Om9wZXJh
dG9yPShjb25zdCBTZWdtZW50ZWRTdHJpbmcgJm90aGVyKQogICAgICAgICBtX2N1cnJlbnRDaGFy
ID0gJm1fcHVzaGVkQ2hhcjI7CiAgICAgZWxzZQogICAgICAgICBtX2N1cnJlbnRDaGFyID0gb3Ro
ZXIubV9jdXJyZW50Q2hhcjsKKyAgICBtX2Nsb3NlZCA9IG90aGVyLm1fY2xvc2VkOwogICAgIHJl
dHVybiAqdGhpczsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58223</attachid>
            <date>2010-06-09 01:37:15 -0700</date>
            <delta_ts>2010-06-09 09:13:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40356-20100609013714.patch</filename>
            <type>text/plain</type>
            <size>9345</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGE3YzM2YjU4ZDU1NTQwMzk5YTRiMzI0MGJhYWMyYTU5ZjBjNWM5MS4uODk2Y2Q2MTExMTBlYTc3
YTVhNDAyZTdmODBjMmRhNjRlMDZlMzAxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wNi0wOSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBoYW5kbGluZyBvZiBieXRlcyByZWNlaXZlZCBmcm9t
IHRoZSBuZXR3b3JrIHdoaWxlIGluIGRvY3VtZW50LndyaXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM1NgorCisgICAgICAgIFRoZSBvbGQgdG9r
ZW5pemVyIGhhcyBzcGVjaWFsbHkgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBjYXNlIG9mCisgICAg
ICAgIHJlY2VpdmluZyBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIHdoaWxlIGluIGEgbmVzdGVkIGNh
bGwgdG8KKyAgICAgICAgZG9jdW1lbnQud3JpdGUuICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc2lt
aWxhciBsb2dpYyBmb3IgdGhlIEhUTUw1CisgICAgICAgIHRva2VuaXplci4gIEFsc28sIHRoaXMg
cGF0Y2ggYWJzdHJhY3RzIHRoZSB0cmlja3kgc2h1ZmZsaW5nIG9mCisgICAgICAgIFNlZ21lbnRl
ZFN0cmluZ3MgYmVoaW5kIGEgc2ltcGxlIEFQSS4KKworICAgICAgICBJJ20gbm90IHN1cmUgaG93
IHRvIHRyaWdnZXIgdGhpcyBjYXNlLiAgTXkgZ3Vlc3MgaXMgd2UgY2FuIHRyaWdnZXIgaXQKKyAg
ICAgICAgdXNpbmcgYSBuZXN0ZWQgZXZlbnQgbG9vcCwgZS5nLiwgdmlhIGFsZXJ0KCksIGJ1dCBJ
J20gbm90IHN1cmUgaG93IHRvCisgICAgICAgIHRlc3QgdGhhdCBpbiBhIExheW91dFRlc3QuICBU
aGVyZSBkb24ndCBhcHBlYXIgdG8gYmUgYW55IExheW91dFRlc3RzCisgICAgICAgIHRoYXQgY3Vy
cmVudGx5IHRlc3QgdGhpcyBiZWhhdmlvciBkZXNwaXRlIGl0IGJlaW5nIHByZXNlbnQgaW4gdGhl
IG9sZAorICAgICAgICB0b2tlbml6ZXIuCisKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpwdW1wTGV4ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgICAgIC0gQWRk
ZWQgYSBicmFuY2ggZm9yIHRoZSB8YXBwZW5kfCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUw1VG9rZW5pemVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlw
dCk6CisgICAgICAgICAgICAtIFN3aXRjaCBvdmVyIHRvIHVzaW5nIGEgUkFJSSBwYXR0ZXJuIGZv
ciByZWNvcmRpbmcgYW5kIHJlc3RvcmluZworICAgICAgICAgICAgICBpbnNlcnRpb24gcG9pbnRz
LgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tlbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUw1VG9rZW5pemVyOjpJbnB1dFN0cmVhbTo6SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVUb2tlbml6ZXI6OklucHV0U3RyZWFtOjphcHBlbmRUb0VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06Omluc2VydEF0Q3VycmVudEluc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnB1dFN0cmVh
bTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OklucHV0U3RyZWFt
OjpjdXJyZW50KToKKyAgICAgICAgICAgIC0gVGhpcyBjbGFzcyBjb3VsZCBiZSBtb3ZlZCB0byBp
dHMgb3duIGZpbGUsIGJ1dCBpdCBzaG91bGRuJ3QgYmUKKyAgICAgICAgICAgICAgdXNlZCBvdXRz
aWRlIG9mIHRoZSB0b2tlbml6ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6
SW5zZXJ0aW9uUG9pbnRSZWNvcmQ6Okluc2VydGlvblBvaW50UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnNlcnRpb25Qb2ludFJlY29yZDo6fkluc2VydGlvblBv
aW50UmVjb3JkKToKKyAgICAgICAgICAgIC0gQSBzaW1wbGUgUkFJSSBjbGFzcyBmb3IgbWFuYWdp
bmcgc2F2ZWQgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1NlZ21l
bnRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6Om9wZXJh
dG9yPSk6CisgICAgICAgICAgICAtIEZpeCBhIHJlbGF0ZWQgYnVnIHdoZXJlIG1fY2xvc2VkIHdh
cyBub3QgYmVpbmcgY29waWVkIHByb3Blcmx5IGluCisgICAgICAgICAgICAgIHRoZSBhc3NpZ25t
ZW50IG9wZXJhdG9yLgorCiAyMDEwLTA1LTE4ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVU
b2tlbml6ZXIuY3BwCmluZGV4IDM3NWFkZTQzMzE0M2M4Y2FhNTFhOTJhZWQxOGRmNjIxMTg2ZThl
NjcuLmFjNzMyYjI3N2E5ZDk4N2IxYzJmZDEzYTM4YWZiNjI0MWVmZmRjY2QgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1
VG9rZW5pemVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjpwdW1w
TGV4ZXIoKQogewogICAgIEFTU0VSVCghbV9wYXJzZXJTdG9wcGVkKTsKICAgICBBU1NFUlQoIW1f
dHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwotICAgIHdoaWxlICghbV9wYXJzZXJTdG9wcGVkICYm
IG1fbGV4ZXItPm5leHRUb2tlbihtX3NvdXJjZSwgbV90b2tlbikpIHsKKyAgICB3aGlsZSAoIW1f
cGFyc2VyU3RvcHBlZCAmJiBtX2xleGVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1f
dG9rZW4pKSB7CiAgICAgICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4o
bV90b2tlbik7CiAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKIApAQCAtMTEyLDIyICsxMTIsMzAg
QEAgdm9pZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVyKCkKICAgICB9CiB9CiAKLXZvaWQgSFRN
TDVUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sKQor
dm9pZCBIVE1MNVRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IGJvb2wgYXBwZW5kRGF0YSkKIHsKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlcihtX3dyaXRlTmVzdGluZ0xldmVsKTsKIAotICAgIC8vIEhUTUw1VG9rZW5pemVyOjpleGVj
dXRlU2NyaXB0IGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBzYXZpbmcgbV9zb3VyY2UgYmVm
b3JlIHJlLWVudHJ5LgotICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOworICAgIGlmIChhcHBl
bmREYXRhKSB7CisgICAgICAgIG1faW5wdXQuYXBwZW5kVG9FbmQoc291cmNlKTsKKyAgICAgICAg
aWYgKG1fd3JpdGVOZXN0aW5nTGV2ZWwgPiAxKSB7CisgICAgICAgICAgICAvLyBXZSd2ZSBnb3R0
ZW4gZGF0YSBvZmYgdGhlIG5ldHdvcmsgaW4gYSBuZXN0ZWQgY2FsbCB0byB3cml0ZSgpLgorICAg
ICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb25zdW1lIGFueSBtb3JlIG9mIHRoZSBpbnB1
dCBzdHJlYW0gbm93LiAgRG8KKyAgICAgICAgICAgIC8vIG5vdCB3b3JyeS4gIFdlJ2xsIGNvbnN1
bWUgdGhpcyBkYXRhIGluIGEgbGVzcy1uZXN0ZWQgd3JpdGUoKS4KKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX2lucHV0Lmluc2VydEF0Q3VycmVu
dEluc2VydGlvblBvaW50KHNvdXJjZSk7CisKICAgICBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAg
ICAgZW5kSWZEZWxheWVkKCk7CiB9CiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmVuZCgpCiB7Ci0g
ICAgbV9zb3VyY2UuY2xvc2UoKTsKICAgICBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAgICAgLy8g
SW5mb3JtcyB0aGUgdGhlIHJlc3Qgb2YgV2ViQ29yZSB0aGF0IHBhcnNpbmcgaXMgcmVhbGx5IGZp
bmlzaGVkLgogICAgIG1fdHJlZUJ1aWxkZXItPmZpbmlzaGVkKCk7CkBAIC0xNTYsOSArMTY0LDkg
QEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZW5kSWZEZWxheWVkKCkKIAogdm9pZCBIVE1MNVRva2Vu
aXplcjo6ZmluaXNoKCkKIHsKLSAgICAvLyBXZSBjYW4ndCBjYWxsIG1fc291cmNlLmNsb3NlKCkg
eWV0IGFzIHdlIG1heSBoYXZlIGEgPHNjcmlwdD4gZXhlY3V0aW9uCi0gICAgLy8gcGVuZGluZyB3
aGljaCB3aWxsIGNhbGwgZG9jdW1lbnQud3JpdGUoKS4gIE5vIG1vcmUgZGF0YSBvZmYgdGhlIG5l
dHdvcmsgdGhvdWdoLgotICAgIC8vIGVuZCgpIGNhbGxzIERvY3VtZW50OjpmaW5pc2hlZFBhcnNp
bmcoKSBvbmNlIHdlJ3JlIGFjdHVhbGx5IGRvbmUgcGFyc2luZy4KKyAgICAvLyBXZSdyZSBub3Qg
Z29pbmcgdG8gZ2V0IGFueSBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrLCBzbyB3ZSBjbG9zZSB0
aGUKKyAgICAvLyBpbnB1dCBzdHJlYW0gdG8gaW5kaWNhdGUgRU9GLgorICAgIG1faW5wdXQuY2xv
c2UoKTsKICAgICBhdHRlbXB0VG9FbmQoKTsKIH0KIApAQCAtMjExLDE3ICsyMTksOCBAQCB2b2lk
IEhUTUw1VG9rZW5pemVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUpCiAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigp
KTsKICAgICBpZiAoIW1fZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKLQotICAg
IFNlZ21lbnRlZFN0cmluZyBvbGRJbnNlcnRpb25Qb2ludCA9IG1fc291cmNlOwotICAgIG1fc291
cmNlID0gU2VnbWVudGVkU3RyaW5nKCk7CisgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgc2F2ZWRJ
bnNlcnRpb25Qb2ludChtX2lucHV0KTsKICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQo
KS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKLSAgICAvLyBBcHBlbmQgb2xkSW5zZXJ0aW9u
UG9pbnQgb250byB0aGUgbmV3IChsaWtlbHkgZW1wdHkpIG1fc291cmNlIGluc3RlYWQgb2YKLSAg
ICAvLyBvbGRJbnNlcnRpb25Qb2ludC5wcmVwZW50KG1fc291cmNlKSBhcyB0aGF0IHdvdWxkIEFT
U0VSVCBpZgotICAgIC8vIG1fc291cmNlLmVzY2FwZWQoKSAoaXQgaGFkIGNoYXJhY3RlcnMgcHVz
aGVkIGJhY2sgb250byBpdCkuCi0gICAgLy8gSWYgbV9zb3VyY2Ugd2FzIGNsb3NlZCwgdGhlbiB0
aGUgdG9rZW5pemVyIHdhcyBzdG9wcGVkLCBhbmQgd2UgZGlzY2FyZAotICAgIC8vIGFueSBwZW5k
aW5nIGRhdGEgYXMgdGhvdWdoIGFuIEVPRiBjaGFyYWN0ZXIgd2FzIGluc2VydGVkIGludG8gdGhl
IHN0cmVhbS4KLSAgICBpZiAoIW1fc291cmNlLmlzQ2xvc2VkKCkpCi0gICAgICAgIG1fc291cmNl
LmFwcGVuZChvbGRJbnNlcnRpb25Qb2ludCk7CiB9CiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5p
emVyLmgKaW5kZXggMTBmM2M4MDk3NmMxYzdmOTIxYjdkOGI1OGM5MDg2NjgzN2I2MjRkOC4uNjI1
NzczNDNkNmZmMTkzNzg0MDYwOGQ3NmUwZWUyOWEwZmU3YWEyNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVy
LmgKQEAgLTY5LDYgKzY5LDc4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNlcnRpb25Q
b2ludFJlY29yZDsKKworICAgIC8vIFRoZSBJbnB1dFN0cmVhbSBpcyBtYWRlIHVwIG9mIGEgc2Vx
dWVuY2Ugb2YgU2VnbWVudGVkU3RyaW5nczoKKyAgICAvLworICAgIC8vIFstLWN1cnJlbnQtLV1b
LS1hZnRlckluc2VydGlvblBvaW50LS1dWy0tYWZ0ZXJJbnNlcnRpb25Qb2ludC0tXQorICAgIC8v
ICAgICAgICAgICAgL1wKKyAgICAvLyAgICAgICAgICAgIExfIGN1cnJlbnQgaW5zZXJ0aW9uIHBv
aW50CisgICAgLy8KKyAgICAvLyBUaGUgY3VycmVudCBzZWdtZW50ZWQgc3RyaW5nIGlzIHN0b3Jl
ZCBpbiBJbnB1dFN0cmVhbS4gIEVhY2ggb2YgdGhlCisgICAgLy8gYWZ0ZXJJbnNlcnRpb25Qb2lu
dCBidWZmZXJzIGFyZSBzdG9yZWQgaW4gSW5zZXJ0aW9uUG9pbnRSZWNvcmRzIG9uIHRoZQorICAg
IC8vIHN0YWNrLgorICAgIC8vCisgICAgLy8gV2UgcmVtb3ZlIGNoYXJhY3RlcnMgZnJvbSB0aGUg
ImN1cnJlbnQiIHN0cmluZyBpbiB0aGUgSW5wdXRTdHJlYW0uCisgICAgLy8gZG9jdW1lbnQud3Jp
dGUoKSB3aWxsIGFkZCBjaGFyYWN0ZXJzIGF0IHRoZSBjdXJyZW50IGluc2VydGlvbiBwb2ludCwK
KyAgICAvLyB3aGljaCBhcHBlbmRzIHRoZW0gdG8gdGhlICJjdXJyZW50IiBzdHJpbmcuCisgICAg
Ly8KKyAgICAvLyBtX2xhc3QgaXMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9mIHRoZSBhZnRlcklu
c2VydGlvblBvaW50IHN0cmluZ3MuCisgICAgLy8gVGhlIG5ldHdvcmsgYWRkcyBkYXRhIGF0IHRo
ZSBlbmQgb2YgdGhlIElucHV0U3RyZWFtLCB3aGljaCBhcHBlbmRzCisgICAgLy8gdGhlbSB0byB0
aGUgImxhc3QiIHN0cmluZy4KKyAgICBjbGFzcyBJbnB1dFN0cmVhbSB7CisgICAgcHVibGljOgor
ICAgICAgICBJbnB1dFN0cmVhbSgpCisgICAgICAgICAgICA6IG1fbGFzdCgmbV9jdXJyZW50KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFwcGVuZFRvRW5kKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xhc3QtPmFw
cGVuZChzdHJpbmcpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBpbnNlcnRBdEN1cnJlbnRJ
bnNlcnRpb25Qb2ludChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHN0cmluZykKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9jdXJyZW50LmFwcGVuZChzdHJpbmcpOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBjbG9zZSgpIHsgbV9sYXN0LT5jbG9zZSgpOyB9CisKKyAgICAgICAgU2VnbWVudGVk
U3RyaW5nJiBjdXJyZW50KCkgeyByZXR1cm4gbV9jdXJyZW50OyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uUG9pbnRSZWNvcmQ7CisKKyAgICAgICAgU2Vn
bWVudGVkU3RyaW5nIG1fY3VycmVudDsKKyAgICAgICAgU2VnbWVudGVkU3RyaW5nKiBtX2xhc3Q7
CisgICAgfTsKKworICAgIGNsYXNzIEluc2VydGlvblBvaW50UmVjb3JkIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEluc2VydGlvblBvaW50UmVjb3JkKElucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSkK
KyAgICAgICAgICAgIDogbV9pbnB1dFN0cmVhbSgmaW5wdXRTdHJlYW0pCisgICAgICAgICAgICAs
IG1fYWZ0ZXJJbnNlcnRpb25Qb2ludChpbnB1dFN0cmVhbS5tX2N1cnJlbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPm1fY3VycmVudCA9IFNlZ21lbnRlZFN0cmluZygp
OworICAgICAgICAgICAgaWYgKG1faW5wdXRTdHJlYW0tPm1fbGFzdCA9PSAmbV9pbnB1dFN0cmVh
bS0+bV9jdXJyZW50KQorICAgICAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPm1fbGFzdCA9ICZt
X2FmdGVySW5zZXJ0aW9uUG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICB+SW5zZXJ0aW9uUG9p
bnRSZWNvcmQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2lucHV0U3RyZWFtLT5tX2N1cnJl
bnQuYXBwZW5kKG1fYWZ0ZXJJbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICBpZiAobV9pbnB1
dFN0cmVhbS0+bV9sYXN0ID09ICZtX2FmdGVySW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICAg
ICAgbV9pbnB1dFN0cmVhbS0+bV9sYXN0ID0gJm1faW5wdXRTdHJlYW0tPm1fY3VycmVudDsKKyAg
ICAgICAgICAgIGlmIChtX2FmdGVySW5zZXJ0aW9uUG9pbnQuaXNDbG9zZWQoKSkKKyAgICAgICAg
ICAgICAgICBtX2lucHV0U3RyZWFtLT5tX2N1cnJlbnQuY2xvc2UoKTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgSW5wdXRTdHJlYW0qIG1faW5wdXRTdHJlYW07CisgICAgICAg
IFNlZ21lbnRlZFN0cmluZyBtX2FmdGVySW5zZXJ0aW9uUG9pbnQ7CisgICAgfTsKKwogICAgIHZv
aWQgcHVtcExleGVyKCk7CiAgICAgdm9pZCBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAgICAgdm9p
ZCByZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKQEAgLTc3LDcgKzE0OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBlbmRJZkRlbGF5ZWQoKTsKICAgICBib29sIGluV3JpdGUoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlTmVzdGluZ0xldmVsID4gMDsgfQogCi0gICAgU2VnbWVudGVk
U3RyaW5nIG1fc291cmNlOworICAgIElucHV0U3RyZWFtIG1faW5wdXQ7CiAKICAgICAvLyBXZSBo
b2xkIG1fdG9rZW4gaGVyZSBiZWNhdXNlIGl0IG1pZ2h0IGJlIHBhcnRpYWxseSBjb21wbGV0ZS4K
ICAgICBIVE1MNVRva2VuIG1fdG9rZW47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU2VnbWVudGVkU3RyaW5nLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRT
dHJpbmcuY3BwCmluZGV4IDJjZjlhMDE2MWU5NDM2ZTE0YmJlYWMxNjAwMDA5N2ZiOTQzMjg5MDgu
LjlmZjFjNDU3YjM2ZjQ4YzQ1YzExOWRmN2Q2ZTU4MDk3NTgyNjc4YTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCkBAIC01MSw2ICs1MSw3IEBAIGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgU2VnbWVudGVkU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgU2VnbWVudGVk
U3RyaW5nICZvdGhlcikKICAgICAgICAgbV9jdXJyZW50Q2hhciA9ICZtX3B1c2hlZENoYXIyOwog
ICAgIGVsc2UKICAgICAgICAgbV9jdXJyZW50Q2hhciA9IG90aGVyLm1fY3VycmVudENoYXI7Cisg
ICAgbV9jbG9zZWQgPSBvdGhlci5tX2Nsb3NlZDsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58251</attachid>
            <date>2010-06-09 09:13:47 -0700</date>
            <delta_ts>2010-06-09 16:29:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40356-20100609091346.patch</filename>
            <type>text/plain</type>
            <size>9596</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGE3YzM2YjU4ZDU1NTQwMzk5YTRiMzI0MGJhYWMyYTU5ZjBjNWM5MS4uNjdjZTZlOWUwZTM1MGMz
NWExMDg4ZWUzYTg1ZDQwNDhkN2Y1YzA5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wNi0wOSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBoYW5kbGluZyBvZiBieXRlcyByZWNlaXZlZCBmcm9t
IHRoZSBuZXR3b3JrIHdoaWxlIGluIGRvY3VtZW50LndyaXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM1NgorCisgICAgICAgIFRoZSBvbGQgdG9r
ZW5pemVyIGhhcyBzcGVjaWFsbHkgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBjYXNlIG9mCisgICAg
ICAgIHJlY2VpdmluZyBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIHdoaWxlIGluIGEgbmVzdGVkIGNh
bGwgdG8KKyAgICAgICAgZG9jdW1lbnQud3JpdGUuICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc2lt
aWxhciBsb2dpYyBmb3IgdGhlIEhUTUw1CisgICAgICAgIHRva2VuaXplci4gIEFsc28sIHRoaXMg
cGF0Y2ggYWJzdHJhY3RzIHRoZSB0cmlja3kgc2h1ZmZsaW5nIG9mCisgICAgICAgIFNlZ21lbnRl
ZFN0cmluZ3MgYmVoaW5kIGEgc2ltcGxlIEFQSS4KKworICAgICAgICBJJ20gbm90IHN1cmUgaG93
IHRvIHRyaWdnZXIgdGhpcyBjYXNlLiAgTXkgZ3Vlc3MgaXMgd2UgY2FuIHRyaWdnZXIgaXQKKyAg
ICAgICAgdXNpbmcgYSBuZXN0ZWQgZXZlbnQgbG9vcCwgZS5nLiwgdmlhIGFsZXJ0KCksIGJ1dCBJ
J20gbm90IHN1cmUgaG93IHRvCisgICAgICAgIHRlc3QgdGhhdCBpbiBhIExheW91dFRlc3QuICBU
aGVyZSBkb24ndCBhcHBlYXIgdG8gYmUgYW55IExheW91dFRlc3RzCisgICAgICAgIHRoYXQgY3Vy
cmVudGx5IHRlc3QgdGhpcyBiZWhhdmlvciBkZXNwaXRlIGl0IGJlaW5nIHByZXNlbnQgaW4gdGhl
IG9sZAorICAgICAgICB0b2tlbml6ZXIuCisKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpwdW1wTGV4ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgICAgIC0gQWRk
ZWQgYSBicmFuY2ggZm9yIHRoZSB8YXBwZW5kfCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUw1VG9rZW5pemVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlw
dCk6CisgICAgICAgICAgICAtIFN3aXRjaCBvdmVyIHRvIHVzaW5nIGEgUkFJSSBwYXR0ZXJuIGZv
ciByZWNvcmRpbmcgYW5kIHJlc3RvcmluZworICAgICAgICAgICAgICBpbnNlcnRpb24gcG9pbnRz
LgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tlbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUw1VG9rZW5pemVyOjpJbnB1dFN0cmVhbTo6SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVUb2tlbml6ZXI6OklucHV0U3RyZWFtOjphcHBlbmRUb0VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06Omluc2VydEF0Q3VycmVudEluc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnB1dFN0cmVh
bTo6Y2xvc2UpOgorICAgICAgICAgICAgLSBQdXR0aW5nIHRoZSBjbG9zZSgpIG1ldGhvZCBvbiBJ
bnB1dFN0cmVhbSBtYWtlcyBpdCBtdWNoIGVhc2llciB0bworICAgICAgICAgICAgICBoYW5kbGUg
RU9GLiAgV2Ugbm93IGp1c3QgY2xvc2UgdGhlIGxhc3QgYnVmZmVyIGluIHRoZSBzdHJlYW0gd2hl
bgorICAgICAgICAgICAgICB0aGUgbmV0d29yayBzYXlzIGl0J3MgZG9uZS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnB1dFN0cmVhbTo6Y3VycmVudCk6CisgICAgICAgICAg
ICAtIFRoaXMgY2xhc3MgY291bGQgYmUgbW92ZWQgdG8gaXRzIG93biBmaWxlLCBidXQgaXQgc2hv
dWxkbid0IGJlCisgICAgICAgICAgICAgIHVzZWQgb3V0c2lkZSBvZiB0aGUgdG9rZW5pemVyLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6Okluc2VydGlvblBvaW50UmVjb3JkOjpJ
bnNlcnRpb25Qb2ludFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6
SW5zZXJ0aW9uUG9pbnRSZWNvcmQ6On5JbnNlcnRpb25Qb2ludFJlY29yZCk6CisgICAgICAgICAg
ICAtIEEgc2ltcGxlIFJBSUkgY2xhc3MgZm9yIG1hbmFnaW5nIHNhdmVkIGluc2VydGlvbiBwb2lu
dHMuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAgICAgLSBG
aXggYSByZWxhdGVkIGJ1ZyB3aGVyZSBtX2Nsb3NlZCB3YXMgbm90IGJlaW5nIGNvcGllZCBwcm9w
ZXJseSBpbgorICAgICAgICAgICAgICB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KKwogMjAxMC0w
NS0xOCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVU
b2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAppbmRleCAzNzVh
ZGU0MzMxNDNjOGNhYTUxYTkyYWVkMThkZjYyMTE4NmU4ZTY3Li5hYzczMmIyNzdhOWQ5ODdiMWMy
ZmQxM2EzOGFmYjYyNDFlZmZkY2NkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tl
bml6ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKQEAgLTk0LDcg
Kzk0LDcgQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVyKCkKIHsKICAgICBBU1NFUlQo
IW1fcGFyc2VyU3RvcHBlZCk7CiAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgp
KTsKLSAgICB3aGlsZSAoIW1fcGFyc2VyU3RvcHBlZCAmJiBtX2xleGVyLT5uZXh0VG9rZW4obV9z
b3VyY2UsIG1fdG9rZW4pKSB7CisgICAgd2hpbGUgKCFtX3BhcnNlclN0b3BwZWQgJiYgbV9sZXhl
ci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkgewogICAgICAgICBtX3Ry
ZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rv
a2VuLmNsZWFyKCk7CiAKQEAgLTExMiwyMiArMTEyLDMwIEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6
OnB1bXBMZXhlcigpCiAgICAgfQogfQogCi12b2lkIEhUTUw1VG9rZW5pemVyOjp3cml0ZShjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCkKK3ZvaWQgSFRNTDVUb2tlbml6ZXI6Ondy
aXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sIGFwcGVuZERhdGEpCiB7CiAg
ICAgaWYgKG1fcGFyc2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTmVzdGluZ0xl
dmVsSW5jcmVtZW50ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50ZXIobV93cml0ZU5lc3RpbmdMZXZl
bCk7CiAKLSAgICAvLyBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdCBpcyByZXNwb25zaWJs
ZSBmb3IgaGFuZGxpbmcgc2F2aW5nIG1fc291cmNlIGJlZm9yZSByZS1lbnRyeS4KLSAgICBtX3Nv
dXJjZS5hcHBlbmQoc291cmNlKTsKKyAgICBpZiAoYXBwZW5kRGF0YSkgeworICAgICAgICBtX2lu
cHV0LmFwcGVuZFRvRW5kKHNvdXJjZSk7CisgICAgICAgIGlmIChtX3dyaXRlTmVzdGluZ0xldmVs
ID4gMSkgeworICAgICAgICAgICAgLy8gV2UndmUgZ290dGVuIGRhdGEgb2ZmIHRoZSBuZXR3b3Jr
IGluIGEgbmVzdGVkIGNhbGwgdG8gd3JpdGUoKS4KKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gY29uc3VtZSBhbnkgbW9yZSBvZiB0aGUgaW5wdXQgc3RyZWFtIG5vdy4gIERvCisgICAg
ICAgICAgICAvLyBub3Qgd29ycnkuICBXZSdsbCBjb25zdW1lIHRoaXMgZGF0YSBpbiBhIGxlc3Mt
bmVzdGVkIHdyaXRlKCkuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgbV9pbnB1dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludChzb3VyY2Up
OworCiAgICAgcHVtcExleGVySWZQb3NzaWJsZSgpOwogICAgIGVuZElmRGVsYXllZCgpOwogfQog
CiB2b2lkIEhUTUw1VG9rZW5pemVyOjplbmQoKQogewotICAgIG1fc291cmNlLmNsb3NlKCk7CiAg
ICAgcHVtcExleGVySWZQb3NzaWJsZSgpOwogICAgIC8vIEluZm9ybXMgdGhlIHRoZSByZXN0IG9m
IFdlYkNvcmUgdGhhdCBwYXJzaW5nIGlzIHJlYWxseSBmaW5pc2hlZC4KICAgICBtX3RyZWVCdWls
ZGVyLT5maW5pc2hlZCgpOwpAQCAtMTU2LDkgKzE2NCw5IEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6
OmVuZElmRGVsYXllZCgpCiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmZpbmlzaCgpCiB7Ci0gICAg
Ly8gV2UgY2FuJ3QgY2FsbCBtX3NvdXJjZS5jbG9zZSgpIHlldCBhcyB3ZSBtYXkgaGF2ZSBhIDxz
Y3JpcHQ+IGV4ZWN1dGlvbgotICAgIC8vIHBlbmRpbmcgd2hpY2ggd2lsbCBjYWxsIGRvY3VtZW50
LndyaXRlKCkuICBObyBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrIHRob3VnaC4KLSAgICAvLyBl
bmQoKSBjYWxscyBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkgb25jZSB3ZSdyZSBhY3R1YWxs
eSBkb25lIHBhcnNpbmcuCisgICAgLy8gV2UncmUgbm90IGdvaW5nIHRvIGdldCBhbnkgbW9yZSBk
YXRhIG9mZiB0aGUgbmV0d29yaywgc28gd2UgY2xvc2UgdGhlCisgICAgLy8gaW5wdXQgc3RyZWFt
IHRvIGluZGljYXRlIEVPRi4KKyAgICBtX2lucHV0LmNsb3NlKCk7CiAgICAgYXR0ZW1wdFRvRW5k
KCk7CiB9CiAKQEAgLTIxMSwxNyArMjE5LDggQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIEFTU0VSVCht
X3NjcmlwdFJ1bm5lci0+aW5TY3JpcHRFeGVjdXRpb24oKSk7CiAgICAgaWYgKCFtX2RvY3VtZW50
LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBTZWdtZW50ZWRTdHJpbmcgb2xkSW5z
ZXJ0aW9uUG9pbnQgPSBtX3NvdXJjZTsKLSAgICBtX3NvdXJjZSA9IFNlZ21lbnRlZFN0cmluZygp
OworICAgIEluc2VydGlvblBvaW50UmVjb3JkIHNhdmVkSW5zZXJ0aW9uUG9pbnQobV9pbnB1dCk7
CiAgICAgbV9kb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc291cmNl
Q29kZSk7Ci0gICAgLy8gQXBwZW5kIG9sZEluc2VydGlvblBvaW50IG9udG8gdGhlIG5ldyAobGlr
ZWx5IGVtcHR5KSBtX3NvdXJjZSBpbnN0ZWFkIG9mCi0gICAgLy8gb2xkSW5zZXJ0aW9uUG9pbnQu
cHJlcGVudChtX3NvdXJjZSkgYXMgdGhhdCB3b3VsZCBBU1NFUlQgaWYKLSAgICAvLyBtX3NvdXJj
ZS5lc2NhcGVkKCkgKGl0IGhhZCBjaGFyYWN0ZXJzIHB1c2hlZCBiYWNrIG9udG8gaXQpLgotICAg
IC8vIElmIG1fc291cmNlIHdhcyBjbG9zZWQsIHRoZW4gdGhlIHRva2VuaXplciB3YXMgc3RvcHBl
ZCwgYW5kIHdlIGRpc2NhcmQKLSAgICAvLyBhbnkgcGVuZGluZyBkYXRhIGFzIHRob3VnaCBhbiBF
T0YgY2hhcmFjdGVyIHdhcyBpbnNlcnRlZCBpbnRvIHRoZSBzdHJlYW0uCi0gICAgaWYgKCFtX3Nv
dXJjZS5pc0Nsb3NlZCgpKQotICAgICAgICBtX3NvdXJjZS5hcHBlbmQob2xkSW5zZXJ0aW9uUG9p
bnQpOwogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tl
bml6ZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5oCmluZGV4IDEwZjNjODA5NzZj
MWM3ZjkyMWI3ZDhiNThjOTA4NjY4MzdiNjI0ZDguLmUwNGRiODVhMmMyMDQzYzcyMjExNTcxNmEz
MDE2MmI0NzZiZmM3ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5oCkBAIC02OSw2ICs2OSw3OCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7
CiAKIHByaXZhdGU6CisgICAgY2xhc3MgSW5zZXJ0aW9uUG9pbnRSZWNvcmQ7CisKKyAgICAvLyBU
aGUgSW5wdXRTdHJlYW0gaXMgbWFkZSB1cCBvZiBhIHNlcXVlbmNlIG9mIFNlZ21lbnRlZFN0cmlu
Z3M6CisgICAgLy8KKyAgICAvLyBbLS1jdXJyZW50LS1dWy0tYWZ0ZXJJbnNlcnRpb25Qb2ludC0t
XVstLWFmdGVySW5zZXJ0aW9uUG9pbnQtLV0KKyAgICAvLyAgICAgICAgICAgIC9cICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYWxzbyBjYWxsZWQgbV9sYXN0KQorICAgIC8vICAgICAgICAgICAg
TF8gY3VycmVudCBpbnNlcnRpb24gcG9pbnQKKyAgICAvLworICAgIC8vIFRoZSBjdXJyZW50IHNl
Z21lbnRlZCBzdHJpbmcgaXMgc3RvcmVkIGluIElucHV0U3RyZWFtLiAgRWFjaCBvZiB0aGUKKyAg
ICAvLyBhZnRlckluc2VydGlvblBvaW50IGJ1ZmZlcnMgYXJlIHN0b3JlZCBpbiBJbnNlcnRpb25Q
b2ludFJlY29yZHMgb24gdGhlCisgICAgLy8gc3RhY2suCisgICAgLy8KKyAgICAvLyBXZSByZW1v
dmUgY2hhcmFjdGVycyBmcm9tIHRoZSAiY3VycmVudCIgc3RyaW5nIGluIHRoZSBJbnB1dFN0cmVh
bS4KKyAgICAvLyBkb2N1bWVudC53cml0ZSgpIHdpbGwgYWRkIGNoYXJhY3RlcnMgYXQgdGhlIGN1
cnJlbnQgaW5zZXJ0aW9uIHBvaW50LAorICAgIC8vIHdoaWNoIGFwcGVuZHMgdGhlbSB0byB0aGUg
ImN1cnJlbnQiIHN0cmluZy4KKyAgICAvLworICAgIC8vIG1fbGFzdCBpcyBhIHBvaW50ZXIgdG8g
dGhlIGxhc3Qgb2YgdGhlIGFmdGVySW5zZXJ0aW9uUG9pbnQgc3RyaW5ncy4KKyAgICAvLyBUaGUg
bmV0d29yayBhZGRzIGRhdGEgYXQgdGhlIGVuZCBvZiB0aGUgSW5wdXRTdHJlYW0sIHdoaWNoIGFw
cGVuZHMKKyAgICAvLyB0aGVtIHRvIHRoZSAibGFzdCIgc3RyaW5nLgorICAgIGNsYXNzIElucHV0
U3RyZWFtIHsKKyAgICBwdWJsaWM6CisgICAgICAgIElucHV0U3RyZWFtKCkKKyAgICAgICAgICAg
IDogbV9sYXN0KCZtX2N1cnJlbnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgYXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHJpbmcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGFzdC0+YXBwZW5kKHN0cmluZyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGluc2VydEF0Q3VycmVudEluc2VydGlvblBvaW50KGNvbnN0IFNlZ21lbnRlZFN0cmlu
ZyYgc3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2N1cnJlbnQuYXBwZW5kKHN0cmlu
Zyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsb3NlKCkgeyBtX2xhc3QtPmNsb3NlKCk7
IH0KKworICAgICAgICBTZWdtZW50ZWRTdHJpbmcmIGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJl
bnQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25Qb2lu
dFJlY29yZDsKKworICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9jdXJyZW50OworICAgICAgICBT
ZWdtZW50ZWRTdHJpbmcqIG1fbGFzdDsKKyAgICB9OworCisgICAgY2xhc3MgSW5zZXJ0aW9uUG9p
bnRSZWNvcmQgeworICAgIHB1YmxpYzoKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQoSW5w
dXRTdHJlYW0mIGlucHV0U3RyZWFtKQorICAgICAgICAgICAgOiBtX2lucHV0U3RyZWFtKCZpbnB1
dFN0cmVhbSkKKyAgICAgICAgICAgICwgbV9hZnRlckluc2VydGlvblBvaW50KGlucHV0U3RyZWFt
Lm1fY3VycmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnB1dFN0cmVhbS0+bV9jdXJy
ZW50ID0gU2VnbWVudGVkU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAobV9pbnB1dFN0cmVhbS0+
bV9sYXN0ID09ICZtX2lucHV0U3RyZWFtLT5tX2N1cnJlbnQpCisgICAgICAgICAgICAgICAgbV9p
bnB1dFN0cmVhbS0+bV9sYXN0ID0gJm1fYWZ0ZXJJbnNlcnRpb25Qb2ludDsKKyAgICAgICAgfQor
CisgICAgICAgIH5JbnNlcnRpb25Qb2ludFJlY29yZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1faW5wdXRTdHJlYW0tPm1fY3VycmVudC5hcHBlbmQobV9hZnRlckluc2VydGlvblBvaW50KTsK
KyAgICAgICAgICAgIGlmIChtX2lucHV0U3RyZWFtLT5tX2xhc3QgPT0gJm1fYWZ0ZXJJbnNlcnRp
b25Qb2ludCkKKyAgICAgICAgICAgICAgICBtX2lucHV0U3RyZWFtLT5tX2xhc3QgPSAmbV9pbnB1
dFN0cmVhbS0+bV9jdXJyZW50OworICAgICAgICAgICAgaWYgKG1fYWZ0ZXJJbnNlcnRpb25Qb2lu
dC5pc0Nsb3NlZCgpKQorICAgICAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPm1fY3VycmVudC5j
bG9zZSgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJbnB1dFN0cmVhbSog
bV9pbnB1dFN0cmVhbTsKKyAgICAgICAgU2VnbWVudGVkU3RyaW5nIG1fYWZ0ZXJJbnNlcnRpb25Q
b2ludDsKKyAgICB9OworCiAgICAgdm9pZCBwdW1wTGV4ZXIoKTsKICAgICB2b2lkIHB1bXBMZXhl
cklmUG9zc2libGUoKTsKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlv
bigpOwpAQCAtNzcsNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuZElmRGVsYXllZCgp
OwogICAgIGJvb2wgaW5Xcml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVOZXN0aW5nTGV2ZWwg
PiAwOyB9CiAKLSAgICBTZWdtZW50ZWRTdHJpbmcgbV9zb3VyY2U7CisgICAgSW5wdXRTdHJlYW0g
bV9pbnB1dDsKIAogICAgIC8vIFdlIGhvbGQgbV90b2tlbiBoZXJlIGJlY2F1c2UgaXQgbWlnaHQg
YmUgcGFydGlhbGx5IGNvbXBsZXRlLgogICAgIEhUTUw1VG9rZW4gbV90b2tlbjsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKaW5kZXggMmNmOWEwMTYxZTk0MzZlMTRi
YmVhYzE2MDAwMDk3ZmI5NDMyODkwOC4uOWZmMWM0NTdiMzZmNDhjNDVjMTE5ZGY3ZDZlNTgwOTc1
ODI2NzhhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmlu
Zy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKQEAg
LTUxLDYgKzUxLDcgQEAgY29uc3QgU2VnbWVudGVkU3RyaW5nJiBTZWdtZW50ZWRTdHJpbmc6Om9w
ZXJhdG9yPShjb25zdCBTZWdtZW50ZWRTdHJpbmcgJm90aGVyKQogICAgICAgICBtX2N1cnJlbnRD
aGFyID0gJm1fcHVzaGVkQ2hhcjI7CiAgICAgZWxzZQogICAgICAgICBtX2N1cnJlbnRDaGFyID0g
b3RoZXIubV9jdXJyZW50Q2hhcjsKKyAgICBtX2Nsb3NlZCA9IG90aGVyLm1fY2xvc2VkOwogICAg
IHJldHVybiAqdGhpczsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58307</attachid>
            <date>2010-06-09 16:29:35 -0700</date>
            <delta_ts>2010-06-09 17:06:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40356-20100609162934.patch</filename>
            <type>text/plain</type>
            <size>9370</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDYtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
aGFuZGxpbmcgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yayB3aGlsZSBpbiBkb2N1
bWVudC53cml0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAzNTYKKworICAgICAgICBUaGUgb2xkIHRva2VuaXplciBoYXMgc3BlY2lhbGx5IGxvZ2lj
IGZvciBoYW5kbGluZyB0aGUgY2FzZSBvZgorICAgICAgICByZWNlaXZpbmcgYnl0ZXMgZnJvbSB0
aGUgbmV0d29yayB3aGlsZSBpbiBhIG5lc3RlZCBjYWxsIHRvCisgICAgICAgIGRvY3VtZW50Lndy
aXRlLiAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNpbWlsYXIgbG9naWMgZm9yIHRoZSBIVE1MNQor
ICAgICAgICB0b2tlbml6ZXIuICBBbHNvLCB0aGlzIHBhdGNoIGFic3RyYWN0cyB0aGUgdHJpY2t5
IHNodWZmbGluZyBvZgorICAgICAgICBTZWdtZW50ZWRTdHJpbmdzIGJlaGluZCBhIHNpbXBsZSBB
UEkuCisKKyAgICAgICAgSSdtIG5vdCBzdXJlIGhvdyB0byB0cmlnZ2VyIHRoaXMgY2FzZS4gIE15
IGd1ZXNzIGlzIHdlIGNhbiB0cmlnZ2VyIGl0CisgICAgICAgIHVzaW5nIGEgbmVzdGVkIGV2ZW50
IGxvb3AsIGUuZy4sIHZpYSBhbGVydCgpLCBidXQgSSdtIG5vdCBzdXJlIGhvdyB0bworICAgICAg
ICB0ZXN0IHRoYXQgaW4gYSBMYXlvdXRUZXN0LiAgVGhlcmUgZG9uJ3QgYXBwZWFyIHRvIGJlIGFu
eSBMYXlvdXRUZXN0cworICAgICAgICB0aGF0IGN1cnJlbnRseSB0ZXN0IHRoaXMgYmVoYXZpb3Ig
ZGVzcGl0ZSBpdCBiZWluZyBwcmVzZW50IGluIHRoZSBvbGQKKyAgICAgICAgdG9rZW5pemVyLgor
CisgICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRva2VuaXplcjo6cHVtcExleGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5p
emVyOjp3cml0ZSk6CisgICAgICAgICAgICAtIEFkZGVkIGEgYnJhbmNoIGZvciB0aGUgfGFwcGVu
ZHwgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHQpOgorICAgICAgICAgICAgLSBTd2l0Y2gg
b3ZlciB0byB1c2luZyBhIFJBSUkgcGF0dGVybiBmb3IgcmVjb3JkaW5nIGFuZCByZXN0b3JpbmcK
KyAgICAgICAgICAgICAgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgKiBodG1sL0hUTUw1VG9r
ZW5pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06
OklucHV0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnB1dFN0
cmVhbTo6YXBwZW5kVG9FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6Oklu
cHV0U3RyZWFtOjppbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06OmNsb3NlKToKKyAgICAgICAgICAgIC0g
UHV0dGluZyB0aGUgY2xvc2UoKSBtZXRob2Qgb24gSW5wdXRTdHJlYW0gbWFrZXMgaXQgbXVjaCBl
YXNpZXIgdG8KKyAgICAgICAgICAgICAgaGFuZGxlIEVPRi4gIFdlIG5vdyBqdXN0IGNsb3NlIHRo
ZSBsYXN0IGJ1ZmZlciBpbiB0aGUgc3RyZWFtIHdoZW4KKyAgICAgICAgICAgICAgdGhlIG5ldHdv
cmsgc2F5cyBpdCdzIGRvbmUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5w
dXRTdHJlYW06OmN1cnJlbnQpOgorICAgICAgICAgICAgLSBUaGlzIGNsYXNzIGNvdWxkIGJlIG1v
dmVkIHRvIGl0cyBvd24gZmlsZSwgYnV0IGl0IHNob3VsZG4ndCBiZQorICAgICAgICAgICAgICB1
c2VkIG91dHNpZGUgb2YgdGhlIHRva2VuaXplci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9r
ZW5pemVyOjpJbnNlcnRpb25Qb2ludFJlY29yZDo6SW5zZXJ0aW9uUG9pbnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6Okluc2VydGlvblBvaW50UmVjb3JkOjp+SW5z
ZXJ0aW9uUG9pbnRSZWNvcmQpOgorICAgICAgICAgICAgLSBBIHNpbXBsZSBSQUlJIGNsYXNzIGZv
ciBtYW5hZ2luZyBzYXZlZCBpbnNlcnRpb24gcG9pbnRzLgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvU2VnbWVudGVkU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmlu
Zzo6b3BlcmF0b3I9KToKKyAgICAgICAgICAgIC0gRml4IGEgcmVsYXRlZCBidWcgd2hlcmUgbV9j
bG9zZWQgd2FzIG5vdCBiZWluZyBjb3BpZWQgcHJvcGVybHkgaW4KKyAgICAgICAgICAgICAgdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKIDIwMTAtMDYtMDkgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiA2MDkxOSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MNVRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVyKCkKIHsKICAgICBBU1NFUlQoIW1fcGFyc2VyU3Rv
cHBlZCk7CiAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKLSAgICB3aGls
ZSAoIW1fcGFyc2VyU3RvcHBlZCAmJiBtX2xleGVyLT5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9r
ZW4pKSB7CisgICAgd2hpbGUgKCFtX3BhcnNlclN0b3BwZWQgJiYgbV9sZXhlci0+bmV4dFRva2Vu
KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkgewogICAgICAgICBtX3RyZWVCdWlsZGVyLT5j
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7
CiAKQEAgLTExMywyMiArMTEzLDMwIEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OnB1bXBMZXhlcigp
CiAgICAgfQogfQogCi12b2lkIEhUTUw1VG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgYm9vbCkKK3ZvaWQgSFRNTDVUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBib29sIGFwcGVuZERhdGEpCiB7CiAgICAgaWYgKG1fcGFy
c2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50ZXIobV93cml0ZU5lc3RpbmdMZXZlbCk7CiAKLSAgICAv
LyBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxp
bmcgc2F2aW5nIG1fc291cmNlIGJlZm9yZSByZS1lbnRyeS4KLSAgICBtX3NvdXJjZS5hcHBlbmQo
c291cmNlKTsKKyAgICBpZiAoYXBwZW5kRGF0YSkgeworICAgICAgICBtX2lucHV0LmFwcGVuZFRv
RW5kKHNvdXJjZSk7CisgICAgICAgIGlmIChtX3dyaXRlTmVzdGluZ0xldmVsID4gMSkgeworICAg
ICAgICAgICAgLy8gV2UndmUgZ290dGVuIGRhdGEgb2ZmIHRoZSBuZXR3b3JrIGluIGEgbmVzdGVk
IGNhbGwgdG8gd3JpdGUoKS4KKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29uc3Vt
ZSBhbnkgbW9yZSBvZiB0aGUgaW5wdXQgc3RyZWFtIG5vdy4gIERvCisgICAgICAgICAgICAvLyBu
b3Qgd29ycnkuICBXZSdsbCBjb25zdW1lIHRoaXMgZGF0YSBpbiBhIGxlc3MtbmVzdGVkIHdyaXRl
KCkuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAg
bV9pbnB1dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludChzb3VyY2UpOworCiAgICAgcHVt
cExleGVySWZQb3NzaWJsZSgpOwogICAgIGVuZElmRGVsYXllZCgpOwogfQogCiB2b2lkIEhUTUw1
VG9rZW5pemVyOjplbmQoKQogewotICAgIG1fc291cmNlLmNsb3NlKCk7CiAgICAgcHVtcExleGVy
SWZQb3NzaWJsZSgpOwogICAgIC8vIEluZm9ybXMgdGhlIHRoZSByZXN0IG9mIFdlYkNvcmUgdGhh
dCBwYXJzaW5nIGlzIHJlYWxseSBmaW5pc2hlZC4KICAgICBtX3RyZWVCdWlsZGVyLT5maW5pc2hl
ZCgpOwpAQCAtMTU3LDkgKzE2NSw5IEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmVuZElmRGVsYXll
ZCgpCiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmZpbmlzaCgpCiB7Ci0gICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBtX3NvdXJjZS5jbG9zZSgpIHlldCBhcyB3ZSBtYXkgaGF2ZSBhIDxzY3JpcHQ+IGV4ZWN1
dGlvbgotICAgIC8vIHBlbmRpbmcgd2hpY2ggd2lsbCBjYWxsIGRvY3VtZW50LndyaXRlKCkuICBO
byBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrIHRob3VnaC4KLSAgICAvLyBlbmQoKSBjYWxscyBE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkgb25jZSB3ZSdyZSBhY3R1YWxseSBkb25lIHBhcnNp
bmcuCisgICAgLy8gV2UncmUgbm90IGdvaW5nIHRvIGdldCBhbnkgbW9yZSBkYXRhIG9mZiB0aGUg
bmV0d29yaywgc28gd2UgY2xvc2UgdGhlCisgICAgLy8gaW5wdXQgc3RyZWFtIHRvIGluZGljYXRl
IEVPRi4KKyAgICBtX2lucHV0LmNsb3NlKCk7CiAgICAgYXR0ZW1wdFRvRW5kKCk7CiB9CiAKQEAg
LTIyMSwxNyArMjI5LDggQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdChjb25z
dAogICAgIEFTU0VSVChtX3NjcmlwdFJ1bm5lci0+aW5TY3JpcHRFeGVjdXRpb24oKSk7CiAgICAg
aWYgKCFtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBTZWdtZW50
ZWRTdHJpbmcgb2xkSW5zZXJ0aW9uUG9pbnQgPSBtX3NvdXJjZTsKLSAgICBtX3NvdXJjZSA9IFNl
Z21lbnRlZFN0cmluZygpOworICAgIEluc2VydGlvblBvaW50UmVjb3JkIHNhdmVkSW5zZXJ0aW9u
UG9pbnQobV9pbnB1dCk7CiAgICAgbV9kb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1
dGVTY3JpcHQoc291cmNlQ29kZSk7Ci0gICAgLy8gQXBwZW5kIG9sZEluc2VydGlvblBvaW50IG9u
dG8gdGhlIG5ldyAobGlrZWx5IGVtcHR5KSBtX3NvdXJjZSBpbnN0ZWFkIG9mCi0gICAgLy8gb2xk
SW5zZXJ0aW9uUG9pbnQucHJlcGVudChtX3NvdXJjZSkgYXMgdGhhdCB3b3VsZCBBU1NFUlQgaWYK
LSAgICAvLyBtX3NvdXJjZS5lc2NhcGVkKCkgKGl0IGhhZCBjaGFyYWN0ZXJzIHB1c2hlZCBiYWNr
IG9udG8gaXQpLgotICAgIC8vIElmIG1fc291cmNlIHdhcyBjbG9zZWQsIHRoZW4gdGhlIHRva2Vu
aXplciB3YXMgc3RvcHBlZCwgYW5kIHdlIGRpc2NhcmQKLSAgICAvLyBhbnkgcGVuZGluZyBkYXRh
IGFzIHRob3VnaCBhbiBFT0YgY2hhcmFjdGVyIHdhcyBpbnNlcnRlZCBpbnRvIHRoZSBzdHJlYW0u
Ci0gICAgaWYgKCFtX3NvdXJjZS5pc0Nsb3NlZCgpKQotICAgICAgICBtX3NvdXJjZS5hcHBlbmQo
b2xkSW5zZXJ0aW9uUG9pbnQpOwogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6
ZXIuaAkocmV2aXNpb24gNjA5MTkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNzggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiBwcml2YXRlOgorICAgIGNsYXNz
IEluc2VydGlvblBvaW50UmVjb3JkOworCisgICAgLy8gVGhlIElucHV0U3RyZWFtIGlzIG1hZGUg
dXAgb2YgYSBzZXF1ZW5jZSBvZiBTZWdtZW50ZWRTdHJpbmdzOgorICAgIC8vCisgICAgLy8gWy0t
Y3VycmVudC0tXVstLWFmdGVySW5zZXJ0aW9uUG9pbnQtLV1bLS1hZnRlckluc2VydGlvblBvaW50
LS1dCisgICAgLy8gICAgICAgICAgICAvXCAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsc28g
Y2FsbGVkIG1fbGFzdCkKKyAgICAvLyAgICAgICAgICAgIExfIGN1cnJlbnQgaW5zZXJ0aW9uIHBv
aW50CisgICAgLy8KKyAgICAvLyBUaGUgY3VycmVudCBzZWdtZW50ZWQgc3RyaW5nIGlzIHN0b3Jl
ZCBpbiBJbnB1dFN0cmVhbS4gIEVhY2ggb2YgdGhlCisgICAgLy8gYWZ0ZXJJbnNlcnRpb25Qb2lu
dCBidWZmZXJzIGFyZSBzdG9yZWQgaW4gSW5zZXJ0aW9uUG9pbnRSZWNvcmRzIG9uIHRoZQorICAg
IC8vIHN0YWNrLgorICAgIC8vCisgICAgLy8gV2UgcmVtb3ZlIGNoYXJhY3RlcnMgZnJvbSB0aGUg
ImN1cnJlbnQiIHN0cmluZyBpbiB0aGUgSW5wdXRTdHJlYW0uCisgICAgLy8gZG9jdW1lbnQud3Jp
dGUoKSB3aWxsIGFkZCBjaGFyYWN0ZXJzIGF0IHRoZSBjdXJyZW50IGluc2VydGlvbiBwb2ludCwK
KyAgICAvLyB3aGljaCBhcHBlbmRzIHRoZW0gdG8gdGhlICJjdXJyZW50IiBzdHJpbmcuCisgICAg
Ly8KKyAgICAvLyBtX2xhc3QgaXMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9mIHRoZSBhZnRlcklu
c2VydGlvblBvaW50IHN0cmluZ3MuCisgICAgLy8gVGhlIG5ldHdvcmsgYWRkcyBkYXRhIGF0IHRo
ZSBlbmQgb2YgdGhlIElucHV0U3RyZWFtLCB3aGljaCBhcHBlbmRzCisgICAgLy8gdGhlbSB0byB0
aGUgImxhc3QiIHN0cmluZy4KKyAgICBjbGFzcyBJbnB1dFN0cmVhbSB7CisgICAgcHVibGljOgor
ICAgICAgICBJbnB1dFN0cmVhbSgpCisgICAgICAgICAgICA6IG1fbGFzdCgmbV9jdXJyZW50KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFwcGVuZFRvRW5kKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xhc3QtPmFw
cGVuZChzdHJpbmcpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBpbnNlcnRBdEN1cnJlbnRJ
bnNlcnRpb25Qb2ludChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHN0cmluZykKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9jdXJyZW50LmFwcGVuZChzdHJpbmcpOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBjbG9zZSgpIHsgbV9sYXN0LT5jbG9zZSgpOyB9CisKKyAgICAgICAgU2VnbWVudGVk
U3RyaW5nJiBjdXJyZW50KCkgeyByZXR1cm4gbV9jdXJyZW50OyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uUG9pbnRSZWNvcmQ7CisKKyAgICAgICAgU2Vn
bWVudGVkU3RyaW5nIG1fY3VycmVudDsKKyAgICAgICAgU2VnbWVudGVkU3RyaW5nKiBtX2xhc3Q7
CisgICAgfTsKKworICAgIGNsYXNzIEluc2VydGlvblBvaW50UmVjb3JkIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEluc2VydGlvblBvaW50UmVjb3JkKElucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSkK
KyAgICAgICAgICAgIDogbV9pbnB1dFN0cmVhbSgmaW5wdXRTdHJlYW0pCisgICAgICAgICAgICAs
IG1fYWZ0ZXJJbnNlcnRpb25Qb2ludChpbnB1dFN0cmVhbS5tX2N1cnJlbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPm1fY3VycmVudCA9IFNlZ21lbnRlZFN0cmluZygp
OworICAgICAgICAgICAgaWYgKG1faW5wdXRTdHJlYW0tPm1fbGFzdCA9PSAmbV9pbnB1dFN0cmVh
bS0+bV9jdXJyZW50KQorICAgICAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPm1fbGFzdCA9ICZt
X2FmdGVySW5zZXJ0aW9uUG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICB+SW5zZXJ0aW9uUG9p
bnRSZWNvcmQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2lucHV0U3RyZWFtLT5tX2N1cnJl
bnQuYXBwZW5kKG1fYWZ0ZXJJbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICBpZiAobV9pbnB1
dFN0cmVhbS0+bV9sYXN0ID09ICZtX2FmdGVySW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICAg
ICAgbV9pbnB1dFN0cmVhbS0+bV9sYXN0ID0gJm1faW5wdXRTdHJlYW0tPm1fY3VycmVudDsKKyAg
ICAgICAgICAgIGlmIChtX2FmdGVySW5zZXJ0aW9uUG9pbnQuaXNDbG9zZWQoKSkKKyAgICAgICAg
ICAgICAgICBtX2lucHV0U3RyZWFtLT5tX2N1cnJlbnQuY2xvc2UoKTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgSW5wdXRTdHJlYW0qIG1faW5wdXRTdHJlYW07CisgICAgICAg
IFNlZ21lbnRlZFN0cmluZyBtX2FmdGVySW5zZXJ0aW9uUG9pbnQ7CisgICAgfTsKKwogICAgIHZv
aWQgcHVtcExleGVyKCk7CiAgICAgdm9pZCBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAgICAgdm9p
ZCByZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKQEAgLTc4LDcgKzE1MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBlbmRJZkRlbGF5ZWQoKTsKICAgICBib29sIGluV3JpdGUoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlTmVzdGluZ0xldmVsID4gMDsgfQogCi0gICAgU2VnbWVudGVk
U3RyaW5nIG1fc291cmNlOworICAgIElucHV0U3RyZWFtIG1faW5wdXQ7CiAKICAgICAvLyBXZSBo
b2xkIG1fdG9rZW4gaGVyZSBiZWNhdXNlIGl0IG1pZ2h0IGJlIHBhcnRpYWxseSBjb21wbGV0ZS4K
ICAgICBIVE1MNVRva2VuIG1fdG9rZW47CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcAkocmV2aXNpb24gNjA5MTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU2VnbWVudGVkU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBj
b25zdCBTZWdtZW50ZWRTdHJpbmcmIFNlZ21lbnRlZFN0cmluZzo6CiAgICAgICAgIG1fY3VycmVu
dENoYXIgPSAmbV9wdXNoZWRDaGFyMjsKICAgICBlbHNlCiAgICAgICAgIG1fY3VycmVudENoYXIg
PSBvdGhlci5tX2N1cnJlbnRDaGFyOworICAgIG1fY2xvc2VkID0gb3RoZXIubV9jbG9zZWQ7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58310</attachid>
            <date>2010-06-09 17:06:51 -0700</date>
            <delta_ts>2010-06-09 17:49:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40356-20100609170650.patch</filename>
            <type>text/plain</type>
            <size>9878</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDYtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
aGFuZGxpbmcgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yayB3aGlsZSBpbiBkb2N1
bWVudC53cml0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAzNTYKKworICAgICAgICBUaGUgb2xkIHRva2VuaXplciBoYXMgc3BlY2lhbGx5IGxvZ2lj
IGZvciBoYW5kbGluZyB0aGUgY2FzZSBvZgorICAgICAgICByZWNlaXZpbmcgYnl0ZXMgZnJvbSB0
aGUgbmV0d29yayB3aGlsZSBpbiBhIG5lc3RlZCBjYWxsIHRvCisgICAgICAgIGRvY3VtZW50Lndy
aXRlLiAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNpbWlsYXIgbG9naWMgZm9yIHRoZSBIVE1MNQor
ICAgICAgICB0b2tlbml6ZXIuICBBbHNvLCB0aGlzIHBhdGNoIGFic3RyYWN0cyB0aGUgdHJpY2t5
IHNodWZmbGluZyBvZgorICAgICAgICBTZWdtZW50ZWRTdHJpbmdzIGJlaGluZCBhIHNpbXBsZSBB
UEkuCisKKyAgICAgICAgSSdtIG5vdCBzdXJlIGhvdyB0byB0cmlnZ2VyIHRoaXMgY2FzZS4gIE15
IGd1ZXNzIGlzIHdlIGNhbiB0cmlnZ2VyIGl0CisgICAgICAgIHVzaW5nIGEgbmVzdGVkIGV2ZW50
IGxvb3AsIGUuZy4sIHZpYSBhbGVydCgpLCBidXQgSSdtIG5vdCBzdXJlIGhvdyB0bworICAgICAg
ICB0ZXN0IHRoYXQgaW4gYSBMYXlvdXRUZXN0LiAgVGhlcmUgZG9uJ3QgYXBwZWFyIHRvIGJlIGFu
eSBMYXlvdXRUZXN0cworICAgICAgICB0aGF0IGN1cnJlbnRseSB0ZXN0IHRoaXMgYmVoYXZpb3Ig
ZGVzcGl0ZSBpdCBiZWluZyBwcmVzZW50IGluIHRoZSBvbGQKKyAgICAgICAgdG9rZW5pemVyLgor
CisgICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRva2VuaXplcjo6cHVtcExleGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5p
emVyOjp3cml0ZSk6CisgICAgICAgICAgICAtIEFkZGVkIGEgYnJhbmNoIGZvciB0aGUgfGFwcGVu
ZHwgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHQpOgorICAgICAgICAgICAgLSBTd2l0Y2gg
b3ZlciB0byB1c2luZyBhIFJBSUkgcGF0dGVybiBmb3IgcmVjb3JkaW5nIGFuZCByZXN0b3JpbmcK
KyAgICAgICAgICAgICAgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgKiBodG1sL0hUTUw1VG9r
ZW5pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06
OklucHV0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpJbnB1dFN0
cmVhbTo6YXBwZW5kVG9FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6Oklu
cHV0U3RyZWFtOjppbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNVRva2VuaXplcjo6SW5wdXRTdHJlYW06OmNsb3NlKToKKyAgICAgICAgICAgIC0g
UHV0dGluZyB0aGUgY2xvc2UoKSBtZXRob2Qgb24gSW5wdXRTdHJlYW0gbWFrZXMgaXQgbXVjaCBl
YXNpZXIgdG8KKyAgICAgICAgICAgICAgaGFuZGxlIEVPRi4gIFdlIG5vdyBqdXN0IGNsb3NlIHRo
ZSBsYXN0IGJ1ZmZlciBpbiB0aGUgc3RyZWFtIHdoZW4KKyAgICAgICAgICAgICAgdGhlIG5ldHdv
cmsgc2F5cyBpdCdzIGRvbmUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6SW5w
dXRTdHJlYW06OmN1cnJlbnQpOgorICAgICAgICAgICAgLSBUaGlzIGNsYXNzIGNvdWxkIGJlIG1v
dmVkIHRvIGl0cyBvd24gZmlsZSwgYnV0IGl0IHNob3VsZG4ndCBiZQorICAgICAgICAgICAgICB1
c2VkIG91dHNpZGUgb2YgdGhlIHRva2VuaXplci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9r
ZW5pemVyOjpJbnNlcnRpb25Qb2ludFJlY29yZDo6SW5zZXJ0aW9uUG9pbnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6Okluc2VydGlvblBvaW50UmVjb3JkOjp+SW5z
ZXJ0aW9uUG9pbnRSZWNvcmQpOgorICAgICAgICAgICAgLSBBIHNpbXBsZSBSQUlJIGNsYXNzIGZv
ciBtYW5hZ2luZyBzYXZlZCBpbnNlcnRpb24gcG9pbnRzLgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvU2VnbWVudGVkU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmlu
Zzo6b3BlcmF0b3I9KToKKyAgICAgICAgICAgIC0gRml4IGEgcmVsYXRlZCBidWcgd2hlcmUgbV9j
bG9zZWQgd2FzIG5vdCBiZWluZyBjb3BpZWQgcHJvcGVybHkgaW4KKyAgICAgICAgICAgICAgdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKIDIwMTAtMDYtMDkgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiA2MDkxOSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MNVRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVyKCkKIHsKICAgICBBU1NFUlQoIW1fcGFyc2VyU3Rv
cHBlZCk7CiAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKLSAgICB3aGls
ZSAoIW1fcGFyc2VyU3RvcHBlZCAmJiBtX2xleGVyLT5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9r
ZW4pKSB7CisgICAgd2hpbGUgKCFtX3BhcnNlclN0b3BwZWQgJiYgbV9sZXhlci0+bmV4dFRva2Vu
KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkgewogICAgICAgICBtX3RyZWVCdWlsZGVyLT5j
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7
CiAKQEAgLTExMywyMiArMTEzLDMwIEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OnB1bXBMZXhlcigp
CiAgICAgfQogfQogCi12b2lkIEhUTUw1VG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgYm9vbCkKK3ZvaWQgSFRNTDVUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBib29sIGFwcGVuZERhdGEpCiB7CiAgICAgaWYgKG1fcGFy
c2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50ZXIobV93cml0ZU5lc3RpbmdMZXZlbCk7CiAKLSAgICAv
LyBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxp
bmcgc2F2aW5nIG1fc291cmNlIGJlZm9yZSByZS1lbnRyeS4KLSAgICBtX3NvdXJjZS5hcHBlbmQo
c291cmNlKTsKKyAgICBpZiAoYXBwZW5kRGF0YSkgeworICAgICAgICBtX2lucHV0LmFwcGVuZFRv
RW5kKHNvdXJjZSk7CisgICAgICAgIGlmIChtX3dyaXRlTmVzdGluZ0xldmVsID4gMSkgeworICAg
ICAgICAgICAgLy8gV2UndmUgZ290dGVuIGRhdGEgb2ZmIHRoZSBuZXR3b3JrIGluIGEgbmVzdGVk
IGNhbGwgdG8gd3JpdGUoKS4KKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29uc3Vt
ZSBhbnkgbW9yZSBvZiB0aGUgaW5wdXQgc3RyZWFtIG5vdy4gIERvCisgICAgICAgICAgICAvLyBu
b3Qgd29ycnkuICBXZSdsbCBjb25zdW1lIHRoaXMgZGF0YSBpbiBhIGxlc3MtbmVzdGVkIHdyaXRl
KCkuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAg
bV9pbnB1dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludChzb3VyY2UpOworCiAgICAgcHVt
cExleGVySWZQb3NzaWJsZSgpOwogICAgIGVuZElmRGVsYXllZCgpOwogfQogCiB2b2lkIEhUTUw1
VG9rZW5pemVyOjplbmQoKQogewotICAgIG1fc291cmNlLmNsb3NlKCk7CiAgICAgcHVtcExleGVy
SWZQb3NzaWJsZSgpOwogICAgIC8vIEluZm9ybXMgdGhlIHRoZSByZXN0IG9mIFdlYkNvcmUgdGhh
dCBwYXJzaW5nIGlzIHJlYWxseSBmaW5pc2hlZC4KICAgICBtX3RyZWVCdWlsZGVyLT5maW5pc2hl
ZCgpOwpAQCAtMTU3LDkgKzE2NSw5IEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmVuZElmRGVsYXll
ZCgpCiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmZpbmlzaCgpCiB7Ci0gICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBtX3NvdXJjZS5jbG9zZSgpIHlldCBhcyB3ZSBtYXkgaGF2ZSBhIDxzY3JpcHQ+IGV4ZWN1
dGlvbgotICAgIC8vIHBlbmRpbmcgd2hpY2ggd2lsbCBjYWxsIGRvY3VtZW50LndyaXRlKCkuICBO
byBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrIHRob3VnaC4KLSAgICAvLyBlbmQoKSBjYWxscyBE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkgb25jZSB3ZSdyZSBhY3R1YWxseSBkb25lIHBhcnNp
bmcuCisgICAgLy8gV2UncmUgbm90IGdvaW5nIHRvIGdldCBhbnkgbW9yZSBkYXRhIG9mZiB0aGUg
bmV0d29yaywgc28gd2UgY2xvc2UgdGhlCisgICAgLy8gaW5wdXQgc3RyZWFtIHRvIGluZGljYXRl
IEVPRi4KKyAgICBtX2lucHV0LmNsb3NlKCk7CiAgICAgYXR0ZW1wdFRvRW5kKCk7CiB9CiAKQEAg
LTIyMSwxNyArMjI5LDggQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdChjb25z
dAogICAgIEFTU0VSVChtX3NjcmlwdFJ1bm5lci0+aW5TY3JpcHRFeGVjdXRpb24oKSk7CiAgICAg
aWYgKCFtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBTZWdtZW50
ZWRTdHJpbmcgb2xkSW5zZXJ0aW9uUG9pbnQgPSBtX3NvdXJjZTsKLSAgICBtX3NvdXJjZSA9IFNl
Z21lbnRlZFN0cmluZygpOworICAgIEluc2VydGlvblBvaW50UmVjb3JkIHNhdmVkSW5zZXJ0aW9u
UG9pbnQobV9pbnB1dCk7CiAgICAgbV9kb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1
dGVTY3JpcHQoc291cmNlQ29kZSk7Ci0gICAgLy8gQXBwZW5kIG9sZEluc2VydGlvblBvaW50IG9u
dG8gdGhlIG5ldyAobGlrZWx5IGVtcHR5KSBtX3NvdXJjZSBpbnN0ZWFkIG9mCi0gICAgLy8gb2xk
SW5zZXJ0aW9uUG9pbnQucHJlcGVudChtX3NvdXJjZSkgYXMgdGhhdCB3b3VsZCBBU1NFUlQgaWYK
LSAgICAvLyBtX3NvdXJjZS5lc2NhcGVkKCkgKGl0IGhhZCBjaGFyYWN0ZXJzIHB1c2hlZCBiYWNr
IG9udG8gaXQpLgotICAgIC8vIElmIG1fc291cmNlIHdhcyBjbG9zZWQsIHRoZW4gdGhlIHRva2Vu
aXplciB3YXMgc3RvcHBlZCwgYW5kIHdlIGRpc2NhcmQKLSAgICAvLyBhbnkgcGVuZGluZyBkYXRh
IGFzIHRob3VnaCBhbiBFT0YgY2hhcmFjdGVyIHdhcyBpbnNlcnRlZCBpbnRvIHRoZSBzdHJlYW0u
Ci0gICAgaWYgKCFtX3NvdXJjZS5pc0Nsb3NlZCgpKQotICAgICAgICBtX3NvdXJjZS5hcHBlbmQo
b2xkSW5zZXJ0aW9uUG9pbnQpOwogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6
ZXIuaAkocmV2aXNpb24gNjA5MTkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiBwcml2YXRlOgorICAgIC8vIFRo
ZSBJbnB1dFN0cmVhbSBpcyBtYWRlIHVwIG9mIGEgc2VxdWVuY2Ugb2YgU2VnbWVudGVkU3RyaW5n
czoKKyAgICAvLworICAgIC8vIFstLWN1cnJlbnQtLV1bLS1uZXh0LS1dWy0tbmV4dC0tXSAuLi4g
Wy0tbmV4dC0tXQorICAgIC8vICAgICAgICAgICAgL1wgICAgICAgICAgICAgICAgICAgICAgICAg
KGFsc28gY2FsbGVkIG1fbGFzdCkKKyAgICAvLyAgICAgICAgICAgIExfIGN1cnJlbnQgaW5zZXJ0
aW9uIHBvaW50CisgICAgLy8KKyAgICAvLyBUaGUgY3VycmVudCBzZWdtZW50ZWQgc3RyaW5nIGlz
IHN0b3JlZCBpbiBJbnB1dFN0cmVhbS4gIEVhY2ggb2YgdGhlCisgICAgLy8gYWZ0ZXJJbnNlcnRp
b25Qb2ludCBidWZmZXJzIGFyZSBzdG9yZWQgaW4gSW5zZXJ0aW9uUG9pbnRSZWNvcmRzIG9uIHRo
ZQorICAgIC8vIHN0YWNrLgorICAgIC8vCisgICAgLy8gV2UgcmVtb3ZlIGNoYXJhY3RlcnMgZnJv
bSB0aGUgImN1cnJlbnQiIHN0cmluZyBpbiB0aGUgSW5wdXRTdHJlYW0uCisgICAgLy8gZG9jdW1l
bnQud3JpdGUoKSB3aWxsIGFkZCBjaGFyYWN0ZXJzIGF0IHRoZSBjdXJyZW50IGluc2VydGlvbiBw
b2ludCwKKyAgICAvLyB3aGljaCBhcHBlbmRzIHRoZW0gdG8gdGhlICJjdXJyZW50IiBzdHJpbmcu
CisgICAgLy8KKyAgICAvLyBtX2xhc3QgaXMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9mIHRoZSBh
ZnRlckluc2VydGlvblBvaW50IHN0cmluZ3MuCisgICAgLy8gVGhlIG5ldHdvcmsgYWRkcyBkYXRh
IGF0IHRoZSBlbmQgb2YgdGhlIElucHV0U3RyZWFtLCB3aGljaCBhcHBlbmRzCisgICAgLy8gdGhl
bSB0byB0aGUgImxhc3QiIHN0cmluZy4KKyAgICBjbGFzcyBJbnB1dFN0cmVhbSB7CisgICAgcHVi
bGljOgorICAgICAgICBJbnB1dFN0cmVhbSgpCisgICAgICAgICAgICA6IG1fbGFzdCgmbV9maXJz
dCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBhcHBlbmRUb0VuZChjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHN0cmluZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXN0
LT5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgaW5zZXJ0QXRDdXJy
ZW50SW5zZXJ0aW9uUG9pbnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHJpbmcpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fZmlyc3QuYXBwZW5kKHN0cmluZyk7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2xhc3QtPmNsb3NlKCk7IH0KKworICAgICAgICBTZWdtZW50
ZWRTdHJpbmcmIGN1cnJlbnQoKSB7IHJldHVybiBtX2ZpcnN0OyB9CisKKyAgICAgICAgdm9pZCBz
cGxpdEludG8oU2VnbWVudGVkU3RyaW5nJiBuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBu
ZXh0ID0gbV9maXJzdDsKKyAgICAgICAgICAgIG1fZmlyc3QgPSBTZWdtZW50ZWRTdHJpbmcoKTsK
KyAgICAgICAgICAgIGlmIChtX2xhc3QgPT0gJm1fZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSB1c2VkIHRvIG9ubHkgaGF2ZSBvbmUgU2VnbWVudGVkU3RyaW5nIGluIHRoZSBJbnB1dFN0
cmVhbQorICAgICAgICAgICAgICAgIC8vIGJ1dCBub3cgd2UgaGF2ZSB0d28uICBUaGF0IG1lYW5z
IG1fZmlyc3QgaXMgbm8gbG9uZ2VyIGFsc28KKyAgICAgICAgICAgICAgICAvLyB0aGUgbV9sYXN0
IHN0cmluZywgfG5leHR8IGlzIG5vdyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgICAgICAgbV9s
YXN0ID0gJm5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG1l
cmdlRnJvbShTZWdtZW50ZWRTdHJpbmcmIG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
Zmlyc3QuYXBwZW5kKG5leHQpOworICAgICAgICAgICAgaWYgKG1fbGFzdCA9PSAmbmV4dCkgewor
ICAgICAgICAgICAgICAgIC8vIFRoZSBzdHJpbmcgfG5leHR8IHVzZWQgdG8gYmUgdGhlIGxhc3Qg
U2VnbWVudGVkU3RyaW5nIGluCisgICAgICAgICAgICAgICAgLy8gdGhlIElucHV0U3RyZWFtLiAg
Tm93IHRoYXQgaXQncyBiZWVuIG1lcmdlZCBpbnRvIG1fZmlyc3QsCisgICAgICAgICAgICAgICAg
Ly8gdGhhdCBtYWtlcyBtX2ZpcnN0IHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICAgICAgICBtX2xh
c3QgPSAmbV9maXJzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZXh0LmlzQ2xv
c2VkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gbWVyZ2UgdGhlICJj
bG9zZWQiIHN0YXRlIGZyb20gbmV4dCB0bworICAgICAgICAgICAgICAgIC8vIG1fZmlyc3QuICBB
cmd1YWJseSwgdGhpcyB3b3JrIGNvdWxkIGJlIGRvbmUgaW4gYXBwZW5kKCkuCisgICAgICAgICAg
ICAgICAgbV9maXJzdC5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9maXJzdDsKKyAgICAgICAgU2VnbWVu
dGVkU3RyaW5nKiBtX2xhc3Q7CisgICAgfTsKKworICAgIGNsYXNzIEluc2VydGlvblBvaW50UmVj
b3JkIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEluc2VydGlvblBvaW50UmVjb3JkKElucHV0U3Ry
ZWFtJiBpbnB1dFN0cmVhbSkKKyAgICAgICAgICAgIDogbV9pbnB1dFN0cmVhbSgmaW5wdXRTdHJl
YW0pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5wdXRTdHJlYW0tPnNwbGl0SW50byhtX25l
eHQpOworICAgICAgICB9CisKKyAgICAgICAgfkluc2VydGlvblBvaW50UmVjb3JkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9pbnB1dFN0cmVhbS0+bWVyZ2VGcm9tKG1fbmV4dCk7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIElucHV0U3RyZWFtKiBtX2lucHV0U3RyZWFt
OworICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9uZXh0OworICAgIH07CisKICAgICB2b2lkIHB1
bXBMZXhlcigpOwogICAgIHZvaWQgcHVtcExleGVySWZQb3NzaWJsZSgpOwogICAgIHZvaWQgcmVz
dW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCk7CkBAIC03OCw3ICsxNjcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZW5kSWZEZWxheWVkKCk7CiAgICAgYm9vbCBpbldyaXRlKCkgY29uc3Qg
eyByZXR1cm4gbV93cml0ZU5lc3RpbmdMZXZlbCA+IDA7IH0KIAotICAgIFNlZ21lbnRlZFN0cmlu
ZyBtX3NvdXJjZTsKKyAgICBJbnB1dFN0cmVhbSBtX2lucHV0OwogCiAgICAgLy8gV2UgaG9sZCBt
X3Rva2VuIGhlcmUgYmVjYXVzZSBpdCBtaWdodCBiZSBwYXJ0aWFsbHkgY29tcGxldGUuCiAgICAg
SFRNTDVUb2tlbiBtX3Rva2VuOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRl
ZFN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRl
ZFN0cmluZy5jcHAJKHJldmlzaW9uIDYwOTE5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Nl
Z21lbnRlZFN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgY29uc3Qg
U2VnbWVudGVkU3RyaW5nJiBTZWdtZW50ZWRTdHJpbmc6OgogICAgICAgICBtX2N1cnJlbnRDaGFy
ID0gJm1fcHVzaGVkQ2hhcjI7CiAgICAgZWxzZQogICAgICAgICBtX2N1cnJlbnRDaGFyID0gb3Ro
ZXIubV9jdXJyZW50Q2hhcjsKKyAgICBtX2Nsb3NlZCA9IG90aGVyLm1fY2xvc2VkOwogICAgIHJl
dHVybiAqdGhpczsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>