<?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>62642</bug_id>
          
          <creation_ts>2011-06-14 09:03:45 -0700</creation_ts>
          <short_desc>[Efl] Add EflOwnPtr to wtf</short_desc>
          <delta_ts>2011-06-17 10:30: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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>61958</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Raphael Kubo da Costa (:rakuco)">rakuco</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>420461</commentid>
    <comment_count>0</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:03:45 -0700</bug_when>
    <thetext>[Efl] Add EflOwnPtr to wtf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420465</commentid>
    <comment_count>1</comment_count>
      <attachid>97127</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:07:03 -0700</bug_when>
    <thetext>Created attachment 97127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420468</commentid>
    <comment_count>2</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:10:24 -0700</bug_when>
    <thetext>As discussed in the bugs related to upstreaming the EFL port&apos;s DumpRenderTree (such as [1]), it would be very good to have some smart pointer class to manage our char* allocations (as well as some others such as our Evas_Object pointers).

Since the memory we use is allocated with malloc(), we cannot rely on OwnPtr, which uses operator delete(); GOwnPtr uses g_free() on its turn.

It will be possible to use it in our WebKit port itself too, shortening our error handling and memory management code quite a bit.

[1] https://bugs.webkit.org/show_bug.cgi?id=62034#c2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420478</commentid>
    <comment_count>3</comment_count>
      <attachid>97130</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:21:48 -0700</bug_when>
    <thetext>Created attachment 97130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420479</commentid>
    <comment_count>4</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:22:32 -0700</bug_when>
    <thetext>The style bot will probably complain about EflOwnPtr.h, but we cannot avoid calling Evas_Object Evas_Object :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420481</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-14 09:24:54 -0700</bug_when>
    <thetext>Attachment 97130 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:34:  Evas_Object is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420509</commentid>
    <comment_count>6</comment_count>
      <attachid>97131</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:55:47 -0700</bug_when>
    <thetext>Created attachment 97131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420513</commentid>
    <comment_count>7</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:56:23 -0700</bug_when>
    <thetext>Sorry, this should hopefully be the last version. False positive style alarm still included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420514</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-14 09:58:11 -0700</bug_when>
    <thetext>Attachment 97131 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:34:  Evas_Object is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420560</commentid>
    <comment_count>9</comment_count>
      <attachid>97131</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-06-14 10:46:39 -0700</bug_when>
    <thetext>Comment on attachment 97131
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +        [Efl] Add EflOwnPtr.h.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=62642
&gt; +

The name EflOwnPtr looks very weird to me. Also, I&apos;m thinking if we couldn&apos;t share this implementation with GTK, with #ifdef on the different parts since they are very similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421221</commentid>
    <comment_count>10</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 06:21:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The name EflOwnPtr looks very weird to me.

EOwnPtr looks worse IMO.

&gt; Also, I&apos;m thinking if we couldn&apos;t share this implementation with GTK, with #ifdef on the different parts since they are very similar.

Couldn&apos;t we do that later after discussing this with the GTK guys?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421231</commentid>
    <comment_count>11</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 06:39:17 -0700</bug_when>
    <thetext>To make this even more explicit, as asked by Lucas: it is not that we do not want to collaborate with the GTK folks, but merging these classes would require either renaming GOwnPtr, moving it out of gobject/ and #ifdef&apos;ing the g*-dependent code or unconditionally including gobject/ in EFL&apos;s CMakeLists.txts and then #ifdef&apos;ing the g*-dependent code in GOwnPtr.

These changes may look valid, but could certainly be done in a later stage; right now it&apos;d be good to have this in so that the other 5 bug reports related to upstreaming DumpRenderTree and ImageDiff are unblocked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421248</commentid>
    <comment_count>12</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-06-15 07:19:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; To make this even more explicit, as asked by Lucas: it is not that we do not want to collaborate with the GTK folks, but merging these classes would require either renaming GOwnPtr, moving it out of gobject/ and #ifdef&apos;ing the g*-dependent code or unconditionally including gobject/ in EFL&apos;s CMakeLists.txts and then #ifdef&apos;ing the g*-dependent code in GOwnPtr.
&gt; 
&gt; These changes may look valid, but could certainly be done in a later stage; right now it&apos;d be good to have this in so that the other 5 bug reports related to upstreaming DumpRenderTree and ImageDiff are unblocked.

It seems reasonable. Informal r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421257</commentid>
    <comment_count>13</comment_count>
      <attachid>97131</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 07:29:06 -0700</bug_when>
    <thetext>Comment on attachment 97131
Patch

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

&gt; Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:39
&gt; +template &lt;&gt; void freeOwnedEflPtr&lt;Evas_Object&gt;(Evas_Object*);

Can&apos;t we just add this one function to OwnPtr and then OwnPtr will work correctly for EFL objects?

&gt; Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:132
&gt; +template &lt;typename T&gt; inline void freeOwnedEflPtr(T* ptr)
&gt; +{
&gt; +    std::free(ptr);
&gt; +}

I think we just need this type specialization for OwnPtr and then OwnPtr will work like a charm for what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421272</commentid>
    <comment_count>14</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 07:43:36 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:132
&gt; &gt; +template &lt;typename T&gt; inline void freeOwnedEflPtr(T* ptr)
&gt; &gt; +{
&gt; &gt; +    std::free(ptr);
&gt; &gt; +}
&gt; 
&gt; I think we just need this type specialization for OwnPtr and then OwnPtr will work like a charm for what you want.

Sorry, I don&apos;t get this part -- there is no specialization in this section, how would OwnPtr know when to call &apos;delete ptr&apos; and &apos;free(ptr)&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421277</commentid>
    <comment_count>15</comment_count>
      <attachid>97131</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-15 07:54:02 -0700</bug_when>
    <thetext>Comment on attachment 97131
Patch

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

&gt; Source/JavaScriptCore/wtf/efl/EflOwnPtr.cpp:32
&gt; +{
&gt; +    evas_object_del(ptr);
&gt; +}

Are Evas Objects always reference counted [1]? If so it would probably be more correct to specialize RefPtr instead.

1. http://docs.enlightenment.org/auto/evas/group__Evas__Object__Group__Basic.html#gaa22895e88e2cb157b9c38a6d3ce10723

&gt;&gt; Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:132
&gt;&gt; +}
&gt; 
&gt; I think we just need this type specialization for OwnPtr and then OwnPtr will work like a charm for what you want.

Totally agree with Eric here. Just be sure to always use new when allocating memory with OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421282</commentid>
    <comment_count>16</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 07:57:35 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt;&gt; Source/JavaScriptCore/wtf/efl/EflOwnPtr.h:132
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; I think we just need this type specialization for OwnPtr and then OwnPtr will work like a charm for what you want.
&gt; 
&gt; Totally agree with Eric here. Just be sure to always use new when allocating memory with OwnPtr.

That&apos;s the problem -- I&apos;m using *OwnPtr to manage pointers created by EFL itself, so there&apos;s no new involved whatsoever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421287</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-15 08:02:15 -0700</bug_when>
    <thetext>(In reply to comment #16)

&gt; That&apos;s the problem -- I&apos;m using *OwnPtr to manage pointers created by EFL itself, so there&apos;s no new involved whatsoever.

Are these pointers that are not Evas_Object*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421289</commentid>
    <comment_count>18</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 08:05:43 -0700</bug_when>
    <thetext>Yes. Most of the time I&apos;m thinking of char*s here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421319</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-15 08:38:11 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Yes. Most of the time I&apos;m thinking of char*s here.

If you must have a specialized OwnPtr, we can probably share most of the code with GOwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421341</commentid>
    <comment_count>20</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 09:07:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; If you must have a specialized OwnPtr, we can probably share most of the code with GOwnPtr.

I think so, too. But I still don&apos;t know what to do in the general case, such as char*&apos;s: do you suggest making GOwnPtr&apos;s default freeOwnedGPtr call g_free() or free() depending on the platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421347</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-15 09:08:54 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; If you must have a specialized OwnPtr, we can probably share most of the code with GOwnPtr.
&gt; 
&gt; I think so, too. But I still don&apos;t know what to do in the general case, such as char*&apos;s: do you suggest making GOwnPtr&apos;s default freeOwnedGPtr call g_free() or free() depending on the platform?

Yes, that could work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421355</commentid>
    <comment_count>22</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 09:14:37 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; If you must have a specialized OwnPtr, we can probably share most of the code with GOwnPtr.
&gt; &gt; 
&gt; &gt; I think so, too. But I still don&apos;t know what to do in the general case, such as char*&apos;s: do you suggest making GOwnPtr&apos;s default freeOwnedGPtr call g_free() or free() depending on the platform?
&gt; 
&gt; Yes, that could work.

Good. Going back to comment #11, do you think it makes sense to either move GOwnPtr out of gobject/ to make it more general? How about specializing OwnPtr for GError, GList and the rest and removing the GOwnPtr specializations for them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421364</commentid>
    <comment_count>23</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-15 09:19:55 -0700</bug_when>
    <thetext>(In reply to comment #22)

&gt; Good. Going back to comment #11, do you think it makes sense to either move GOwnPtr out of gobject/ to make it more general? How about specializing OwnPtr for GError, GList and the rest and removing the GOwnPtr specializations for them?

This could probably be several patches. 

1. Convert the GOwnPtr specializations to OwnPtr specializations.
2. Create a smart pointer to be used for types that need to call free/g_free. We could probably start afresh from OwnFastMallocPtr.h, which is very light-weight.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421435</commentid>
    <comment_count>24</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 10:41:57 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; 
&gt; &gt; Good. Going back to comment #11, do you think it makes sense to either move GOwnPtr out of gobject/ to make it more general? How about specializing OwnPtr for GError, GList and the rest and removing the GOwnPtr specializations for them?
&gt; 
&gt; This could probably be several patches. 
&gt; 
&gt; 1. Convert the GOwnPtr specializations to OwnPtr specializations.

Sounds reasonable. I started playing around with this, but I&apos;m getting some errors because GOwnPtr has outPtr(), which OwnPtr does not. I wonder if such addition to OwnPtr would be welcome.

&gt; 2. Create a smart pointer to be used for types that need to call free/g_free. We could probably start afresh from OwnFastMallocPtr.h, which is very light-weight.

Looking at it, using OwnFastMallocPtr itself would already solve my char* management issues. I&apos;m open to ideas on where to put g_free() in the code flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421448</commentid>
    <comment_count>25</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-15 11:00:47 -0700</bug_when>
    <thetext>(In reply to comment #24)

&gt; &gt; 2. Create a smart pointer to be used for types that need to call free/g_free. We could probably start afresh from OwnFastMallocPtr.h, which is very light-weight.
&gt; 
&gt; Looking at it, using OwnFastMallocPtr itself would already solve my char* management issues. I&apos;m open to ideas on where to put g_free() in the code flow.

It seems like this would only be the case if TCMalloc was disabled. fastFree and fastAlloc work via TCMalloc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421941</commentid>
    <comment_count>26</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-16 07:19:26 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; 
&gt; &gt; &gt; 2. Create a smart pointer to be used for types that need to call free/g_free. We could probably start afresh from OwnFastMallocPtr.h, which is very light-weight.
&gt; &gt; 
&gt; &gt; Looking at it, using OwnFastMallocPtr itself would already solve my char* management issues. I&apos;m open to ideas on where to put g_free() in the code flow.
&gt; 
&gt; It seems like this would only be the case if TCMalloc was disabled. fastFree and fastAlloc work via TCMalloc.

Oh well :)

Given that OwnFastMallocPtr doesn&apos;t seem to be very well-suited for inheritance (no virtual destructor, for example), do you suggest starting a new smart pointer class based on it (but not inheriting from it)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421949</commentid>
    <comment_count>27</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-16 07:35:33 -0700</bug_when>
    <thetext>(In reply to comment #26)

&gt; Oh well :)
&gt; 
&gt; Given that OwnFastMallocPtr doesn&apos;t seem to be very well-suited for inheritance (no virtual destructor, for example), do you suggest starting a new smart pointer class based on it (but not inheriting from it)?

Yes, though it does seem as if GOwnPtr has some nice features as well. It&apos;s up to you in the end whether to make the shared class based on GOwnPtr or OwnFastMallocPtr. Whatever seems more reasonable to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422145</commentid>
    <comment_count>28</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-16 12:43:13 -0700</bug_when>
    <thetext>So it looks like it will be more difficult to merge our smart pointer needs with GOwnPtr than expected.

I also can&apos;t just add some specializations for Evas_Object and friends to OwnPtr to these object types because the actual definitions of Evas_Object, Ecore_Evas &amp; co. is actually done in a private header which is not installed by the EFL, which breaks operator* and other methods which need the actual structs.

So how do you all folks feel about going back to the original EflOwnPtr idea which just calls free() on the common case, has specializations for EFL structs and works without needing the struct definitions (ie. no references to T, but only to T*)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422694</commentid>
    <comment_count>29</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-17 10:21:57 -0700</bug_when>
    <thetext>After working on this a bit more, I actually got some OwnPtr specializations for EFL objects working, and OwnFastMallocPtr looks enough for our char* needs.

I&apos;m closing this bug and will open a new one with our OwnPtr specializations shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422699</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-17 10:30:44 -0700</bug_when>
    <thetext>I appreciate you taking the time to get this all right. :)  thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97127</attachid>
            <date>2011-06-14 09:07:03 -0700</date>
            <delta_ts>2011-06-14 09:21:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62642-20110614131024.patch</filename>
            <type>text/plain</type>
            <size>7074</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiMjg0OWM5NTk4MWFjOTFjMjQwODdlZTQ5YzU0
NzkwNWI4NzBjOWEuLjJlNmFlNjE3NTRmNGRjNDUzNGExMzgyYmQzNDFkNDc2YzEzYzg1NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTA2LTE0ICBSYXBo
YWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFZmxdIEFkZCBFZmxPd25QdHIuaC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjQyCisK
KyAgICAgICAgSXQgd29ya3Mgc2ltaWxhcmx5IHRvIEdPd25QdHIgYW5kIE93blB0ciwgYnV0IGNh
bGxzIGZyZWUoKSBpbnN0ZWFkIG9mCisgICAgICAgIGdfZnJlZSgpIGFuZCBkZWxldGUgdG8gZnJl
ZSBtZW1vcnkuCisKKyAgICAgICAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBwdXQgRXZhc19PYmpl
Y3QncyBpbiBzbWFydCBwb2ludGVyIGFzIHdlbGwsCisgICAgICAgIHRha2luZyBjYXJlIG9mIGNh
bGxpbmcgZXZhc19vYmplY3RfZGVsKCkgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogd3RmL2VmbC9FZmxPd25QdHIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6RXZhc19PYmplY3QpOgorICAgICAgICAqIHd0Zi9lZmwvRWZsT3duUHRy
Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6OkVmbE93blB0cik6CisgICAgICAg
IChXVEY6OkVmbE93blB0cjo6fkVmbE93blB0cik6CisgICAgICAgIChXVEY6OkVmbE93blB0cjo6
Z2V0KToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6
RWZsT3duUHRyOjpvdXRQdHIpOgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6OnNldCk6CisgICAg
ICAgIChXVEY6OkVmbE93blB0cjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6Om9w
ZXJhdG9yKik6CisgICAgICAgIChXVEY6OkVmbE93blB0cjo6b3BlcmF0b3ItPik6CisgICAgICAg
IChXVEY6OkVmbE93blB0cjo6b3BlcmF0b3IhKToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpz
d2FwKToKKyAgICAgICAgKFdURjo6c3dhcCk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV1RGOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6Z2V0UHRyKToKKyAgICAg
ICAgKFdURjo6ZnJlZU93bmVkKToKKwogMjAxMS0wNS0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggNTZlNjc4NjE5Yzdm
MDNkM2Y1OWVmN2YzZjBhYmIxY2JjM2YyNGYwMy4uOGMzYWJjMDgyZjZiZjU0NWMzMzRjYjVjNDEw
NDkyMjQ3MGQzZjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFr
ZUxpc3RzRWZsLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHNF
ZmwudHh0CkBAIC04LDYgKzgsNyBAQCBFTkRJRigpCiAKIExJU1QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgZWZsL01haW5UaHJlYWRFZmwuY3BwCisgICAgZWZsL0VmbE93blB0ci5jcHAKIAogICAg
IE9TQWxsb2NhdG9yUG9zaXguY3BwCiAgICAgVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9FZmxPd25QdHIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNiMjhkZTVhODJhODJmYzAyNDg5YThiMzY3NDI1N2Q1ODUyMTg0ZjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9FZmxPd25QdHIuY3BwCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZmxPd25QdHIuaCIK
KworI2luY2x1ZGUgPEV2YXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDw+IHZv
aWQgZnJlZU93bmVkRWZsUHRyPEV2YXNfT2JqZWN0PihFdmFzX09iamVjdCogcHRyKQoreworICAg
IGV2YXNfb2JqZWN0X2RlbChwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9lZmwvRWZsT3duUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNjZmZlMmE0ZmQ1
MzhkNDEyYTM5ZTY5NTkyNjAwOTRiZGEzNjE5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5oCkBAIC0wLDAgKzEsMTM1IEBACisvKgor
ICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgRWZsT3duUHRy
X2gKKyNkZWZpbmUgRWZsT3duUHRyX2gKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxjc3RkbGliPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIHZvaWQgZnJlZU93bmVkRWZsUHRyKFQqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGZy
ZWVPd25lZEVmbFB0cjxFdmFzX09iamVjdD4oRXZhc19PYmplY3QqKTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIEVmbE93blB0ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRWZs
T3duUHRyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFZmxPd25QdHIoVCogcHRyID0gMCkgOiBt
X3B0cihwdHIpIHsgfQorICAgIH5FZmxPd25QdHIoKSB7IGZyZWVPd25lZEVmbFB0cihtX3B0cik7
IH0KKworICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisgICAgVCogcmVsZWFz
ZSgpCisgICAgeworICAgICAgICBUKiBwdHIgPSBtX3B0cjsKKyAgICAgICAgbV9wdHIgPSAwOwor
ICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIFQqJiBvdXRQdHIoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3B0cik7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKKyAg
ICB2b2lkIHNldChUKiBwdHIpCisgICAgeworICAgICAgICBBU1NFUlQoIXB0ciB8fCBtX3B0ciAh
PSBwdHIpOworICAgICAgICBmcmVlT3duZWRFZmxQdHIobV9wdHIpOworICAgICAgICBtX3B0ciA9
IHB0cjsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIFQqIHB0ciA9
IG1fcHRyOworICAgICAgICBtX3B0ciA9IDA7CisgICAgICAgIGZyZWVPd25lZEVmbFB0cihwdHIp
OworICAgIH0KKworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRyOworICAgIH0KKworICAgIFQqIG9wZXJh
dG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
IW1fcHRyOyB9CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxp
Y2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisg
ICAgdHlwZWRlZiBUKiBFZmxPd25QdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgIG9wZXJh
dG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZFZmxPd25Q
dHI6Om1fcHRyIDogMDsgfQorCisgICAgdm9pZCBzd2FwKEVmbE93blB0ciYgbykgeyBzdGQ6OnN3
YXAobV9wdHIsIG8ubV9wdHIpOyB9CisKK3ByaXZhdGU6CisgICAgVCogbV9wdHI7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgc3dhcChFZmxPd25QdHI8VD4mIGEsIEVm
bE93blB0cjxUPiYgYikKK3sKKyAgICBhLnN3YXAoYik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVmbE93blB0cjxU
PiYgYSwgVSogYikKK3sgCisgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgCit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNv
bnN0IEVmbE93blB0cjxVPiYgYikgCit7CisgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEVmbE93blB0cjxUPiYgYSwgVSogYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBi
OyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oVCogYSwgY29uc3QgRWZsT3duUHRyPFU+JiBiKQoreyAKKyAgICByZXR1cm4gYSAh
PSBiLmdldCgpOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBF
ZmxPd25QdHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IEVmbE93blB0cjxUPiYgcCkKK3sKKyAg
ICByZXR1cm4gcC5nZXQoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lk
IGZyZWVPd25lZChUKiBwdHIpCit7CisgICAgc3RkOjpmcmVlKHB0cik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkVmbE93blB0cjsKKworI2VuZGlmIC8vIEVmbE93blB0
cl9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97130</attachid>
            <date>2011-06-14 09:21:48 -0700</date>
            <delta_ts>2011-06-14 09:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62642-20110614132510.patch</filename>
            <type>text/plain</type>
            <size>7511</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiMjg0OWM5NTk4MWFjOTFjMjQwODdlZTQ5YzU0
NzkwNWI4NzBjOWEuLjJlNmFlNjE3NTRmNGRjNDUzNGExMzgyYmQzNDFkNDc2YzEzYzg1NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTA2LTE0ICBSYXBo
YWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFZmxdIEFkZCBFZmxPd25QdHIuaC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjQyCisK
KyAgICAgICAgSXQgd29ya3Mgc2ltaWxhcmx5IHRvIEdPd25QdHIgYW5kIE93blB0ciwgYnV0IGNh
bGxzIGZyZWUoKSBpbnN0ZWFkIG9mCisgICAgICAgIGdfZnJlZSgpIGFuZCBkZWxldGUgdG8gZnJl
ZSBtZW1vcnkuCisKKyAgICAgICAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBwdXQgRXZhc19PYmpl
Y3QncyBpbiBzbWFydCBwb2ludGVyIGFzIHdlbGwsCisgICAgICAgIHRha2luZyBjYXJlIG9mIGNh
bGxpbmcgZXZhc19vYmplY3RfZGVsKCkgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogd3RmL2VmbC9FZmxPd25QdHIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6RXZhc19PYmplY3QpOgorICAgICAgICAqIHd0Zi9lZmwvRWZsT3duUHRy
Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6OkVmbE93blB0cik6CisgICAgICAg
IChXVEY6OkVmbE93blB0cjo6fkVmbE93blB0cik6CisgICAgICAgIChXVEY6OkVmbE93blB0cjo6
Z2V0KToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6
RWZsT3duUHRyOjpvdXRQdHIpOgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6OnNldCk6CisgICAg
ICAgIChXVEY6OkVmbE93blB0cjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6Om9w
ZXJhdG9yKik6CisgICAgICAgIChXVEY6OkVmbE93blB0cjo6b3BlcmF0b3ItPik6CisgICAgICAg
IChXVEY6OkVmbE93blB0cjo6b3BlcmF0b3IhKToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpz
d2FwKToKKyAgICAgICAgKFdURjo6c3dhcCk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV1RGOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6Z2V0UHRyKToKKyAgICAg
ICAgKFdURjo6ZnJlZU93bmVkKToKKwogMjAxMS0wNS0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggNTZlNjc4NjE5Yzdm
MDNkM2Y1OWVmN2YzZjBhYmIxY2JjM2YyNGYwMy4uMWNhZTA5ZjBjMmI3Y2RiMzZmOGE5M2I4OTVh
NTZiMGNjOWZkMTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFr
ZUxpc3RzRWZsLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHNF
ZmwudHh0CkBAIC04LDYgKzgsNyBAQCBFTkRJRigpCiAKIExJU1QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgZWZsL01haW5UaHJlYWRFZmwuY3BwCisgICAgZWZsL0VmbE93blB0ci5jcHAKIAogICAg
IE9TQWxsb2NhdG9yUG9zaXguY3BwCiAgICAgVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5j
cHAKQEAgLTM5LDEwICs0MCwxMiBAQCBMSVNUKEFQUEVORCBXVEZfTElCUkFSSUVTCiAKIExJU1Qo
QVBQRU5EIFdURl9MSU5LX0ZMQUdTCiAgICAgJHtFQ09SRV9MREZMQUdTfQorICAgICR7RVZBU19M
REZMQUdTfQogKQogCiBMSVNUKEFQUEVORCBXVEZfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7
RUNPUkVfSU5DTFVERV9ESVJTfQorICAgICR7RVZBU19JTkNMVURFX0RJUlN9CiAgICAgJHtJQ1Vf
SU5DTFVERV9ESVJTfQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYvdW5pY29kZS8KICkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9FZmxPd25QdHIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNiMjhkZTVhODJhODJmYzAyNDg5YThiMzY3NDI1N2Q1ODUyMTg0ZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9FZmxPd25QdHIuY3BwCkBAIC0wLDAg
KzEsMzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZmxPd25QdHIuaCIKKwor
I2luY2x1ZGUgPEV2YXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDw+IHZvaWQg
ZnJlZU93bmVkRWZsUHRyPEV2YXNfT2JqZWN0PihFdmFzX09iamVjdCogcHRyKQoreworICAgIGV2
YXNfb2JqZWN0X2RlbChwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9lZmwvRWZsT3duUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRlNGY0YWYwOTM1NjVk
ODMzMmM0Y2IwZTE2YWM0MDA1MzE3NTcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgRWZsT3duUHRyX2gK
KyNkZWZpbmUgRWZsT3duUHRyX2gKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxj
c3RkbGliPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKKy8vIElmIHdlIGV4cGFuZCB0byB1c2luZyBvdGhlciBkYXRhIHR5cGVzLCBt
b3ZpbmcgdGhlc2UgdHlwZWRlZnMgdG8gYQorLy8gc2VwYXJhdGUgZmlsZSBzaG91bGQgYmUgY29u
c2lkZXJlZC4KK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBmcmVlT3du
ZWRFZmxQdHIoVCogcHRyKTsKK3RlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkRWZsUHRyPEV2YXNf
T2JqZWN0PihFdmFzX09iamVjdCopOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRWZs
T3duUHRyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFZmxPd25QdHIpOworcHVibGljOgor
ICAgIGV4cGxpY2l0IEVmbE93blB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikgeyB9CisgICAg
fkVmbE93blB0cigpIHsgZnJlZU93bmVkRWZsUHRyKG1fcHRyKTsgfQorCisgICAgVCogZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiByZWxlYXNlKCkKKyAgICB7CisgICAgICAg
IFQqIHB0ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiBwdHI7
CisgICAgfQorCisgICAgVComIG91dFB0cigpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHRy
KTsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKworICAgIHZvaWQgc2V0KFQqIHB0cikK
KyAgICB7CisgICAgICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0cik7CisgICAgICAgIGZy
ZWVPd25lZEVmbFB0cihtX3B0cik7CisgICAgICAgIG1fcHRyID0gcHRyOworICAgIH0KKworICAg
IHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgVCogcHRyID0gbV9wdHI7CisgICAgICAgIG1f
cHRyID0gMDsKKyAgICAgICAgZnJlZU93bmVkRWZsUHRyKHB0cik7CisgICAgfQorCisgICAgVCYg
b3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAg
IHJldHVybiAqbV9wdHI7CisgICAgfQorCisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQor
CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKworICAgIC8v
IFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBi
b29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIEVmbE93
blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkVmbE93blB0cjo6bV9wdHIgOiAwOyB9CisK
KyAgICB2b2lkIHN3YXAoRWZsT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7
IH0KKworcHJpdmF0ZToKKyAgICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBpbmxpbmUgdm9pZCBzd2FwKEVmbE93blB0cjxUPiYgYSwgRWZsT3duUHRyPFQ+JiBiKQorewor
ICAgIGEuc3dhcChiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRWZsT3duUHRyPFQ+JiBhLCBVKiBiKQoreyAKKyAg
ICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgRWZsT3duUHRyPFU+JiBi
KSAKK3sKKyAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRWZsT3duUHRyPFQ+
JiBhLCBVKiBiKQoreworICAgIHJldHVybiBhLmdldCgpICE9IGI7IAorfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25z
dCBFZmxPd25QdHI8VT4mIGIpCit7IAorICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAorfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIEVmbE93blB0cjxUPjo6UHRyVHlw
ZSBnZXRQdHIoY29uc3QgRWZsT3duUHRyPFQ+JiBwKQoreworICAgIHJldHVybiBwLmdldCgpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZnJlZU93bmVkKFQqIHB0cikK
K3sKKyAgICBzdGQ6OmZyZWUocHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6RWZsT3duUHRyOworCisjZW5kaWYgLy8gRWZsT3duUHRyX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97131</attachid>
            <date>2011-06-14 09:55:47 -0700</date>
            <delta_ts>2011-06-15 07:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62642-20110614135909.patch</filename>
            <type>text/plain</type>
            <size>7516</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiMjg0OWM5NTk4MWFjOTFjMjQwODdlZTQ5YzU0
NzkwNWI4NzBjOWEuLmZjZTY1NDZhNDJlYjAyNDgxZDllZDRjZDFkYWNlZDgzZTQyZTQ1NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTA2LTE0ICBSYXBo
YWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFZmxdIEFkZCBFZmxPd25QdHIuaC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjQyCisK
KyAgICAgICAgSXQgd29ya3Mgc2ltaWxhcmx5IHRvIEdPd25QdHIgYW5kIE93blB0ciwgYnV0IGNh
bGxzIGZyZWUoKSBpbnN0ZWFkIG9mCisgICAgICAgIGdfZnJlZSgpIGFuZCBkZWxldGUgdG8gZnJl
ZSBtZW1vcnkuCisKKyAgICAgICAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBwdXQgRXZhc19PYmpl
Y3QncyBpbiBzbWFydCBwb2ludGVyIGFzIHdlbGwsCisgICAgICAgIHRha2luZyBjYXJlIG9mIGNh
bGxpbmcgZXZhc19vYmplY3RfZGVsKCkgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogd3RmL2VmbC9FZmxPd25QdHIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6RXZhc19PYmplY3QpOgorICAgICAgICAqIHd0Zi9lZmwvRWZsT3duUHRy
Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6OkVmbE93blB0cik6CisgICAgICAg
IChXVEY6OkVmbE93blB0cjo6fkVmbE93blB0cik6CisgICAgICAgIChXVEY6OkVmbE93blB0cjo6
Z2V0KToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6
RWZsT3duUHRyOjpvdXRQdHIpOgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6OnNldCk6CisgICAg
ICAgIChXVEY6OkVmbE93blB0cjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpFZmxPd25QdHI6Om9w
ZXJhdG9yKik6CisgICAgICAgIChXVEY6OkVmbE93blB0cjo6b3BlcmF0b3ItPik6CisgICAgICAg
IChXVEY6OkVmbE93blB0cjo6b3BlcmF0b3IhKToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKToKKyAgICAgICAgKFdURjo6RWZsT3duUHRyOjpz
d2FwKToKKyAgICAgICAgKFdURjo6c3dhcCk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV1RGOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6Z2V0UHRyKToKKyAgICAg
ICAgKFdURjo6ZnJlZU93bmVkRWZsUHRyKToKKwogMjAxMS0wNS0zMSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzRWZsLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggNTZlNjc4
NjE5YzdmMDNkM2Y1OWVmN2YzZjBhYmIxY2JjM2YyNGYwMy4uMWNhZTA5ZjBjMmI3Y2RiMzZmOGE5
M2I4OTVhNTZiMGNjOWZkMTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9DTWFrZUxpc3RzRWZsLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtl
TGlzdHNFZmwudHh0CkBAIC04LDYgKzgsNyBAQCBFTkRJRigpCiAKIExJU1QoQVBQRU5EIFdURl9T
T1VSQ0VTCiAgICAgZWZsL01haW5UaHJlYWRFZmwuY3BwCisgICAgZWZsL0VmbE93blB0ci5jcHAK
IAogICAgIE9TQWxsb2NhdG9yUG9zaXguY3BwCiAgICAgVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkcy5jcHAKQEAgLTM5LDEwICs0MCwxMiBAQCBMSVNUKEFQUEVORCBXVEZfTElCUkFSSUVTCiAK
IExJU1QoQVBQRU5EIFdURl9MSU5LX0ZMQUdTCiAgICAgJHtFQ09SRV9MREZMQUdTfQorICAgICR7
RVZBU19MREZMQUdTfQogKQogCiBMSVNUKEFQUEVORCBXVEZfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICR7RUNPUkVfSU5DTFVERV9ESVJTfQorICAgICR7RVZBU19JTkNMVURFX0RJUlN9CiAgICAg
JHtJQ1VfSU5DTFVERV9ESVJTfQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYvdW5pY29k
ZS8KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9FZmxPd25QdHIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNiMjhkZTVhODJhODJmYzAyNDg5YThiMzY3NDI1N2Q1ODUyMTg0ZjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9FZmxPd25QdHIuY3BwCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJl
ZGRlZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZmxPd25QdHIu
aCIKKworI2luY2x1ZGUgPEV2YXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDw+
IHZvaWQgZnJlZU93bmVkRWZsUHRyPEV2YXNfT2JqZWN0PihFdmFzX09iamVjdCogcHRyKQorewor
ICAgIGV2YXNfb2JqZWN0X2RlbChwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvRWZsT3duUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJjZDZkZTUw
ZTcxMDM5MWNkYTQyYjcxYmE0NDEwYmVkMTBlODVlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvZWZsL0VmbE93blB0ci5oCkBAIC0wLDAgKzEsMTM5IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChD
KSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgRWZsT3du
UHRyX2gKKyNkZWZpbmUgRWZsT3duUHRyX2gKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNs
dWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisKKy8vIElmIHdlIGV4cGFuZCB0byB1c2luZyBvdGhlciBkYXRhIHR5
cGVzLCBtb3ZpbmcgdGhlc2UgdHlwZWRlZnMgdG8gYQorLy8gc2VwYXJhdGUgZmlsZSBzaG91bGQg
YmUgY29uc2lkZXJlZC4KK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsK
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBm
cmVlT3duZWRFZmxQdHIoVCogcHRyKTsKK3RlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkRWZsUHRy
PEV2YXNfT2JqZWN0PihFdmFzX09iamVjdCopOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRWZsT3duUHRyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFZmxPd25QdHIpOworcHVi
bGljOgorICAgIGV4cGxpY2l0IEVmbE93blB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikgeyB9
CisgICAgfkVmbE93blB0cigpIHsgZnJlZU93bmVkRWZsUHRyKG1fcHRyKTsgfQorCisgICAgVCog
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiByZWxlYXNlKCkKKyAgICB7Cisg
ICAgICAgIFQqIHB0ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVy
biBwdHI7CisgICAgfQorCisgICAgVComIG91dFB0cigpCisgICAgeworICAgICAgICBBU1NFUlQo
IW1fcHRyKTsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKworICAgIHZvaWQgc2V0KFQq
IHB0cikKKyAgICB7CisgICAgICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0cik7CisgICAg
ICAgIGZyZWVPd25lZEVmbFB0cihtX3B0cik7CisgICAgICAgIG1fcHRyID0gcHRyOworICAgIH0K
KworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgVCogcHRyID0gbV9wdHI7CisgICAg
ICAgIG1fcHRyID0gMDsKKyAgICAgICAgZnJlZU93bmVkRWZsUHRyKHB0cik7CisgICAgfQorCisg
ICAgVCYgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7Cisg
ICAgICAgIHJldHVybiAqbV9wdHI7CisgICAgfQorCisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gbV9wdHI7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKwor
ICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lv
biB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQq
IEVmbE93blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZp
ZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkVmbE93blB0cjo6bV9wdHIgOiAw
OyB9CisKKyAgICB2b2lkIHN3YXAoRWZsT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5t
X3B0cik7IH0KKworcHJpdmF0ZToKKyAgICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKEVmbE93blB0cjxUPiYgYSwgRWZsT3duUHRyPFQ+JiBi
KQoreworICAgIGEuc3dhcChiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRWZsT3duUHRyPFQ+JiBhLCBVKiBiKQor
eworICAgIHJldHVybiBhLmdldCgpID09IGI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IEVmbE93blB0cjxV
PiYgYikKK3sKKyAgICByZXR1cm4gYSA9PSBiLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFZmxPd25QdHI8
VD4mIGEsIFUqIGIpCit7CisgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29u
c3QgRWZsT3duUHRyPFU+JiBiKQoreworICAgIHJldHVybiBhICE9IGIuZ2V0KCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgRWZsT3duUHRyPFQ+OjpQdHJUeXBl
IGdldFB0cihjb25zdCBFZmxPd25QdHI8VD4mIHApCit7CisgICAgcmV0dXJuIHAuZ2V0KCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBmcmVlT3duZWRFZmxQdHIoVCog
cHRyKQoreworICAgIHN0ZDo6ZnJlZShwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpFZmxPd25QdHI7CisKKyNlbmRpZiAvLyBFZmxPd25QdHJfaAorCg==
</data>
<flag name="review"
          id="90992"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>