<?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>35333</bug_id>
          
          <creation_ts>2010-02-24 01:05:02 -0800</creation_ts>
          <short_desc>[GTK] video playback position query flood when mouse over the video element</short_desc>
          <delta_ts>2010-07-13 09:45:13 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>gustavo</cc>
    
    <cc>slomo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>193268</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-02-24 01:05:02 -0800</bug_when>
    <thetext>In RenderThemeGtk::paintMediaPlayButton mediaElement.canPlay() is called. This triggers a position query in the media player. So when the mouse is over the video and the controls are active, the playback position is queried about 30 times/second.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193316</commentid>
    <comment_count>1</comment_count>
      <attachid>49382</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-02-24 05:26:06 -0800</bug_when>
    <thetext>Created attachment 49382
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193324</commentid>
    <comment_count>2</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-24 06:00:01 -0800</bug_when>
    <thetext>+        if (g_str_equal(GST_MESSAGE_SRC_NAME(message), &quot;pipeline&quot;))
+            mp-&gt;updateStates();

Do a pointer comparison instead

Position/Duration queries can fail in the beginning but could return something useful later. So the approach taken here is wrong IMHO.

Why do you rename the playbin2 to &quot;pipeline&quot;? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193329</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-02-24 06:16:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; +        if (g_str_equal(GST_MESSAGE_SRC_NAME(message), &quot;pipeline&quot;))
&gt; +            mp-&gt;updateStates();
&gt; 
&gt; Do a pointer comparison instead
&gt; 

you mean comparing with m_playBin? It can&apos;t be accessed from there :/ If found this simpler than passing n_playBin into callback data or implementing an accessor.

&gt; Position/Duration queries can fail in the beginning but could return something
&gt; useful later. So the approach taken here is wrong IMHO.
&gt; 

I don&apos;t cache position ;) For duration it is indeed cached but I made sure that if the query fails at the beginning it will be re-attempted later when playback started.

&gt; Why do you rename the playbin2 to &quot;pipeline&quot;? :)

Dunno... suggestions? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195036</commentid>
    <comment_count>4</comment_count>
      <attachid>49802</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-02 05:58:06 -0800</bug_when>
    <thetext>Created attachment 49802
updated patch

Rebased patch against master and implemented platformMedia() method so
the message callback doesn&apos;t need to check message object source name anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197309</commentid>
    <comment_count>5</comment_count>
      <attachid>49802</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-08 14:06:32 -0800</bug_when>
    <thetext>Comment on attachment 49802
updated patch

 1572     float maxTime = maxTimeSeekable();
15721573     // FIXME real ranges support
1573      if (!maxTimeSeekable())
 1574     if (!maxTime)
15741575         return TimeRanges::create();
1575      return TimeRanges::create(minTimeSeekable(), maxTimeSeekable());
 1576     return TimeRanges::create(minTimeSeekable(), maxTime);

Unrelated micro-optimization? Is this really a problem? I&apos;d put this in a separate patch, and get Eric Carlson to look at it.

5864 // backend can live at runtime.
5965 typedef struct PlatformMedia {
6066     QTMovie* qtMovie;
 67     GstElement* gstPipeline;
6168 } PlatformMedia;

This looks weird to me. I don&apos;t think our struct should have a QTMovie in it. Maybe we need a #if/#else here, instead? Or event better, just write an implementation for platformMedia that returns the playbin! See:

77	    virtual PlatformMedia platformMedia() const { return NoPlatformMedia; }

676      return paintMediaButton(paintInfo.context, r, mediaElement-&gt;canPlay() ? m_playButton.get() : m_pauseButton.get(), m_panelColor, m_mediaIconSize);
 676     return paintMediaButton(paintInfo.context, r, mediaElement-&gt;paused() ? m_playButton.get() : m_pauseButton.get(), m_panelColor, m_mediaIconSize);

This seems totally unrelated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197506</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-09 02:29:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 49802 [details])
&gt;  1572     float maxTime = maxTimeSeekable();
&gt; 15721573     // FIXME real ranges support
&gt; 1573      if (!maxTimeSeekable())
&gt;  1574     if (!maxTime)
&gt; 15741575         return TimeRanges::create();
&gt; 1575      return TimeRanges::create(minTimeSeekable(), maxTimeSeekable());
&gt;  1576     return TimeRanges::create(minTimeSeekable(), maxTime);
&gt; 
&gt; Unrelated micro-optimization? Is this really a problem? I&apos;d put this in a
&gt; separate patch, and get Eric Carlson to look at it.
&gt; 

I can remove it, no worries.

&gt; 5864 // backend can live at runtime.
&gt; 5965 typedef struct PlatformMedia {
&gt; 6066     QTMovie* qtMovie;
&gt;  67     GstElement* gstPipeline;
&gt; 6168 } PlatformMedia;
&gt; 
&gt; This looks weird to me. I don&apos;t think our struct should have a QTMovie in it.
&gt; Maybe we need a #if/#else here, instead? Or event better, just write an
&gt; implementation for platformMedia that returns the playbin! See:
&gt; 

The comment above the declaration:

// Structure that will hold every native
// types supported by the current media player.
// We have to do that has multiple media players
// backend can live at runtime.

So as I understood it we need to stuff inside this structure. Or should we instead conditionally define it depending on the platform? Now I am confused! :)

&gt; 77        virtual PlatformMedia platformMedia() const { return NoPlatformMedia;
&gt; }
&gt; 
&gt; 676      return paintMediaButton(paintInfo.context, r, mediaElement-&gt;canPlay()
&gt; ? m_playButton.get() : m_pauseButton.get(), m_panelColor, m_mediaIconSize);
&gt;  676     return paintMediaButton(paintInfo.context, r, mediaElement-&gt;paused() ?
&gt; m_playButton.get() : m_pauseButton.get(), m_panelColor, m_mediaIconSize);
&gt; 
&gt; This seems totally unrelated?

It is not! :) canPlay() triggers a call to endedPlayback() which queries the duration. This query is useless, just checking paused() is enough in this context and this what MediaControlPlayButtonElement::updateDisplayType does, FWIW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197616</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 09:15:07 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; // Structure that will hold every native
&gt; // types supported by the current media player.
&gt; // We have to do that has multiple media players
&gt; // backend can live at runtime.
&gt; 
&gt; So as I understood it we need to stuff inside this structure. Or should we
&gt; instead conditionally define it depending on the platform? Now I am confused!
&gt; :)

Made sense to me after reading a bit more of the code. No, I think your original patch is right. This is so that, say, if a port is able to use both the Mac Media Player, and the GStreamer one, you&apos;ll have both available, and choose which to use in run time.

&gt; &gt; This seems totally unrelated?
&gt; 
&gt; It is not! :) canPlay() triggers a call to endedPlayback() which queries the
&gt; duration. This query is useless, just checking paused() is enough in this
&gt; context and this what MediaControlPlayButtonElement::updateDisplayType does,
&gt; FWIW.

Hah. OK, then. I wonder if it makes sense as a separate change, though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197624</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-09 09:26:07 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; // Structure that will hold every native
&gt; &gt; // types supported by the current media player.
&gt; &gt; // We have to do that has multiple media players
&gt; &gt; // backend can live at runtime.
&gt; &gt; 
&gt; &gt; So as I understood it we need to stuff inside this structure. Or should we
&gt; &gt; instead conditionally define it depending on the platform? Now I am confused!
&gt; &gt; :)
&gt; 
&gt; Made sense to me after reading a bit more of the code. No, I think your
&gt; original patch is right. This is so that, say, if a port is able to use both
&gt; the Mac Media Player, and the GStreamer one, you&apos;ll have both available, and
&gt; choose which to use in run time.
&gt; 
Actually I don&apos;t agree. The current member name was poorly chosen and should change. The value is really media engine specific, and I think it would make more sense to have a generic type that is cast to the specific type when it is used.

If a port is able to use both a QuickTime and GStreamer backend I would expect it to have a different media engine for each, and obviously only one will be used for a single movie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197902</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-10 00:05:42 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; 
&gt; &gt; &gt; This seems totally unrelated?
&gt; &gt; 
&gt; &gt; It is not! :) canPlay() triggers a call to endedPlayback() which queries the
&gt; &gt; duration. This query is useless, just checking paused() is enough in this
&gt; &gt; context and this what MediaControlPlayButtonElement::updateDisplayType does,
&gt; &gt; FWIW.
&gt; 
&gt; Hah. OK, then. I wonder if it makes sense as a separate change, though?

Please re-read the bug description :) This change is the main reason for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198016</commentid>
    <comment_count>10</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-10 06:07:26 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Actually I don&apos;t agree. The current member name was poorly chosen and should
&gt; change. The value is really media engine specific, and I think it would make
&gt; more sense to have a generic type that is cast to the specific type when it is
&gt; used.
&gt;
&gt; If a port is able to use both a QuickTime and GStreamer backend I would expect
&gt; it to have a different media engine for each, and obviously only one will be
&gt; used for a single movie.

Right, but how will it decide which one to use in runtime, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198018</commentid>
    <comment_count>11</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-10 06:09:27 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; 
&gt; &gt; 
&gt; &gt; &gt; &gt; This seems totally unrelated?
&gt; &gt; &gt; 
&gt; &gt; &gt; It is not! :) canPlay() triggers a call to endedPlayback() which queries the
&gt; &gt; &gt; duration. This query is useless, just checking paused() is enough in this
&gt; &gt; &gt; context and this what MediaControlPlayButtonElement::updateDisplayType does,
&gt; &gt; &gt; FWIW.
&gt; &gt; 
&gt; &gt; Hah. OK, then. I wonder if it makes sense as a separate change, though?
&gt; 
&gt; Please re-read the bug description :) This change is the main reason for this
&gt; bug.

I know, but AFAIK we can commit this change first, along with the media duration changes, and then on a second commit add the check to only handle messages coming from playbin, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198147</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-10 08:10:00 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; Actually I don&apos;t agree. The current member name was poorly chosen and should
&gt; &gt; change. The value is really media engine specific, and I think it would make
&gt; &gt; more sense to have a generic type that is cast to the specific type when it is
&gt; &gt; used.
&gt; &gt;
&gt; &gt; If a port is able to use both a QuickTime and GStreamer backend I would expect
&gt; &gt; it to have a different media engine for each, and obviously only one will be
&gt; &gt; used for a single movie.
&gt; 
&gt; Right, but how will it decide which one to use in runtime, then?

Register a media engine for both backends and *you* will get to decide based on the content type. chooseBestEngineForTypeAndCodecs() in MediaPlayer.cpp always iterates through every registered media engine when it is asked to open a movie, asking each one if it supports the movie&apos;s (extended) MIME type, and uses the one that claims to have the best support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199599</commentid>
    <comment_count>13</comment_count>
      <attachid>50698</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-15 02:58:35 -0700</bug_when>
    <thetext>Created attachment 50698
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199601</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-15 03:02:46 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=50698) [details]
&gt; updated patch

This patch doesn&apos;t contain the platformMedia stuff, it will be added in a patch for Bug 36112. So hopefully we can now get this reduced patch in? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199630</commentid>
    <comment_count>15</comment_count>
      <attachid>50698</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-15 07:36:17 -0700</bug_when>
    <thetext>Comment on attachment 50698
updated patch

You&apos;re still adding too much to one single change. You&apos;re changing three separate things that are easily separatable: the decision on how to paint the button, the changes to media duration query, and the filtering of the messages. I understand they are all part of fixing this bug, but this does not mean they should go in at the same time. Having all of them in at the same time will make this commit semi-unuseful for bisecting. What caused a problem with the play/pause behavior changing, if it does? If we find this commit to be the problem, we&apos;ll have to manually check which of the three changes is responsible. So, I&apos;m OK with all three changes, but let&apos;s split them, and then we&apos;ll get them in, yeah =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199635</commentid>
    <comment_count>16</comment_count>
      <attachid>50703</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-15 07:49:08 -0700</bug_when>
    <thetext>Created attachment 50703
micro patched :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199727</commentid>
    <comment_count>17</comment_count>
      <attachid>50703</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-15 11:41:21 -0700</bug_when>
    <thetext>Comment on attachment 50703
micro patched :)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199773</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-15 13:02:52 -0700</bug_when>
    <thetext>Landed in r56006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200176</commentid>
    <comment_count>19</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-16 07:37:42 -0700</bug_when>
    <thetext>This makes videos not go out of &apos;playing&apos; when they end, UI-wise. I assume the real problem is we are not marking the video &apos;paused&apos; attribute to true correctly, but before we fix this, using that attribute to make UI decisions sounds unwise. Let&apos;s make this testable, fix the root cause, and then we can reland the optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200179</commentid>
    <comment_count>20</comment_count>
      <attachid>50789</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-16 07:43:58 -0700</bug_when>
    <thetext>Created attachment 50789
a possible layout test for the root cause

The spec is not very specific on whether video.paused should be true when the video ends, but I think it should be if we&apos;re not looping, from my reading, since I consider that to be a case of &apos;paused for user interaction&apos; - the user needs to take action to get the video playing again, or to seek it. If it is not, then we need to improve this optimization to also take the ended attribute into consideration. I made this test based on media/video-loop.html, and we currently fail it. Eric, can you check if Mac passes this test? Your help would be appreciated in figuring this behaviour out =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225205</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-13 01:51:21 -0700</bug_when>
    <thetext>The spec also mentions:

It is possible for a media element to have both ended playback and paused for user interaction at the same time.

Our player pauses itself at the end of playback but the media element doesn&apos;t know about it because its pause() method doesn&apos;t query the player.

So I think we could have it. It would require the HTMLMediaElement::paused() to proxy to MediaPlayer::paused(), when a player is available. If not the m_paused attribute could be used as fallback. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225827</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-05-14 08:10:47 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; The spec also mentions:
&gt; 
&gt; It is possible for a media element to have both ended playback and paused for user interaction at the 
&gt; same time.
&gt; 
&gt; Our player pauses itself at the end of playback but the media element doesn&apos;t know about it because its 
&gt; pause() method doesn&apos;t query the player.
&gt; 
&gt; So I think we could have it. It would require the HTMLMediaElement::paused() to proxy to 
&gt; MediaPlayer::paused(), when a player is available. If not the m_paused attribute could be used as 
&gt; fallback. What do you think?

I think it is definitely worth a try. Hopefully it won&apos;t require significant changes to layout tests, if it does I fear that it will break existing content, but lets see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250442</commentid>
    <comment_count>23</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-13 04:53:59 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)

&gt; &gt; So I think we could have it. It would require the HTMLMediaElement::paused() to proxy to 
&gt; &gt; MediaPlayer::paused(), when a player is available. If not the m_paused attribute could be used as 
&gt; &gt; fallback. What do you think?
&gt; 
&gt; I think it is definitely worth a try. Hopefully it won&apos;t require significant changes to layout tests, if it does I fear that it will break existing content, but lets see.

Tried this, the patch breaks 7 media tests in the GTK+ port. So I think we should leave the ::paused() method as it is now.

Eric, what do you think about Gustavo&apos;s proposed test in comment 20 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250457</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-13 05:52:27 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=50789) [details]
&gt; a possible layout test for the root cause
&gt; 
&gt; The spec is not very specific on whether video.paused should be true when the video ends, but I think it should be if we&apos;re not looping, from my reading, since I consider that to be a case of &apos;paused for user interaction&apos; - the user needs to take action to get the video playing again, or to seek it. If it is not, then we need to improve this optimization to also take the ended attribute into consideration. I made this test based on media/video-loop.html, and we currently fail it. Eric, can you check if Mac passes this test? Your help would be appreciated in figuring this behaviour out =).


The test fails on Mac too. At the end of playback ended is true and paused is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250472</commentid>
    <comment_count>25</comment_count>
      <attachid>61367</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-13 06:36:21 -0700</bug_when>
    <thetext>Created attachment 61367
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250532</commentid>
    <comment_count>26</comment_count>
      <attachid>61367</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-13 08:49:30 -0700</bug_when>
    <thetext>Comment on attachment 61367
updated patch

&gt; +    Node* node = o-&gt;node();
&gt; +    if (!node)
&gt; +        return false;
&gt; +
&gt; +    MediaControlPlayButtonElement* btn = static_cast&lt;MediaControlPlayButtonElement*&gt;(node);
&gt; +    if (!btn)
&gt;          return false;
&gt;  
Is it possible for node to be non-NULL and the static cast to return NULL? IOW, is the second test necessary?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250552</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-13 09:22:39 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 61367 [details])
&gt; &gt; +    Node* node = o-&gt;node();
&gt; &gt; +    if (!node)
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    MediaControlPlayButtonElement* btn = static_cast&lt;MediaControlPlayButtonElement*&gt;(node);
&gt; &gt; +    if (!btn)
&gt; &gt;          return false;
&gt; &gt;  
&gt; Is it possible for node to be non-NULL and the static cast to return NULL? IOW, is the second test necessary?
&gt; 
&gt; r=me

Right the second test is overkill , sorry ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250563</commentid>
    <comment_count>28</comment_count>
      <attachid>61386</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-13 09:32:02 -0700</bug_when>
    <thetext>Created attachment 61386
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250574</commentid>
    <comment_count>29</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-13 09:45:13 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/63214
Thanks for the review!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49382</attachid>
            <date>2010-02-24 05:26:06 -0800</date>
            <delta_ts>2010-03-02 05:58:06 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>7354</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBlNTJmYjg5MzZlNzYwYWY3ODUyZDAwN2I4NmIwMjIxY2UxMzAzYjQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI0IEZlYiAyMDEwIDEwOjA4OjA0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDI4ICsrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwICAgICAgICAgICAgICAgICAgfCAgICA1ICsrLQogLi4uL2dyYXBo
aWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgfCAgIDMwICsrKysrKysr
KysrKysrKystLS0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmggICAgIHwgICAgMSArCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAg
ICAgICAgICAgICB8ICAgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwg
OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGE0ZTM4MmIuLmE4ODRmZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDIt
MjQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIHZpZGVvIHBsYXliYWNr
IHBvc2l0aW9uIHF1ZXJ5IGZsb29kIHdoZW4gbW91c2Ugb3ZlciB0aGUgdmlkZW8gZWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzMzMKKwor
ICAgICAgICBWYXJpb3VzIHBvc2l0aW9uL2R1cmF0aW9uIHF1ZXJ5IG9wdGltaXphdGlvbnMuCisK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c2Vla2FibGUpOiBDYWxsIG1heFRpbWVTZWVrYWJsZSgpIG9uY2UK
KyAgICAgICAgb25seS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJp
dmF0ZU1lc3NhZ2VDYWxsYmFjayk6IFVwZGF0ZSBwbGF5ZXIgc3RhdGUKKyAgICAgICAgb25seSBm
b3Igc3RhdGUtY2hhbmdlIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHBsYXliaW4yIGRpcmVjdGx5Lgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbik6IERvbid0
IHJlYXR0ZW1wdCBkdXJhdGlvbgorICAgICAgICBxdWVyaWVzIHRoYXQgcHJldmlvdXNseSBmYWls
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcyk6
IENhY2hlIG1lZGlhCisgICAgICAgIGR1cmF0aW9uIG9ubHkgaWYgaXQncyBrbm93bi4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6ZHVyYXRpb25DaGFuZ2VkKTogZGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmNyZWF0ZUdTVFBsYXlCaW4p
OiBOYW1lIHRoZSBlbGVtZW50CisgICAgICAgICJwaXBlbGluZSIsIHNvdW5kcyBtb3JlIGxvZ2lj
YWwgdGhhbiAicGxheSIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVBs
YXlCdXR0b24pOiBEb24ndCB0cmlnZ2VyIGEKKyAgICAgICAgcG9zaXRpb24gcXVlcnkgb25seSB0
byBrbm93IHdoaWNoIHBsYXkvcGF1c2UgYnV0dG9uIHRvIGRpc3BsYXkuCisKIDIwMTAtMDItMjQg
IFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhM2U0YTQ4Li40
YzM1NmNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNTU5LDEwICsxNTU5LDEx
IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVkKCkKIAog
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpzZWVrYWJsZSgpIGNvbnN0
CiB7CisgICAgZmxvYXQgbWF4VGltZSA9IG1heFRpbWVTZWVrYWJsZSgpOwogICAgIC8vIEZJWE1F
IHJlYWwgcmFuZ2VzIHN1cHBvcnQKLSAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSgpKQorICAgIGlm
ICghbWF4VGltZSkKICAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJs
ZSgpKTsKKyAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBt
YXhUaW1lKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmco
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNmE5OWQ0Zi4uNjZiYTE5MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzcsNyArMTM3LDEwIEBAIGdib29sZWFu
IG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2Fn
ZSogbWVzc2FnZSwgZ3BvCiAgICAgICAgIG1wLT5kaWRFbmQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHU1RfTUVTU0FHRV9TVEFURV9DSEFOR0VEOgotICAgICAgICBtcC0+dXBkYXRlU3Rh
dGVzKCk7CisgICAgICAgIC8vIElnbm9yZSBzdGF0ZSBjaGFuZ2VzIGZyb20gaW50ZXJuYWwgZWxl
bWVudHMuIFRoZXkgYXJlCisgICAgICAgIC8vIGZvcndhcmRlZCB0byBwbGF5YmluMiBhbnl3YXku
CisgICAgICAgIGlmIChnX3N0cl9lcXVhbChHU1RfTUVTU0FHRV9TUkNfTkFNRShtZXNzYWdlKSwg
InBpcGVsaW5lIikpCisgICAgICAgICAgICBtcC0+dXBkYXRlU3RhdGVzKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgR1NUX01FU1NBR0VfQlVGRkVSSU5HOgogICAgICAgICBtcC0+cHJvY2Vz
c0J1ZmZlcmluZ1N0YXRzKG1lc3NhZ2UpOwpAQCAtMzA5LDYgKzMxMiw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBt
X2Vycm9yT2NjdXJlZChmYWxzZSkKICAgICAsIG1fdm9sdW1lSWRsZUlkKDApCiAgICAgLCBtX21l
ZGlhRHVyYXRpb24oMCkKKyAgICAsIG1fbWVkaWFEdXJhdGlvbktub3duKHRydWUpCiAgICAgLCBt
X211dGVJZGxlSWQoMCkKICAgICAsIG1fc3RhcnRlZEJ1ZmZlcmluZyhmYWxzZSkKICAgICAsIG1f
ZmlsbFRpbWVvdXRJZCgwKQpAQCAtNDIxLDYgKzQyNSwxMCBAQCBmbG9hdCBNZWRpYVBsYXllclBy
aXZhdGU6OmR1cmF0aW9uKCkgY29uc3QKICAgICBpZiAobV9lcnJvck9jY3VyZWQpCiAgICAgICAg
IHJldHVybiAwLjA7CiAKKyAgICAvLyBNZWRpYSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQgYWxyZWFk
eSwgZG9uJ3QgYXR0ZW1wdCBuZXcgdXNlbGVzcyBxdWVyaWVzLgorICAgIGlmICghbV9tZWRpYUR1
cmF0aW9uS25vd24pCisgICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCk7CisKICAgICBpZiAobV9tZWRpYUR1cmF0aW9uKQogICAgICAgICByZXR1cm4gbV9tZWRp
YUR1cmF0aW9uOwogCkBAIC04NDMsNyArODUxLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBtX3N0YXJ0ZWRQbGF5aW5nID0gdHJ1ZTsKICAg
ICAgICAgICAgIGlmICghbV9tZWRpYUR1cmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQg
bmV3RHVyYXRpb24gPSBkdXJhdGlvbigpOwotICAgICAgICAgICAgICAgIGlmICghaXNpbmYobmV3
RHVyYXRpb24pKQorICAgICAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0gIWlzaW5m
KG5ld0R1cmF0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAobV9tZWRpYUR1cmF0aW9uS25vd24p
CiAgICAgICAgICAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5ld0R1cmF0aW9uOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTEwOTQsMTAgKzExMDMsMjEgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCiAgICAgbV9tZWRpYUR1cmF0aW9u
ID0gMDsKIAogICAgIC8vIEFuZCByZS1jYWNoZSBpdCBpZiBwb3NzaWJsZS4KKyAgICBHc3RTdGF0
ZSBzdGF0ZTsKKyAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLCAmc3RhdGUsIDAs
IDApOwogICAgIGZsb2F0IG5ld0R1cmF0aW9uID0gZHVyYXRpb24oKTsKLSAgICBpZiAoIWlzaW5m
KG5ld0R1cmF0aW9uKSkKLSAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247CiAK
KyAgICBpZiAoc3RhdGUgPD0gR1NUX1NUQVRFX1JFQURZKSB7CisgICAgICAgIC8vIERvbid0IHNl
dCBtX21lZGlhRHVyYXRpb25Lbm93biB5ZXQgaWYgdGhlIHBpcGVsaW5lIGlzIG5vdAorICAgICAg
ICAvLyBwYXVzZWQuIFRoaXMgYWxsb3dzIGR1cmF0aW9uKCkgcXVlcnkgdG8gZmFpbCBhdCBsZWFz
dCBvbmNlCisgICAgICAgIC8vIGJlZm9yZSBwbGF5YmFjayBzdGFydHMgYW5kIGR1cmF0aW9uIGJl
Y29tZXMga25vd24uCisgICAgICAgIGlmICghaXNpbmYobmV3RHVyYXRpb24pKQorICAgICAgICAg
ICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9tZWRpYUR1cmF0aW9uS25vd24gPSAhaXNpbmYobmV3RHVyYXRpb24pOworICAgICAgICBpZiAo
bV9tZWRpYUR1cmF0aW9uS25vd24pCisgICAgICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBuZXdE
dXJhdGlvbjsKKyAgICB9CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogfQogCkBA
IC0xMzQ4LDcgKzEzNjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0QXV0b2J1ZmZl
cihib29sIGF1dG9CdWZmZXIpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Y3JlYXRlR1NUUGxh
eUJpbigpCiB7CiAgICAgQVNTRVJUKCFtX3BsYXlCaW4pOwotICAgIG1fcGxheUJpbiA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgicGxheWJpbjIiLCAicGxheSIpOworICAgIG1fcGxheUJpbiA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicGxheWJpbjIiLCAicGlwZWxpbmUiKTsKIAogICAg
IEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheUJp
bikpOwogICAgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaChidXMpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAppbmRleCBlMTliNjg2Li45N2IzMTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAt
MTYyLDYgKzE2Miw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgYm9vbCBtX2Vycm9yT2NjdXJlZDsK
ICAgICAgICAgICAgIGd1aW50IG1fdm9sdW1lSWRsZUlkOwogICAgICAgICAgICAgZ2Zsb2F0IG1f
bWVkaWFEdXJhdGlvbjsKKyAgICAgICAgICAgIGJvb2wgbV9tZWRpYUR1cmF0aW9uS25vd247CiAg
ICAgICAgICAgICBndWludCBtX211dGVJZGxlSWQ7CiAgICAgICAgICAgICBib29sIG1fc3RhcnRl
ZEJ1ZmZlcmluZzsKICAgICAgICAgICAgIGd1aW50IG1fZmlsbFRpbWVvdXRJZDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBlMTllMmZhLi4wZTNlMjk5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC02NzMsNyArNjczLDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlAKICAgICBpZiAoIW1lZGlhRWxlbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNv
bnRleHQsIHIsIG1lZGlhRWxlbWVudC0+Y2FuUGxheSgpID8gbV9wbGF5QnV0dG9uLmdldCgpIDog
bV9wYXVzZUJ1dHRvbi5nZXQoKSwgbV9wYW5lbENvbG9yLCBtX21lZGlhSWNvblNpemUpOworICAg
IHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByLCBtZWRpYUVsZW1l
bnQtPnBhdXNlZCgpID8gbV9wbGF5QnV0dG9uLmdldCgpIDogbV9wYXVzZUJ1dHRvbi5nZXQoKSwg
bV9wYW5lbENvbG9yLCBtX21lZGlhSWNvblNpemUpOwogfQogCiBib29sIFJlbmRlclRoZW1lR3Rr
OjpwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQotLSAKMS42LjMu
Mw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49802</attachid>
            <date>2010-03-02 05:58:06 -0800</date>
            <delta_ts>2010-03-15 02:58:35 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>9714</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzYmRjNDFmYzFhNTNkZjk1MWVkODBhZDc1OTQzZDI3ZGIwNjVlNGMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI0IEZlYiAyMDEwIDEwOjA4OjA0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNSArKy0KIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCAgICAgICAgICAgIHwgICAgOSArKysrLQogLi4u
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDM3ICsr
KysrKysrKysrKysrKysrLS0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggICAgICAgIHwgICAgMyArKwogLi4uL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZh
dGVRVEtpdC5tbSAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0ay5jcHAgICAgICAgICAgICB8ICAgIDIgKy0KIDcgZmlsZXMgY2hhbmdlZCwgODIgaW5z
ZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3NGI0ZjQuLjVlOWI0NzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTAtMDMtMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIHZp
ZGVvIHBsYXliYWNrIHBvc2l0aW9uIHF1ZXJ5IGZsb29kIHdoZW4gbW91c2Ugb3ZlciB0aGUgdmlk
ZW8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzUzMzMKKworICAgICAgICBWYXJpb3VzIHBvc2l0aW9uL2R1cmF0aW9uIHF1ZXJ5IG9wdGlt
aXphdGlvbnMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla2FibGUpOiBDYWxsIG1heFRpbWVTZWVr
YWJsZSgpIG9uY2UKKyAgICAgICAgb25seS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayk6IFVwZGF0ZSBwbGF5ZXIg
c3RhdGUKKyAgICAgICAgb25seSBmb3Igc3RhdGUtY2hhbmdlIG1lc3NhZ2VzIGNvbWluZyBmcm9t
IHBsYXliaW4yIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
OjpNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlOjpkdXJhdGlvbik6IERvbid0IHJlYXR0ZW1wdCBkdXJhdGlvbgorICAgICAgICBxdWVyaWVz
IHRoYXQgcHJldmlvdXNseSBmYWlsZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnVwZGF0ZVN0YXRlcyk6IENhY2hlIG1lZGlhCisgICAgICAgIGR1cmF0aW9uIG9ubHkg
aWYgaXQncyBrbm93bi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6ZHVy
YXRpb25DaGFuZ2VkKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGU6OnBsYXRmb3JtTWVkaWEpOiBFeHBvc2UgdGhlIHBpcGVsaW5lCisgICAgICAgIGluc3RhbmNl
LCB3aWxsIGJlIHVzZWZ1bCB0b28gd2hlbiB0aW1lIGNvbWVzIGZvciBmdWxsc2NyZWVuIHZpZGVv
IHN1cHBvcnQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVBsYXlCdXR0
b24pOiBEb24ndCB0cmlnZ2VyIGEKKyAgICAgICAgcG9zaXRpb24gcXVlcnkgb25seSB0byBrbm93
IHdoaWNoIHBsYXkvcGF1c2UgYnV0dG9uIHRvIGRpc3BsYXkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF0Zm9ybU1lZGlhKTogUGxhdGZvcm1NZWRpYQorICAg
ICAgICBzdHJ1Y3R1cmUgbm93IGNvbnRhaW5zIHR3byBmaWVsZHMuCisKIDIwMTAtMDEtMjggIEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA2YTdlYmUwLi44OWVjNjE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNTY5
LDEwICsxNTY5LDExIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6
cGxheWVkKCkKIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpzZWVr
YWJsZSgpIGNvbnN0CiB7CisgICAgZmxvYXQgbWF4VGltZSA9IG1heFRpbWVTZWVrYWJsZSgpOwog
ICAgIC8vIEZJWE1FIHJlYWwgcmFuZ2VzIHN1cHBvcnQKLSAgICBpZiAoIW1heFRpbWVTZWVrYWJs
ZSgpKQorICAgIGlmICghbWF4VGltZSkKICAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOwotICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1h
eFRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVT
ZWVrYWJsZSgpLCBtYXhUaW1lKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRp
YWxseVBsYXlpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CmluZGV4IDJmMjg1ODYuLjkxOTRiNzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTUwLDYgKzUwLDEyIEBACiBjbGFzcyBRVE1vdmllOwogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2Vsc2UKK2NsYXNzIEdzdEVs
ZW1lbnQ7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTdHJ1Y3R1cmUgdGhh
dCB3aWxsIGhvbGQgZXZlcnkgbmF0aXZlCkBAIC01OCw5ICs2NCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBiYWNrZW5kIGNhbiBsaXZlIGF0IHJ1bnRpbWUuCiB0eXBlZGVmIHN0cnVjdCBQ
bGF0Zm9ybU1lZGlhIHsKICAgICBRVE1vdmllKiBxdE1vdmllOworICAgIEdzdEVsZW1lbnQqIGdz
dFBpcGVsaW5lOwogfSBQbGF0Zm9ybU1lZGlhOwogCi1zdGF0aWMgY29uc3QgUGxhdGZvcm1NZWRp
YSBOb1BsYXRmb3JtTWVkaWEgPSB7IDAgfTsKK3N0YXRpYyBjb25zdCBQbGF0Zm9ybU1lZGlhIE5v
UGxhdGZvcm1NZWRpYSA9IHsgMCwgMCB9OwogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIEZy
YW1lVmlldzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDZhOTlk
NGYuLjk4Nzc5OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
OTMsNiArOTMsNyBAQCBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2so
R3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwbwogICAgIE1lZGlhUGxheWVyUHJp
dmF0ZSogbXAgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZSo+KGRhdGEpOwog
ICAgIGJvb2wgaXNzdWVFcnJvciA9IHRydWU7CiAgICAgYm9vbCBhdHRlbXB0TmV4dExvY2F0aW9u
ID0gZmFsc2U7CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtcC0+cGxhdGZvcm1NZWRpYSgp
LmdzdFBpcGVsaW5lOwogCiAgICAgaWYgKG1lc3NhZ2UtPnN0cnVjdHVyZSkgewogICAgICAgICBj
b25zdCBnY2hhciogbWVzc2FnZVR5cGVOYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShtZXNz
YWdlLT5zdHJ1Y3R1cmUpOwpAQCAtMTM3LDcgKzEzOCwxMCBAQCBnYm9vbGVhbiBtZWRpYVBsYXll
clByaXZhdGVNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2Us
IGdwbwogICAgICAgICBtcC0+ZGlkRW5kKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NU
X01FU1NBR0VfU1RBVEVfQ0hBTkdFRDoKLSAgICAgICAgbXAtPnVwZGF0ZVN0YXRlcygpOworICAg
ICAgICAvLyBJZ25vcmUgc3RhdGUgY2hhbmdlcyBmcm9tIGludGVybmFsIGVsZW1lbnRzLiBUaGV5
IGFyZQorICAgICAgICAvLyBmb3J3YXJkZWQgdG8gcGxheWJpbjIgYW55d2F5LgorICAgICAgICBp
ZiAoR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2UpID09IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0
Kj4ocGlwZWxpbmUpKQorICAgICAgICAgICAgbXAtPnVwZGF0ZVN0YXRlcygpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0JVRkZFUklORzoKICAgICAgICAgbXAtPnByb2Nl
c3NCdWZmZXJpbmdTdGF0cyhtZXNzYWdlKTsKQEAgLTMwOSw2ICszMTMsNyBAQCBNZWRpYVBsYXll
clByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgICwg
bV9lcnJvck9jY3VyZWQoZmFsc2UpCiAgICAgLCBtX3ZvbHVtZUlkbGVJZCgwKQogICAgICwgbV9t
ZWRpYUR1cmF0aW9uKDApCisgICAgLCBtX21lZGlhRHVyYXRpb25Lbm93bih0cnVlKQogICAgICwg
bV9tdXRlSWRsZUlkKDApCiAgICAgLCBtX3N0YXJ0ZWRCdWZmZXJpbmcoZmFsc2UpCiAgICAgLCBt
X2ZpbGxUaW1lb3V0SWQoMCkKQEAgLTQyMSw2ICs0MjYsMTAgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpkdXJhdGlvbigpIGNvbnN0CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkKQogICAgICAg
ICByZXR1cm4gMC4wOwogCisgICAgLy8gTWVkaWEgZHVyYXRpb24gcXVlcnkgZmFpbGVkIGFscmVh
ZHksIGRvbid0IGF0dGVtcHQgbmV3IHVzZWxlc3MgcXVlcmllcy4KKyAgICBpZiAoIW1fbWVkaWFE
dXJhdGlvbktub3duKQorICAgICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpOworCiAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbikKICAgICAgICAgcmV0dXJuIG1fbWVk
aWFEdXJhdGlvbjsKIApAQCAtODQzLDcgKzg1Miw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
Ojp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgbV9zdGFydGVkUGxheWluZyA9IHRydWU7CiAg
ICAgICAgICAgICBpZiAoIW1fbWVkaWFEdXJhdGlvbikgewogICAgICAgICAgICAgICAgIGZsb2F0
IG5ld0R1cmF0aW9uID0gZHVyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzaW5mKG5l
d0R1cmF0aW9uKSkKKyAgICAgICAgICAgICAgICBtX21lZGlhRHVyYXRpb25Lbm93biA9ICFpc2lu
ZihuZXdEdXJhdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbktub3du
KQogICAgICAgICAgICAgICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBuZXdEdXJhdGlvbjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCkBAIC0xMDU2LDYgKzEwNjYsMTQgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGU6OmxvYWROZXh0TG9jYXRpb24oKQogCiB9CiAKK1BsYXRmb3JtTWVk
aWEgTWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKK3sKKyAgICBQbGF0
Zm9ybU1lZGlhIHA7CisgICAgcC5nc3RQaXBlbGluZSA9IG1fcGxheUJpbjsKKyAgICBwLnF0TW92
aWUgPSAwOworICAgIHJldHVybiBwOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9h
ZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgdXBkYXRlU3RhdGVzKCk7CkBAIC0xMDk0LDEwICsxMTEy
LDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQogICAgIG1f
bWVkaWFEdXJhdGlvbiA9IDA7CiAKICAgICAvLyBBbmQgcmUtY2FjaGUgaXQgaWYgcG9zc2libGUu
CisgICAgR3N0U3RhdGUgc3RhdGU7CisgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJp
biwgJnN0YXRlLCAwLCAwKTsKICAgICBmbG9hdCBuZXdEdXJhdGlvbiA9IGR1cmF0aW9uKCk7Ci0g
ICAgaWYgKCFpc2luZihuZXdEdXJhdGlvbikpCi0gICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5l
d0R1cmF0aW9uOwogCisgICAgaWYgKHN0YXRlIDw9IEdTVF9TVEFURV9SRUFEWSkgeworICAgICAg
ICAvLyBEb24ndCBzZXQgbV9tZWRpYUR1cmF0aW9uS25vd24geWV0IGlmIHRoZSBwaXBlbGluZSBp
cyBub3QKKyAgICAgICAgLy8gcGF1c2VkLiBUaGlzIGFsbG93cyBkdXJhdGlvbigpIHF1ZXJ5IHRv
IGZhaWwgYXQgbGVhc3Qgb25jZQorICAgICAgICAvLyBiZWZvcmUgcGxheWJhY2sgc3RhcnRzIGFu
ZCBkdXJhdGlvbiBiZWNvbWVzIGtub3duLgorICAgICAgICBpZiAoIWlzaW5mKG5ld0R1cmF0aW9u
KSkKKyAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5ld0R1cmF0aW9uOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0gIWlzaW5mKG5ld0R1cmF0aW9uKTsK
KyAgICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbktub3duKQorICAgICAgICAgICAgbV9tZWRpYUR1
cmF0aW9uID0gbmV3RHVyYXRpb247CisgICAgfQogICAgIG1fcGxheWVyLT5kdXJhdGlvbkNoYW5n
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBlMTliNjg2
Li4xNGQ5NTRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNjYsNiAr
NjYsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsTG9hZCgpOwogICAgICAgICAg
ICAgYm9vbCBsb2FkTmV4dExvY2F0aW9uKCk7CiAKKyAgICAgICAgICAgIFBsYXRmb3JtTWVkaWEg
cGxhdGZvcm1NZWRpYSgpIGNvbnN0OworCiAgICAgICAgICAgICB2b2lkIHBsYXkoKTsKICAgICAg
ICAgICAgIHZvaWQgcGF1c2UoKTsKIApAQCAtMTYyLDYgKzE2NCw3IEBAIGNsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAg
ICAgICAgYm9vbCBtX2Vycm9yT2NjdXJlZDsKICAgICAgICAgICAgIGd1aW50IG1fdm9sdW1lSWRs
ZUlkOwogICAgICAgICAgICAgZ2Zsb2F0IG1fbWVkaWFEdXJhdGlvbjsKKyAgICAgICAgICAgIGJv
b2wgbV9tZWRpYUR1cmF0aW9uS25vd247CiAgICAgICAgICAgICBndWludCBtX211dGVJZGxlSWQ7
CiAgICAgICAgICAgICBib29sIG1fc3RhcnRlZEJ1ZmZlcmluZzsKICAgICAgICAgICAgIGd1aW50
IG1fZmlsbFRpbWVvdXRJZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMmI5MGY3YS4uOTcxMDdjMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXll
clByaXZhdGU6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogewotICAgIFBsYXRmb3JtTWVkaWEgcGxh
ZnRmb3JtTWVkaWEgPSB7IG1fcXRNb3ZpZS5nZXQoKSB9OworICAgIFBsYXRmb3JtTWVkaWEgcGxh
ZnRmb3JtTWVkaWEgPSB7IG1fcXRNb3ZpZS5nZXQoKSwgMCB9OwogICAgIHJldHVybiBwbGFmdGZv
cm1NZWRpYTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4
IGUxOWUyZmEuLjBlM2UyOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5j
cHAKQEAgLTY3Myw3ICs2NzMsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxh
eUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UAogICAgIGlmICgh
bWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcGFpbnRN
ZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgciwgbWVkaWFFbGVtZW50LT5jYW5QbGF5KCkg
PyBtX3BsYXlCdXR0b24uZ2V0KCkgOiBtX3BhdXNlQnV0dG9uLmdldCgpLCBtX3BhbmVsQ29sb3Is
IG1fbWVkaWFJY29uU2l6ZSk7CisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZv
LmNvbnRleHQsIHIsIG1lZGlhRWxlbWVudC0+cGF1c2VkKCkgPyBtX3BsYXlCdXR0b24uZ2V0KCkg
OiBtX3BhdXNlQnV0dG9uLmdldCgpLCBtX3BhbmVsQ29sb3IsIG1fbWVkaWFJY29uU2l6ZSk7CiB9
CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCi0tIAoxLjYuMy4z
</data>
<flag name="review"
          id="32780"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50698</attachid>
            <date>2010-03-15 02:58:35 -0700</date>
            <delta_ts>2010-03-15 07:49:08 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>6777</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzMTBjNjAzODg4NDY5MGU4YzRjZDA5NzQ4M2IxNzhiOGNiOWUyNTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI0IEZlYiAyMDEwIDEwOjA4OjA0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjUgKysrKysrKysrKysrKysrKysKIC4uLi9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwgICAyOSArKysrKysrKysrKysrKysr
Ky0tLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAg
fCAgICAyICsKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcCAgICAgICAg
ICAgIHwgICAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYjMyMTI3Yi4uZjM1OGFlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0wMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gdmlkZW8gcGxheWJhY2sgcG9zaXRp
b24gcXVlcnkgZmxvb2Qgd2hlbiBtb3VzZSBvdmVyIHRoZSB2aWRlbyBlbGVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTMzMworCisgICAgICAg
IFZhcmlvdXMgcG9zaXRpb24vZHVyYXRpb24gcXVlcnkgb3B0aW1pemF0aW9ucy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRlTWVzc2FnZUNhbGxiYWNrKTog
VXBkYXRlIHBsYXllciBzdGF0ZQorICAgICAgICBvbmx5IGZvciBzdGF0ZS1jaGFuZ2UgbWVzc2Fn
ZXMgY29taW5nIGZyb20gcGxheWJpbjIgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OmR1cmF0aW9uKTogRG9uJ3QgcmVhdHRlbXB0IGR1cmF0aW9uCisg
ICAgICAgIHF1ZXJpZXMgdGhhdCBwcmV2aW91c2x5IGZhaWxlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKTogQ2FjaGUgbWVkaWEKKyAgICAgICAg
ZHVyYXRpb24gb25seSBpZiBpdCdzIGtub3duLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQpOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnBpcGVsaW5lKTogcHVibGljIGFjY2Vzc29yIGZvciB0
aGUKKyAgICAgICAgcGxheWJpbiBlbGVtZW50LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVBsYXlCdXR0b24pOiBEb24ndCB0cmlnZ2VyIGEKKyAgICAgICAgcG9zaXRpb24gcXVlcnkg
b25seSB0byBrbm93IHdoaWNoIHBsYXkvcGF1c2UgYnV0dG9uIHRvIGRpc3BsYXkuCisKIDIwMTAt
MDMtMTUgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IGQwN2U0M2EuLmVmM2U4NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtOTMsNiArOTMsNyBAQCBnYm9vbGVhbiBtZWRpYVBsYXllclBy
aXZhdGVNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdw
bwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZSogbXAgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxh
eWVyUHJpdmF0ZSo+KGRhdGEpOwogICAgIGJvb2wgaXNzdWVFcnJvciA9IHRydWU7CiAgICAgYm9v
bCBhdHRlbXB0TmV4dExvY2F0aW9uID0gZmFsc2U7CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUg
PSBtcC0+cGlwZWxpbmUoKTsKIAogICAgIGlmIChtZXNzYWdlLT5zdHJ1Y3R1cmUpIHsKICAgICAg
ICAgY29uc3QgZ2NoYXIqIG1lc3NhZ2VUeXBlTmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUo
bWVzc2FnZS0+c3RydWN0dXJlKTsKQEAgLTEzNyw3ICsxMzgsMTAgQEAgZ2Jvb2xlYW4gbWVkaWFQ
bGF5ZXJQcml2YXRlTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNz
YWdlLCBncG8KICAgICAgICAgbXAtPmRpZEVuZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEdTVF9NRVNTQUdFX1NUQVRFX0NIQU5HRUQ6Ci0gICAgICAgIG1wLT51cGRhdGVTdGF0ZXMoKTsK
KyAgICAgICAgLy8gSWdub3JlIHN0YXRlIGNoYW5nZXMgZnJvbSBpbnRlcm5hbCBlbGVtZW50cy4g
VGhleSBhcmUKKyAgICAgICAgLy8gZm9yd2FyZGVkIHRvIHBsYXliaW4yIGFueXdheS4KKyAgICAg
ICAgaWYgKEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSByZWludGVycHJldF9jYXN0PEdzdE9i
amVjdCo+KHBpcGVsaW5lKSkKKyAgICAgICAgICAgIG1wLT51cGRhdGVTdGF0ZXMoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9CVUZGRVJJTkc6CiAgICAgICAgIG1wLT5w
cm9jZXNzQnVmZmVyaW5nU3RhdHMobWVzc2FnZSk7CkBAIC0zMTAsNiArMzE0LDcgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAg
ICAsIG1fdm9sdW1lSWRsZUlkKDApCiAgICAgLCBtX21lZGlhRHVyYXRpb24oMCkKICAgICAsIG1f
bXV0ZUlkbGVJZCgwKQorICAgICwgbV9tZWRpYUR1cmF0aW9uS25vd24odHJ1ZSkKICAgICAsIG1f
c3RhcnRlZEJ1ZmZlcmluZyhmYWxzZSkKICAgICAsIG1fZmlsbFRpbWVvdXRJZCgwKQogICAgICwg
bV9tYXhUaW1lTG9hZGVkKDApCkBAIC00MjQsNiArNDI5LDEwIEBAIGZsb2F0IE1lZGlhUGxheWVy
UHJpdmF0ZTo6ZHVyYXRpb24oKSBjb25zdAogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAgICAg
ICAgcmV0dXJuIDAuMDsKIAorICAgIC8vIE1lZGlhIGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBhbHJl
YWR5LCBkb24ndCBhdHRlbXB0IG5ldyB1c2VsZXNzIHF1ZXJpZXMuCisgICAgaWYgKCFtX21lZGlh
RHVyYXRpb25Lbm93bikKKyAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKTsKKwogICAgIGlmIChtX21lZGlhRHVyYXRpb24pCiAgICAgICAgIHJldHVybiBtX21l
ZGlhRHVyYXRpb247CiAKQEAgLTg4NCw3ICs4OTMsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6dXBkYXRlU3RhdGVzKCkKIAogICAgICAgICAgICAgaWYgKCFtX21lZGlhRHVyYXRpb24pIHsK
ICAgICAgICAgICAgICAgICBmbG9hdCBuZXdEdXJhdGlvbiA9IGR1cmF0aW9uKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpc2luZihuZXdEdXJhdGlvbikpCisgICAgICAgICAgICAgICAgbV9tZWRp
YUR1cmF0aW9uS25vd24gPSAhaXNpbmYobmV3RHVyYXRpb24pOworICAgICAgICAgICAgICAgIGlm
IChtX21lZGlhRHVyYXRpb25Lbm93bikKICAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUR1cmF0
aW9uID0gbmV3RHVyYXRpb247CiAgICAgICAgICAgICB9CiAKQEAgLTExMjMsMTAgKzExMzMsMjEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCiAgICAgbV9tZWRp
YUR1cmF0aW9uID0gMDsKIAogICAgIC8vIEFuZCByZS1jYWNoZSBpdCBpZiBwb3NzaWJsZS4KKyAg
ICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLCAm
c3RhdGUsIDAsIDApOwogICAgIGZsb2F0IG5ld0R1cmF0aW9uID0gZHVyYXRpb24oKTsKLSAgICBp
ZiAoIWlzaW5mKG5ld0R1cmF0aW9uKSkKLSAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVy
YXRpb247CiAKKyAgICBpZiAoc3RhdGUgPD0gR1NUX1NUQVRFX1JFQURZKSB7CisgICAgICAgIC8v
IERvbid0IHNldCBtX21lZGlhRHVyYXRpb25Lbm93biB5ZXQgaWYgdGhlIHBpcGVsaW5lIGlzIG5v
dAorICAgICAgICAvLyBwYXVzZWQuIFRoaXMgYWxsb3dzIGR1cmF0aW9uKCkgcXVlcnkgdG8gZmFp
bCBhdCBsZWFzdCBvbmNlCisgICAgICAgIC8vIGJlZm9yZSBwbGF5YmFjayBzdGFydHMgYW5kIGR1
cmF0aW9uIGJlY29tZXMga25vd24uCisgICAgICAgIGlmICghaXNpbmYobmV3RHVyYXRpb24pKQor
ICAgICAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9tZWRpYUR1cmF0aW9uS25vd24gPSAhaXNpbmYobmV3RHVyYXRpb24pOworICAg
ICAgICBpZiAobV9tZWRpYUR1cmF0aW9uS25vd24pCisgICAgICAgICAgICBtX21lZGlhRHVyYXRp
b24gPSBuZXdEdXJhdGlvbjsKKyAgICB9CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgp
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDhmMzE2NmUuLjFj
MjBhMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xMTYsNiArMTE2
LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAKICAgICAgICAgICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29u
c3Q7CiAKKyAgICAgICAgICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF5QmluOyB9CiAgICAgICAgICAgICBib29sIHBpcGVsaW5lUmVzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc2V0UGlwZWxpbmU7IH0KIAogICAgICAgICBwcml2YXRlOgpAQCAtMTYzLDYgKzE2
NCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2UgewogICAgICAgICAgICAgZ3VpbnQgbV92b2x1bWVJZGxlSWQ7CiAgICAgICAg
ICAgICBnZmxvYXQgbV9tZWRpYUR1cmF0aW9uOwogICAgICAgICAgICAgZ3VpbnQgbV9tdXRlSWRs
ZUlkOworICAgICAgICAgICAgYm9vbCBtX21lZGlhRHVyYXRpb25Lbm93bjsKICAgICAgICAgICAg
IGJvb2wgbV9zdGFydGVkQnVmZmVyaW5nOwogICAgICAgICAgICAgZ3VpbnQgbV9maWxsVGltZW91
dElkOwogICAgICAgICAgICAgZmxvYXQgbV9tYXhUaW1lTG9hZGVkOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IGUxOWUyZmEuLjBlM2UyOTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTY3Myw3ICs2NzMsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFJlbmRlck9iamVjdDo6UAogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwg
ciwgbWVkaWFFbGVtZW50LT5jYW5QbGF5KCkgPyBtX3BsYXlCdXR0b24uZ2V0KCkgOiBtX3BhdXNl
QnV0dG9uLmdldCgpLCBtX3BhbmVsQ29sb3IsIG1fbWVkaWFJY29uU2l6ZSk7CisgICAgcmV0dXJu
IHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHIsIG1lZGlhRWxlbWVudC0+cGF1
c2VkKCkgPyBtX3BsYXlCdXR0b24uZ2V0KCkgOiBtX3BhdXNlQnV0dG9uLmdldCgpLCBtX3BhbmVs
Q29sb3IsIG1fbWVkaWFJY29uU2l6ZSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50
TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCi0tIAoxLjYuMy4z
</data>
<flag name="review"
          id="33864"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50703</attachid>
            <date>2010-03-15 07:49:08 -0700</date>
            <delta_ts>2010-07-13 06:36:21 -0700</delta_ts>
            <desc>micro patched :)</desc>
            <filename>micro-patched-.patch</filename>
            <type>text/plain</type>
            <size>1849</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkYzQ3YzQyOGNkYzNhODM2YmZhYjNhNGM3MmFmZDk0ZDE3NWUyM2IyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDE1IE1hciAyMDEwIDE1OjQ4OjM5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
bWljcm8gcGF0Y2hlZCA6KQoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEzICsrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrLmNwcCB8ICAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg
MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDRiNzE5MTAuLmNkM2Q2MDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMt
MTUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIHZpZGVvIHBsYXliYWNr
IHBvc2l0aW9uIHF1ZXJ5IGZsb29kIHdoZW4gbW91c2Ugb3ZlciB0aGUgdmlkZW8gZWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzMzMKKwor
ICAgICAgICBEb24ndCB0cmlnZ2VyIGEgcG9zaXRpb24gcXVlcnkgb25seSB0byBrbm93IHdoaWNo
IHBsYXkvcGF1c2UKKyAgICAgICAgYnV0dG9uIHRvIGRpc3BsYXkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9uKToKKwogMjAxMC0wMy0xMSAgQW50b25pbyBHb21l
cyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEhv
bGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRl
eCBlMTllMmZhLi4wZTNlMjk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
Y3BwCkBAIC02NzMsNyArNjczLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVBs
YXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlAKICAgICBpZiAo
IW1lZGlhRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHBhaW50
TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHIsIG1lZGlhRWxlbWVudC0+Y2FuUGxheSgp
ID8gbV9wbGF5QnV0dG9uLmdldCgpIDogbV9wYXVzZUJ1dHRvbi5nZXQoKSwgbV9wYW5lbENvbG9y
LCBtX21lZGlhSWNvblNpemUpOworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5m
by5jb250ZXh0LCByLCBtZWRpYUVsZW1lbnQtPnBhdXNlZCgpID8gbV9wbGF5QnV0dG9uLmdldCgp
IDogbV9wYXVzZUJ1dHRvbi5nZXQoKSwgbV9wYW5lbENvbG9yLCBtX21lZGlhSWNvblNpemUpOwog
fQogCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByKQotLSAKMS42LjMuMw==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>50789</attachid>
            <date>2010-03-16 07:43:58 -0700</date>
            <delta_ts>2010-03-16 07:43:58 -0700</delta_ts>
            <desc>a possible layout test for the root cause</desc>
            <filename>video-pause-when-ended.html</filename>
            <type>text/html</type>
            <size>1763</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">PGh0bWw+CgogICAgPHZpZGVvIGNvbnRyb2xzIGF1dG9wbGF5ID48L3ZpZGVvPgoKICAgIDxzY3Jp
cHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0
LmpzPjwvc2NyaXB0PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgdmFyIGZpcnN0VGltZUNoZWNrID0g
dHJ1ZTsKCiAgICAgICAgd2FpdEZvckV2ZW50KCdwYXVzZScpOwogICAgICAgIHdhaXRGb3JFdmVu
dCgncGxheWluZycpOwoKICAgICAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIHBsYXlpbmcsIHNlZWsg
dG8gbmVhciB0aGUgZW5kIHNvIHRoZSB0ZXN0IGRvZXNuJ3QgdGFrZSB0b28gbG9uZwogICAgICAg
IHdhaXRGb3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7CiAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVu
dFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNCIpOwoKICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lQ2hlY2ssIDgwMCk7CiAgICAgICAgfSAp
OwoKICAgICAgICBmdW5jdGlvbiB0aW1lQ2hlY2soKSB7CiAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8uZW5kZWQiLCAhZmlyc3RUaW1lQ2hlY2spOwogICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLnBhdXNlZCIsICFmaXJzdFRpbWVDaGVjayk7CiAgICAgICAgICAgIGlmICghZmly
c3RUaW1lQ2hlY2spCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGRvbid0IHVzZSAi
dGVzdEV4cGVjdGVkKCkiIHNvIHdlIHdvbid0IGxvZyB0aGUgYWN0dWFsIGR1cmF0aW9uIHRvIHRo
ZQogICAgICAgICAgICAgICAgLy8gIHJlc3VsdHMgZmlsZSwgYXMgdGhlIGZsb2F0aW5nIHBvaW50
IHJlc3VsdCBtYXkgZGlmZmVyIHdpdGggZGlmZmVyZW50IGVuZ2luZXMKICAgICAgICAgICAgICAg
IHJlcG9ydEV4cGVjdGVkKG1lZGlhRWxlbWVudC5jdXJyZW50VGltZSA9PSBtZWRpYUVsZW1lbnQu
ZHVyYXRpb24sICJtZWRpYUVsZW1lbnQuY3VycmVudFRpbWUiLCAiPT0iLCAibWVkaWFFbGVtZW50
LmR1cmF0aW9uIiwgbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lKTsKICAgICAgICAgICAgICAgIGVu
ZFRlc3QoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJtZWRpYUVsZW1lbnQuY3VycmVudFRpbWUiLCAwLCAnPicpOwogICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhRWxlbWVudC5jdXJyZW50VGltZSIsICh2aWRlby5k
dXJhdGlvbiAtIDAuNCkudG9GaXhlZCgyKSwgJzwnKTsKICAgICAgICAgICAgcnVuKCJ2aWRlby5j
dXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC4zIik7CiAgICAgICAgICAgIHJlc3BvbmRU
b1RpbWVVcGRhdGUgPSB0cnVlOwogICAgICAgICAgICBmaXJzdFRpbWVDaGVjayA9IGZhbHNlOwoK
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgc2V0VGltZW91dCh0aW1l
Q2hlY2ssIDgwMCk7CiAgICAgICAgfQoKICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgICAg
IHZhciBtZWRpYUZpbGUgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsK
ICAgICAgICBydW4oInZpZGVvLnNyYyA9ICciICsgbWVkaWFGaWxlICsgIiciKTsKICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOwogICAgPC9zY3JpcHQ+CgogICAgPC9oZWFkPgoKPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61367</attachid>
            <date>2010-07-13 06:36:21 -0700</date>
            <delta_ts>2010-07-13 09:32:02 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>2290</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5YTUyYzQyN2JhNjYzMzIzMWY2NDE1MThhMTdhMDc2NWZiNGE1MTdmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDEzIEp1bCAyMDEwIDE1OjMyOjU0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE0ICsrKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAgfCAgIDEwICsrKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u
cygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmNGU1YWMuLjI5MTRkYWYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTAtMDctMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5vYm9keSAoT09PUFMhKQorCisgICAgICAgIFtHVEtdIHZpZGVvIHBs
YXliYWNrIHBvc2l0aW9uIHF1ZXJ5IGZsb29kIHdoZW4gbW91c2Ugb3ZlciB0aGUgdmlkZW8gZWxl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUz
MzMKKworICAgICAgICBEb24ndCB0cmlnZ2VyIGEgcG9zaXRpb24gcXVlcnkgb25seSB0byBrbm93
IHdoaWNoIHBsYXkvcGF1c2UKKyAgICAgICAgYnV0dG9uIHRvIGRpc3BsYXkuIEluc3RlYWQgdXNl
IHRoZSBtZWRpYS1jb250cm9sIGJ1dHRvbiBkaXNwbGF5CisgICAgICAgIHR5cGUgdG8gc2VsZWN0
IHRoZSBpbWFnZSB0byBwYWludC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVBs
YXlCdXR0b24pOgorCiAyMDEwLTA3LTEyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuY3BwCmluZGV4IGI3MDc3M2UuLmEyZWM3MmIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTc2MiwxMSArNzYyLDE1IEBAIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBwYWluCiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gZ2V0TWVkaWFF
bGVtZW50RnJvbVJlbmRlck9iamVjdChvKTsKLSAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICBO
b2RlKiBub2RlID0gby0+bm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19j
YXN0PE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50Kj4obm9kZSk7CisgICAgaWYgKCFidG4p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBh
aW50SW5mby5jb250ZXh0LCByLCBtZWRpYUVsZW1lbnQtPmNhblBsYXkoKSA/IG1fcGxheUJ1dHRv
bi5nZXQoKSA6IG1fcGF1c2VCdXR0b24uZ2V0KCksIG1fcGFuZWxDb2xvciwgbV9tZWRpYUljb25T
aXplKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgciwg
YnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhUGxheUJ1dHRvbiA/IG1fcGxheUJ1dHRvbi5nZXQo
KSA6IG1fcGF1c2VCdXR0b24uZ2V0KCksIG1fcGFuZWxDb2xvciwgbV9tZWRpYUljb25TaXplKTsK
IH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
Ci0tIAoxLjcuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61386</attachid>
            <date>2010-07-13 09:32:02 -0700</date>
            <delta_ts>2010-07-13 09:34:12 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>2253</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzNWFiNWNkY2IyYzk5ZDJhZmI2MDdkZmE1MzYyMjE5YTE1Nzg1NDQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDEzIEp1bCAyMDEwIDE1OjMyOjU0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE0ICsrKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAgfCAgICA3ICsrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDFmNGU1YWMuLjI5MTRkYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAt
MDctMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5vYm9keSAoT09PUFMhKQorCisgICAgICAgIFtHVEtdIHZpZGVvIHBsYXli
YWNrIHBvc2l0aW9uIHF1ZXJ5IGZsb29kIHdoZW4gbW91c2Ugb3ZlciB0aGUgdmlkZW8gZWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzMzMK
KworICAgICAgICBEb24ndCB0cmlnZ2VyIGEgcG9zaXRpb24gcXVlcnkgb25seSB0byBrbm93IHdo
aWNoIHBsYXkvcGF1c2UKKyAgICAgICAgYnV0dG9uIHRvIGRpc3BsYXkuIEluc3RlYWQgdXNlIHRo
ZSBtZWRpYS1jb250cm9sIGJ1dHRvbiBkaXNwbGF5CisgICAgICAgIHR5cGUgdG8gc2VsZWN0IHRo
ZSBpbWFnZSB0byBwYWludC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVBsYXlC
dXR0b24pOgorCiAyMDEwLTA3LTEyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCmluZGV4IGI3MDc3M2UuLmJjMGQxNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTc2MiwxMSArNzYyLDEyIEBAIGJvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBwYWluCiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHIpCiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gZ2V0TWVkaWFFbGVt
ZW50RnJvbVJlbmRlck9iamVjdChvKTsKLSAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICBOb2Rl
KiBub2RlID0gby0+bm9kZSgpOworICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHIsIG1l
ZGlhRWxlbWVudC0+Y2FuUGxheSgpID8gbV9wbGF5QnV0dG9uLmdldCgpIDogbV9wYXVzZUJ1dHRv
bi5nZXQoKSwgbV9wYW5lbENvbG9yLCBtX21lZGlhSWNvblNpemUpOworICAgIE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xQbGF5
QnV0dG9uRWxlbWVudCo+KG5vZGUpOworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50
SW5mby5jb250ZXh0LCByLCBidXR0b24tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFQbGF5QnV0dG9u
ID8gbV9wbGF5QnV0dG9uLmdldCgpIDogbV9wYXVzZUJ1dHRvbi5nZXQoKSwgbV9wYW5lbENvbG9y
LCBtX21lZGlhSWNvblNpemUpOwogfQogCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlh
U2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcikKLS0gCjEuNy4x
</data>
<flag name="review"
          id="49401"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>