<?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>52366</bug_id>
          
          <creation_ts>2011-01-13 06:09:39 -0800</creation_ts>
          <short_desc>ScriptExecutionContext needs additional checks when active dom objects are created/destroyed</short_desc>
          <delta_ts>2011-02-02 12:36:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>DUPLICATE</resolution>
          <dup_id>52722</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333654</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-13 06:09:39 -0800</bug_when>
    <thetext>SerializedScriptValue needs to iterate over a copy of all active dom objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333698</commentid>
    <comment_count>1</comment_count>
      <attachid>78812</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-13 08:26:25 -0800</bug_when>
    <thetext>Created attachment 78812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333741</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-13 09:32:07 -0800</bug_when>
    <thetext>A good catch as to why tests are flaky! I&apos;m not yet convinced if making a copy for iteration is the best fix though.

With this kind of protection, we make fewer assumptions about behavior of ActiveDOMObject methods at a certain runtime cost. It becomes possible to remove objects from the HashMap, but it&apos;s still impossible to add them. That can be more confusing than the current requirement of no changes to the HashMap.

Hopefully, stopping an IDBRequest doesn&apos;t dispatch any events, or the event handler could create new ActiveDOMObjects.

&gt; When the script execution context is being stopped, we need to abort existing transactions.

IDBTransaction::stop() (or maybe suspend()) is the expected place to stop a transaction, which would not cause indirect destruction. Can it work that way?

The existence of two interdependent ActiveDOMObjects (IDBRequest and IDBTransaction) makes things complicated indeed. I&apos;m not quite sure about how exactly they work together though, so I don&apos;t have a specific suggestion.

&gt; it&apos;s a really messy (if possible at all) to have ActiveDOMObject redirect ref/deref calls properly
&gt; So this patch instead has to double check that each element in the vector is still in the HashMap before dispatching.

That needs at least an assertion that we don&apos;t add items to the HashMap while iterating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333833</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-13 11:29:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; A good catch as to why tests are flaky! I&apos;m not yet convinced if making a copy for iteration is the best fix though.
&gt; 
&gt; With this kind of protection, we make fewer assumptions about behavior of ActiveDOMObject methods at a certain runtime cost. It becomes possible to remove objects from the HashMap, but it&apos;s still impossible to add them. That can be more confusing than the current requirement of no changes to the HashMap.

It&apos;s no different than if the new items were added to the beginning of the list (and thus skipped), but still I guess it could be a little confusing/odd.  I also can&apos;t think of why this would happen though.  Presumably anything that&apos;s an ActiveDOMObject is started because of some JavaScript call (and returned back to JS land), right?  So really this should never be happening during a stop()/suspend()/etc call...right?
 
&gt; Hopefully, stopping an IDBRequest doesn&apos;t dispatch any events, or the event handler could create new ActiveDOMObjects.

All IndexedDB events are fired asynchronously (i.e. from a timer) so I&apos;m pretty sure we don&apos;t.
 
&gt; &gt; When the script execution context is being stopped, we need to abort existing transactions.
&gt; 
&gt; IDBTransaction::stop() (or maybe suspend()) is the expected place to stop a transaction, which would not cause indirect destruction. Can it work that way?

The only reason why anything needs to abort the transaction when the document is being destroyed is in the case that more work is going to be queued up in the onsuccess and/or onerror callback of an IDBRequest.  If an IDBRequest object is still alive (and hasn&apos;t fired its callback) then it&apos;s likely other instructions are still pending.

The IDBTransaction object, on the other hand, only has onabort and oncomplete callbacks which are called _after_ the transaction has finished.  So even if theres a live IDBTransaction object which hasn&apos;t fired any of its events, we don&apos;t need to abort anything.

...now that I think about it though, with some recent spec changes that haven&apos;t yet been implemented, the IDBTransaction probably will need to be reffed by the IDBRequest, which may actually solve this problem.  On the other hand, though, I&apos;m concerned that the current state of ActiveDOMObject is rather fragile and that this problem will come up again in the future (and not be easily diagnosable).  On the other hand, if we had some assert that caught that case, I&apos;d be less worried.

&gt; The existence of two interdependent ActiveDOMObjects (IDBRequest and IDBTransaction) makes things complicated indeed. I&apos;m not quite sure about how exactly they work together though, so I don&apos;t have a specific suggestion.

It&apos;s kind of complex.  And I don&apos;t fully have a handle on it given that we still have some unimplemented changes which will probably change things a bit.  I could try to write it out if it&apos;d be useful though.

&gt; &gt; it&apos;s a really messy (if possible at all) to have ActiveDOMObject redirect ref/deref calls properly
&gt; &gt; So this patch instead has to double check that each element in the vector is still in the HashMap before dispatching.
&gt; 
&gt; That needs at least an assertion that we don&apos;t add items to the HashMap while iterating.

I agree that, at a minim, that should be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333847</commentid>
    <comment_count>4</comment_count>
      <attachid>78812</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-13 11:50:25 -0800</bug_when>
    <thetext>Comment on attachment 78812
Patch

It seems that we need to make a practical decision on what to do now. Certainly, flaky tests and other effects of current behavior is no good.

Do you think that implementing the recent check changes can be done soon enough for us to not need this patch?

&gt; I agree that, at a minim, that should be done.

I&apos;m marking this r- to have this done, and probably for some comments explaining the state of code to be added. As mentioned above, it would be better if we didn&apos;t have to make the copy, but if there&apos;s no other practical way to stop the flakiness soon, we&apos;ll have to go for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334234</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-14 04:00:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 78812 [details])
&gt; It seems that we need to make a practical decision on what to do now. Certainly, flaky tests and other effects of current behavior is no good.
&gt; 
&gt; Do you think that implementing the recent check changes can be done soon enough for us to not need this patch?

I&apos;ve thought about this more and realized that this particular problem will not go away with the resulting spec changes.
 
&gt; &gt; I agree that, at a minim, that should be done.
&gt; 
&gt; I&apos;m marking this r- to have this done, and probably for some comments explaining the state of code to be added. As mentioned above, it would be better if we didn&apos;t have to make the copy, but if there&apos;s no other practical way to stop the flakiness soon, we&apos;ll have to go for it.

As far as I can tell, there are 2 options here:
1) I could just do these changes and then submit this
2) We could scrap this patch and I could instead have all IDBTransaction objects be released with some sort of &quot;ReleaseSoon&quot; class which would set a timer and upon it firing do the release.  This would fix the problem and still break reference cycles properly.

How expensive are adding timers?  If they&apos;re pretty cheap, then 2 _might_ have a measurable perf advantage (though we never should have that many active dom objects or suspend/resume/stops, right?).  2 will likely be a bit more fragile, but we could minimize this with asserts.

AP: Any thoughts on which would be best?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336497</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-19 06:55:47 -0800</bug_when>
    <thetext>ScriptExecutionContext needs additional checks when active dom objects are created/destroyed...to make sure that we don&apos;t have any more of these races.

https://bugs.webkit.org/show_bug.cgi?id=52722 and https://bugs.webkit.org/show_bug.cgi?id=52719 are for the actual problems that were caused by not having these checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340106</commentid>
    <comment_count>7</comment_count>
      <attachid>80163</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-25 19:45:36 -0800</bug_when>
    <thetext>Created attachment 80163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340115</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-25 20:21:46 -0800</bug_when>
    <thetext>Attachment 80163 did not build on qt:
Build output: http://queues.webkit.org/results/7497333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340116</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-25 20:24:04 -0800</bug_when>
    <thetext>Attachment 80163 did not build on chromium:
Build output: http://queues.webkit.org/results/7509337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340176</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-26 01:55:27 -0800</bug_when>
    <thetext>Attachment 80163 did not build on chromium:
Build output: http://queues.webkit.org/results/7605318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340190</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-26 03:17:20 -0800</bug_when>
    <thetext>Attachment 80163 did not build on mac:
Build output: http://queues.webkit.org/results/7540361</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340252</commentid>
    <comment_count>12</comment_count>
      <attachid>80163</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-26 07:30:00 -0800</bug_when>
    <thetext>Comment on attachment 80163
Patch

Looks good (except the bot redness) as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340353</commentid>
    <comment_count>13</comment_count>
      <attachid>80209</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-26 11:13:31 -0800</bug_when>
    <thetext>Created attachment 80209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340420</commentid>
    <comment_count>14</comment_count>
      <attachid>80209</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-26 12:53:37 -0800</bug_when>
    <thetext>Comment on attachment 80209
Patch

Since it&apos;s a bool and not a counter, please ASSERT(!m_iteratingActiveDOMObjects) before setting it to true.

It&apos;s a little unfortunate to incur a release mode cost for a debug-only assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340513</commentid>
    <comment_count>15</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-26 15:19:35 -0800</bug_when>
    <thetext>I could make functions and/or a class for it.  With that, I could #ifndef NDEBUG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340550</commentid>
    <comment_count>16</comment_count>
      <attachid>80257</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-26 16:10:05 -0800</bug_when>
    <thetext>Created attachment 80257
with #ifndef NDEBUG

See if you like this any better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344144</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-02 12:35:32 -0800</bug_when>
    <thetext>These bugs have essentially merged.  Sorry for the disorganization...

*** This bug has been marked as a duplicate of bug 52722 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78812</attachid>
            <date>2011-01-13 08:26:25 -0800</date>
            <delta_ts>2011-01-25 19:45:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52366-20110113162623.patch</filename>
            <type>text/plain</type>
            <size>6735</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YmYxMDczZjllYTA3ZTFmYTA1YjcwZDlkYzk3ODAzZWUwNzkyYzU1Li5h
OGQ4MDA4MWVjNTViZGEyM2YzM2UzNTIxYmM0MDU4MDk4NGFhNmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTEtMDEtMTMgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIG5lZWRzIHRvIGl0ZXJhdGUgb3ZlciBhIGNvcHkgb2YgYWxsIGFj
dGl2ZSBkb20gb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIzNjYKKworICAgICAgICBJREJSZXF1ZXN0IGFuZCBJREJUcmFuc2FjdGlvbiBh
cmUgYm90aCBBY3RpdmVET01PYmplY3RzIGFuZCBhcmUgYm90aCBoZWxkIGJ5CisgICAgICAgIEpT
IHdyYXBwZXJzIGFuZCBpbnRlcm5hbCBXZWJDb3JlIG9iamVjdHMuIFdoZW4gdGhlIHNjcmlwdCBl
eGVjdXRpb24gY29udGV4dAorICAgICAgICBpcyBiZWluZyBzdG9wcGVkLCB3ZSBuZWVkIHRvIGFi
b3J0IGV4aXN0aW5nIHRyYW5zYWN0aW9ucy4gVGhpcyByZXN1bHRzIGluCisgICAgICAgIGxpbmtz
IGJldHdlZW4gcmVmIGNvdW50ZWQgb2JqZWN0cyBiZWluZyBicm9rZW4gd2hpY2ggY2FuIHNvbWV0
aW1lcyByZXN1bHQgaW4KKyAgICAgICAgb3RoZXIgbGlua3MgYmVpbmcgYnJva2VuIHdoaWNoIGNh
biByZXN1bHQgaW4gYW4gSURCVHJhbnNhY3Rpb24ncyByZWYgY291bnQKKyAgICAgICAgZ29pbmcg
dG8gMC4gV2hlbiB0aGlzIGhhcHBlbnMsIGl0IHJlbW92ZXMgaXRzZWxmIGZyb20gdGhlIGxpc3Qg
b2YgQWN0aXZlRE9NT2JqZWN0cworICAgICAgICBhbmQgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0
J3MgaXRlcmF0b3IgYmVjb21lcyBpbnZhbGlkLgorCisgICAgICAgIFByb2JhYmx5IHRoZSBiZXN0
IHNvbHV0aW9uIGlzIHRvIGNvcHkgYWxsIHRoZSBrZXlzIChpLmUuIEFjdGl2ZURPTU9iamVjdCop
IHRvIGEKKyAgICAgICAgdGVtcG9yYXJ5IHZlY3RvciBvZiBSZWZQdHJzLiBVbmZvcnR1YW50ZWx5
LCBBY3RpdmVET01PYmplY3QgZG9lcyBub3QgaW1wbGVtZW50CisgICAgICAgIFJlZkNvdW50ZWQg
KG9yIHNpbWlsYXIpIGFuZCBpdCdzIGEgcmVhbGx5IG1lc3N5IChpZiBwb3NzaWJsZSBhdCBhbGwp
IHRvIGhhdmUKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0IHJlZGlyZWN0IHJlZi9kZXJlZiBjYWxs
cyBwcm9wZXJseS4gU28gdGhpcyBwYXRjaCBpbnN0ZWFkIGhhcworICAgICAgICB0byBkb3VibGUg
Y2hlY2sgdGhhdCBlYWNoIGVsZW1lbnQgaW4gdGhlIHZlY3RvciBpcyBzdGlsbCBpbiB0aGUgSGFz
aE1hcCBiZWZvcmUKKyAgICAgICAgZGlzcGF0Y2hpbmcuCisKKyAgICAgICAgVGhpcyBmaXhlcyBm
bGFraW5lc3MgaW4gZXhpc3RpbmcgdGVzdHMgYW5kIEkgZG9uJ3Qgc2VlIGFueSB3YXkgdG8gbW9y
ZSBkZXRlcm1pbmlzdGljYWxseQorICAgICAgICB0ZXN0IHRoaXMgaXNzdWUgKGV2ZW4gdXNpbmcg
d2luZG93LmdjKCkpLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6CisKIDIwMTAtMTIt
MjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAppbmRleCBiZmRhMTdiM2YxYjRkOTNkYWJkOGY2NDEwZGI3NjViNTAz
NjdkZWM4Li42MTU2MGY2ZmNiYTI0MjhkOGM3MmM3ZTFiZjg4NWI1Y2M3OTQ2NjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC03MCwxMCAr
NzAsMTQgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIHsK
LSAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2Jq
ZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3Rz
LmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFT
U0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwotICAg
ICAgICBpdGVyLT5maXJzdC0+Y29udGV4dERlc3Ryb3llZCgpOworICAgIFZlY3RvcjxBY3RpdmVE
T01PYmplY3QqPiBvYmplY3RzOworICAgIGNvcHlLZXlzVG9WZWN0b3IobV9hY3RpdmVET01PYmpl
Y3RzLCBvYmplY3RzKTsKKyAgICBWZWN0b3I8QWN0aXZlRE9NT2JqZWN0Kj46Oml0ZXJhdG9yIG9i
amVjdHNFbmQgPSBvYmplY3RzLmVuZCgpOworICAgIGZvciAoVmVjdG9yPEFjdGl2ZURPTU9iamVj
dCo+OjppdGVyYXRvciBpdGVyID0gb2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IG9iamVjdHNFbmQ7
ICsraXRlcikgeworICAgICAgICBpZiAoIW1fYWN0aXZlRE9NT2JqZWN0cy5jb250YWlucygqaXRl
cikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgKCppdGVyKS0+Y29udGV4dERl
c3Ryb3llZCgpOwogICAgIH0KIAogICAgIEhhc2hTZXQ8TWVzc2FnZVBvcnQqPjo6aXRlcmF0b3Ig
bWVzc2FnZVBvcnRzRW5kID0gbV9tZXNzYWdlUG9ydHMuZW5kKCk7CkBAIC04MSwxMiArODUsMTQg
QEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogICAg
ICAgICBBU1NFUlQoKCppdGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwog
ICAgICAgICAoKml0ZXIpLT5jb250ZXh0RGVzdHJveWVkKCk7CiAgICAgfQorCiAjaWYgRU5BQkxF
KERBVEFCQVNFKQogICAgIGlmIChtX2RhdGFiYXNlVGhyZWFkKSB7CiAgICAgICAgIEFTU0VSVCht
X2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpKTsKICAgICAgICAgbV9kYXRh
YmFzZVRocmVhZCA9IDA7CiAgICAgfQogI2VuZGlmCisKICNpZiBFTkFCTEUoQkxPQikgfHwgRU5B
QkxFKEZJTEVfU1lTVEVNKQogICAgIGlmIChtX2ZpbGVUaHJlYWQpIHsKICAgICAgICAgbV9maWxl
VGhyZWFkLT5zdG9wKCk7CkBAIC0xODYsMzEgKzE5Miw0MyBAQCBib29sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKIAogdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24gd2h5KQogewotICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBt
X2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3VzcGVuZCgpIHNo
b3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KLSAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVj
dCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0
cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVy
YXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2Jq
ZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwotICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3
aHkpOworICAgIFZlY3RvcjxBY3RpdmVET01PYmplY3QqPiBvYmplY3RzOworICAgIGNvcHlLZXlz
VG9WZWN0b3IobV9hY3RpdmVET01PYmplY3RzLCBvYmplY3RzKTsKKworICAgIFZlY3RvcjxBY3Rp
dmVET01PYmplY3QqPjo6aXRlcmF0b3IgZW5kID0gb2JqZWN0cy5lbmQoKTsKKyAgICBmb3IgKFZl
Y3RvcjxBY3RpdmVET01PYmplY3QqPjo6aXRlcmF0b3IgaXRlciA9IG9iamVjdHMuYmVnaW4oKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBpZiAoIW1fYWN0aXZlRE9NT2JqZWN0cy5j
b250YWlucygqaXRlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCgq
aXRlciktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgKCppdGVy
KS0+c3VzcGVuZCh3aHkpOwogICAgIH0KIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKLSAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWlu
c3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgp
IHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KLSAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwotICAgICAgICBpdGVyLT5maXJzdC0+cmVzdW1l
KCk7CisgICAgVmVjdG9yPEFjdGl2ZURPTU9iamVjdCo+IG9iamVjdHM7CisgICAgY29weUtleXNU
b1ZlY3RvcihtX2FjdGl2ZURPTU9iamVjdHMsIG9iamVjdHMpOworCisgICAgVmVjdG9yPEFjdGl2
ZURPTU9iamVjdCo+OjppdGVyYXRvciBlbmQgPSBvYmplY3RzLmVuZCgpOworICAgIGZvciAoVmVj
dG9yPEFjdGl2ZURPTU9iamVjdCo+OjppdGVyYXRvciBpdGVyID0gb2JqZWN0cy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVET01PYmplY3RzLmNv
bnRhaW5zKCppdGVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoKCpp
dGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICAoKml0ZXIp
LT5yZXN1bWUoKTsKICAgICB9CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3Rv
cEFjdGl2ZURPTU9iamVjdHMoKQogewotICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2Fj
dGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3RvcCgpIHNob3VsZG4n
dCBleGVjdXRlIGFyYml0cmFyeSBKUy4KLSAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZv
aWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQo
KTsKLSAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBp
dGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0Vu
ZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpID09IHRoaXMpOwotICAgICAgICBpdGVyLT5maXJzdC0+c3RvcCgpOworICAgIFZl
Y3RvcjxBY3RpdmVET01PYmplY3QqPiBvYmplY3RzOworICAgIGNvcHlLZXlzVG9WZWN0b3IobV9h
Y3RpdmVET01PYmplY3RzLCBvYmplY3RzKTsKKworICAgIFZlY3RvcjxBY3RpdmVET01PYmplY3Qq
Pjo6aXRlcmF0b3IgZW5kID0gb2JqZWN0cy5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxBY3RpdmVE
T01PYmplY3QqPjo6aXRlcmF0b3IgaXRlciA9IG9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgeworICAgICAgICBpZiAoIW1fYWN0aXZlRE9NT2JqZWN0cy5jb250YWlucygqaXRl
cikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgKCppdGVyKS0+c3RvcCgpOwog
ICAgIH0KIAogICAgIC8vIEFsc28gY2xvc2UgTWVzc2FnZVBvcnRzLiBJZiB0aGV5IHdlcmUgQWN0
aXZlRE9NT2JqZWN0cyAodGhleSBjb3VsZCBiZSkgdGhlbiB0aGV5IGNvdWxkIGJlIHN0b3BwZWQg
aW5zdGVhZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80163</attachid>
            <date>2011-01-25 19:45:36 -0800</date>
            <delta_ts>2011-01-26 11:13:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52366-20110125194534.patch</filename>
            <type>text/plain</type>
            <size>6329</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYTE3MDRjM2FhMzJkNWNlMGJlZmMzM2Q1NWViODNhMTdiZjE3OTg4Li5j
NmM0YTZjZDQ5YzdkYTM5NmE3YzkxMWNmZjFjYzNjMTljYTRhYWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTEtMDEtMjUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBuZWVkcyBhZGRpdGlvbmFsIGNoZWNrcyB3aGVuIGFjdGl2ZSBk
b20gb2JqZWN0cyBhcmUgY3JlYXRlZC9kZXN0cm95ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzY2CisKKyAgICAgICAgQWRkIGEgYm9vbGVhbiB0
byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgd2UncmUgaXRlcmF0aW5nIGFuZCB0aGVuIEFTU0VSVCBp
dHMgZmFsc2UKKyAgICAgICAgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgYW4gYWN0aXZlIGRvbSBv
YmplY3QuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbGF5b3V0
IHRlc3RzLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0
ZWRBY3RpdmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZGVzdHJveWVkQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorCiAyMDExLTAxLTI0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA4ZjRjYTA3
MDQzY2EzZjcwNDdjMDkxNzFiMTEyNDhkODY2NDQ1ZTg5Li5mYzZkODZkZDM1NWMxZjk1ZWUzYjI1
YmEzZTFkNjM0ODg5NDEwZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC04NywxNiArODcsMTkgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICwg
bV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQogI2VuZGlmCisgICAgLCBtX2l0ZXJhdGluZ0FjdGl2
ZURPTU9iamVjdHMoZmFsc2UpCiB7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkKIHsKKyAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMg
PSB0cnVlOwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBh
Y3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFz
aE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURP
TU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAg
ICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhp
cyk7CiAgICAgICAgIGl0ZXItPmZpcnN0LT5jb250ZXh0RGVzdHJveWVkKCk7CiAgICAgfQorICAg
IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogCiAgICAgSGFzaFNldDxNZXNz
YWdlUG9ydCo+OjppdGVyYXRvciBtZXNzYWdlUG9ydHNFbmQgPSBtX21lc3NhZ2VQb3J0cy5lbmQo
KTsKICAgICBmb3IgKEhhc2hTZXQ8TWVzc2FnZVBvcnQqPjo6aXRlcmF0b3IgaXRlciA9IG1fbWVz
c2FnZVBvcnRzLmJlZ2luKCk7IGl0ZXIgIT0gbWVzc2FnZVBvcnRzRW5kOyArK2l0ZXIpIHsKQEAg
LTE5Nyw0MyArMjAwLDUzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVk
TWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQqIHBvcnQpCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKIHsKICAgICAvLyBObyBwcm90ZWN0aW9u
IGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IGNh
blN1c3BlbmQoKSBzaG91bGRuJ3QgZXhlY3V0ZSBhcmJpdHJhcnkgSlMuCisgICAgbV9pdGVyYXRp
bmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRv
ciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0
c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHRoaXMpOwotICAgICAgICBpZiAoIWl0ZXItPmZpcnN0LT5jYW5TdXNw
ZW5kKCkpCisgICAgICAgIGlmICghaXRlci0+Zmlyc3QtPmNhblN1c3BlbmQoKSkgeworICAgICAg
ICAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgICAgICB9CisgICAgfSAgICAKKyAgICBtX2l0ZXJhdGlu
Z0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01P
YmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogewogICAgIC8vIE5vIHByb3RlY3Rpb24g
YWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3Vz
cGVuZCgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KKyAgICBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9p
ZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgp
OwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5k
OyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgPT0gdGhpcyk7CiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAg
ICAgfQorICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogfQogCiB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogewogICAg
IC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVy
aW5nIGl0ZXJhdGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgor
ICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3Rp
dmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2
ZURPTU9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZv
aWQqPjo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9
IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAgaXRlci0+Zmlyc3Qt
PnJlc3VtZSgpOwogICAgIH0KKyAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxz
ZTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0
cygpCiB7CiAgICAgLy8gTm8gcHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBj
aGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiBzdG9wKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRy
YXJ5IEpTLgorICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFz
aE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQg
PSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigp
OyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaXRl
ci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAgaXRl
ci0+Zmlyc3QtPnN0b3AoKTsKICAgICB9CisgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3Rz
ID0gZmFsc2U7CiAKICAgICAvLyBBbHNvIGNsb3NlIE1lc3NhZ2VQb3J0cy4gSWYgdGhleSB3ZXJl
IEFjdGl2ZURPTU9iamVjdHMgKHRoZXkgY291bGQgYmUpIHRoZW4gdGhleSBjb3VsZCBiZSBzdG9w
cGVkIGluc3RlYWQuCiAgICAgY2xvc2VNZXNzYWdlUG9ydHMoKTsKQEAgLTI0MywxMiArMjU2LDE0
IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRlZEFjdGl2ZURPTU9iamVjdChB
Y3RpdmVET01PYmplY3QqIG9iamVjdCwgdm9pCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAgICAg
QVNTRVJUKHVwY2FzdFBvaW50ZXIpOworICAgIEFTU0VSVCghbV9pdGVyYXRpbmdBY3RpdmVET01P
YmplY3RzKTsKICAgICBtX2FjdGl2ZURPTU9iamVjdHMuYWRkKG9iamVjdCwgdXBjYXN0UG9pbnRl
cik7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkQWN0aXZlRE9N
T2JqZWN0KEFjdGl2ZURPTU9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChvYmplY3QpOwor
ICAgIEFTU0VSVCghbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzKTsKICAgICBtX2FjdGl2ZURP
TU9iamVjdHMucmVtb3ZlKG9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGI1N2I3NWEwMGJmMDFhMTk0MTQ4YzMwMTI5NjAxM2Ez
MjJmYzMzZmIuLjJjODQzZWM0ZjAwZDAwYjM0ZTM3Njg5OTdlZjUwZDkzMjU4MGNmZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTY2LDYgKzE2
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSGFzaFNldDxNZXNzYWdlUG9ydCo+
IG1fbWVzc2FnZVBvcnRzOwogCiAgICAgICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9p
ZCo+IG1fYWN0aXZlRE9NT2JqZWN0czsKKyAgICAgICAgYm9vbCBtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHM7CiAKICAgICAgICAgSGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80209</attachid>
            <date>2011-01-26 11:13:31 -0800</date>
            <delta_ts>2011-02-02 12:35:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52366-20110126111330.patch</filename>
            <type>text/plain</type>
            <size>6479</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYTE3MDRjM2FhMzJkNWNlMGJlZmMzM2Q1NWViODNhMTdiZjE3OTg4Li5j
NmM0YTZjZDQ5YzdkYTM5NmE3YzkxMWNmZjFjYzNjMTljYTRhYWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTEtMDEtMjUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBuZWVkcyBhZGRpdGlvbmFsIGNoZWNrcyB3aGVuIGFjdGl2ZSBk
b20gb2JqZWN0cyBhcmUgY3JlYXRlZC9kZXN0cm95ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzY2CisKKyAgICAgICAgQWRkIGEgYm9vbGVhbiB0
byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgd2UncmUgaXRlcmF0aW5nIGFuZCB0aGVuIEFTU0VSVCBp
dHMgZmFsc2UKKyAgICAgICAgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgYW4gYWN0aXZlIGRvbSBv
YmplY3QuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbGF5b3V0
IHRlc3RzLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0
ZWRBY3RpdmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZGVzdHJveWVkQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorCiAyMDExLTAxLTI0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA4ZjRjYTA3
MDQzY2EzZjcwNDdjMDkxNzFiMTEyNDhkODY2NDQ1ZTg5Li5lNGQzYjQ0YTZmM2I3OTRjM2JjNmY1
NGFiYzhhYjAzNDRiNTg1MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC04Myw3ICs4Myw4IEBAIHB1YmxpYzoKIH07CiAKIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQotICAgIDogbV9pbkRpc3Bh
dGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyhm
YWxzZSkKKyAgICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCiAjaWYgRU5BQkxFKERB
VEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC05Miwx
MSArOTMsMTMgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkK
IHsKKyAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhhc2hNYXA8
QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9h
Y3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3Qq
LCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRl
ciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZp
cnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CiAgICAgICAgIGl0ZXItPmZp
cnN0LT5jb250ZXh0RGVzdHJveWVkKCk7CiAgICAgfQorICAgIG1faXRlcmF0aW5nQWN0aXZlRE9N
T2JqZWN0cyA9IGZhbHNlOwogCiAgICAgSGFzaFNldDxNZXNzYWdlUG9ydCo+OjppdGVyYXRvciBt
ZXNzYWdlUG9ydHNFbmQgPSBtX21lc3NhZ2VQb3J0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8
TWVzc2FnZVBvcnQqPjo6aXRlcmF0b3IgaXRlciA9IG1fbWVzc2FnZVBvcnRzLmJlZ2luKCk7IGl0
ZXIgIT0gbWVzc2FnZVBvcnRzRW5kOyArK2l0ZXIpIHsKQEAgLTE5Nyw0MyArMjAwLDUzIEBAIHZv
aWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBv
cnQqIHBvcnQpCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKCkKIHsKICAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01P
YmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IGNhblN1c3BlbmQoKSBzaG91bGRuJ3Qg
ZXhlY3V0ZSBhcmJpdHJhcnkgSlMuCisgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0g
dHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0
aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hN
YXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01P
YmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAg
ICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMp
OwotICAgICAgICBpZiAoIWl0ZXItPmZpcnN0LT5jYW5TdXNwZW5kKCkpCisgICAgICAgIGlmICgh
aXRlci0+Zmlyc3QtPmNhblN1c3BlbmQoKSkgeworICAgICAgICAgICAgbV9pdGVyYXRpbmdBY3Rp
dmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgICAgICB9CisgICAgfSAgICAKKyAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3Bl
bnNpb24gd2h5KQogewogICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9i
amVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3VzcGVuZCgpIHNob3VsZG4ndCBleGVj
dXRlIGFyYml0cmFyeSBKUy4KKyAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVl
OwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVP
YmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxB
Y3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVj
dHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAg
QVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CiAg
ICAgICAgIGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAgICAgfQorICAgIG1faXRlcmF0aW5n
QWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogewogICAgIC8vIE5vIHByb3RlY3Rpb24gYWdh
aW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogcmVzdW1l
KCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgorICAgIG1faXRlcmF0aW5nQWN0aXZl
RE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9
IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsr
aXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSB0aGlzKTsKICAgICAgICAgaXRlci0+Zmlyc3QtPnJlc3VtZSgpOwogICAgIH0KKyAg
ICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKIH0KIAogdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAgICAgLy8gTm8gcHJv
dGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0
aW9uOiBzdG9wKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgorICAgIG1faXRlcmF0
aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3Qq
LCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMu
ZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0
b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVj
dHNFbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAgaXRlci0+Zmlyc3QtPnN0b3AoKTsKICAg
ICB9CisgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAKICAgICAvLyBB
bHNvIGNsb3NlIE1lc3NhZ2VQb3J0cy4gSWYgdGhleSB3ZXJlIEFjdGl2ZURPTU9iamVjdHMgKHRo
ZXkgY291bGQgYmUpIHRoZW4gdGhleSBjb3VsZCBiZSBzdG9wcGVkIGluc3RlYWQuCiAgICAgY2xv
c2VNZXNzYWdlUG9ydHMoKTsKQEAgLTI0MywxMiArMjU2LDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6Y3JlYXRlZEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVj
dCwgdm9pCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAgICAgQVNTRVJUKHVwY2FzdFBvaW50ZXIp
OworICAgIEFTU0VSVCghbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzKTsKICAgICBtX2FjdGl2
ZURPTU9iamVjdHMuYWRkKG9iamVjdCwgdXBjYXN0UG9pbnRlcik7CiB9CiAKIHZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVj
dCogb2JqZWN0KQogewogICAgIEFTU0VSVChvYmplY3QpOworICAgIEFTU0VSVCghbV9pdGVyYXRp
bmdBY3RpdmVET01PYmplY3RzKTsKICAgICBtX2FjdGl2ZURPTU9iamVjdHMucmVtb3ZlKG9iamVj
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmlu
ZGV4IGI1N2I3NWEwMGJmMDFhMTk0MTQ4YzMwMTI5NjAxM2EzMjJmYzMzZmIuLjJjODQzZWM0ZjAw
ZDAwYjM0ZTM3Njg5OTdlZjUwZDkzMjU4MGNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTY2LDYgKzE2Niw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgSGFzaFNldDxNZXNzYWdlUG9ydCo+IG1fbWVzc2FnZVBvcnRzOwogCiAg
ICAgICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+IG1fYWN0aXZlRE9NT2JqZWN0
czsKKyAgICAgICAgYm9vbCBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHM7CiAKICAgICAgICAg
SGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsKIAo=
</data>
<flag name="review"
          id="71675"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80257</attachid>
            <date>2011-01-26 16:10:05 -0800</date>
            <delta_ts>2011-02-02 12:36:00 -0800</delta_ts>
            <desc>with #ifndef NDEBUG</desc>
            <filename>a</filename>
            <type>text/plain</type>
            <size>7620</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYTE3MDRjLi5jNmM0YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDEtMjUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBuZWVkcyBhZGRpdGlvbmFsIGNoZWNrcyB3aGVuIGFjdGl2ZSBkb20gb2JqZWN0
cyBhcmUgY3JlYXRlZC9kZXN0cm95ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUyMzY2CisKKyAgICAgICAgQWRkIGEgYm9vbGVhbiB0byBrZWVwIHRy
YWNrIG9mIHdoZXRoZXIgd2UncmUgaXRlcmF0aW5nIGFuZCB0aGVuIEFTU0VSVCBpdHMgZmFsc2UK
KyAgICAgICAgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgYW4gYWN0aXZlIGRvbSBvYmplY3QuCisK
KyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbGF5b3V0IHRlc3RzLgor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5T
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRBY3RpdmVE
T01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVz
dHJveWVkQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oOgorCiAyMDExLTAxLTI0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA4ZjRjYTA3Li41OGYyMzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBA
IC04Miw2ICs4Miw0MyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9j
YWxsU3RhY2s7CiB9OwogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY3RpdmVET01PYmplY3RJ
dGVyYXRpb25DaGVja2VyOjpBY3RpdmVET01PYmplY3RJdGVyYXRpb25DaGVja2VyKCkKKyNpZm5k
ZWYgTkRFQlVHCisgICAgOiBtX2l0ZXJhdGluZyhmYWxzZSkKKyNlbmRpZgoreworfQorCitTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpBY3RpdmVET01PYmplY3RJdGVyYXRpb25DaGVja2VyOjp+QWN0
aXZlRE9NT2JqZWN0SXRlcmF0aW9uQ2hlY2tlcigpCit7CisjaWZuZGVmIE5ERUJVRworICAgIEFT
U0VSVCghbV9pdGVyYXRpbmcpOworI2VuZGlmCit9CisKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6QWN0aXZlRE9NT2JqZWN0SXRlcmF0aW9uQ2hlY2tlcjo6c3RhcnRPZkl0ZXJhdGlvbigp
Cit7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVCghbV9pdGVyYXRpbmcpOworICAgIG1faXRl
cmF0aW5nID0gdHJ1ZTsKKyNlbmRpZgorfQorCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OkFjdGl2ZURPTU9iamVjdEl0ZXJhdGlvbkNoZWNrZXI6OmVuZE9mSXRlcmF0aW9uKCkKK3sKKyNp
Zm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKG1faXRlcmF0aW5nKTsKKyAgICBtX2l0ZXJhdGluZyA9
IGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWN0aXZl
RE9NT2JqZWN0SXRlcmF0aW9uQ2hlY2tlcjo6YXNzZXJ0Tm90SXRlcmF0aW5nKCkgY29uc3QKK3sK
KyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKCFtX2l0ZXJhdGluZyk7CisjZW5kaWYKK30KKwog
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgOiBt
X2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQogI2lmIEVOQUJMRShEQVRBQkFTRSkKQEAgLTky
LDExICsxMjksMTMgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkKIHsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNJdGVyYXRpb25DaGVja2VyLnN0YXJ0T2ZJdGVy
YXRpb24oKTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3Ig
YWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhh
c2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVE
T01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAg
ICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRo
aXMpOwogICAgICAgICBpdGVyLT5maXJzdC0+Y29udGV4dERlc3Ryb3llZCgpOwogICAgIH0KKyAg
ICBtX2FjdGl2ZURPTU9iamVjdHNJdGVyYXRpb25DaGVja2VyLmVuZE9mSXRlcmF0aW9uKCk7CiAK
ICAgICBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj46Oml0ZXJhdG9yIG1lc3NhZ2VQb3J0c0VuZCA9IG1f
bWVzc2FnZVBvcnRzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxNZXNzYWdlUG9ydCo+OjppdGVy
YXRvciBpdGVyID0gbV9tZXNzYWdlUG9ydHMuYmVnaW4oKTsgaXRlciAhPSBtZXNzYWdlUG9ydHNF
bmQ7ICsraXRlcikgewpAQCAtMTk3LDQzICsyMzYsNTMgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCogcG9ydCkKIGJvb2wgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogewogICAg
IC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVy
aW5nIGl0ZXJhdGlvbjogY2FuU3VzcGVuZCgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBK
Uy4KKyAgICBtX2FjdGl2ZURPTU9iamVjdHNJdGVyYXRpb25DaGVja2VyLnN0YXJ0T2ZJdGVyYXRp
b24oKTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0
aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hN
YXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01P
YmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAg
ICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMp
OwotICAgICAgICBpZiAoIWl0ZXItPmZpcnN0LT5jYW5TdXNwZW5kKCkpCisgICAgICAgIGlmICgh
aXRlci0+Zmlyc3QtPmNhblN1c3BlbmQoKSkgeworICAgICAgICAgICAgbV9hY3RpdmVET01PYmpl
Y3RzSXRlcmF0aW9uQ2hlY2tlci5lbmRPZkl0ZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKyAgICAgICAgfQorICAgIH0gICAgCisgICAgbV9hY3RpdmVET01PYmpl
Y3RzSXRlcmF0aW9uQ2hlY2tlci5lbmRPZkl0ZXJhdGlvbigpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
KEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7CiAgICAgLy8gTm8g
cHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRl
cmF0aW9uOiBzdXNwZW5kKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgorICAgIG1f
YWN0aXZlRE9NT2JqZWN0c0l0ZXJhdGlvbkNoZWNrZXIuc3RhcnRPZkl0ZXJhdGlvbigpOwogICAg
IEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3Rz
RW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVE
T01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVn
aW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJU
KGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CiAgICAgICAg
IGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAgICAgfQorICAgIG1fYWN0aXZlRE9NT2JqZWN0
c0l0ZXJhdGlvbkNoZWNrZXIuZW5kT2ZJdGVyYXRpb24oKTsKIH0KIAogdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKICAgICAvLyBObyBwcm90
ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRp
b246IHJlc3VtZSgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KKyAgICBtX2FjdGl2
ZURPTU9iamVjdHNJdGVyYXRpb25DaGVja2VyLnN0YXJ0T2ZJdGVyYXRpb24oKTsKICAgICBIYXNo
TWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9
IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2Jq
ZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7
IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVy
LT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwogICAgICAgICBpdGVy
LT5maXJzdC0+cmVzdW1lKCk7CiAgICAgfQorICAgIG1fYWN0aXZlRE9NT2JqZWN0c0l0ZXJhdGlv
bkNoZWNrZXIuZW5kT2ZJdGVyYXRpb24oKTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAgICAgLy8gTm8gcHJvdGVjdGlvbiBhZ2Fp
bnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiBzdG9wKCkg
c2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgorICAgIG1fYWN0aXZlRE9NT2JqZWN0c0l0
ZXJhdGlvbkNoZWNrZXIuc3RhcnRPZkl0ZXJhdGlvbigpOwogICAgIEhhc2hNYXA8QWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01P
YmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3Rp
dmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdG9w
KCk7CiAgICAgfQorICAgIG1fYWN0aXZlRE9NT2JqZWN0c0l0ZXJhdGlvbkNoZWNrZXIuZW5kT2ZJ
dGVyYXRpb24oKTsKIAogICAgIC8vIEFsc28gY2xvc2UgTWVzc2FnZVBvcnRzLiBJZiB0aGV5IHdl
cmUgQWN0aXZlRE9NT2JqZWN0cyAodGhleSBjb3VsZCBiZSkgdGhlbiB0aGV5IGNvdWxkIGJlIHN0
b3BwZWQgaW5zdGVhZC4KICAgICBjbG9zZU1lc3NhZ2VQb3J0cygpOwpAQCAtMjQzLDEyICsyOTIs
MTQgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkQWN0aXZlRE9NT2JqZWN0
KEFjdGl2ZURPTU9iamVjdCogb2JqZWN0LCB2b2kKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKICAg
ICBBU1NFUlQodXBjYXN0UG9pbnRlcik7CisgICAgbV9hY3RpdmVET01PYmplY3RzSXRlcmF0aW9u
Q2hlY2tlci5hc3NlcnROb3RJdGVyYXRpbmcoKTsKICAgICBtX2FjdGl2ZURPTU9iamVjdHMuYWRk
KG9iamVjdCwgdXBjYXN0UG9pbnRlcik7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZGVzdHJveWVkQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCogb2JqZWN0KQogewog
ICAgIEFTU0VSVChvYmplY3QpOworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0l0ZXJhdGlvbkNoZWNr
ZXIuYXNzZXJ0Tm90SXRlcmF0aW5nKCk7CiAgICAgbV9hY3RpdmVET01PYmplY3RzLnJlbW92ZShv
YmplY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCBiNTdiNzVhLi41NWFkOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKQEAgLTE2NSw3ICsxNjUsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIEhhc2hTZXQ8TWVzc2FnZVBvcnQqPiBtX21lc3NhZ2VQb3J0czsKIAorICAg
ICAgICBjbGFzcyBBY3RpdmVET01PYmplY3RJdGVyYXRpb25DaGVja2VyIHsKKyAgICAgICAgcHVi
bGljOgorICAgICAgICAgICAgQWN0aXZlRE9NT2JqZWN0SXRlcmF0aW9uQ2hlY2tlcigpOworICAg
ICAgICAgICAgfkFjdGl2ZURPTU9iamVjdEl0ZXJhdGlvbkNoZWNrZXIoKTsKKyAgICAgICAgICAg
IHZvaWQgc3RhcnRPZkl0ZXJhdGlvbigpOworICAgICAgICAgICAgdm9pZCBlbmRPZkl0ZXJhdGlv
bigpOworICAgICAgICAgICAgdm9pZCBhc3NlcnROb3RJdGVyYXRpbmcoKSBjb25zdDsKKyNpZm5k
ZWYgTkRFQlVHCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBib29sIG1faXRlcmF0aW5n
OworI2VuZGlmCisgICAgICAgIH07CiAgICAgICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwg
dm9pZCo+IG1fYWN0aXZlRE9NT2JqZWN0czsKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0SXRlcmF0
aW9uQ2hlY2tlciBtX2FjdGl2ZURPTU9iamVjdHNJdGVyYXRpb25DaGVja2VyOwogCiAgICAgICAg
IEhhc2hNYXA8aW50LCBET01UaW1lcio+IG1fdGltZW91dHM7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>