<?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>84414</bug_id>
          
          <creation_ts>2012-04-19 19:45:43 -0700</creation_ts>
          <short_desc>Expose a flag so that fullscreen video on android can work with FULLSCREEN_API</short_desc>
          <delta_ts>2012-05-09 15:57:23 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>0</everconfirmed>
          <reporter name="Min Qin">qinmin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606307</commentid>
    <comment_count>0</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-19 19:45:43 -0700</bug_when>
    <thetext>Expose a flag so that fullscreen video on android can work with FULLSCREEN_API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606311</commentid>
    <comment_count>1</comment_count>
      <attachid>138032</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-19 19:52:33 -0700</bug_when>
    <thetext>Created attachment 138032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606314</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 19:54:46 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606315</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 19:55:10 -0700</bug_when>
    <thetext>Attachment 138032 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 10 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>606322</commentid>
    <comment_count>4</comment_count>
      <attachid>138034</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-19 20:27:14 -0700</bug_when>
    <thetext>Created attachment 138034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606696</commentid>
    <comment_count>5</comment_count>
      <attachid>138034</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-04-20 10:46:38 -0700</bug_when>
    <thetext>Comment on attachment 138034
Patch

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

The WebCore part of this looks fine to me modulo the simplification comment.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:768
&gt; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
&gt;  void MediaPlayer::enterFullscreen()
&gt;  {
&gt;      m_private-&gt;enterFullscreen();
&gt; -}    
&gt; +}
&gt; +#elif ENABLE(NATIVE_FULLSCREEN_VIDEO)
&gt; +bool MediaPlayer::enterFullscreen() const
&gt; +{
&gt; +    return m_private-&gt;enterFullscreen();
&gt; +}

I think you might as well just change m_private-&gt;enterFullscreen to return a bool so you can combine these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606733</commentid>
    <comment_count>6</comment_count>
      <attachid>138125</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-20 11:24:36 -0700</bug_when>
    <thetext>Created attachment 138125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606739</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-04-20 11:34:24 -0700</bug_when>
    <thetext>This looks fine to me, but I am not marking r+ pending approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606752</commentid>
    <comment_count>8</comment_count>
      <attachid>138125</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-20 11:42:37 -0700</bug_when>
    <thetext>Comment on attachment 138125
Patch

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

&gt; Source/WebKit/chromium/public/WebMediaPlayer.h:212
&gt; +    virtual bool enterFullscreen() { return false; }

could you document what this does (i&apos;m guessing tell this media player to go fullscreen) and what the bool return value means?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606776</commentid>
    <comment_count>9</comment_count>
      <attachid>138137</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-20 12:01:31 -0700</bug_when>
    <thetext>Created attachment 138137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606779</commentid>
    <comment_count>10</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-20 12:03:26 -0700</bug_when>
    <thetext>Comments added for enter and exit fullscreen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609116</commentid>
    <comment_count>11</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-24 15:07:11 -0700</bug_when>
    <thetext>Ping, anyone from the chromium side can review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611594</commentid>
    <comment_count>12</comment_count>
      <attachid>138137</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-04-27 09:45:53 -0700</bug_when>
    <thetext>Comment on attachment 138137
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1592
&gt;      if (m_client &amp;&amp; m_client-&gt;enterFullScreen())

so then on the chromium side you will make this enterFullScreen()
method always return false?  or, will you try to make fullscreen
mode work for non-video elements too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611601</commentid>
    <comment_count>13</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-27 09:51:59 -0700</bug_when>
    <thetext>On chromium side, the enterFullScreen should only work for video element. For audio element, we will return false.  There is no current plan for MediaSource element yet. All the logic should be in webmediaplayer_android.cc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611930</commentid>
    <comment_count>14</comment_count>
      <attachid>138137</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-27 15:03:20 -0700</bug_when>
    <thetext>Comment on attachment 138137
Patch

Rejecting attachment 138137 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Source/WebKit/chromium/public/WebMediaPlayer.h.rej
patching file Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
patching file Source/WebKit/chromium/src/WebMediaPlayerClientImpl.h
patching file Source/WebKit/chromium/src/WebViewImpl.cpp
Hunk #1 succeeded at 1584 (offset 5 lines).
Hunk #2 succeeded at 1603 (offset 5 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Darin Fish...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12555355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612709</commentid>
    <comment_count>15</comment_count>
      <attachid>139467</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-30 09:46:59 -0700</bug_when>
    <thetext>Created attachment 139467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612711</commentid>
    <comment_count>16</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-30 09:49:03 -0700</bug_when>
    <thetext>Sorry, there is a merge error during the previous commit process. Resolved the conflicts now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612905</commentid>
    <comment_count>17</comment_count>
      <attachid>139467</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 13:26:52 -0700</bug_when>
    <thetext>Comment on attachment 139467
Patch

Clearing flags on attachment: 139467

Committed r115661: &lt;http://trac.webkit.org/changeset/115661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612906</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 13:26:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613179</commentid>
    <comment_count>19</comment_count>
      <attachid>139467</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-30 19:25:52 -0700</bug_when>
    <thetext>Comment on attachment 139467
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:772
&gt; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) || ENABLE(NATIVE_FULLSCREEN_VIDEO)

Would you explain what is NATIVE_FULLSCREEN_VIDEO?
Shouldn&apos;t it be a USE() flag instead of an ENABEL() flag?

http://trac.webkit.org/wiki/Porting%20Macros%20plan
* USE() - use a particular third-party library or optional OS service
* ENABLE() - turn on a specific feature of WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613182</commentid>
    <comment_count>20</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-04-30 19:38:12 -0700</bug_when>
    <thetext>For android, fullscreen video is implemented by passing a java video surfaceView object to the webmediaplayer. As a consequence, NATIVE_FULLSCREEN_VIDEO means the fullscreen video is implemented by the native system view,  and is not implemented by any of the webkit code.

Probably USE makes more sense here, I will have another change to fix this,

(In reply to comment #19)
&gt; (From update of attachment 139467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139467&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:772
&gt; &gt; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) || ENABLE(NATIVE_FULLSCREEN_VIDEO)
&gt; 
&gt; Would you explain what is NATIVE_FULLSCREEN_VIDEO?
&gt; Shouldn&apos;t it be a USE() flag instead of an ENABEL() flag?
&gt; 
&gt; http://trac.webkit.org/wiki/Porting%20Macros%20plan
&gt; * USE() - use a particular third-party library or optional OS service
&gt; * ENABLE() - turn on a specific feature of WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619744</commentid>
    <comment_count>21</comment_count>
      <attachid>139467</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-09 12:46:58 -0700</bug_when>
    <thetext>Comment on attachment 139467
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:330
&gt; +    bool enterFullscreen() const;

Why would you change this to be const?? That is not a method free of side effects on the state of the media player.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619745</commentid>
    <comment_count>22</comment_count>
      <attachid>139467</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-09 12:47:00 -0700</bug_when>
    <thetext>Comment on attachment 139467
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:330
&gt; +    bool enterFullscreen() const;

Why would you change this to be const?? That is not a method free of side effects on the state of the media player.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619757</commentid>
    <comment_count>23</comment_count>
      <attachid>139467</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-05-09 13:01:25 -0700</bug_when>
    <thetext>Comment on attachment 139467
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:11
&gt; +        This change makes it possble for WebViewImpl::enterFullScreenForElement()

Typo here, be careful next time.

&gt; Source/WebKit/chromium/ChangeLog:14
&gt; +        Sorry, there is a merge error during the previous commit, resolved now

This sentence doesn&apos;t make sense to me. Be careful next time.

&gt;&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:772
&gt;&gt;&gt; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) || ENABLE(NATIVE_FULLSCREEN_VIDEO)
&gt;&gt; 
&gt;&gt; Would you explain what is NATIVE_FULLSCREEN_VIDEO?
&gt;&gt; Shouldn&apos;t it be a USE() flag instead of an ENABEL() flag?
&gt;&gt; 
&gt;&gt; http://trac.webkit.org/wiki/Porting%20Macros%20plan
&gt;&gt; * USE() - use a particular third-party library or optional OS service
&gt;&gt; * ENABLE() - turn on a specific feature of WebKit
&gt; 
&gt; 

I would like to know too.

&gt;&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:330
&gt;&gt;&gt; +    bool enterFullscreen() const;
&gt;&gt; 
&gt;&gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.
&gt; 
&gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.

In addition of the const I really dislike the asymmetry with exitFullscreen();
Other question : Why the bool as a return value? Could you elaborate when and which scenario it would return false?

&gt; Source/WebKit/chromium/public/WebMediaPlayer.h:187
&gt; +    // Instuct WebMediaPlayer to enter/exit fullscreen.

Typo here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619762</commentid>
    <comment_count>24</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-09 13:07:06 -0700</bug_when>
    <thetext>&gt; &gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.
&gt; 
&gt; In addition of the const I really dislike the asymmetry with exitFullscreen();
&gt; Other question : Why the bool as a return value? Could you elaborate when and which scenario it would return false?

That is a good point. With all the existing code ignoring the return value, this is weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619778</commentid>
    <comment_count>25</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-05-09 13:25:54 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 139467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139467&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.h:330
&gt; &gt; +    bool enterFullscreen() const;
&gt; 
&gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.

So this is what could happen for chrome on android, when calling enterFullscreen() it could actually fail for the following 2 reasons:
1. if the MediaPlayerPrivate object is gone.
2. the native media player is already in fullscreen mode.

Since this return value is not used when ENABLE(PLUGIN_PROXY_FOR_VIDEO) is set, returning true should just be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619786</commentid>
    <comment_count>26</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-05-09 13:31:21 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 139467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139467&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:11
&gt; &gt; +        This change makes it possble for WebViewImpl::enterFullScreenForElement()
&gt; 
&gt; Typo here, be careful next time.
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:14
&gt; &gt; +        Sorry, there is a merge error during the previous commit, resolved now
&gt; 
&gt; This sentence doesn&apos;t make sense to me. Be careful next time.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:772
&gt; &gt;&gt;&gt; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) || ENABLE(NATIVE_FULLSCREEN_VIDEO)
&gt; &gt;&gt; 
&gt; &gt;&gt; Would you explain what is NATIVE_FULLSCREEN_VIDEO?
&gt; &gt;&gt; Shouldn&apos;t it be a USE() flag instead of an ENABEL() flag?
&gt; &gt;&gt; 
&gt; &gt;&gt; http://trac.webkit.org/wiki/Porting%20Macros%20plan
&gt; &gt;&gt; * USE() - use a particular third-party library or optional OS service
&gt; &gt;&gt; * ENABLE() - turn on a specific feature of WebKit
&gt; &gt; 
&gt; &gt; 
&gt; 
&gt; I would like to know too.

This has been fixed in https://bugs.webkit.org/show_bug.cgi?id=85316

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:330
&gt; &gt;&gt;&gt; +    bool enterFullscreen() const;
&gt; &gt;&gt; 
&gt; &gt;&gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.
&gt; &gt; 
&gt; &gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.
&gt; 
&gt; In addition of the const I really dislike the asymmetry with exitFullscreen();
&gt; Other question : Why the bool as a return value? Could you elaborate when and which scenario it would return false?
&gt; 

So if you take a look at the change I made in WebViewImpl::enterFullScreenForElement(WebCore::Element* element) in this patch, you will see this return value got used. We need the return value to know whether enterfullscreen actually succeeded, and whether we should set the current m_provisionalFullScreenElement element to that media element.


&gt; &gt; Source/WebKit/chromium/public/WebMediaPlayer.h:187
&gt; &gt; +    // Instuct WebMediaPlayer to enter/exit fullscreen.
&gt; 
&gt; Typo here.

ok, will fix the typo later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619788</commentid>
    <comment_count>27</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-09 13:33:56 -0700</bug_when>
    <thetext>&gt; &gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.

You have not explained why this is valid regarding const-correctness.

&gt; So this is what could happen for chrome on android, when calling enterFullscreen() it could actually fail for the following 2 reasons:
&gt; 1. if the MediaPlayerPrivate object is gone.
&gt; 2. the native media player is already in fullscreen mode.
&gt; 
&gt; Since this return value is not used when ENABLE(PLUGIN_PROXY_FOR_VIDEO) is set, returning true should just be fine.

This sounds like reasons to have a &quot;canEnterFullScreen()&quot; method or something similar. Now you changed the API so that enterFullScreen() can fail. The fact that the existing code ignore this is no excuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619807</commentid>
    <comment_count>28</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-05-09 13:54:19 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; &gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.
&gt; 
&gt; You have not explained why this is valid regarding const-correctness.

Because when we call this, it won&apos;t change the object. If the const-correctness really affects the const-correctness in your implementation, we can remove that const away.  
&gt; 
&gt; &gt; So this is what could happen for chrome on android, when calling enterFullscreen() it could actually fail for the following 2 reasons:
&gt; &gt; 1. if the MediaPlayerPrivate object is gone.
&gt; &gt; 2. the native media player is already in fullscreen mode.
&gt; &gt; 
&gt; &gt; Since this return value is not used when ENABLE(PLUGIN_PROXY_FOR_VIDEO) is set, returning true should just be fine.
&gt; 
&gt; This sounds like reasons to have a &quot;canEnterFullScreen()&quot; method or something similar. Now you changed the API so that enterFullScreen() can fail. The fact that the existing code ignore this is no excuse.

(In reply to comment #27)
&gt; &gt; &gt; Why would you change this to be const?? That is not a method free of side effects on the state of the media player.
&gt; 
&gt; You have not explained why this is valid regarding const-correctness.
&gt; 
&gt; &gt; So this is what could happen for chrome on android, when calling enterFullscreen() it could actually fail for the following 2 reasons:
&gt; &gt; 1. if the MediaPlayerPrivate object is gone.
&gt; &gt; 2. the native media player is already in fullscreen mode.
&gt; &gt; 
&gt; &gt; Since this return value is not used when ENABLE(PLUGIN_PROXY_FOR_VIDEO) is set, returning true should just be fine.
&gt; 
&gt; This sounds like reasons to have a &quot;canEnterFullScreen()&quot; method or something similar. Now you changed the API so that enterFullScreen() can fail. The fact that the existing code ignore this is no excuse.

So in the NATIVE_FULLSCREEN_VIDEO case, there is nothing in the DOM that blocks the media element from going fullscreen. Only the native mediaplayer knows whether it can enter fullscreen or not. And also because that the MediaPlayerPrivate can get deleted when this is called, so enterFullscreen() is not guaranteed to be successful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619901</commentid>
    <comment_count>29</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-09 15:15:25 -0700</bug_when>
    <thetext>&gt; &gt; You have not explained why this is valid regarding const-correctness.
&gt; 
&gt; Because when we call this, it won&apos;t change the object. If the const-correctness really affects the const-correctness in your implementation, we can remove that const away.  

In WebKit, we consider the semantic const correctness. not the C++ type checking.

Yes, I think the &quot;const&quot; should not be there.


&gt; &gt; &gt; Since this return value is not used when ENABLE(PLUGIN_PROXY_FOR_VIDEO) is set, returning true should just be fine.
&gt; &gt; 
&gt; &gt; This sounds like reasons to have a &quot;canEnterFullScreen()&quot; method or something similar. Now you changed the API so that enterFullScreen() can fail. The fact that the existing code ignore this is no excuse.
&gt; 
&gt; So in the NATIVE_FULLSCREEN_VIDEO case, there is nothing in the DOM that blocks the media element from going fullscreen. Only the native mediaplayer knows whether it can enter fullscreen or not. And also because that the MediaPlayerPrivate can get deleted when this is called, so enterFullscreen() is not guaranteed to be successful.

If you chance the contract of an API, you have to do it all the way.

Please explain how can the MediaPlayerPrivate get deleted in MediaPlayer::enterFullScreen() because that is relevant to the other use of this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619915</commentid>
    <comment_count>30</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-05-09 15:26:53 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt; &gt; You have not explained why this is valid regarding const-correctness.
&gt; &gt; 
&gt; &gt; Because when we call this, it won&apos;t change the object. If the const-correctness really affects the const-correctness in your implementation, we can remove that const away.  
&gt; 
&gt; In WebKit, we consider the semantic const correctness. not the C++ type checking.
&gt; 
&gt; Yes, I think the &quot;const&quot; should not be there.
&gt; 
&gt; 
&gt; &gt; &gt; &gt; Since this return value is not used when ENABLE(PLUGIN_PROXY_FOR_VIDEO) is set, returning true should just be fine.
&gt; &gt; &gt; 
&gt; &gt; &gt; This sounds like reasons to have a &quot;canEnterFullScreen()&quot; method or something similar. Now you changed the API so that enterFullScreen() can fail. The fact that the existing code ignore this is no excuse.
&gt; &gt; 
&gt; &gt; So in the NATIVE_FULLSCREEN_VIDEO case, there is nothing in the DOM that blocks the media element from going fullscreen. Only the native mediaplayer knows whether it can enter fullscreen or not. And also because that the MediaPlayerPrivate can get deleted when this is called, so enterFullscreen() is not guaranteed to be successful.
&gt; 
&gt; If you chance the contract of an API, you have to do it all the way.
&gt;

ok, I will add a canEnterFullscreen() call in another change, and revert the changes to the enterFullscreen() call.

&gt; Please explain how can the MediaPlayerPrivate get deleted in MediaPlayer::enterFullScreen() because that is relevant to the other use of this API.

I am not sure why this happens, but this did happen once a while in our stacktrace. Could be a bug in javascript engine, or could be something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619949</commentid>
    <comment_count>31</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-09 15:57:23 -0700</bug_when>
    <thetext>&gt; ok, I will add a canEnterFullscreen() call in another change, and revert the changes to the enterFullscreen() call.

Great, thanks for following up on this. Feel free to add me in CC if you need reviews.

&gt; &gt; Please explain how can the MediaPlayerPrivate get deleted in MediaPlayer::enterFullScreen() because that is relevant to the other use of this API.
&gt; 
&gt; I am not sure why this happens, but this did happen once a while in our stacktrace. Could be a bug in javascript engine, or could be something else.

This could be important. Please file a bug next time you encounter this issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138032</attachid>
            <date>2012-04-19 19:52:33 -0700</date>
            <delta_ts>2012-04-19 20:27:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84414-20120419195232.patch</filename>
            <type>text/plain</type>
            <size>10273</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE5M2RjZTdmZmZkZjlm
NTc1NzA2MjVlNmE4M2UzYjQxNDlkZjY4My4uMGI4Y2U3MDE5NmM5ZmMwOWEyMzZhYzMyNTc0MmNm
ODBkOTNlYzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTE5ICBNaW4g
UWluICA8cWlubWluQGdvb2dsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGEgZmxhZyBzbyB0aGF0
IGZ1bGxzY3JlZW4gdmlkZW8gb24gYW5kcm9pZCBjYW4gd29yayB3aXRoIEZVTExTQ1JFRU5fQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpleGl0RnVs
bHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKE1lZGlhUGxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmVudGVyRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmV4
aXRGdWxsc2NyZWVuKToKKwogMjAxMi0wNC0xNyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbnNpc3RlbnQgY2hlY2tpbmcgZm9yIGNs
aXBwZWQgcmVjdHMgd2hlbiB3ZSBuZWVkIHRoZSBjb21wdXRlZCByZXN1bHQgZW5jbG9zZWQgd2l0
aGluIHRoZSByZWFsIHJlc3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NjBjZGE1
NDNmMDVmYzhkMWMxOTMxYWQ3YmVjNzM1YTY0YzQ2NDhiLi5jMzc1NjFlMDBkMzcyMmM3YTcxYjc5
OGEyODdkMWViOWYyNTQ1ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDEyLTA0LTE5ICBNaW4gUWluICA8cWlubWluQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgRXhwb3NlIGEgZmxhZyBzbyB0aGF0IGZ1bGxzY3JlZW4gdmlkZW8gb24gYW5kcm9pZCBjYW4g
d29yayB3aXRoIEZVTExTQ1JFRU5fQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9uIGFuZHJvaWQsIHRoZSBmdWxsc2NyZWVuIHZpZGVvIHdhcyBpbXBs
ZW1lbnRlZCBieSBwYXNzaW5nIGEgamF2YQorICAgICAgICBzdXJmYWNlVmlldyB0byBhbiBhbmRy
b2lkIG1lZGlhcGxheWVyIGNsYXNzLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhh
dCBsb2dpYyBzaG91bGQgaGFwcGVuIGluIFdlYktpdDo6V2ViTWVkaWFQbGF5ZXIuCisgICAgICAg
IFRoaXMgY2hhbmdlIG1ha2VzIGl0IHBvc3NibGUgZm9yIFdlYlZpZXdJbXBsOjplbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KCkKKyAgICAgICAgdG8gY2FsbCBXZWJNZWRpYVBsYXllci0+ZW50ZXJG
dWxsc2NyZWVuKCksIHRodXMgc29sdmluZyB0aGUgaXNzdWUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBUaGlzIGp1c3QgZXhwb3NlcyB0aGUgZmxhZyBzbyBsYXRlciBpdCBjYW4gYmUgdXNlZCBi
eSBhbmRyb2lkLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMv
V2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFQbGF5ZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhUGxheWVyOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAg
ICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKwogMjAx
Mi0wNC0xNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBDYWxlbmRhciBQaWNrZXI6IFBvcHVwIHBvc2l0aW9uIGlzIHdyb25nIHdoZW4gdGhl
cmUgYXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKaW5kZXggZTk4ZWJmZDc1YmI5OWM1M2QxMDI3MGQ4ZmJmODhjN2I2MjIwMzE3OC4uOWM1
NzFjZmQwMjg2YTdjMTc3ZTIzZWNmODMxNDI1NjE0MGRhYTJmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNzU0LDE2ICs3NTQs
MjUgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0Q29udHJvbHMoYm9vbCBjb250cm9scykKIHsKICAg
ICBtX3ByaXZhdGUtPnNldENvbnRyb2xzKGNvbnRyb2xzKTsKIH0gICAgCisjZW5kaWYKIAorI2lm
IEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogdm9pZCBNZWRpYVBsYXllcjo6ZW50ZXJG
dWxsc2NyZWVuKCkKIHsKICAgICBtX3ByaXZhdGUtPmVudGVyRnVsbHNjcmVlbigpOwotfSAgICAK
K30KKyNlbGlmIEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKK2Jvb2wgTWVkaWFQbGF5
ZXI6OmVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZW50
ZXJGdWxsc2NyZWVuKCk7Cit9CisjZW5kaWYKIAorI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKSB8fCBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiB2b2lkIE1lZGlhUGxh
eWVyOjpleGl0RnVsbHNjcmVlbigpCiB7CiAgICAgbV9wcml2YXRlLT5leGl0RnVsbHNjcmVlbigp
OwotfSAgICAKK30KICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
ZDliNmUyNzAwM2NiMWY4YzliZDY5MDkwMDRhMTI4NTBhZDU4ZjljMC4uZDRjNmE3MWQyMDNkYWZm
ZGE2NjBjNGZkZTgyNDUzMGE1MzJiMTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMjEsNyArMzIxLDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5
cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1lZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQ
bGF5ZXJQcm94eSogcHJveHkpOwogICAgIHZvaWQgc2V0Q29udHJvbHMoYm9vbCk7CisjZW5kaWYK
KworI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIHZvaWQgZW50ZXJGdWxs
c2NyZWVuKCk7CisjZWxpZiBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgYm9v
bCBlbnRlckZ1bGxzY3JlZW4oKSBjb25zdDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pIHx8IEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICB2
b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCAzNzhiMjU5ZTgz
NTIwN2Q2N2IyMmFiYjkwM2RlZWYyZDk0Y2MyOGMxLi40YmVkYTJjOTIzZTI4NGU2MWVlOTM2ZjEz
MjhiMjZmMzVjYzRhZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTE5LDYgKzExOSwxNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgeyB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxz
Y3JlZW4oKSB7IH0KKyNlbGlmIEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICB2
aXJ0dWFsIGJvb2wgZW50ZXJGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pIHx8IEVOQUJMRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSB7
IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIHdo
ZXRoZXIgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIGlzIHN1cHBvcnRlZCBieSB0aGUgbWVkaWEgZW5n
aW5lIGZvciB0aGUgY3VycmVudCBtZWRpYS4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2Nl
bGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMDQ2ZTI4Y2E1MmExZTM0MGQ3YzY2YjgwYTQ4NzhkMTM0
MmVhNzE5OC4uM2FhN2VmZjkxZTVkNGZjYzJlNjJjZWQxOGJiNjAxMjZjMzQxNTliMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtMTM0LDEyICsxMzQsMTQgQEAKICAgICAg
IFsnT1M9PSJhbmRyb2lkIicsIHsKICAgICAgICAgJ2ZlYXR1cmVfZGVmaW5lcyc6IFsKICAgICAg
ICAgICAnRU5BQkxFX0NBTEVOREFSX1BJQ0tFUj0wJywKKyAgICAgICAgICAnRU5BQkxFX05BVElW
RV9GVUxMU0NSRUVOX1ZJREVPPTEnLAogICAgICAgICAgICdFTkFCTEVfUEFHRV9QT1BVUD0wJywK
ICAgICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKICAgICAgICAgXSwKICAgICAgIH0sIHsK
ICAgICAgICAgJ2ZlYXR1cmVfZGVmaW5lcyc6IFsKICAgICAgICAgICAnRU5BQkxFX0NBTEVOREFS
X1BJQ0tFUj0xJywKKyAgICAgICAgICAnRU5BQkxFX05BVElWRV9GVUxMU0NSRUVOX1ZJREVPPTAn
LAogICAgICAgICAgICdFTkFCTEVfUEFHRV9QT1BVUD0xJywKICAgICAgICAgICAnRU5BQkxFX1dF
Ql9BVURJTz0xJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVBsYXllci5oCmluZGV4IGMyOTNjZWU5NTgyMzdkYzZjNjRlNmMxZGQzOWVhYWY3
ZWIyNTEzNmEuLjBiODc3NGYzYmRjNmIzNGFlZGM0ZDIzM2ZkMmIzYjA1OGFkMGU1NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaApAQCAtMTk5
LDYgKzE5OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhS2V5RXhjZXB0aW9uIGdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQg
Y2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSB7IHJldHVybiBLZXlTeXN0
ZW1Ob3RTdXBwb3J0ZWQ7IH0KICAgICB2aXJ0dWFsIE1lZGlhS2V5RXhjZXB0aW9uIGFkZEtleShj
b25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhcioga2V5LCB1bnNp
Z25lZCBrZXlMZW5ndGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBp
bml0RGF0YUxlbmd0aCwgY29uc3QgV2ViU3RyaW5nJiBzZXNzaW9uSWQpIHsgcmV0dXJuIEtleVN5
c3RlbU5vdFN1cHBvcnRlZDsgfQogICAgIHZpcnR1YWwgTWVkaWFLZXlFeGNlcHRpb24gY2FuY2Vs
S2V5UmVxdWVzdChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgV2ViU3RyaW5nJiBz
ZXNzaW9uSWQpIHsgcmV0dXJuIEtleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQorCisgICAgdmlydHVh
bCBib29sIGVudGVyRnVsbHNjcmVlbigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGV4aXRGdWxsc2NyZWVuKCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuY3BwCmluZGV4IDZhOTI3NTNkZWEzY2M0ODc3ZmUxYzNkODE5MWU1NjdiYWIzZjMwMzEu
LjNhODU3YTAyZWI5NGQ1NzdhNzM0MmY1NGQ4NWIyZWIzMzgwMjNhODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cApAQCAtMzM5LDYgKzMzOSwyMSBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cGF1
c2UoKQogICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5wYXVzZSgpOwogfQogCisjaWYgRU5BQkxF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OmVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCisg
ICAgICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpleGl0RnVs
bHNjcmVlbigpCit7CisgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCisgICAgICAgIG1fd2ViTWVk
aWFQbGF5ZXItPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCiBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQXBwZW5kKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5k
ZXggN2FlMzJhNTkwNDJkMDFmMjQxODc2YmFkYTc3NGRhMGFhYjJjNzY4Yy4uYWIyN2U4NWQ0NmFj
Y2E2MmQzNDk0N2VhY2NlODU3ZjlkZjk1ZWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTEzNCw2ICsxMzQs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZHJvcHBlZEZyYW1lQ291bnQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7Cisj
aWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIHZpcnR1YWwgYm9vbCBlbnRl
ckZ1bGxzY3JlZW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsK
KyNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2N2IwYjFjZjczYjVjMjI0NDgzYTk4
NTQ0MzgxNzAwMzA3M2I1ZmYyLi5lN2NlMDgxMGMwMTk1ZTY2MzhmYmQ5MzNkZGNkODIzZDQ4Y2I4
MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
NTc5LDYgKzE1NzksMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisjaWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChlbGVtZW50LT5p
c01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYg
KG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50ZXJG
dWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRnVsbFNjcmVlbkVsZW1lbnQg
PSBlbGVtZW50OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICAvLyBXZSBu
ZWVkIHRvIHRyYW5zaXRpb24gdG8gZnVsbHNjcmVlbiBtb2RlLgogICAgIGlmIChtX2NsaWVudCAm
JiBtX2NsaWVudC0+ZW50ZXJGdWxsU2NyZWVuKCkpCiAgICAgICAgIG1fcHJvdmlzaW9uYWxGdWxs
U2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7CkBAIC0xNTg5LDYgKzE1OTgsMTQgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1l
bnQpCiAgICAgLy8gVGhlIGNsaWVudCBpcyBleGl0aW5nIGZ1bGwgc2NyZWVuLCBzbyBkb24ndCBz
ZW5kIGEgbm90aWZpY2F0aW9uLgogICAgIGlmIChtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbikKICAg
ICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBp
ZiAoZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigpKQorICAgICAgICAgICAgbWVkaWFF
bGVtZW50LT5wbGF5ZXIoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmV4aXRGdWxs
U2NyZWVuKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138034</attachid>
            <date>2012-04-19 20:27:14 -0700</date>
            <delta_ts>2012-04-20 11:24:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84414-20120419202713.patch</filename>
            <type>text/plain</type>
            <size>10320</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE5M2RjZTdmZmZkZjlm
NTc1NzA2MjVlNmE4M2UzYjQxNDlkZjY4My4uYmZjMGFjN2U2OGUxZTE3ZTE3MWYwYTgwNTg3NzA4
NjYzYjZkZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTE5ICBNaW4g
UWluICA8cWlubWluQGdvb2dsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGEgZmxhZyBzbyB0aGF0
IGZ1bGxzY3JlZW4gdmlkZW8gb24gYW5kcm9pZCBjYW4gd29yayB3aXRoIEZVTExTQ1JFRU5fQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3Rz
LCBqdXN0IGV4cG9zaW5nIHRoZSBmbGFnLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGFuZHJvaWQgbGF0
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorCiAyMDEyLTA0LTE3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQ29uc2lzdGVudCBjaGVja2luZyBmb3IgY2xpcHBlZCByZWN0
cyB3aGVuIHdlIG5lZWQgdGhlIGNvbXB1dGVkIHJlc3VsdCBlbmNsb3NlZCB3aXRoaW4gdGhlIHJl
YWwgcmVzdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc2MGNkYTU0M2YwNWZjOGQx
YzE5MzFhZDdiZWM3MzVhNjRjNDY0OGIuLmMzNzU2MWUwMGQzNzIyYzdhNzFiNzk4YTI4N2QxZWI5
ZjI1NDVkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTItMDQtMTkgIE1pbiBRaW4gIDxxaW5taW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBFeHBvc2Ug
YSBmbGFnIHNvIHRoYXQgZnVsbHNjcmVlbiB2aWRlbyBvbiBhbmRyb2lkIGNhbiB3b3JrIHdpdGgg
RlVMTFNDUkVFTl9BUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg0NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgT24gYW5kcm9pZCwgdGhlIGZ1bGxzY3JlZW4gdmlkZW8gd2FzIGltcGxlbWVudGVkIGJ5
IHBhc3NpbmcgYSBqYXZhCisgICAgICAgIHN1cmZhY2VWaWV3IHRvIGFuIGFuZHJvaWQgbWVkaWFw
bGF5ZXIgY2xhc3MuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGxvZ2ljIHNo
b3VsZCBoYXBwZW4gaW4gV2ViS2l0OjpXZWJNZWRpYVBsYXllci4KKyAgICAgICAgVGhpcyBjaGFu
Z2UgbWFrZXMgaXQgcG9zc2JsZSBmb3IgV2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQoKQorICAgICAgICB0byBjYWxsIFdlYk1lZGlhUGxheWVyLT5lbnRlckZ1bGxzY3JlZW4o
KSwgdGh1cyBzb2x2aW5nIHRoZSBpc3N1ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
anVzdCBleHBvc2VzIHRoZSBmbGFnIHNvIGxhdGVyIGl0IGNhbiBiZSB1c2VkIGJ5IGFuZHJvaWQu
CisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBs
YXllci5oOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQ
bGF5ZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorCiAyMDEyLTA0LTE3ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENh
bGVuZGFyIFBpY2tlcjogUG9wdXAgcG9zaXRpb24gaXMgd3Jvbmcgd2hlbiB0aGVyZSBhcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRl
eCBlOThlYmZkNzViYjk5YzUzZDEwMjcwZDhmYmY4OGM3YjYyMjAzMTc4Li45YzU3MWNmZDAyODZh
N2MxNzdlMjNlY2Y4MzE0MjU2MTQwZGFhMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC03NTQsMTYgKzc1NCwyNSBAQCB2b2lk
IE1lZGlhUGxheWVyOjpzZXRDb250cm9scyhib29sIGNvbnRyb2xzKQogewogICAgIG1fcHJpdmF0
ZS0+c2V0Q29udHJvbHMoY29udHJvbHMpOwogfSAgICAKKyNlbmRpZgogCisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiB2b2lkIE1lZGlhUGxheWVyOjplbnRlckZ1bGxzY3JlZW4o
KQogewogICAgIG1fcHJpdmF0ZS0+ZW50ZXJGdWxsc2NyZWVuKCk7Ci19ICAgIAorfQorI2VsaWYg
RU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBNZWRpYVBsYXllcjo6ZW50ZXJG
dWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5lbnRlckZ1bGxzY3Jl
ZW4oKTsKK30KKyNlbmRpZgogCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pIHx8
IEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIHZvaWQgTWVkaWFQbGF5ZXI6OmV4aXRG
dWxsc2NyZWVuKCkKIHsKICAgICBtX3ByaXZhdGUtPmV4aXRGdWxsc2NyZWVuKCk7Ci19ICAgIAor
fQogI2VuZGlmCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBkOWI2ZTI3MDAz
Y2IxZjhjOWJkNjkwOTAwNGExMjg1MGFkNThmOWMwLi5kNGM2YTcxZDIwM2RhZmZkYTY2MGM0ZmRl
ODI0NTMwYTUzMmIxODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKQEAgLTMyMSw3ICszMjEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
aXZlck5vdGlmaWNhdGlvbihNZWRpYVBsYXllclByb3h5Tm90aWZpY2F0aW9uVHlwZSBub3RpZmlj
YXRpb24pOwogICAgIHZvaWQgc2V0TWVkaWFQbGF5ZXJQcm94eShXZWJNZWRpYVBsYXllclByb3h5
KiBwcm94eSk7CiAgICAgdm9pZCBzZXRDb250cm9scyhib29sKTsKKyNlbmRpZgorCisjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsK
KyNlbGlmIEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBib29sIGVudGVyRnVs
bHNjcmVlbigpIGNvbnN0OworI2VuZGlmCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykgfHwgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIHZvaWQgZXhpdEZ1
bGxzY3JlZW4oKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDM3OGIyNTllODM1MjA3ZDY3YjIy
YWJiOTAzZGVlZjJkOTRjYzI4YzEuLjRiZWRhMmM5MjNlMjg0ZTYxZWU5MzZmMTMyOGIyNmYzNWNj
NGFmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xMTksNiArMTE5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSB7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsg
fQorI2VsaWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIHZpcnR1YWwgYm9v
bCBlbnRlckZ1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykgfHwgRU5BQkxFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKQorICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbigpIHsgfQorI2VuZGlm
CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gd2hldGhlciBhY2Nl
bGVyYXRlZCByZW5kZXJpbmcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBtZWRpYSBlbmdpbmUgZm9yIHRo
ZSBjdXJyZW50IG1lZGlhLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaQppbmRleCAwNDZlMjhjYTUyYTFlMzQwZDdjNjZiODBhNDg3OGQxMzQyZWE3MTk4Li4z
YWE3ZWZmOTFlNWQ0ZmNjMmU2MmNlZDE4YmI2MDEyNmMzNDE1OWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQAogICAgICAgWydPUz09ImFu
ZHJvaWQiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzogWwogICAgICAgICAgICdFTkFC
TEVfQ0FMRU5EQVJfUElDS0VSPTAnLAorICAgICAgICAgICdFTkFCTEVfTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU89MScsCiAgICAgICAgICAgJ0VOQUJMRV9QQUdFX1BPUFVQPTAnLAogICAgICAgICAg
ICdFTkFCTEVfV0VCX0FVRElPPTAnLAogICAgICAgICBdLAogICAgICAgfSwgewogICAgICAgICAn
ZmVhdHVyZV9kZWZpbmVzJzogWwogICAgICAgICAgICdFTkFCTEVfQ0FMRU5EQVJfUElDS0VSPTEn
LAorICAgICAgICAgICdFTkFCTEVfTkFUSVZFX0ZVTExTQ1JFRU5fVklERU89MCcsCiAgICAgICAg
ICAgJ0VOQUJMRV9QQUdFX1BPUFVQPTEnLAogICAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTEn
LAogICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
UGxheWVyLmgKaW5kZXggYzI5M2NlZTk1ODIzN2RjNmM2NGU2YzFkZDM5ZWFhZjdlYjI1MTM2YS4u
MGI4Nzc0ZjNiZGM2YjM0YWVkYzRkMjMzZmQyYjNiMDU4YWQwZTU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC0xOTksNiArMTk5LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFdlYlN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0
RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpIHsgcmV0dXJuIEtleVN5c3RlbU5vdFN1cHBv
cnRlZDsgfQogICAgIHZpcnR1YWwgTWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFdlYlN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBrZXksIHVuc2lnbmVkIGtleUxl
bmd0aCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVu
Z3RoLCBjb25zdCBXZWJTdHJpbmcmIHNlc3Npb25JZCkgeyByZXR1cm4gS2V5U3lzdGVtTm90U3Vw
cG9ydGVkOyB9CiAgICAgdmlydHVhbCBNZWRpYUtleUV4Y2VwdGlvbiBjYW5jZWxLZXlSZXF1ZXN0
KGNvbnN0IFdlYlN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBXZWJTdHJpbmcmIHNlc3Npb25JZCkg
eyByZXR1cm4gS2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZW50
ZXJGdWxsc2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1
bGxzY3JlZW4oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAK
aW5kZXggNmE5Mjc1M2RlYTNjYzQ4NzdmZTFjM2Q4MTkxZTU2N2JhYjNmMzAzMS4uM2E4NTdhMDJl
Yjk0ZDU3N2E3MzQyZjU0ZDg1YjJlYjMzODAyM2E4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0zMzks
NiArMzM5LDIxIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwYXVzZSgpCiAgICAg
ICAgIG1fd2ViTWVkaWFQbGF5ZXItPnBhdXNlKCk7CiB9CiAKKyNpZiBFTkFCTEUoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCitib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZW50ZXJGdWxs
c2NyZWVuKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgcmV0
dXJuIG1fd2ViTWVkaWFQbGF5ZXItPmVudGVyRnVsbHNjcmVlbigpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuKCkK
K3sKKyAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+
ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
IGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCA3YWUzMmE1
OTA0MmQwMWYyNDE4NzZiYWRhNzc0ZGEwYWFiMmM3NjhjLi5hYjI3ZTg1ZDQ2YWNjYTYyZDM0OTQ3
ZWFjY2U4NTdmOWRmOTVlZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMTM0LDYgKzEzNCwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdDsKKyNpZiBFTkFCTEUo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbHNjcmVl
bigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbigpOworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6QXVkaW9Tb3VyY2VQ
cm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDY3YjBiMWNmNzNiNWMyMjQ0ODNhOTg1NDQzODE3MDAz
MDczYjVmZjIuLmU3Y2UwODEwYzAxOTVlNjYzOGZiZDkzM2RkY2Q4MjNkNDhjYjgyMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE1NzksNiArMTU3
OSwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFC
TEUoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgaWYgKGVsZW1lbnQtPmlzTWVkaWFFbGVt
ZW50KCkpIHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAobWVkaWFFbGVt
ZW50LT5wbGF5ZXIoKSAmJiBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5lbnRlckZ1bGxzY3JlZW4o
KSkKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxGdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFdlIG5lZWQgdG8gdHJh
bnNpdGlvbiB0byBmdWxsc2NyZWVuIG1vZGUuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fY2xpZW50
LT5lbnRlckZ1bGxTY3JlZW4oKSkKICAgICAgICAgbV9wcm92aXNpb25hbEZ1bGxTY3JlZW5FbGVt
ZW50ID0gZWxlbWVudDsKQEAgLTE1ODksNiArMTU5OCwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpl
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKICAgICAv
LyBUaGUgY2xpZW50IGlzIGV4aXRpbmcgZnVsbCBzY3JlZW4sIHNvIGRvbid0IHNlbmQgYSBub3Rp
ZmljYXRpb24uCiAgICAgaWYgKG1faXNDYW5jZWxpbmdGdWxsU2NyZWVuKQogICAgICAgICByZXR1
cm47CisjaWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChlbGVtZW50
LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAg
aWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkpCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBs
YXllcigpLT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138125</attachid>
            <date>2012-04-20 11:24:36 -0700</date>
            <delta_ts>2012-04-20 12:01:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84414-20120420112435.patch</filename>
            <type>text/plain</type>
            <size>9915</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5YzBmNmZkYmQwMGY1
MzYyY2U4MmY1Y2RmNDBjYmJmNDM1MzUzZC4uN2Y4ZGQ3YjA2MDk4YTQ2YWRlZGI5NDhjNTc2NGI1
Mjg4YzUwNTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTIwICBNaW4g
UWluICA8cWlubWluQGdvb2dsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGEgZmxhZyBzbyB0aGF0
IGZ1bGxzY3JlZW4gdmlkZW8gb24gYW5kcm9pZCBjYW4gd29yayB3aXRoIEZVTExTQ1JFRU5fQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3Rz
LCBqdXN0IGV4cG9zaW5nIHRoZSBmbGFnLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGFuZHJvaWQgbGF0
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6ZW50ZXJGdWxsc2NyZWVuKToKKwog
MjAxMi0wNC0yMCAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W3dpbl0gVXBkYXRlIHdpbmRvd3MgcGxhdGZvcm0gY29kZSB0byB1c2UgcGl4ZWwgc25hcHBlZCB2
YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjE1MWQxOGNhNTBlZmIyNzM4ODIx
NDk0MjUwMDc5MGRiN2UxOTQwNS4uYzA3NWU3YjAyMDUxMWY5MjAyYTgzNWEyY2FjNGIyOTkyZTNk
YTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0w
NC0yMCAgTWluIFFpbiAgPHFpbm1pbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBhIGZs
YWcgc28gdGhhdCBmdWxsc2NyZWVuIHZpZGVvIG9uIGFuZHJvaWQgY2FuIHdvcmsgd2l0aCBGVUxM
U0NSRUVOX0FQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBPbiBhbmRyb2lkLCB0aGUgZnVsbHNjcmVlbiB2aWRlbyB3YXMgaW1wbGVtZW50ZWQgYnkgcGFz
c2luZyBhIGphdmEKKyAgICAgICAgc3VyZmFjZVZpZXcgdG8gYW4gYW5kcm9pZCBtZWRpYXBsYXll
ciBjbGFzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgbG9naWMgc2hvdWxk
IGhhcHBlbiBpbiBXZWJLaXQ6OldlYk1lZGlhUGxheWVyLgorICAgICAgICBUaGlzIGNoYW5nZSBt
YWtlcyBpdCBwb3NzYmxlIGZvciBXZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCgpCisgICAgICAgIHRvIGNhbGwgV2ViTWVkaWFQbGF5ZXItPmVudGVyRnVsbHNjcmVlbigpLCB0
aHVzIHNvbHZpbmcgdGhlIGlzc3VlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBqdXN0
IGV4cG9zZXMgdGhlIGZsYWcgc28gbGF0ZXIgaXQgY2FuIGJlIHVzZWQgYnkgYW5kcm9pZC4KKwor
ICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVy
Lmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
UGxheWVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXll
cjo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBzcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllckNsaWVudEltcGwp
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisKIDIwMTItMDQtMjAgIERhbmEg
SmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTb21l
IGZpbHRlcnMgcmVxdWlyZSBpbmZsYXRpbmcgZGFtYWdlIHJlY3QgaW4gQ0NEYW1hZ2VUcmFja2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggMWU4MTg1N2U4MDFlNjNlNGZjMDBhMzZlNzEzMWM1MjhmMGUzYWI4Mi4uM2Q1NTk4MmJk
NDZiYjNhZTU3NWMwZWZmMTViOTA0ZDdkYzA0MmI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNzY3LDE2ICs3NjcsMTggQEAg
dm9pZCBNZWRpYVBsYXllcjo6c2V0Q29udHJvbHMoYm9vbCBjb250cm9scykKIHsKICAgICBtX3By
aXZhdGUtPnNldENvbnRyb2xzKGNvbnRyb2xzKTsKIH0gICAgCisjZW5kaWYKIAotdm9pZCBNZWRp
YVBsYXllcjo6ZW50ZXJGdWxsc2NyZWVuKCkKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykgfHwgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBNZWRpYVBsYXll
cjo6ZW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSAgICBtX3ByaXZhdGUtPmVudGVyRnVsbHNj
cmVlbigpOwotfSAgICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5lbnRlckZ1bGxzY3JlZW4oKTsK
K30KIAogdm9pZCBNZWRpYVBsYXllcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIG1fcHJpdmF0
ZS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLX0gICAgCit9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCmluZGV4IDQyOWU1ZmNmNTU4ZGMyMzBiNGMwMzNkNmYxYTYxZTdmY2I4ZDk1
MTYuLjFmMWU0YjRhNDdhYWM3NDIyNGFiZmJhMmRjMTA4M2ZmNmQwODc2NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzI0LDcgKzMy
NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxpdmVyTm90aWZpY2F0aW9uKE1lZGlhUGxheWVy
UHJveHlOb3RpZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCBzZXRNZWRpYVBs
YXllclByb3h5KFdlYk1lZGlhUGxheWVyUHJveHkqIHByb3h5KTsKICAgICB2b2lkIHNldENvbnRy
b2xzKGJvb2wpOwotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisjZW5kaWYKKworI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSB8fCBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8pCisgICAgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIGV4aXRG
dWxsc2NyZWVuKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBmZjU1ZDFiMGI1YWMwODIyYmI1
NmZkZDdjOTVjODUxNWEyM2UzZTZjLi42MTk2MjE1MzIxNDczMzc1YmRmOGJkYzU3YTgxY2JjNmYz
YTY3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTE1LDcgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlv
blR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5ZXJQcm94eShXZWJNZWRp
YVBsYXllclByb3h5KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9scyhib29sKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgeyB9CisjZW5kaWYKKworI2lm
IEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSB8fCBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgeyB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDdjMDk2ZDBkYTc2M2Ux
MTVhMzk1OTRmNDg5NGRjNTczZDBlNWY5NGUuLjFiMWVhYjliOTc5YjcxNzE2YTFkNzczYzQ3ZGZi
YjFiY2U5ZWQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTEzNSwx
MiArMTM1LDE0IEBACiAgICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAgICAgICAgICdmZWF0dXJl
X2RlZmluZXMnOiBbCiAgICAgICAgICAgJ0VOQUJMRV9DQUxFTkRBUl9QSUNLRVI9MCcsCisgICAg
ICAgICAgJ0VOQUJMRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTz0xJywKICAgICAgICAgICAnRU5B
QkxFX1BBR0VfUE9QVVA9MCcsCiAgICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCiAgICAg
ICAgIF0sCiAgICAgICB9LCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAgICAg
ICAgJ0VOQUJMRV9DQUxFTkRBUl9QSUNLRVI9MScsCisgICAgICAgICAgJ0VOQUJMRV9OQVRJVkVf
RlVMTFNDUkVFTl9WSURFTz0wJywKICAgICAgICAgICAnRU5BQkxFX1BBR0VfUE9QVVA9MScsCiAg
ICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCBmMzk0NjlmMWUxNzBk
MjMyYWRkYWRlZjk3ZWIxMDE4MzM0MGRhOGQ4Li5lM2RiMmU0MDkxMTQxODkwYmMyOWIwYmU1YzVl
OGU2Zjg2OGM1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhUGxheWVyLmgKQEAgLTIwOCw2ICsyMDgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRp
YUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgV2ViU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0
aCkgeyByZXR1cm4gS2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CiAgICAgdmlydHVhbCBNZWRpYUtl
eUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGtleSwgdW5zaWduZWQga2V5TGVuZ3RoLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBp
bml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgsIGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lv
bklkKSB7IHJldHVybiBLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7IH0KICAgICB2aXJ0dWFsIE1lZGlh
S2V5RXhjZXB0aW9uIGNhbmNlbEtleVJlcXVlc3QoY29uc3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lvbklkKSB7IHJldHVybiBLZXlTeXN0ZW1Ob3RTdXBwb3J0
ZWQ7IH0KKworICAgIHZpcnR1YWwgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbigpIHsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA1OGI2Mzk2ZjFjY2Y2MzI4ZGZjM2I5
MzJiY2JlNmI2NTU3ZWUxN2M1Li45NTg0NzRlMTA5ZDhlNTQ1YmRkODg1ZDUwOWIyYWJiYTQwYWRj
MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTMzOSw2ICszMzksMjEgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnBhdXNlKCkKICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+cGF1c2Uo
KTsKIH0KIAorI2lmIEVOQUJMRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKK2Jvb2wgV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjplbnRlckZ1bGxzY3JlZW4oKSBjb25zdAoreworICAgIGlmICht
X3dlYk1lZGlhUGxheWVyKQorICAgICAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+ZW50ZXJG
dWxsc2NyZWVuKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGlmIChtX3dlYk1lZGlhUGxheWVy
KQorICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5leGl0RnVsbHNjcmVlbigpOworfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElk
U3RhdHVzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5n
JiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCAyZTllMDgzMGRmYThl
MWQyNmFhMTBhN2IxMzc1YjI5ZmU5YTBkMTc3Li5kNDYyY2ZhM2E0ZWZmMGU4MmMzMTQ2NDAzZDdh
MThlOTg0NzI4ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMTM0LDYgKzEzNCwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB1
bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdDsKKyNpZiBFTkFCTEUoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbHNjcmVlbigpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbigpOworI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IGRkNjg1MWVjNzQ0ZDg0ZGMyODcwNDg0MmY5MDVjMDIxN2MxNmNk
YTUuLjQyZTZlOTcyYmJhMTZiNzA2MzhhZjhiMThmNmY5M2VhZWJlY2ViN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE1NzksNiArMTU3OSwxNSBA
QCB2b2lkIFdlYlZpZXdJbXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgaWYgKGVsZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkp
IHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTE1lZGlhRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAobWVkaWFFbGVtZW50LT5w
bGF5ZXIoKSAmJiBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5lbnRlckZ1bGxzY3JlZW4oKSkKKyAg
ICAgICAgICAgIG1fcHJvdmlzaW9uYWxGdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNpdGlv
biB0byBmdWxsc2NyZWVuIG1vZGUuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fY2xpZW50LT5lbnRl
ckZ1bGxTY3JlZW4oKSkKICAgICAgICAgbV9wcm92aXNpb25hbEZ1bGxTY3JlZW5FbGVtZW50ID0g
ZWxlbWVudDsKQEAgLTE1ODksNiArMTU5OCwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpleGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKICAgICAvLyBUaGUg
Y2xpZW50IGlzIGV4aXRpbmcgZnVsbCBzY3JlZW4sIHNvIGRvbid0IHNlbmQgYSBub3RpZmljYXRp
b24uCiAgICAgaWYgKG1faXNDYW5jZWxpbmdGdWxsU2NyZWVuKQogICAgICAgICByZXR1cm47Cisj
aWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChlbGVtZW50LT5pc01l
ZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1l
ZGlhRWxlbWVudC0+cGxheWVyKCkpCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigp
LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138137</attachid>
            <date>2012-04-20 12:01:31 -0700</date>
            <delta_ts>2012-04-30 09:46:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84414-20120420120130.patch</filename>
            <type>text/plain</type>
            <size>10031</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5YzBmNmZkYmQwMGY1
MzYyY2U4MmY1Y2RmNDBjYmJmNDM1MzUzZC4uN2Y4ZGQ3YjA2MDk4YTQ2YWRlZGI5NDhjNTc2NGI1
Mjg4YzUwNTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTIwICBNaW4g
UWluICA8cWlubWluQGdvb2dsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGEgZmxhZyBzbyB0aGF0
IGZ1bGxzY3JlZW4gdmlkZW8gb24gYW5kcm9pZCBjYW4gd29yayB3aXRoIEZVTExTQ1JFRU5fQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3Rz
LCBqdXN0IGV4cG9zaW5nIHRoZSBmbGFnLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGFuZHJvaWQgbGF0
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6ZW50ZXJGdWxsc2NyZWVuKToKKwog
MjAxMi0wNC0yMCAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W3dpbl0gVXBkYXRlIHdpbmRvd3MgcGxhdGZvcm0gY29kZSB0byB1c2UgcGl4ZWwgc25hcHBlZCB2
YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjE1MWQxOGNhNTBlZmIyNzM4ODIx
NDk0MjUwMDc5MGRiN2UxOTQwNS4uYzA3NWU3YjAyMDUxMWY5MjAyYTgzNWEyY2FjNGIyOTkyZTNk
YTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0w
NC0yMCAgTWluIFFpbiAgPHFpbm1pbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBhIGZs
YWcgc28gdGhhdCBmdWxsc2NyZWVuIHZpZGVvIG9uIGFuZHJvaWQgY2FuIHdvcmsgd2l0aCBGVUxM
U0NSRUVOX0FQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBPbiBhbmRyb2lkLCB0aGUgZnVsbHNjcmVlbiB2aWRlbyB3YXMgaW1wbGVtZW50ZWQgYnkgcGFz
c2luZyBhIGphdmEKKyAgICAgICAgc3VyZmFjZVZpZXcgdG8gYW4gYW5kcm9pZCBtZWRpYXBsYXll
ciBjbGFzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgbG9naWMgc2hvdWxk
IGhhcHBlbiBpbiBXZWJLaXQ6OldlYk1lZGlhUGxheWVyLgorICAgICAgICBUaGlzIGNoYW5nZSBt
YWtlcyBpdCBwb3NzYmxlIGZvciBXZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCgpCisgICAgICAgIHRvIGNhbGwgV2ViTWVkaWFQbGF5ZXItPmVudGVyRnVsbHNjcmVlbigpLCB0
aHVzIHNvbHZpbmcgdGhlIGlzc3VlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBqdXN0
IGV4cG9zZXMgdGhlIGZsYWcgc28gbGF0ZXIgaXQgY2FuIGJlIHVzZWQgYnkgYW5kcm9pZC4KKwor
ICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVy
Lmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
UGxheWVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXll
cjo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBzcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllckNsaWVudEltcGwp
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisKIDIwMTItMDQtMjAgIERhbmEg
SmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTb21l
IGZpbHRlcnMgcmVxdWlyZSBpbmZsYXRpbmcgZGFtYWdlIHJlY3QgaW4gQ0NEYW1hZ2VUcmFja2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggMWU4MTg1N2U4MDFlNjNlNGZjMDBhMzZlNzEzMWM1MjhmMGUzYWI4Mi4uM2Q1NTk4MmJk
NDZiYjNhZTU3NWMwZWZmMTViOTA0ZDdkYzA0MmI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNzY3LDE2ICs3NjcsMTggQEAg
dm9pZCBNZWRpYVBsYXllcjo6c2V0Q29udHJvbHMoYm9vbCBjb250cm9scykKIHsKICAgICBtX3By
aXZhdGUtPnNldENvbnRyb2xzKGNvbnRyb2xzKTsKIH0gICAgCisjZW5kaWYKIAotdm9pZCBNZWRp
YVBsYXllcjo6ZW50ZXJGdWxsc2NyZWVuKCkKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykgfHwgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBNZWRpYVBsYXll
cjo6ZW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSAgICBtX3ByaXZhdGUtPmVudGVyRnVsbHNj
cmVlbigpOwotfSAgICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5lbnRlckZ1bGxzY3JlZW4oKTsK
K30KIAogdm9pZCBNZWRpYVBsYXllcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIG1fcHJpdmF0
ZS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLX0gICAgCit9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCmluZGV4IDQyOWU1ZmNmNTU4ZGMyMzBiNGMwMzNkNmYxYTYxZTdmY2I4ZDk1
MTYuLjFmMWU0YjRhNDdhYWM3NDIyNGFiZmJhMmRjMTA4M2ZmNmQwODc2NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzI0LDcgKzMy
NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxpdmVyTm90aWZpY2F0aW9uKE1lZGlhUGxheWVy
UHJveHlOb3RpZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCBzZXRNZWRpYVBs
YXllclByb3h5KFdlYk1lZGlhUGxheWVyUHJveHkqIHByb3h5KTsKICAgICB2b2lkIHNldENvbnRy
b2xzKGJvb2wpOwotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisjZW5kaWYKKworI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSB8fCBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8pCisgICAgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIGV4aXRG
dWxsc2NyZWVuKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBmZjU1ZDFiMGI1YWMwODIyYmI1
NmZkZDdjOTVjODUxNWEyM2UzZTZjLi42MTk2MjE1MzIxNDczMzc1YmRmOGJkYzU3YTgxY2JjNmYz
YTY3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTE1LDcgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlv
blR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5ZXJQcm94eShXZWJNZWRp
YVBsYXllclByb3h5KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9scyhib29sKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgeyB9CisjZW5kaWYKKworI2lm
IEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSB8fCBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgeyB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDdjMDk2ZDBkYTc2M2Ux
MTVhMzk1OTRmNDg5NGRjNTczZDBlNWY5NGUuLjFiMWVhYjliOTc5YjcxNzE2YTFkNzczYzQ3ZGZi
YjFiY2U5ZWQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTEzNSwx
MiArMTM1LDE0IEBACiAgICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAgICAgICAgICdmZWF0dXJl
X2RlZmluZXMnOiBbCiAgICAgICAgICAgJ0VOQUJMRV9DQUxFTkRBUl9QSUNLRVI9MCcsCisgICAg
ICAgICAgJ0VOQUJMRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTz0xJywKICAgICAgICAgICAnRU5B
QkxFX1BBR0VfUE9QVVA9MCcsCiAgICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCiAgICAg
ICAgIF0sCiAgICAgICB9LCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAgICAg
ICAgJ0VOQUJMRV9DQUxFTkRBUl9QSUNLRVI9MScsCisgICAgICAgICAgJ0VOQUJMRV9OQVRJVkVf
RlVMTFNDUkVFTl9WSURFTz0wJywKICAgICAgICAgICAnRU5BQkxFX1BBR0VfUE9QVVA9MScsCiAg
ICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCBmMzk0NjlmMWUxNzBk
MjMyYWRkYWRlZjk3ZWIxMDE4MzM0MGRhOGQ4Li5lNzE0YTg5Nzk5NzBjMTEwMzE0YjMyNjY5NzQy
NWNmNmEyOGJkMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhUGxheWVyLmgKQEAgLTIwOCw2ICsyMDgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVk
aWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFdlYlN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5n
dGgpIHsgcmV0dXJuIEtleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQogICAgIHZpcnR1YWwgTWVkaWFL
ZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFdlYlN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiBrZXksIHVuc2lnbmVkIGtleUxlbmd0aCwgY29uc3QgdW5zaWduZWQgY2hhciog
aW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoLCBjb25zdCBXZWJTdHJpbmcmIHNlc3Np
b25JZCkgeyByZXR1cm4gS2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CiAgICAgdmlydHVhbCBNZWRp
YUtleUV4Y2VwdGlvbiBjYW5jZWxLZXlSZXF1ZXN0KGNvbnN0IFdlYlN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBXZWJTdHJpbmcmIHNlc3Npb25JZCkgeyByZXR1cm4gS2V5U3lzdGVtTm90U3VwcG9y
dGVkOyB9CisKKyAgICAvLyBJbnN0dWN0IFdlYk1lZGlhUGxheWVyIHRvIGVudGVyL2V4aXQgZnVs
bHNjcmVlbi4gCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF5ZXIgY2FuIGVudGVyIGZ1
bGxzY3JlZW4uCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbHNjcmVlbigpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgeyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDU4YjYzOTZmMWNjZjYzMjhkZmMz
YjkzMmJjYmU2YjY1NTdlZTE3YzUuLjk1ODQ3NGUxMDlkOGU1NDViZGQ4ODVkNTA5YjJhYmJhNDBh
ZGMyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMzM5LDYgKzMzOSwyMSBAQCB2b2lkIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6cGF1c2UoKQogICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5wYXVz
ZSgpOwogfQogCisjaWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OmVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAgaWYg
KG1fd2ViTWVkaWFQbGF5ZXIpCisgICAgICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5lbnRl
ckZ1bGxzY3JlZW4oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKG1fd2ViTWVkaWFQbGF5
ZXIpCisgICAgICAgIG1fd2ViTWVkaWFQbGF5ZXItPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiBXZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRk
SWRTdGF0dXMgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZChjb25zdCBTdHJp
bmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IDJlOWUwODMwZGZh
OGUxZDI2YWExMGE3YjEzNzViMjlmZTlhMGQxNzcuLmQ0NjJjZmEzYTRlZmYwZTgyYzMxNDY0MDNk
N2ExOGU5ODQ3MjhmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0xMzQsNiArMTM0LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0OworI2lmIEVOQUJMRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICB2aXJ0dWFsIGJvb2wgZW50ZXJGdWxsc2NyZWVuKCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisjZW5kaWYKIAogI2lm
IEVOQUJMRShXRUJfQVVESU8pCiAgICAgdmlydHVhbCBXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3Zp
ZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggZGQ2ODUxZWM3NDRkODRkYzI4NzA0ODQyZjkwNWMwMjE3YzE2
Y2RhNS4uNDJlNmU5NzJiYmExNmI3MDYzOGFmOGIxOGY2ZjkzZWFlYmVjZWI3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTU3OSw2ICsxNTc5LDE1
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6
RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBpZiAoZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQo
KSkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQt
PnBsYXllcigpICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmVudGVyRnVsbHNjcmVlbigpKQor
ICAgICAgICAgICAgbV9wcm92aXNpb25hbEZ1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gV2UgbmVlZCB0byB0cmFuc2l0
aW9uIHRvIGZ1bGxzY3JlZW4gbW9kZS4KICAgICBpZiAobV9jbGllbnQgJiYgbV9jbGllbnQtPmVu
dGVyRnVsbFNjcmVlbigpKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRnVsbFNjcmVlbkVsZW1lbnQg
PSBlbGVtZW50OwpAQCAtMTU4OSw2ICsxNTk4LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OmV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIC8vIFRo
ZSBjbGllbnQgaXMgZXhpdGluZyBmdWxsIHNjcmVlbiwgc28gZG9uJ3Qgc2VuZCBhIG5vdGlmaWNh
dGlvbi4KICAgICBpZiAobV9pc0NhbmNlbGluZ0Z1bGxTY3JlZW4pCiAgICAgICAgIHJldHVybjsK
KyNpZiBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgaWYgKGVsZW1lbnQtPmlz
TWVkaWFFbGVtZW50KCkpIHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAo
bWVkaWFFbGVtZW50LT5wbGF5ZXIoKSkKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+cGxheWVy
KCktPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAg
ICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5leGl0RnVsbFNjcmVlbigpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139467</attachid>
            <date>2012-04-30 09:46:59 -0700</date>
            <delta_ts>2012-05-09 13:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84414-20120430094658.patch</filename>
            <type>text/plain</type>
            <size>10349</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEzYzkwZTI4NmZiZjY4
M2ExYWVkZjcwNzBhZjdhMDNlYzZlYzZiMy4uYzI5YzM3NGI1NzU4NzEwMzAzODIxM2M3OGI3OWZm
ZmI4OWFlNGRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTMwICBNaW4g
UWluICA8cWlubWluQGdvb2dsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGEgZmxhZyBzbyB0aGF0
IGZ1bGxzY3JlZW4gdmlkZW8gb24gYW5kcm9pZCBjYW4gd29yayB3aXRoIEZVTExTQ1JFRU5fQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3Rz
LCBqdXN0IGV4cG9zaW5nIHRoZSBmbGFnLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGFuZHJvaWQgbGF0
ZXIuCisgICAgICAgIFNvcnJ5LCB0aGVyZSBpcyBhIG1lcmdlIGVycm9yIGR1cmluZyB0aGUgcHJl
dmlvdXMgY29tbWl0LCByZXNvbHZlZCBub3cKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRDb250
cm9scyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmV4aXRG
dWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgor
ICAgICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6ZW50ZXJGdWxs
c2NyZWVuKToKKwogMjAxMi0wNC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTIyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJiOGEwNzkyZDBiMDlmMmVlMzY5MGJmNDY1Mzc3
YmUwNDI2ODNmMzIuLjk1NGM4ZDFjZTE5NmI1ZTVkMmJhYzNkOGQyZDkwNzRhYjU4YmYwNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDQtMzAgIE1p
biBRaW4gIDxxaW5taW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBFeHBvc2UgYSBmbGFnIHNvIHRo
YXQgZnVsbHNjcmVlbiB2aWRlbyBvbiBhbmRyb2lkIGNhbiB3b3JrIHdpdGggRlVMTFNDUkVFTl9B
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gYW5k
cm9pZCwgdGhlIGZ1bGxzY3JlZW4gdmlkZW8gd2FzIGltcGxlbWVudGVkIGJ5IHBhc3NpbmcgYSBq
YXZhCisgICAgICAgIHN1cmZhY2VWaWV3IHRvIGFuIGFuZHJvaWQgbWVkaWFwbGF5ZXIgY2xhc3Mu
CisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGxvZ2ljIHNob3VsZCBoYXBwZW4g
aW4gV2ViS2l0OjpXZWJNZWRpYVBsYXllci4KKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgaXQg
cG9zc2JsZSBmb3IgV2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoKQorICAg
ICAgICB0byBjYWxsIFdlYk1lZGlhUGxheWVyLT5lbnRlckZ1bGxzY3JlZW4oKSwgdGh1cyBzb2x2
aW5nIHRoZSBpc3N1ZS4KKworICAgICAgICBTb3JyeSwgdGhlcmUgaXMgYSBtZXJnZSBlcnJvciBk
dXJpbmcgdGhlIHByZXZpb3VzIGNvbW1pdCwgcmVzb2x2ZWQgbm93CisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBUaGlzIGp1c3QgZXhwb3NlcyB0aGUgZmxhZyBzbyBsYXRlciBpdCBjYW4gYmUgdXNl
ZCBieSBhbmRyb2lkLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKyAgICAgICAgKiBwdWJs
aWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhUGxheWVyOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKwog
MjAxMi0wNC0zMCAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBVc2UgbmV3IHN5bnRheCB0byBjYWxsIGNhbGxPbk1haW5UaHJlYWQgZGly
ZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCAxZTgxODU3ZTgwMWU2M2U0ZmMwMGEzNmU3MTMxYzUyOGYwZTNhYjgyLi5iMTQx
NDYzNjIyMTdhMjZkYzE5ZDBmNmE2ZDkyZjZlYmI5ZjYzNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC03NjYsMTcgKzc2Niwx
OSBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRNZWRpYVBsYXllclByb3h5KFdlYk1lZGlhUGxheWVy
UHJveHkqIHByb3h5KQogdm9pZCBNZWRpYVBsYXllcjo6c2V0Q29udHJvbHMoYm9vbCBjb250cm9s
cykKIHsKICAgICBtX3ByaXZhdGUtPnNldENvbnRyb2xzKGNvbnRyb2xzKTsKLX0gICAgCit9Cisj
ZW5kaWYKIAotdm9pZCBNZWRpYVBsYXllcjo6ZW50ZXJGdWxsc2NyZWVuKCkKKyNpZiBFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykgfHwgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQorYm9vbCBNZWRpYVBsYXllcjo6ZW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSAgICBtX3By
aXZhdGUtPmVudGVyRnVsbHNjcmVlbigpOwotfSAgICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5l
bnRlckZ1bGxzY3JlZW4oKTsKK30KIAogdm9pZCBNZWRpYVBsYXllcjo6ZXhpdEZ1bGxzY3JlZW4o
KQogewogICAgIG1fcHJpdmF0ZS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLX0gICAgCit9CiAjZW5kaWYK
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDQyOWU1ZmNmNTU4ZGMyMzBiNGMw
MzNkNmYxYTYxZTdmY2I4ZDk1MTYuLjFmMWU0YjRhNDdhYWM3NDIyNGFiZmJhMmRjMTA4M2ZmNmQw
ODc2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMzI0LDcgKzMyNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxpdmVyTm90aWZp
Y2F0aW9uKE1lZGlhUGxheWVyUHJveHlOb3RpZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvbik7CiAg
ICAgdm9pZCBzZXRNZWRpYVBsYXllclByb3h5KFdlYk1lZGlhUGxheWVyUHJveHkqIHByb3h5KTsK
ICAgICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7
CisjZW5kaWYKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSB8fCBFTkFCTEUo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKSBjb25z
dDsKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBm
ZjU1ZDFiMGI1YWMwODIyYmI1NmZkZDdjOTVjODUxNWEyM2UzZTZjLi42MTk2MjE1MzIxNDczMzc1
YmRmOGJkYzU3YTgxY2JjNmYzYTY3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTE1LDcgKzExNSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5
ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQ
bGF5ZXJQcm94eShXZWJNZWRpYVBsYXllclByb3h5KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250cm9scyhib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkg
eyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSB8fCBFTkFC
TEUoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbHNj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxs
c2NyZWVuKCkgeyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmlu
ZGV4IDVmYjJlOWYyNjFiZWQ1YTFmNThjMTRjNjk1MTZhNWExZjY3MGUxNmYuLjlhYWVlNzBkNjk5
ODE3Njg1ODgyYmFmZGVkYjlkYjY0YWVkZGZhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1
cmVzLmd5cGkKQEAgLTEzNiwxMiArMTM2LDE0IEBACiAgICAgICBbJ09TPT0iYW5kcm9pZCInLCB7
CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAgICAgICAgJ0VOQUJMRV9DQUxFTkRB
Ul9QSUNLRVI9MCcsCisgICAgICAgICAgJ0VOQUJMRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTz0x
JywKICAgICAgICAgICAnRU5BQkxFX1BBR0VfUE9QVVA9MCcsCiAgICAgICAgICAgJ0VOQUJMRV9X
RUJfQVVESU89MCcsCiAgICAgICAgIF0sCiAgICAgICB9LCB7CiAgICAgICAgICdmZWF0dXJlX2Rl
ZmluZXMnOiBbCiAgICAgICAgICAgJ0VOQUJMRV9DQUxFTkRBUl9QSUNLRVI9MScsCisgICAgICAg
ICAgJ0VOQUJMRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTz0wJywKICAgICAgICAgICAnRU5BQkxF
X1BBR0VfUE9QVVA9MScsCiAgICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAgICAg
IF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaApp
bmRleCBjM2E0OGM3YTVkNTMxZjk0ZTVmMjkyYzE4NTljYmU3MDlmNjJkYWFkLi5hMmE5ZmI5YjQx
YzE1ZTAxMzIxM2ZkM2IzNzFjOWEwYjRlNDZhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTE4Myw2ICsxODMsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTWVkaWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFdlYlN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5z
aWduZWQgaW5pdERhdGFMZW5ndGgpIHsgcmV0dXJuIE1lZGlhS2V5RXhjZXB0aW9uS2V5U3lzdGVt
Tm90U3VwcG9ydGVkOyB9CiAgICAgdmlydHVhbCBNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29u
c3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGtleSwgdW5zaWdu
ZWQga2V5TGVuZ3RoLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5p
dERhdGFMZW5ndGgsIGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lvbklkKSB7IHJldHVybiBNZWRpYUtl
eUV4Y2VwdGlvbktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQogICAgIHZpcnR1YWwgTWVkaWFLZXlF
eGNlcHRpb24gY2FuY2VsS2V5UmVxdWVzdChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29u
c3QgV2ViU3RyaW5nJiBzZXNzaW9uSWQpIHsgcmV0dXJuIE1lZGlhS2V5RXhjZXB0aW9uS2V5U3lz
dGVtTm90U3VwcG9ydGVkOyB9CisKKyAgICAvLyBJbnN0dWN0IFdlYk1lZGlhUGxheWVyIHRvIGVu
dGVyL2V4aXQgZnVsbHNjcmVlbi4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHBsYXllciBj
YW4gZW50ZXIgZnVsbHNjcmVlbi4KKyAgICB2aXJ0dWFsIGJvb2wgZW50ZXJGdWxsc2NyZWVuKCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSB7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNThiNjM5NmYx
Y2NmNjMyOGRmYzNiOTMyYmNiZTZiNjU1N2VlMTdjNS4uOTU4NDc0ZTEwOWQ4ZTU0NWJkZDg4NWQ1
MDliMmFiYmE0MGFkYzIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0zMzksNiArMzM5LDIxIEBAIHZv
aWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwYXVzZSgpCiAgICAgICAgIG1fd2ViTWVkaWFQ
bGF5ZXItPnBhdXNlKCk7CiB9CiAKKyNpZiBFTkFCTEUoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8p
Citib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuKCkgY29uc3QK
K3sKKyAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgcmV0dXJuIG1fd2ViTWVkaWFQ
bGF5ZXItPmVudGVyRnVsbHNjcmVlbigpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAobV93
ZWJNZWRpYVBsYXllcikKKyAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+ZXhpdEZ1bGxzY3JlZW4o
KTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpBZGRJZFN0YXR1cyBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFkZElk
KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXgg
MmU5ZTA4MzBkZmE4ZTFkMjZhYTEwYTdiMTM3NWIyOWZlOWEwZDE3Ny4uZDQ2MmNmYTNhNGVmZjBl
ODJjMzE0NjQwM2Q3YTE4ZTk4NDcyOGZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTEzNCw2ICsxMzQsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZHJvcHBlZEZyYW1lQ291bnQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CisjaWYg
RU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIHZpcnR1YWwgYm9vbCBlbnRlckZ1
bGxzY3JlZW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKyNl
bmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlv
U291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAzMmM2MWEyNWVlOGU3ODgyMmY0N2FhM2Ni
NjEwNjg4NzgxNWFkN2I5Li5kNjM1M2MyOWRmMzJlMzQ2ZmRlZWU0MWQ4OTJkMjkxNTE4ZmJhYmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNTgx
LDYgKzE1ODEsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCisj
aWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChlbGVtZW50ICYmIGVs
ZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkpIHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KGVsZW1lbnQpOworICAg
ICAgICBpZiAobWVkaWFFbGVtZW50LT5wbGF5ZXIoKSAmJiBtZWRpYUVsZW1lbnQtPnBsYXllcigp
LT5lbnRlckZ1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxGdWxsU2NyZWVu
RWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAg
IC8vIFdlIG5lZWQgdG8gdHJhbnNpdGlvbiB0byBmdWxsc2NyZWVuIG1vZGUuCiAgICAgaWYgKG1f
Y2xpZW50ICYmIG1fY2xpZW50LT5lbnRlckZ1bGxTY3JlZW4oKSkKICAgICAgICAgbV9wcm92aXNp
b25hbEZ1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKQEAgLTE1OTEsNiArMTYwMCwxNCBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVu
dCogZWxlbWVudCkKICAgICAvLyBUaGUgY2xpZW50IGlzIGV4aXRpbmcgZnVsbCBzY3JlZW4sIHNv
IGRvbid0IHNlbmQgYSBub3RpZmljYXRpb24uCiAgICAgaWYgKG1faXNDYW5jZWxpbmdGdWxsU2Ny
ZWVuKQogICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQorICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkpIHsKKyAgICAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlh
RWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAobWVkaWFFbGVtZW50LT5wbGF5ZXIoKSkK
KyAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
IG1fY2xpZW50LT5leGl0RnVsbFNjcmVlbigpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>