<?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>89428</bug_id>
          
          <creation_ts>2012-06-18 23:07:33 -0700</creation_ts>
          <short_desc>enable Web Audio for chromium android port</short_desc>
          <delta_ts>2012-07-27 01:22:36 -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>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</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>
          <dependson>91746</dependson>
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wei James (wistoch)">james.wei</reporter>
          <assigned_to name="Wei James (wistoch)">james.wei</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jknotten</cc>
    
    <cc>kbr</cc>
    
    <cc>peter</cc>
    
    <cc>qinmin</cc>
    
    <cc>rtoy</cc>
    
    <cc>satish</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652063</commentid>
    <comment_count>0</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-06-18 23:07:33 -0700</bug_when>
    <thetext>enable Web Audio for chromium android port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652070</commentid>
    <comment_count>1</comment_count>
      <attachid>148255</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-06-18 23:09:40 -0700</bug_when>
    <thetext>Created attachment 148255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652075</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 23:13:50 -0700</bug_when>
    <thetext>Attachment 148255 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/At...&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 7 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>652078</commentid>
    <comment_count>3</comment_count>
      <attachid>148258</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-06-18 23:17:31 -0700</bug_when>
    <thetext>Created attachment 148258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652116</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-18 23:52:13 -0700</bug_when>
    <thetext>@Peter: Do you know if we want Web Audio enabled for chromium-android?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652135</commentid>
    <comment_count>5</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-06-19 00:21:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; @Peter: Do you know if we want Web Audio enabled for chromium-android?

strongly suggest to enable it for chromium-android. As we know, IOS6 safari already supports Web Audio API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652356</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-06-19 06:01:48 -0700</bug_when>
    <thetext>Enabling compilation of the Web Audio API will not per se make the feature work, as I suspect that we&apos;ll need to do work in the Chromium layer/Java as well. For one, this change would make the Chromium-Android build rely on FFMPEG, which we don&apos;t include in the build right now either. Furthermore, this will significantly influence binary size, which is another consideration which we&apos;ll have to make.

I can investigate the impact of this patch later this week, but please hold off for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652371</commentid>
    <comment_count>7</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-06-19 06:28:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Enabling compilation of the Web Audio API will not per se make the feature work, as I suspect that we&apos;ll need to do work in the Chromium layer/Java as well. For one, this change would make the Chromium-Android build rely on FFMPEG, which we don&apos;t include in the build right now either. Furthermore, this will significantly influence binary size, which is another consideration which we&apos;ll have to make.
&gt; 
&gt; I can investigate the impact of this patch later this week, but please hold off for now.

thanks for the clarification and make me understand the consideration. 

I am glad to contribute if at last it is decided to enable it. thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652440</commentid>
    <comment_count>8</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-06-19 07:37:27 -0700</bug_when>
    <thetext>we should not use ffmpeg, and we should hook web audio either with openmax SL or android mediaplayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653047</commentid>
    <comment_count>9</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-06-19 17:42:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; we should not use ffmpeg, and we should hook web audio either with openmax SL or android mediaplayer

here web audio doesn&apos;t use ffmpeg decode/encode and playback related code, it only use the FFT routine from ffmpeg. be specific, it used av_rdft_calc/av_rdft_init/av_rdft_end/av_rdft_end to process the audio data. 

it has nothing to do with audio playback.is it ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653543</commentid>
    <comment_count>10</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-06-20 09:23:47 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; we should not use ffmpeg, and we should hook web audio either with openmax SL or android mediaplayer
&gt; 
&gt; here web audio doesn&apos;t use ffmpeg decode/encode and playback related code, it only use the FFT routine from ffmpeg. be specific, it used av_rdft_calc/av_rdft_init/av_rdft_end/av_rdft_end to process the audio data. 
&gt; 
&gt; it has nothing to do with audio playback.is it ok?

Then we shouldn&apos;t need to include ffmpeg, just include some fft transformation files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662760</commentid>
    <comment_count>11</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-04 01:53:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; we should not use ffmpeg, and we should hook web audio either with openmax SL or android mediaplayer
&gt; &gt; 
&gt; &gt; here web audio doesn&apos;t use ffmpeg decode/encode and playback related code, it only use the FFT routine from ffmpeg. be specific, it used av_rdft_calc/av_rdft_init/av_rdft_end/av_rdft_end to process the audio data. 
&gt; &gt; 
&gt; &gt; it has nothing to do with audio playback.is it ok?
&gt; 
&gt; Then we shouldn&apos;t need to include ffmpeg, just include some fft transformation files

qinmin, 

after some investigation, I found that the fft function will need some base functions in ffmpeg like av_malloc etc, so it will be hard to seperate fft function from the ffmpeg project. 

third_party/ffmpeg has two targets, one is ffmpegsumo, which will produce a .so library(most decode/encode function here), and another one is ffmpeg, which will produce a static library(stub and basic functions). 

As we only depends on the ffmpeg target and it is a static library. I believe it is harmless to use it. Is there any consideration that we cannot use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662765</commentid>
    <comment_count>12</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-07-04 02:00:47 -0700</bug_when>
    <thetext>By how much does the target size increase in release build with this feature enabled and linked with the ffmpeg static lib? Knowing that would help answer whether it is suitable or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662766</commentid>
    <comment_count>13</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-04 02:05:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; By how much does the target size increase in release build with this feature enabled and linked with the ffmpeg static lib? Knowing that would help answer whether it is suitable or not.

thanks for the comment, I will build chromium for android w/o web audio and w/ it with ffmpeg and post the data. thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662801</commentid>
    <comment_count>14</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-04 02:50:51 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; By how much does the target size increase in release build with this feature enabled and linked with the ffmpeg static lib? Knowing that would help answer whether it is suitable or not.

As currently we cannot build a chromium browser for android, so I just checked the size of DumpRenderTree native library. 

for x86 platform, adding webaudio with ffmpeg only increase the binary size by 259596 bytes. 

src/out/Release/DumpRenderTree_apk/libs/x86$ ll
35009324 Jul  4 17:12 libDumpRenderTree_no_webaudio.so
35268920 Jul  4 17:42 libDumpRenderTree.so


and the size of libffmpeg.a is 2.7K. 

src/out/Release$ ls -al ./obj.target/third_party/ffmpeg/libffmpeg.a -h
2.7K Jul  4 17:18 ./obj.target/third_party/ffmpeg/libffmpeg.a</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662911</commentid>
    <comment_count>15</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-04 06:33:39 -0700</bug_when>
    <thetext>for arm platform, the data is :


/src/out/Release/DumpRenderTree_apk/libs/armeabi-v7a$ ll
22038100 Jul  4 20:18 libDumpRenderTree-no-webaudio.so
22157828 Jul  4 20:47 libDumpRenderTree.so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672606</commentid>
    <comment_count>16</comment_count>
      <attachid>148258</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-07-18 12:06:03 -0700</bug_when>
    <thetext>Comment on attachment 148258
Patch

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

I think it&apos;s fine to start this work upstream, we can always disable it for releases if the size increase proves to be too significant. Sorry for the delay, and thank you for the work!

&gt; Source/WTF/wtf/Atomics.h:109
&gt; +#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1

This should be defined in Platform.h. Certain versions of the Android NDK had issues with thread-safe reference counting, which is why this wasn&apos;t enabled yet, but I *think* it&apos;s fine to be enabled now. I&apos;ll verify this downstream.

&gt; Source/WebCore/WebCore.gyp/WebCore.gyp:1423
&gt; +        [&apos;&quot;WTF_USE_WEBAUDIO_FFMPEG=1&quot; in feature_defines&apos;, {

As said, none of FFMPEG is available in Android builds right now. We will need to find a way around this..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673118</commentid>
    <comment_count>17</comment_count>
      <attachid>153169</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-18 20:22:15 -0700</bug_when>
    <thetext>Created attachment 153169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673121</commentid>
    <comment_count>18</comment_count>
      <attachid>148258</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-18 20:27:58 -0700</bug_when>
    <thetext>Comment on attachment 148258
Patch

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

&gt;&gt; Source/WTF/wtf/Atomics.h:109
&gt;&gt; +#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1
&gt; 
&gt; This should be defined in Platform.h. Certain versions of the Android NDK had issues with thread-safe reference counting, which is why this wasn&apos;t enabled yet, but I *think* it&apos;s fine to be enabled now. I&apos;ll verify this downstream.

for other platforms this MACRO is also defined in this file. Should I keep it here for consistency or move all the definition to Platform.h? thanks

&gt;&gt; Source/WebCore/WebCore.gyp/WebCore.gyp:1423
&gt;&gt; +        [&apos;&quot;WTF_USE_WEBAUDIO_FFMPEG=1&quot; in feature_defines&apos;, {
&gt; 
&gt; As said, none of FFMPEG is available in Android builds right now. We will need to find a way around this..

I used the FFTFrame Stub to bring up web audio. and will implement another FFTFrame for android like FFTFrameAndroid or FFTFrameOpenMax later.

is this ok? thanks 

To get rid of ffmpeg on android, I change the features.gypi to undefine WTF_USE_WEBAUDIO_FFMPEG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673373</commentid>
    <comment_count>19</comment_count>
      <attachid>153169</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-07-19 04:16:38 -0700</bug_when>
    <thetext>Comment on attachment 153169
Patch

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

The patch compiles fine upstream, and in our branch as well after adding the ffmpeg library to third_party/. There are a bunch of failing ASSERTs and more work is necessary before the feature can be enabled by default, but I agree that fixing the compile is a good first step. Raymond has expressed interest in helping out as well :-).


Using the following small script:
--
var context = new webkitAudioContext(),
    oscillator = context.createOscillator; // Oscillator defaults to sine wave

document.write(context.sampleRate);

oscillator.connect(context.destination);
oscillator.noteOn(0);
--

The output is 16000 (the sample rate), but it crashes fairly soon after with a segfault when it tried to actually produce audio. Relevant logcat output is:

W/WebKit  (  687): SHOULD NEVER BE REACHED
W/WebKit  (  687): third_party/WebKit/Source/WebCore/platform/audio/FFTFrameStub.cpp(43) : WebCore::FFTFrame::FFTFrame(unsigned int)
F/libc    (  687): Fatal signal 11 (SIGSEGV) at 0xbbadbeef (code=1), thread 703 (SandboxedProces)
F/chromium(  590): [FATAL:render_process_host_impl.cc(1004)] Check failed: false. Invalid message with type = 2228317
F/libc    (  590): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 590 (oid.apps.chrome)
E/chromium(  687): [ERROR:audio_decoder_android.cc(13)] Not implemented reached in bool webkit_media::DecodeAudioFileData(WebKit::WebAudioBus*, char const*, size_t, double)
W/WebKit  (  687): ASSERTION FAILED: impulseResponse.get()
W/WebKit  (  687): third_party/WebKit/Source/WebCore/platform/audio/HRTFElevation.cpp(180) : static bool WebCore::HRTFElevation::calculateKernelsForAzimuthElevation(int, int, float, const WTF::String&amp;, WTF::RefPtr&lt;WebCore::HRTFKernel&gt;&amp;, WTF::RefPtr&lt;WebCore::HRTFKernel&gt;&amp;)

There is more dependent code which has yet to be upstreamed, so it&apos;s still unable to work correctly :(.
To conclude: with the following two changes applied, I&apos;m fine with this landing in WebKit from Android&apos;s side. You&apos;ll still need a reviewer&apos;s look for the Web Audio side, however.

&gt; Source/WTF/wtf/Atomics.h:109
&gt; +#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1

Could you please split this up to a new bug? I&apos;d like David Turner (digit@google.com) to look at this one.

&gt; Source/WebKit/chromium/features.gypi:161
&gt; +          &apos;ENABLE_WEB_AUDIO=1&apos;,

Since this fixes the compile but doesn&apos;t make it work yet, please keep it disabled by default for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673435</commentid>
    <comment_count>20</comment_count>
      <attachid>153169</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 06:22:39 -0700</bug_when>
    <thetext>Comment on attachment 153169
Patch

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

peter, thanks for reviewing and evaluating it. 

this patch uses an empty FFTFrame Stub instead of ffmpeg, so don
t need ffmpeg, you should be able to compile it without ffmpeg in the third_party. 

So should I use ffmpeg in it to make it work firstly? if so, I can submit another patch to make it be able to compile and then we can work raymond and other people to fix all the issues on android.

&gt;&gt; Source/WTF/wtf/Atomics.h:109
&gt;&gt; +#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1
&gt; 
&gt; Could you please split this up to a new bug? I&apos;d like David Turner (digit@google.com) to look at this one.

yes, I will do it. thanks

&gt;&gt; Source/WebKit/chromium/features.gypi:161
&gt;&gt; +          &apos;ENABLE_WEB_AUDIO=1&apos;,
&gt; 
&gt; Since this fixes the compile but doesn&apos;t make it work yet, please keep it disabled by default for now.

set ENABLE_WEB_AUDIO=0 will exclude all source code in building. So in order to compile it, we have to set it to 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673439</commentid>
    <comment_count>21</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 06:33:00 -0700</bug_when>
    <thetext>peter, 
if this feature also cannot work downstream, I am also very interested to make it work upstream firstly. 

chris, 
could you have a look at this patch? thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673440</commentid>
    <comment_count>22</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-07-19 06:33:32 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 153169 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153169&amp;action=review
&gt; 
&gt; peter, thanks for reviewing and evaluating it. 
&gt; 
&gt; this patch uses an empty FFTFrame Stub instead of ffmpeg, so don
&gt; t need ffmpeg, you should be able to compile it without ffmpeg in the third_party. 
&gt; 
&gt; So should I use ffmpeg in it to make it work firstly? if so, I can submit another patch to make it be able to compile and then we can work raymond and other people to fix all the issues on android.

I tried both.. Should have clarified, sorry. The patch as-is is fine, with the two comments applied.

&gt; 
&gt; &gt;&gt; Source/WTF/wtf/Atomics.h:109
&gt; &gt;&gt; +#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1
&gt; &gt; 
&gt; &gt; Could you please split this up to a new bug? I&apos;d like David Turner (digit@google.com) to look at this one.
&gt; 
&gt; yes, I will do it. thanks
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/features.gypi:161
&gt; &gt;&gt; +          &apos;ENABLE_WEB_AUDIO=1&apos;,
&gt; &gt; 
&gt; &gt; Since this fixes the compile but doesn&apos;t make it work yet, please keep it disabled by default for now.
&gt; 
&gt; set ENABLE_WEB_AUDIO=0 will exclude all source code in building. So in order to compile it, we have to set it to 1.

Yes, I intentionally asked you to keep it at 0 for now. When set to 1, your patch will have the side-effect of exposing the API to web developers, which breaks feature detection. Since it&apos;s not yet functional, we shouldn&apos;t do this.

As an alternative, we could enable the compile but disable the feature at run-time. Since it&apos;s enabled by default for Chromium, this would require a Chromium patch changing the default for Android, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673451</commentid>
    <comment_count>23</comment_count>
      <attachid>153249</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 06:46:43 -0700</bug_when>
    <thetext>Created attachment 153249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673456</commentid>
    <comment_count>24</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 06:48:58 -0700</bug_when>
    <thetext>(In reply to comment #22)

&gt; I tried both.. Should have clarified, sorry. The patch as-is is fine, with the two comments applied.
&gt; 
&gt; &gt; 

&gt; 
&gt; Yes, I intentionally asked you to keep it at 0 for now. When set to 1, your patch will have the side-effect of exposing the API to web developers, which breaks feature detection. Since it&apos;s not yet functional, we shouldn&apos;t do this.
&gt; 
&gt; As an alternative, we could enable the compile but disable the feature at run-time. Since it&apos;s enabled by default for Chromium, this would require a Chromium patch changing the default for Android, too.



https://bugs.webkit.org/show_bug.cgi?id=91740 filed WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED should be defined in Platform.h instead of wtf/Atomics.h 


and disabe web audio by default. 

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673495</commentid>
    <comment_count>25</comment_count>
      <attachid>153259</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 07:38:57 -0700</bug_when>
    <thetext>Created attachment 153259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673496</commentid>
    <comment_count>26</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 07:39:56 -0700</bug_when>
    <thetext>+kbr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673531</commentid>
    <comment_count>27</comment_count>
      <attachid>153269</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-19 08:31:46 -0700</bug_when>
    <thetext>Created attachment 153269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673550</commentid>
    <comment_count>28</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-19 09:01:52 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 153169 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153169&amp;action=review
&gt; 
&gt; The patch compiles fine upstream, and in our branch as well after adding the ffmpeg library to third_party/. There are a bunch of failing ASSERTs and more work is necessary before the feature can be enabled by default, but I agree that fixing the compile is a good first step. Raymond has expressed interest in helping out as well :-).

Yes I am!
&gt; 
&gt; 
&gt; Using the following small script:
&gt; --
&gt; var context = new webkitAudioContext(),
&gt;     oscillator = context.createOscillator; // Oscillator defaults to sine wave
&gt; 
&gt; document.write(context.sampleRate);
&gt; 
&gt; oscillator.connect(context.destination);
&gt; oscillator.noteOn(0);

The oscillator needs a working FFT.

&gt; W/WebKit  (  687): third_party/WebKit/Source/WebCore/platform/audio/HRTFElevation.cpp(180) : static bool WebCore::HRTFElevation::calculateKernelsForAzimuthElevation(int, int, float, const WTF::String&amp;, WTF::RefPtr&lt;WebCore::HRTFKernel&gt;&amp;, WTF::RefPtr&lt;WebCore::HRTFKernel&gt;&amp;)

The HRTF panner has some ASSERTs and dependencies that the sample rate is near 44.1kHz.  It might be useful to disable the loading of the HRTF stuff for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673554</commentid>
    <comment_count>29</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-19 09:06:01 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 153169 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153169&amp;action=review
&gt; 
&gt; peter, thanks for reviewing and evaluating it. 
&gt; 
&gt; this patch uses an empty FFTFrame Stub instead of ffmpeg, so don
&gt; t need ffmpeg, you should be able to compile it without ffmpeg in the third_party. 
&gt; 
&gt; So should I use ffmpeg in it to make it work firstly? if so, I can submit another patch to make it be able to compile and then we can work raymond and other people to fix all the issues on android.

I would prefer to use ffmpeg for now.  I believe Chris suggested that to start with.  But perhaps as a first cut, we can just use your empty FFTFrame stub, but that also means lots of functionality and demos no longer work because many use the convolver or dynamics compressor or other things that need the FFT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673697</commentid>
    <comment_count>30</comment_count>
      <attachid>153269</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-19 11:07:37 -0700</bug_when>
    <thetext>Comment on attachment 153269
Patch

Patch looks fine as long as this will not suddenly cause the sources to be compiled in by default. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674132</commentid>
    <comment_count>31</comment_count>
      <attachid>153269</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 21:27:35 -0700</bug_when>
    <thetext>Comment on attachment 153269
Patch

Clearing flags on attachment: 153269

Committed r123175: &lt;http://trac.webkit.org/changeset/123175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674134</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 21:27:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680272</commentid>
    <comment_count>33</comment_count>
      <attachid>148258</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:15:36 -0700</bug_when>
    <thetext>Comment on attachment 148258
Patch

Cleared review? from obsolete attachment 148258 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680282</commentid>
    <comment_count>34</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-07-27 01:22:36 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 148258 [details])
&gt; Cleared review? from obsolete attachment 148258 [details] so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).

this patch should be obsoleted and no need for review. don&apos;t know why it is not obsoleted. 

the latest patch already landed webkit. thanks</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148255</attachid>
            <date>2012-06-18 23:09:40 -0700</date>
            <delta_ts>2012-06-18 23:17:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89428-20120619140947.patch</filename>
            <type>text/plain</type>
            <size>5746</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiYjY5NWY5MDQzZmRhOTQ5MTUxYmMx
YjAxOGM4Mzk2NTA4NDExYjQuLjg3NzEwNDVjZDI0OWRmNGQ3OTljNDY1N2E5MjZiNmUwZThiZjNl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMTggIFdlaSBKYW1lcyAgPGphbWVzLndl
aUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5k
cm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL01hdGhFeHRy
YXMuaDoKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAobG9nMmYpOgorCiAyMDEyLTA2LTE4ICBU
b255IFBheW5lICA8dHBheW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFk
ZCBpY2NqcGVnIGFuZCBxY21zIHRvIGNocm9taXVtIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjNTkx
NTQ3YmIxOTZkY2MzY2E5Y2I5MjI4YmIzMjc4MGVkYmQzZC4uMmNiZjM1MDlhYjRlYTQxYWFlNjc1
OGMzYWEzNDcxY2QwMjc4NDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2
LTE4ICBXZWkgSmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgorCisgICAgICAgIGVuYWJsZSBX
ZWIgQXVkaW8gZm9yIGNocm9taXVtIGFuZHJvaWQgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorCiAyMDEyLTA2LTE4ICBHcmVnZyBUYXZhcmVz
ICA8Z21hbkBnb29nbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBXRUJHTF9kZXB0aF90ZXh0dXJl
IGV4dGVuc2lvbiB0byBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5OTkyZTI4
ZTcxMzg5MDllMTI1MGUwYjI2MDYwZmQyNTBhY2M4NDQ1Li41ZjZmOTAzYTEzNzUxMDJlODU5Y2Ew
YjNiNzBlNmYxMzk3MWU4ODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTA2LTE4ICBXZWkgSmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgorCisg
ICAgICAgIGVuYWJsZSBXZWIgQXVkaW8gZm9yIGNocm9taXVtIGFuZHJvaWQgcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk0MjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6
CisKIDIwMTItMDYtMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIEdlc3R1cmVQaW5jaEJlZ2luIGFuZCBmcmllbmRzIGFyZSBnZXN0dXJlIGV2
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93
dGYvQXRvbWljcy5oCmluZGV4IDk1OGFiZDJmYWZkNzY2YjAzZGYwNTMxN2IwMWRkMmM2ZTkwZWU2
ZjguLmEyZWZkOTQ4YzczYzZkYmRkM2EyOWM2MjNmMWY1NDA5NjcxYTQ2YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgK
QEAgLTEwNiw2ICsxMDYsNyBAQCBpbmxpbmUgaW50IGF0b21pY0luY3JlbWVudChpbnQgdm9sYXRp
bGUqIGFkZGVuZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihhdG9taQogaW5saW5lIGludCBh
dG9taWNEZWNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oYXRvbWljX3N1Yl92YWx1ZShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHZvbGF0aWxl
Kj4oYWRkZW5kKSwgMSkpIC0gMTsgfQogCiAjZWxpZiBPUyhBTkRST0lEKQorI2RlZmluZSBXVEZf
VVNFX0xPQ0tGUkVFX1RIUkVBRFNBRkVSRUZDT1VOVEVEIDEKIAogaW5saW5lIGludCBhdG9taWNJ
bmNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIF9fYXRvbWljX2luYyhhZGRl
bmQpOyB9CiBpbmxpbmUgaW50IGF0b21pY0RlY3JlbWVudChpbnQgdm9sYXRpbGUqIGFkZGVuZCkg
eyByZXR1cm4gX19hdG9taWNfZGVjKGFkZGVuZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCAzY2M5
NDc0NDc2ZDdkNDBjYjA3YmM2ZTllYjRmN2FhMTc3YjI0M2NmLi5iYjM1Mzg3ZGRkN2FmOTNlYTYy
YjU4ZjkyMjlmNTZiNzA2Y2I3YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0
cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0xMzgsNiArMTM4LDIx
IEBAIGlubGluZSBkb3VibGUgdHJ1bmMoZG91YmxlIG51bSkgeyByZXR1cm4gbnVtID4gMCA/IGZs
b29yKG51bSkgOiBjZWlsKG51bSk7IH0KIGlubGluZSBsb25nIGxvbmcgYWJzKGxvbmcgbnVtKSB7
IHJldHVybiBsYWJzKG51bSk7IH0KICNlbmRpZgogCisjaWYgT1MoQU5EUk9JRCkgfHwgQ09NUElM
RVIoTVNWQykKKy8vIEFORFJPSUQgYW5kIE1TVkMncyBtYXRoLmggZG9lcyBub3QgY3VycmVudGx5
IHN1cHBseSBsb2cyIG9yIGxvZzJmLgoraW5saW5lIGRvdWJsZSBsb2cyKGRvdWJsZSBudW0pCit7
CisgICAgLy8gVGhpcyBjb25zdGFudCBpcyByb3VnaGx5IE1fTE4yLCB3aGljaCBpcyBub3QgcHJv
dmlkZWQgYnkgZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBBbmRyb2lkLgorICAgIHJldHVybiBsb2co
bnVtKSAvIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4OworfQorCitpbmxp
bmUgZmxvYXQgbG9nMmYoZmxvYXQgbnVtKQoreworICAgIC8vIFRoaXMgY29uc3RhbnQgaXMgcm91
Z2hseSBNX0xOMiwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2luZG93cyBh
bmQgQW5kcm9pZC4KKyAgICByZXR1cm4gbG9nZihudW0pIC8gMC42OTMxNDcxODA1NTk5NDUzMDk0
MTcyMzIxMjE0NTgxNzY1NjhmOworfQorI2VuZGlmCisKICNpZiBDT01QSUxFUihNU1ZDKQogLy8g
VGhlIDY0Yml0IHZlcnNpb24gb2YgYWJzKCkgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHN0ZGxpYi5o
IHdoaWNoIGNvbWVzIHdpdGggVkMxMAogI2lmIENPTVBJTEVSKE1TVkM5X09SX0xPV0VSKQpAQCAt
MTU0LDE5ICsxNjksNiBAQCBpbmxpbmUgZmxvYXQgbmV4dGFmdGVyZihmbG9hdCB4LCBmbG9hdCB5
KSB7IHJldHVybiB4ID4geSA/IHggLSBGTFRfRVBTSUxPTiA6IHggKwogaW5saW5lIGRvdWJsZSBj
b3B5c2lnbihkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIF9jb3B5c2lnbih4LCB5KTsgfQog
aW5saW5lIGludCBpc2Zpbml0ZShkb3VibGUgeCkgeyByZXR1cm4gX2Zpbml0ZSh4KTsgfQogCi0v
LyBNU1ZDJ3MgbWF0aC5oIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwbHkgbG9nMiBvciBsb2cyZi4K
LWlubGluZSBkb3VibGUgbG9nMihkb3VibGUgbnVtKQotewotICAgIC8vIFRoaXMgY29uc3RhbnQg
aXMgcm91Z2hseSBNX0xOMiwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2lu
ZG93cy4KLSAgICByZXR1cm4gbG9nKG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEy
MTQ1ODE3NjU2ODsKLX0KLQotaW5saW5lIGZsb2F0IGxvZzJmKGZsb2F0IG51bSkKLXsKLSAgICAv
LyBUaGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92aWRlZCBi
eSBkZWZhdWx0IG9uIFdpbmRvd3MuCi0gICAgcmV0dXJuIGxvZ2YobnVtKSAvIDAuNjkzMTQ3MTgw
NTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4ZjsKLX0KLQogLy8gV29yayBhcm91bmQgYSBidWcg
aW4gV2luLCB3aGVyZSBhdGFuMigrLWluZmluaXR5LCArLWluZmluaXR5KSB5aWVsZHMgTmFOIGlu
c3RlYWQgb2Ygc3BlY2lmaWMgdmFsdWVzLgogaW5saW5lIGRvdWJsZSB3dGZfYXRhbjIoZG91Ymxl
IHgsIGRvdWJsZSB5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRl
eCBkOTVmNGNkYjUyNWZkMDNmZGM5YmE3MzEyZjY2MTQyNmQ0ZDcwOGUxLi5hYTliNGJkM2Q4ZTI4
YTAxZWRhODllMDA1MDcyYzZhZjczNWM0YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cApAQCAtMTQyMCw3ICsxNDIwLDcgQEAKICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgfSwKICAgICAgICAgfV0sCi0gICAgICAgIFsnT1MgIT0gImFuZHJvaWQiIGFuZCAiV1RGX1VT
RV9XRUJBVURJT19GRk1QRUc9MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywgeworICAgICAgICBbJyJX
VEZfVVNFX1dFQkFVRElPX0ZGTVBFRz0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7CiAgICAgICAg
ICAgIyBUaGlzIGRpcmVjdG9yeSBuZWVkcyB0byBiZSBvbiB0aGUgaW5jbHVkZSBwYXRoIGZvciBt
dWx0aXBsZSBzdWItdGFyZ2V0cyBvZiB3ZWJjb3JlLgogICAgICAgICAgICdkaXJlY3RfZGVwZW5k
ZW50X3NldHRpbmdzJzogewogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCA0ZGU2OGQ0Y2FmNTlhODM3NjcwODAzNDgxYjk2
OWQ3NTY4NzQzNjY0Li5kOTkxMzM3YmM4NjQ5YTZmZmM0ZjIwYzc2ZGRkNmE0ZmYwZGMxZDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC0xNTMsNyArMTUzLDcgQEAKICAg
ICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIG9uY2UgdGhlIGxpbmtpbmcgZXJyb3IgaGFzIGJlZW4g
cmVzb2x2ZWQuCiAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg2MzYKICAgICAgICAgICAnRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEnLAotICAgICAg
ICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLAorICAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTEn
LAogICAgICAgICAgICdXVEZfVVNFX05BVElWRV9GVUxMU0NSRUVOX1ZJREVPPTEnLAogICAgICAg
ICBdLAogICAgICAgICAnZW5hYmxlX3RvdWNoX2ljb25fbG9hZGluZyc6IDEsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148258</attachid>
            <date>2012-06-18 23:17:31 -0700</date>
            <delta_ts>2012-07-27 01:15:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89428-20120619141739.patch</filename>
            <type>text/plain</type>
            <size>5713</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiYjY5NWY5MDQzZmRhOTQ5MTUxYmMx
YjAxOGM4Mzk2NTA4NDExYjQuLjg3NzEwNDVjZDI0OWRmNGQ3OTljNDY1N2E5MjZiNmUwZThiZjNl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMTggIFdlaSBKYW1lcyAgPGphbWVzLndl
aUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5k
cm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL01hdGhFeHRy
YXMuaDoKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAobG9nMmYpOgorCiAyMDEyLTA2LTE4ICBU
b255IFBheW5lICA8dHBheW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFk
ZCBpY2NqcGVnIGFuZCBxY21zIHRvIGNocm9taXVtIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjNTkx
NTQ3YmIxOTZkY2MzY2E5Y2I5MjI4YmIzMjc4MGVkYmQzZC4uYmI4MTZjZWIzMWQwYWE5MGVhOTVj
NTA2YjM5MDg4NGJiYzJkZmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2
LTE4ICBXZWkgSmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgorCisgICAgICAgIGVuYWJsZSBX
ZWIgQXVkaW8gZm9yIGNocm9taXVtIGFuZHJvaWQgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorCiAy
MDEyLTA2LTE4ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgogCiAgICAgICAgIEV4
cG9zZSBXRUJHTF9kZXB0aF90ZXh0dXJlIGV4dGVuc2lvbiB0byBXZWJHTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA5OTkyZTI4ZTcxMzg5MDllMTI1MGUwYjI2MDYwZmQyNTBhY2M4NDQ1
Li41ZjZmOTAzYTEzNzUxMDJlODU5Y2EwYjNiNzBlNmYxMzk3MWU4ODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTE4ICBXZWkgSmFtZXMgIDxq
YW1lcy53ZWlAaW50ZWwuY29tPgorCisgICAgICAgIGVuYWJsZSBXZWIgQXVkaW8gZm9yIGNocm9t
aXVtIGFuZHJvaWQgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisKIDIwMTItMDYtMTggIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEdlc3R1cmVQaW5jaEJlZ2luIGFu
ZCBmcmllbmRzIGFyZSBnZXN0dXJlIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
QXRvbWljcy5oIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCmluZGV4IDk1OGFiZDJmYWZkNzY2
YjAzZGYwNTMxN2IwMWRkMmM2ZTkwZWU2ZjguLmEyZWZkOTQ4YzczYzZkYmRkM2EyOWM2MjNmMWY1
NDA5NjcxYTQ2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBpbmxpbmUgaW50IGF0
b21pY0luY3JlbWVudChpbnQgdm9sYXRpbGUqIGFkZGVuZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihhdG9taQogaW5saW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRl
bmQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYXRvbWljX3N1Yl92YWx1ZShyZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkIHZvbGF0aWxlKj4oYWRkZW5kKSwgMSkpIC0gMTsgfQogCiAjZWxpZiBP
UyhBTkRST0lEKQorI2RlZmluZSBXVEZfVVNFX0xPQ0tGUkVFX1RIUkVBRFNBRkVSRUZDT1VOVEVE
IDEKIAogaW5saW5lIGludCBhdG9taWNJbmNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRlbmQpIHsg
cmV0dXJuIF9fYXRvbWljX2luYyhhZGRlbmQpOyB9CiBpbmxpbmUgaW50IGF0b21pY0RlY3JlbWVu
dChpbnQgdm9sYXRpbGUqIGFkZGVuZCkgeyByZXR1cm4gX19hdG9taWNfZGVjKGFkZGVuZCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaAppbmRleCAzY2M5NDc0NDc2ZDdkNDBjYjA3YmM2ZTllYjRmN2FhMTc3YjI0
M2NmLi5iYjM1Mzg3ZGRkN2FmOTNlYTYyYjU4ZjkyMjlmNTZiNzA2Y2I3YzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0aEV4
dHJhcy5oCkBAIC0xMzgsNiArMTM4LDIxIEBAIGlubGluZSBkb3VibGUgdHJ1bmMoZG91YmxlIG51
bSkgeyByZXR1cm4gbnVtID4gMCA/IGZsb29yKG51bSkgOiBjZWlsKG51bSk7IH0KIGlubGluZSBs
b25nIGxvbmcgYWJzKGxvbmcgbnVtKSB7IHJldHVybiBsYWJzKG51bSk7IH0KICNlbmRpZgogCisj
aWYgT1MoQU5EUk9JRCkgfHwgQ09NUElMRVIoTVNWQykKKy8vIEFORFJPSUQgYW5kIE1TVkMncyBt
YXRoLmggZG9lcyBub3QgY3VycmVudGx5IHN1cHBseSBsb2cyIG9yIGxvZzJmLgoraW5saW5lIGRv
dWJsZSBsb2cyKGRvdWJsZSBudW0pCit7CisgICAgLy8gVGhpcyBjb25zdGFudCBpcyByb3VnaGx5
IE1fTE4yLCB3aGljaCBpcyBub3QgcHJvdmlkZWQgYnkgZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBB
bmRyb2lkLgorICAgIHJldHVybiBsb2cobnVtKSAvIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMy
MTIxNDU4MTc2NTY4OworfQorCitpbmxpbmUgZmxvYXQgbG9nMmYoZmxvYXQgbnVtKQoreworICAg
IC8vIFRoaXMgY29uc3RhbnQgaXMgcm91Z2hseSBNX0xOMiwgd2hpY2ggaXMgbm90IHByb3ZpZGVk
IGJ5IGRlZmF1bHQgb24gV2luZG93cyBhbmQgQW5kcm9pZC4KKyAgICByZXR1cm4gbG9nZihudW0p
IC8gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1NjhmOworfQorI2VuZGlmCisK
ICNpZiBDT01QSUxFUihNU1ZDKQogLy8gVGhlIDY0Yml0IHZlcnNpb24gb2YgYWJzKCkgaXMgYWxy
ZWFkeSBkZWZpbmVkIGluIHN0ZGxpYi5oIHdoaWNoIGNvbWVzIHdpdGggVkMxMAogI2lmIENPTVBJ
TEVSKE1TVkM5X09SX0xPV0VSKQpAQCAtMTU0LDE5ICsxNjksNiBAQCBpbmxpbmUgZmxvYXQgbmV4
dGFmdGVyZihmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiB4ID4geSA/IHggLSBGTFRfRVBTSUxP
TiA6IHggKwogaW5saW5lIGRvdWJsZSBjb3B5c2lnbihkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0
dXJuIF9jb3B5c2lnbih4LCB5KTsgfQogaW5saW5lIGludCBpc2Zpbml0ZShkb3VibGUgeCkgeyBy
ZXR1cm4gX2Zpbml0ZSh4KTsgfQogCi0vLyBNU1ZDJ3MgbWF0aC5oIGRvZXMgbm90IGN1cnJlbnRs
eSBzdXBwbHkgbG9nMiBvciBsb2cyZi4KLWlubGluZSBkb3VibGUgbG9nMihkb3VibGUgbnVtKQot
ewotICAgIC8vIFRoaXMgY29uc3RhbnQgaXMgcm91Z2hseSBNX0xOMiwgd2hpY2ggaXMgbm90IHBy
b3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2luZG93cy4KLSAgICByZXR1cm4gbG9nKG51bSkgLyAwLjY5
MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2ODsKLX0KLQotaW5saW5lIGZsb2F0IGxv
ZzJmKGZsb2F0IG51bSkKLXsKLSAgICAvLyBUaGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIs
IHdoaWNoIGlzIG5vdCBwcm92aWRlZCBieSBkZWZhdWx0IG9uIFdpbmRvd3MuCi0gICAgcmV0dXJu
IGxvZ2YobnVtKSAvIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4ZjsKLX0K
LQogLy8gV29yayBhcm91bmQgYSBidWcgaW4gV2luLCB3aGVyZSBhdGFuMigrLWluZmluaXR5LCAr
LWluZmluaXR5KSB5aWVsZHMgTmFOIGluc3RlYWQgb2Ygc3BlY2lmaWMgdmFsdWVzLgogaW5saW5l
IGRvdWJsZSB3dGZfYXRhbjIoZG91YmxlIHgsIGRvdWJsZSB5KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBkOTVmNGNkYjUyNWZkMDNmZGM5YmE3MzEyZjY2MTQy
NmQ0ZDcwOGUxLi5hYTliNGJkM2Q4ZTI4YTAxZWRhODllMDA1MDcyYzZhZjczNWM0YmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTQyMCw3ICsxNDIwLDcgQEAK
ICAgICAgICAgICAgIF0sCiAgICAgICAgICAgfSwKICAgICAgICAgfV0sCi0gICAgICAgIFsnT1Mg
IT0gImFuZHJvaWQiIGFuZCAiV1RGX1VTRV9XRUJBVURJT19GRk1QRUc9MSIgaW4gZmVhdHVyZV9k
ZWZpbmVzJywgeworICAgICAgICBbJyJXVEZfVVNFX1dFQkFVRElPX0ZGTVBFRz0xIiBpbiBmZWF0
dXJlX2RlZmluZXMnLCB7CiAgICAgICAgICAgIyBUaGlzIGRpcmVjdG9yeSBuZWVkcyB0byBiZSBv
biB0aGUgaW5jbHVkZSBwYXRoIGZvciBtdWx0aXBsZSBzdWItdGFyZ2V0cyBvZiB3ZWJjb3JlLgog
ICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzogewogICAgICAgICAgICAgJ2lu
Y2x1ZGVfZGlycyc6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCA0ZGU2
OGQ0Y2FmNTlhODM3NjcwODAzNDgxYjk2OWQ3NTY4NzQzNjY0Li5kOTkxMzM3YmM4NjQ5YTZmZmM0
ZjIwYzc2ZGRkNmE0ZmYwZGMxZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CkBAIC0xNTMsNyArMTUzLDcgQEAKICAgICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIG9uY2UgdGhl
IGxpbmtpbmcgZXJyb3IgaGFzIGJlZW4gcmVzb2x2ZWQuCiAgICAgICAgICAgIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2MzYKICAgICAgICAgICAnRU5BQkxFX1NI
QVJFRF9XT1JLRVJTPTEnLAotICAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLAorICAgICAg
ICAgICdFTkFCTEVfV0VCX0FVRElPPTEnLAogICAgICAgICAgICdXVEZfVVNFX05BVElWRV9GVUxM
U0NSRUVOX1ZJREVPPTEnLAogICAgICAgICBdLAogICAgICAgICAnZW5hYmxlX3RvdWNoX2ljb25f
bG9hZGluZyc6IDEsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153169</attachid>
            <date>2012-07-18 20:22:15 -0700</date>
            <delta_ts>2012-07-19 06:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89428-20120719112227.patch</filename>
            <type>text/plain</type>
            <size>6606</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkOTY2NDZjMWNlMjgxN2ViY2ZlZTBk
NTkyYjQ5MDQ2MDU1NzNmNjUuLmNiMDYyMmNhNTM3NmFjNmNjNGQ1MTE3ZWYwMmJiZTFmY2Y5ODBh
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDctMTggIFdlaSBKYW1lcyAgPGphbWVzLndl
aUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5k
cm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL01hdGhFeHRy
YXMuaDoKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAobG9nMmYpOgorCiAyMDEyLTA3LTE4ICBZ
b25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQg
Y3VycmVudFRpbWUoKSBhbmQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgZm9yIE9TKFFO
WCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA1MDI5OWJmNzA1NDM2NDA3ZDI2YmFiOWQ1YTYyZTI4YWMwYjA5M2Ix
Li45MjVjMDQ3OTcxZjRmMWY0ZWI5ODM4ZWEwMDc3OWFlMTg2YmJkYWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTggIFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5j
b20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5kcm9pZCBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHVi
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZGVCk6CisKIDIwMTItMDctMTgg
IEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVWJlcmNvbXA6IGNsZWFuIHVwIENDUmVuZGVyZXIgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQ3MjI1Yjg5ZmU4ZmVkOGFlMDM2ZGY2ZDhmNmI2ZDgwYTM1MjNjYzUu
LmQ3OGFiNjc2YmExMDQ1MDNlY2JiOGVlYTQxNWJiYjZhYmYwM2I5NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDctMTggIFdlaSBKYW1lcyAgPGph
bWVzLndlaUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21p
dW0gYW5kcm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNy0xOCAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVYmVyY29tcDogY2xlYW4g
dXAgQ0NSZW5kZXJlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F0b21p
Y3MuaCBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAppbmRleCA5NThhYmQyZmFmZDc2NmIwM2Rm
MDUzMTdiMDFkZDJjNmU5MGVlNmY4Li5hMmVmZDk0OGM3M2M2ZGJkZDNhMjljNjIzZjFmNTQwOTY3
MWE0NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKKysrIGIvU291cmNl
L1dURi93dGYvQXRvbWljcy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgaW5saW5lIGludCBhdG9taWNJ
bmNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
YXRvbWkKIGlubGluZSBpbnQgYXRvbWljRGVjcmVtZW50KGludCB2b2xhdGlsZSogYWRkZW5kKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGF0b21pY19zdWJfdmFsdWUocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCB2b2xhdGlsZSo+KGFkZGVuZCksIDEpKSAtIDE7IH0KIAogI2VsaWYgT1MoQU5E
Uk9JRCkKKyNkZWZpbmUgV1RGX1VTRV9MT0NLRlJFRV9USFJFQURTQUZFUkVGQ09VTlRFRCAxCiAK
IGlubGluZSBpbnQgYXRvbWljSW5jcmVtZW50KGludCB2b2xhdGlsZSogYWRkZW5kKSB7IHJldHVy
biBfX2F0b21pY19pbmMoYWRkZW5kKTsgfQogaW5saW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50
IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIF9fYXRvbWljX2RlYyhhZGRlbmQpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXRo
RXh0cmFzLmgKaW5kZXggZTQ0YWI2YzZiOGQ4OWE2NWIwNzljMjZiM2IxMDFmOGUxZDgxMjVkMC4u
YjAzZDQ1ZDNjNGNiZDYxYmUyMWQ4ODUyYmIyZjU1MWRkZmMwMmU1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMu
aApAQCAtMTM4LDYgKzEzOCwyMSBAQCBpbmxpbmUgZG91YmxlIHRydW5jKGRvdWJsZSBudW0pIHsg
cmV0dXJuIG51bSA+IDAgPyBmbG9vcihudW0pIDogY2VpbChudW0pOyB9CiBpbmxpbmUgbG9uZyBs
b25nIGFicyhsb25nIG51bSkgeyByZXR1cm4gbGFicyhudW0pOyB9CiAjZW5kaWYKIAorI2lmIE9T
KEFORFJPSUQpIHx8IENPTVBJTEVSKE1TVkMpCisvLyBBTkRST0lEIGFuZCBNU1ZDJ3MgbWF0aC5o
IGRvZXMgbm90IGN1cnJlbnRseSBzdXBwbHkgbG9nMiBvciBsb2cyZi4KK2lubGluZSBkb3VibGUg
bG9nMihkb3VibGUgbnVtKQoreworICAgIC8vIFRoaXMgY29uc3RhbnQgaXMgcm91Z2hseSBNX0xO
Miwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2luZG93cyBhbmQgQW5kcm9p
ZC4KKyAgICByZXR1cm4gbG9nKG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1
ODE3NjU2ODsKK30KKworaW5saW5lIGZsb2F0IGxvZzJmKGZsb2F0IG51bSkKK3sKKyAgICAvLyBU
aGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92aWRlZCBieSBk
ZWZhdWx0IG9uIFdpbmRvd3MgYW5kIEFuZHJvaWQuCisgICAgcmV0dXJuIGxvZ2YobnVtKSAvIDAu
NjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4ZjsKK30KKyNlbmRpZgorCiAjaWYg
Q09NUElMRVIoTVNWQykKIC8vIFRoZSA2NGJpdCB2ZXJzaW9uIG9mIGFicygpIGlzIGFscmVhZHkg
ZGVmaW5lZCBpbiBzdGRsaWIuaCB3aGljaCBjb21lcyB3aXRoIFZDMTAKICNpZiBDT01QSUxFUihN
U1ZDOV9PUl9MT1dFUikKQEAgLTE1NCwxOSArMTY5LDYgQEAgaW5saW5lIGZsb2F0IG5leHRhZnRl
cmYoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4geCA+IHkgPyB4IC0gRkxUX0VQU0lMT04gOiB4
ICsKIGlubGluZSBkb3VibGUgY29weXNpZ24oZG91YmxlIHgsIGRvdWJsZSB5KSB7IHJldHVybiBf
Y29weXNpZ24oeCwgeSk7IH0KIGlubGluZSBpbnQgaXNmaW5pdGUoZG91YmxlIHgpIHsgcmV0dXJu
IF9maW5pdGUoeCk7IH0KIAotLy8gTVNWQydzIG1hdGguaCBkb2VzIG5vdCBjdXJyZW50bHkgc3Vw
cGx5IGxvZzIgb3IgbG9nMmYuCi1pbmxpbmUgZG91YmxlIGxvZzIoZG91YmxlIG51bSkKLXsKLSAg
ICAvLyBUaGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92aWRl
ZCBieSBkZWZhdWx0IG9uIFdpbmRvd3MuCi0gICAgcmV0dXJuIGxvZyhudW0pIC8gMC42OTMxNDcx
ODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1Njg7Ci19Ci0KLWlubGluZSBmbG9hdCBsb2cyZihm
bG9hdCBudW0pCi17Ci0gICAgLy8gVGhpcyBjb25zdGFudCBpcyByb3VnaGx5IE1fTE4yLCB3aGlj
aCBpcyBub3QgcHJvdmlkZWQgYnkgZGVmYXVsdCBvbiBXaW5kb3dzLgotICAgIHJldHVybiBsb2dm
KG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2OGY7Ci19Ci0KIC8v
IFdvcmsgYXJvdW5kIGEgYnVnIGluIFdpbiwgd2hlcmUgYXRhbjIoKy1pbmZpbml0eSwgKy1pbmZp
bml0eSkgeWllbGRzIE5hTiBpbnN0ZWFkIG9mIHNwZWNpZmljIHZhbHVlcy4KIGlubGluZSBkb3Vi
bGUgd3RmX2F0YW4yKGRvdWJsZSB4LCBkb3VibGUgeSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggNWU5YTc1ZmFjMmZmNWZkZTRhNTgxZjVjYjZlN2I2MTk1Yjc4
MmY3Yi4uMGU2ZjAzODk0M2JhYzczNzFlM2Q3OGE3ZDIwZDBmYzU1ZmMxYzEwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTE0NDEsNyArMTQ0MSw3IEBACiAgICAg
ICAgICAgICBdLAogICAgICAgICAgIH0sCiAgICAgICAgIH1dLAotICAgICAgICBbJ09TICE9ICJh
bmRyb2lkIiBhbmQgIldURl9VU0VfV0VCQVVESU9fRkZNUEVHPTEiIGluIGZlYXR1cmVfZGVmaW5l
cycsIHsKKyAgICAgICAgWyciV1RGX1VTRV9XRUJBVURJT19GRk1QRUc9MSIgaW4gZmVhdHVyZV9k
ZWZpbmVzJywgewogICAgICAgICAgICMgVGhpcyBkaXJlY3RvcnkgbmVlZHMgdG8gYmUgb24gdGhl
IGluY2x1ZGUgcGF0aCBmb3IgbXVsdGlwbGUgc3ViLXRhcmdldHMgb2Ygd2ViY29yZS4KICAgICAg
ICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKICAgICAgICAgICAgICdpbmNsdWRl
X2RpcnMnOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZVN0dWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHVi
LmNwcAppbmRleCAxOWE4MDBkMzVkMzJkMDNhYmY2ZjdjN2Q1OTk2NmE2NGI3OTBmNmVkLi42YTI3
YmU1ZjY3OWVmMDQzNDA2OGVjOTI1NWQzMjlhZmQ4NDczOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9p
ZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKK3Zv
aWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDM1Zjg2
Y2YyNDExYWM4OGY1MTBhNjk1OTM5MGU1ODZlMTUxN2E3ZDAuLmMyNmY2NjQzNjYwNjg0Mjc1ODY1
YWM0NTg3MDNmODA4ZWQzYWU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkK
QEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICAgICAgICMgRklYTUU6IERpc2FibGUgb25jZSB0aGUg
bGlua2luZyBlcnJvciBoYXMgYmVlbiByZXNvbHZlZC4KICAgICAgICAgICAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYzNgogICAgICAgICAgICdFTkFCTEVfU0hB
UkVEX1dPUktFUlM9MScsCi0gICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCisgICAgICAg
ICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAgICAgICAgJ1dURl9VU0VfTkFUSVZFX0ZVTExT
Q1JFRU5fVklERU89MScsCiAgICAgICAgIF0sCiAgICAgICAgICdlbmFibGVfdG91Y2hfaWNvbl9s
b2FkaW5nJzogMSwKQEAgLTE4Nyw3ICsxODcsNyBAQAogICAgICAgICBdLAogICAgICAgfV0sCiAg
ICAgICAjIE1hYyBPUyBYIHVzZXMgQWNjZWxlcmF0ZS5mcmFtZXdvcmsgRkZUIGJ5IGRlZmF1bHQg
aW5zdGVhZCBvZiBGRm1wZWcuCi0gICAgICBbJ09TIT0ibWFjIicsIHsKKyAgICAgIFsnT1MhPSJt
YWMiIGFuZCBPUyE9ImFuZHJvaWQiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzogWwog
ICAgICAgICAgICdXVEZfVVNFX1dFQkFVRElPX0ZGTVBFRz0xJywKICAgICAgICAgXSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153249</attachid>
            <date>2012-07-19 06:46:43 -0700</date>
            <delta_ts>2012-07-19 07:38:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89428-20120719214654.patch</filename>
            <type>text/plain</type>
            <size>6252</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkOTY2NDZjMWNlMjgxN2ViY2ZlZTBk
NTkyYjQ5MDQ2MDU1NzNmNjUuLjc1MWIxNzE2ZGU2NmMzMTI0ZDFlMGY1MjUzOTA3NDNmMmJkZmUx
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGphbWVzLndl
aUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5k
cm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL01hdGhFeHRy
YXMuaDoKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAobG9nMmYpOgorCiAyMDEyLTA3LTE4ICBZ
b25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQg
Y3VycmVudFRpbWUoKSBhbmQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgZm9yIE9TKFFO
WCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA1MDI5OWJmNzA1NDM2NDA3ZDI2YmFiOWQ1YTYyZTI4YWMwYjA5M2Ix
Li5mNWViOTMzMTRkMTk2OWQ1ZTlkMDdiMjdjNGNmMzcyNGQzOWU2NGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5j
b20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5kcm9pZCBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHVi
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZGVCk6CisKIDIwMTItMDctMTgg
IEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVWJlcmNvbXA6IGNsZWFuIHVwIENDUmVuZGVyZXIgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQ3MjI1Yjg5ZmU4ZmVkOGFlMDM2ZGY2ZDhmNmI2ZDgwYTM1MjNjYzUu
LmUyYzQ3Nzk3ZDFhNjNhZGY3ODViNDQwNGJhZGZiMjUyMzg5MTZkMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGph
bWVzLndlaUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21p
dW0gYW5kcm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNy0xOCAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVYmVyY29tcDogY2xlYW4g
dXAgQ0NSZW5kZXJlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F0b21p
Y3MuaCBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAppbmRleCA5NThhYmQyZmFmZDc2NmIwM2Rm
MDUzMTdiMDFkZDJjNmU5MGVlNmY4Li5hMmVmZDk0OGM3M2M2ZGJkZDNhMjljNjIzZjFmNTQwOTY3
MWE0NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKKysrIGIvU291cmNl
L1dURi93dGYvQXRvbWljcy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgaW5saW5lIGludCBhdG9taWNJ
bmNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
YXRvbWkKIGlubGluZSBpbnQgYXRvbWljRGVjcmVtZW50KGludCB2b2xhdGlsZSogYWRkZW5kKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGF0b21pY19zdWJfdmFsdWUocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCB2b2xhdGlsZSo+KGFkZGVuZCksIDEpKSAtIDE7IH0KIAogI2VsaWYgT1MoQU5E
Uk9JRCkKKyNkZWZpbmUgV1RGX1VTRV9MT0NLRlJFRV9USFJFQURTQUZFUkVGQ09VTlRFRCAxCiAK
IGlubGluZSBpbnQgYXRvbWljSW5jcmVtZW50KGludCB2b2xhdGlsZSogYWRkZW5kKSB7IHJldHVy
biBfX2F0b21pY19pbmMoYWRkZW5kKTsgfQogaW5saW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50
IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIF9fYXRvbWljX2RlYyhhZGRlbmQpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXRo
RXh0cmFzLmgKaW5kZXggZTQ0YWI2YzZiOGQ4OWE2NWIwNzljMjZiM2IxMDFmOGUxZDgxMjVkMC4u
YjAzZDQ1ZDNjNGNiZDYxYmUyMWQ4ODUyYmIyZjU1MWRkZmMwMmU1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMu
aApAQCAtMTM4LDYgKzEzOCwyMSBAQCBpbmxpbmUgZG91YmxlIHRydW5jKGRvdWJsZSBudW0pIHsg
cmV0dXJuIG51bSA+IDAgPyBmbG9vcihudW0pIDogY2VpbChudW0pOyB9CiBpbmxpbmUgbG9uZyBs
b25nIGFicyhsb25nIG51bSkgeyByZXR1cm4gbGFicyhudW0pOyB9CiAjZW5kaWYKIAorI2lmIE9T
KEFORFJPSUQpIHx8IENPTVBJTEVSKE1TVkMpCisvLyBBTkRST0lEIGFuZCBNU1ZDJ3MgbWF0aC5o
IGRvZXMgbm90IGN1cnJlbnRseSBzdXBwbHkgbG9nMiBvciBsb2cyZi4KK2lubGluZSBkb3VibGUg
bG9nMihkb3VibGUgbnVtKQoreworICAgIC8vIFRoaXMgY29uc3RhbnQgaXMgcm91Z2hseSBNX0xO
Miwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2luZG93cyBhbmQgQW5kcm9p
ZC4KKyAgICByZXR1cm4gbG9nKG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1
ODE3NjU2ODsKK30KKworaW5saW5lIGZsb2F0IGxvZzJmKGZsb2F0IG51bSkKK3sKKyAgICAvLyBU
aGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92aWRlZCBieSBk
ZWZhdWx0IG9uIFdpbmRvd3MgYW5kIEFuZHJvaWQuCisgICAgcmV0dXJuIGxvZ2YobnVtKSAvIDAu
NjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4ZjsKK30KKyNlbmRpZgorCiAjaWYg
Q09NUElMRVIoTVNWQykKIC8vIFRoZSA2NGJpdCB2ZXJzaW9uIG9mIGFicygpIGlzIGFscmVhZHkg
ZGVmaW5lZCBpbiBzdGRsaWIuaCB3aGljaCBjb21lcyB3aXRoIFZDMTAKICNpZiBDT01QSUxFUihN
U1ZDOV9PUl9MT1dFUikKQEAgLTE1NCwxOSArMTY5LDYgQEAgaW5saW5lIGZsb2F0IG5leHRhZnRl
cmYoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4geCA+IHkgPyB4IC0gRkxUX0VQU0lMT04gOiB4
ICsKIGlubGluZSBkb3VibGUgY29weXNpZ24oZG91YmxlIHgsIGRvdWJsZSB5KSB7IHJldHVybiBf
Y29weXNpZ24oeCwgeSk7IH0KIGlubGluZSBpbnQgaXNmaW5pdGUoZG91YmxlIHgpIHsgcmV0dXJu
IF9maW5pdGUoeCk7IH0KIAotLy8gTVNWQydzIG1hdGguaCBkb2VzIG5vdCBjdXJyZW50bHkgc3Vw
cGx5IGxvZzIgb3IgbG9nMmYuCi1pbmxpbmUgZG91YmxlIGxvZzIoZG91YmxlIG51bSkKLXsKLSAg
ICAvLyBUaGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92aWRl
ZCBieSBkZWZhdWx0IG9uIFdpbmRvd3MuCi0gICAgcmV0dXJuIGxvZyhudW0pIC8gMC42OTMxNDcx
ODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1Njg7Ci19Ci0KLWlubGluZSBmbG9hdCBsb2cyZihm
bG9hdCBudW0pCi17Ci0gICAgLy8gVGhpcyBjb25zdGFudCBpcyByb3VnaGx5IE1fTE4yLCB3aGlj
aCBpcyBub3QgcHJvdmlkZWQgYnkgZGVmYXVsdCBvbiBXaW5kb3dzLgotICAgIHJldHVybiBsb2dm
KG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2OGY7Ci19Ci0KIC8v
IFdvcmsgYXJvdW5kIGEgYnVnIGluIFdpbiwgd2hlcmUgYXRhbjIoKy1pbmZpbml0eSwgKy1pbmZp
bml0eSkgeWllbGRzIE5hTiBpbnN0ZWFkIG9mIHNwZWNpZmljIHZhbHVlcy4KIGlubGluZSBkb3Vi
bGUgd3RmX2F0YW4yKGRvdWJsZSB4LCBkb3VibGUgeSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggNWU5YTc1ZmFjMmZmNWZkZTRhNTgxZjVjYjZlN2I2MTk1Yjc4
MmY3Yi4uMGU2ZjAzODk0M2JhYzczNzFlM2Q3OGE3ZDIwZDBmYzU1ZmMxYzEwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTE0NDEsNyArMTQ0MSw3IEBACiAgICAg
ICAgICAgICBdLAogICAgICAgICAgIH0sCiAgICAgICAgIH1dLAotICAgICAgICBbJ09TICE9ICJh
bmRyb2lkIiBhbmQgIldURl9VU0VfV0VCQVVESU9fRkZNUEVHPTEiIGluIGZlYXR1cmVfZGVmaW5l
cycsIHsKKyAgICAgICAgWyciV1RGX1VTRV9XRUJBVURJT19GRk1QRUc9MSIgaW4gZmVhdHVyZV9k
ZWZpbmVzJywgewogICAgICAgICAgICMgVGhpcyBkaXJlY3RvcnkgbmVlZHMgdG8gYmUgb24gdGhl
IGluY2x1ZGUgcGF0aCBmb3IgbXVsdGlwbGUgc3ViLXRhcmdldHMgb2Ygd2ViY29yZS4KICAgICAg
ICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKICAgICAgICAgICAgICdpbmNsdWRl
X2RpcnMnOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZVN0dWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHVi
LmNwcAppbmRleCAxOWE4MDBkMzVkMzJkMDNhYmY2ZjdjN2Q1OTk2NmE2NGI3OTBmNmVkLi42YTI3
YmU1ZjY3OWVmMDQzNDA2OGVjOTI1NWQzMjlhZmQ4NDczOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9p
ZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKK3Zv
aWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDM1Zjg2
Y2YyNDExYWM4OGY1MTBhNjk1OTM5MGU1ODZlMTUxN2E3ZDAuLmYzMDNjMTI5NmEzYWNmYjNhODBk
ZWEzYTE5OGQ5OGIzZWYzNDQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkK
QEAgLTE4Nyw3ICsxODcsNyBAQAogICAgICAgICBdLAogICAgICAgfV0sCiAgICAgICAjIE1hYyBP
UyBYIHVzZXMgQWNjZWxlcmF0ZS5mcmFtZXdvcmsgRkZUIGJ5IGRlZmF1bHQgaW5zdGVhZCBvZiBG
Rm1wZWcuCi0gICAgICBbJ09TIT0ibWFjIicsIHsKKyAgICAgIFsnT1MhPSJtYWMiIGFuZCBPUyE9
ImFuZHJvaWQiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzogWwogICAgICAgICAgICdX
VEZfVVNFX1dFQkFVRElPX0ZGTVBFRz0xJywKICAgICAgICAgXSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153259</attachid>
            <date>2012-07-19 07:38:57 -0700</date>
            <delta_ts>2012-07-19 08:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89428-20120719223909.patch</filename>
            <type>text/plain</type>
            <size>5928</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkOTY2NDZjMWNlMjgxN2ViY2ZlZTBk
NTkyYjQ5MDQ2MDU1NzNmNjUuLjc1MWIxNzE2ZGU2NmMzMTI0ZDFlMGY1MjUzOTA3NDNmMmJkZmUx
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGphbWVzLndl
aUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5k
cm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL01hdGhFeHRy
YXMuaDoKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAobG9nMmYpOgorCiAyMDEyLTA3LTE4ICBZ
b25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQg
Y3VycmVudFRpbWUoKSBhbmQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgZm9yIE9TKFFO
WCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA1MDI5OWJmNzA1NDM2NDA3ZDI2YmFiOWQ1YTYyZTI4YWMwYjA5M2Ix
Li5mNWViOTMzMTRkMTk2OWQ1ZTlkMDdiMjdjNGNmMzcyNGQzOWU2NGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5j
b20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5kcm9pZCBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHVi
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZGVCk6CisKIDIwMTItMDctMTgg
IEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVWJlcmNvbXA6IGNsZWFuIHVwIENDUmVuZGVyZXIgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQ3MjI1Yjg5ZmU4ZmVkOGFlMDM2ZGY2ZDhmNmI2ZDgwYTM1MjNjYzUu
LmUyYzQ3Nzk3ZDFhNjNhZGY3ODViNDQwNGJhZGZiMjUyMzg5MTZkMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGph
bWVzLndlaUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21p
dW0gYW5kcm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNy0xOCAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVYmVyY29tcDogY2xlYW4g
dXAgQ0NSZW5kZXJlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhF
eHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCBlNDRhYjZjNmI4ZDg5
YTY1YjA3OWMyNmIzYjEwMWY4ZTFkODEyNWQwLi5iMDNkNDVkM2M0Y2JkNjFiZTIxZDg4NTJiYjJm
NTUxZGRmYzAyZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysr
IGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0xMzgsNiArMTM4LDIxIEBAIGlubGlu
ZSBkb3VibGUgdHJ1bmMoZG91YmxlIG51bSkgeyByZXR1cm4gbnVtID4gMCA/IGZsb29yKG51bSkg
OiBjZWlsKG51bSk7IH0KIGlubGluZSBsb25nIGxvbmcgYWJzKGxvbmcgbnVtKSB7IHJldHVybiBs
YWJzKG51bSk7IH0KICNlbmRpZgogCisjaWYgT1MoQU5EUk9JRCkgfHwgQ09NUElMRVIoTVNWQykK
Ky8vIEFORFJPSUQgYW5kIE1TVkMncyBtYXRoLmggZG9lcyBub3QgY3VycmVudGx5IHN1cHBseSBs
b2cyIG9yIGxvZzJmLgoraW5saW5lIGRvdWJsZSBsb2cyKGRvdWJsZSBudW0pCit7CisgICAgLy8g
VGhpcyBjb25zdGFudCBpcyByb3VnaGx5IE1fTE4yLCB3aGljaCBpcyBub3QgcHJvdmlkZWQgYnkg
ZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBBbmRyb2lkLgorICAgIHJldHVybiBsb2cobnVtKSAvIDAu
NjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4OworfQorCitpbmxpbmUgZmxvYXQg
bG9nMmYoZmxvYXQgbnVtKQoreworICAgIC8vIFRoaXMgY29uc3RhbnQgaXMgcm91Z2hseSBNX0xO
Miwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2luZG93cyBhbmQgQW5kcm9p
ZC4KKyAgICByZXR1cm4gbG9nZihudW0pIC8gMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0
NTgxNzY1NjhmOworfQorI2VuZGlmCisKICNpZiBDT01QSUxFUihNU1ZDKQogLy8gVGhlIDY0Yml0
IHZlcnNpb24gb2YgYWJzKCkgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHN0ZGxpYi5oIHdoaWNoIGNv
bWVzIHdpdGggVkMxMAogI2lmIENPTVBJTEVSKE1TVkM5X09SX0xPV0VSKQpAQCAtMTU0LDE5ICsx
NjksNiBAQCBpbmxpbmUgZmxvYXQgbmV4dGFmdGVyZihmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVy
biB4ID4geSA/IHggLSBGTFRfRVBTSUxPTiA6IHggKwogaW5saW5lIGRvdWJsZSBjb3B5c2lnbihk
b3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIF9jb3B5c2lnbih4LCB5KTsgfQogaW5saW5lIGlu
dCBpc2Zpbml0ZShkb3VibGUgeCkgeyByZXR1cm4gX2Zpbml0ZSh4KTsgfQogCi0vLyBNU1ZDJ3Mg
bWF0aC5oIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwbHkgbG9nMiBvciBsb2cyZi4KLWlubGluZSBk
b3VibGUgbG9nMihkb3VibGUgbnVtKQotewotICAgIC8vIFRoaXMgY29uc3RhbnQgaXMgcm91Z2hs
eSBNX0xOMiwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2luZG93cy4KLSAg
ICByZXR1cm4gbG9nKG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2
ODsKLX0KLQotaW5saW5lIGZsb2F0IGxvZzJmKGZsb2F0IG51bSkKLXsKLSAgICAvLyBUaGlzIGNv
bnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92aWRlZCBieSBkZWZhdWx0
IG9uIFdpbmRvd3MuCi0gICAgcmV0dXJuIGxvZ2YobnVtKSAvIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5
NDE3MjMyMTIxNDU4MTc2NTY4ZjsKLX0KLQogLy8gV29yayBhcm91bmQgYSBidWcgaW4gV2luLCB3
aGVyZSBhdGFuMigrLWluZmluaXR5LCArLWluZmluaXR5KSB5aWVsZHMgTmFOIGluc3RlYWQgb2Yg
c3BlY2lmaWMgdmFsdWVzLgogaW5saW5lIGRvdWJsZSB3dGZfYXRhbjIoZG91YmxlIHgsIGRvdWJs
ZSB5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYzE3ZjNlMWJjMWUxZWI3ZmM5MmU2NmM1ZjRmM2Q3YjY0
OGFiNWVlOC4uODg4MmE4Mjg1MzE5MjczMmJiZTM2YTgyMmRiMTBkZThlM2Q4MjljYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCkBAIC03NTAsNiArNzUwLDcgQEAKICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQogI2Rl
ZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKICNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKKyNkZWZp
bmUgV1RGX1VTRV9MT0NLRlJFRV9USFJFQURTQUZFUkVGQ09VTlRFRCAxCiAKICNlbHNlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggNWU5YTc1ZmFjMmZmNWZkZTRh
NTgxZjVjYjZlN2I2MTk1Yjc4MmY3Yi4uMGU2ZjAzODk0M2JhYzczNzFlM2Q3OGE3ZDIwZDBmYzU1
ZmMxYzEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTE0NDEs
NyArMTQ0MSw3IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgIH0sCiAgICAgICAgIH1dLAot
ICAgICAgICBbJ09TICE9ICJhbmRyb2lkIiBhbmQgIldURl9VU0VfV0VCQVVESU9fRkZNUEVHPTEi
IGluIGZlYXR1cmVfZGVmaW5lcycsIHsKKyAgICAgICAgWyciV1RGX1VTRV9XRUJBVURJT19GRk1Q
RUc9MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywgewogICAgICAgICAgICMgVGhpcyBkaXJlY3Rvcnkg
bmVlZHMgdG8gYmUgb24gdGhlIGluY2x1ZGUgcGF0aCBmb3IgbXVsdGlwbGUgc3ViLXRhcmdldHMg
b2Ygd2ViY29yZS4KICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKICAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZURnJhbWVTdHViLmNwcAppbmRleCAxOWE4MDBkMzVkMzJkMDNhYmY2ZjdjN2Q1OTk2
NmE2NGI3OTBmNmVkLi42YTI3YmU1ZjY3OWVmMDQzNDA2OGVjOTI1NWQzMjlhZmQ4NDczOGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgdm9pZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZy
YW1lKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZG
VChmbG9hdCogZGF0YSkKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCmluZGV4IDM1Zjg2Y2YyNDExYWM4OGY1MTBhNjk1OTM5MGU1ODZlMTUxN2E3ZDAuLmYz
MDNjMTI5NmEzYWNmYjNhODBkZWEzYTE5OGQ5OGIzZWYzNDQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTE4Nyw3ICsxODcsNyBAQAogICAgICAgICBdLAogICAgICAg
fV0sCiAgICAgICAjIE1hYyBPUyBYIHVzZXMgQWNjZWxlcmF0ZS5mcmFtZXdvcmsgRkZUIGJ5IGRl
ZmF1bHQgaW5zdGVhZCBvZiBGRm1wZWcuCi0gICAgICBbJ09TIT0ibWFjIicsIHsKKyAgICAgIFsn
T1MhPSJtYWMiIGFuZCBPUyE9ImFuZHJvaWQiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZpbmVz
JzogWwogICAgICAgICAgICdXVEZfVVNFX1dFQkFVRElPX0ZGTVBFRz0xJywKICAgICAgICAgXSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153269</attachid>
            <date>2012-07-19 08:31:46 -0700</date>
            <delta_ts>2012-07-19 21:27:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89428-20120719233158.patch</filename>
            <type>text/plain</type>
            <size>5498</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkOTY2NDZjMWNlMjgxN2ViY2ZlZTBk
NTkyYjQ5MDQ2MDU1NzNmNjUuLjE1YTUwMDI2YWEyMTliYTlmMzZiMTllYWEzNDIwNDlkNjljY2M5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGphbWVzLndl
aUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21pdW0gYW5k
cm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAobG9nMmYpOgor
CiAyMDEyLTA3LTE4ICBZb25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBJbXBsZW1lbnQgY3VycmVudFRpbWUoKSBhbmQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgZm9yIE9TKFFOWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MDI5OWJmNzA1NDM2NDA3ZDI2YmFiOWQ1
YTYyZTI4YWMwYjA5M2IxLi5mNWViOTMzMTRkMTk2OWQ1ZTlkMDdiMjdjNGNmMzcyNGQzOWU2NGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTkgIFdlaSBKYW1lcyAgPGph
bWVzLndlaUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3IgY2hyb21p
dW0gYW5kcm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWVTdHViLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZGVCk6
CisKIDIwMTItMDctMTggIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVWJlcmNvbXA6IGNsZWFuIHVwIENDUmVuZGVyZXIgaW50ZXJmYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQ3MjI1Yjg5ZmU4ZmVkOGFlMDM2ZGY2ZDhm
NmI2ZDgwYTM1MjNjYzUuLmUyYzQ3Nzk3ZDFhNjNhZGY3ODViNDQwNGJhZGZiMjUyMzg5MTZkMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDctMTkg
IFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5jb20+CisKKyAgICAgICAgZW5hYmxlIFdlYiBB
dWRpbyBmb3IgY2hyb21pdW0gYW5kcm9pZCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNy0xOCAgQWxl
eGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBV
YmVyY29tcDogY2xlYW4gdXAgQ0NSZW5kZXJlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRl
eCBlNDRhYjZjNmI4ZDg5YTY1YjA3OWMyNmIzYjEwMWY4ZTFkODEyNWQwLi5iMDNkNDVkM2M0Y2Jk
NjFiZTIxZDg4NTJiYjJmNTUxZGRmYzAyZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
YXRoRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0xMzgsNiAr
MTM4LDIxIEBAIGlubGluZSBkb3VibGUgdHJ1bmMoZG91YmxlIG51bSkgeyByZXR1cm4gbnVtID4g
MCA/IGZsb29yKG51bSkgOiBjZWlsKG51bSk7IH0KIGlubGluZSBsb25nIGxvbmcgYWJzKGxvbmcg
bnVtKSB7IHJldHVybiBsYWJzKG51bSk7IH0KICNlbmRpZgogCisjaWYgT1MoQU5EUk9JRCkgfHwg
Q09NUElMRVIoTVNWQykKKy8vIEFORFJPSUQgYW5kIE1TVkMncyBtYXRoLmggZG9lcyBub3QgY3Vy
cmVudGx5IHN1cHBseSBsb2cyIG9yIGxvZzJmLgoraW5saW5lIGRvdWJsZSBsb2cyKGRvdWJsZSBu
dW0pCit7CisgICAgLy8gVGhpcyBjb25zdGFudCBpcyByb3VnaGx5IE1fTE4yLCB3aGljaCBpcyBu
b3QgcHJvdmlkZWQgYnkgZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBBbmRyb2lkLgorICAgIHJldHVy
biBsb2cobnVtKSAvIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4OworfQor
CitpbmxpbmUgZmxvYXQgbG9nMmYoZmxvYXQgbnVtKQoreworICAgIC8vIFRoaXMgY29uc3RhbnQg
aXMgcm91Z2hseSBNX0xOMiwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQgb24gV2lu
ZG93cyBhbmQgQW5kcm9pZC4KKyAgICByZXR1cm4gbG9nZihudW0pIC8gMC42OTMxNDcxODA1NTk5
NDUzMDk0MTcyMzIxMjE0NTgxNzY1NjhmOworfQorI2VuZGlmCisKICNpZiBDT01QSUxFUihNU1ZD
KQogLy8gVGhlIDY0Yml0IHZlcnNpb24gb2YgYWJzKCkgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHN0
ZGxpYi5oIHdoaWNoIGNvbWVzIHdpdGggVkMxMAogI2lmIENPTVBJTEVSKE1TVkM5X09SX0xPV0VS
KQpAQCAtMTU0LDE5ICsxNjksNiBAQCBpbmxpbmUgZmxvYXQgbmV4dGFmdGVyZihmbG9hdCB4LCBm
bG9hdCB5KSB7IHJldHVybiB4ID4geSA/IHggLSBGTFRfRVBTSUxPTiA6IHggKwogaW5saW5lIGRv
dWJsZSBjb3B5c2lnbihkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIF9jb3B5c2lnbih4LCB5
KTsgfQogaW5saW5lIGludCBpc2Zpbml0ZShkb3VibGUgeCkgeyByZXR1cm4gX2Zpbml0ZSh4KTsg
fQogCi0vLyBNU1ZDJ3MgbWF0aC5oIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwbHkgbG9nMiBvciBs
b2cyZi4KLWlubGluZSBkb3VibGUgbG9nMihkb3VibGUgbnVtKQotewotICAgIC8vIFRoaXMgY29u
c3RhbnQgaXMgcm91Z2hseSBNX0xOMiwgd2hpY2ggaXMgbm90IHByb3ZpZGVkIGJ5IGRlZmF1bHQg
b24gV2luZG93cy4KLSAgICByZXR1cm4gbG9nKG51bSkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQx
NzIzMjEyMTQ1ODE3NjU2ODsKLX0KLQotaW5saW5lIGZsb2F0IGxvZzJmKGZsb2F0IG51bSkKLXsK
LSAgICAvLyBUaGlzIGNvbnN0YW50IGlzIHJvdWdobHkgTV9MTjIsIHdoaWNoIGlzIG5vdCBwcm92
aWRlZCBieSBkZWZhdWx0IG9uIFdpbmRvd3MuCi0gICAgcmV0dXJuIGxvZ2YobnVtKSAvIDAuNjkz
MTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4ZjsKLX0KLQogLy8gV29yayBhcm91bmQg
YSBidWcgaW4gV2luLCB3aGVyZSBhdGFuMigrLWluZmluaXR5LCArLWluZmluaXR5KSB5aWVsZHMg
TmFOIGluc3RlYWQgb2Ygc3BlY2lmaWMgdmFsdWVzLgogaW5saW5lIGRvdWJsZSB3dGZfYXRhbjIo
ZG91YmxlIHgsIGRvdWJsZSB5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAppbmRleCA1ZTlhNzVmYWMyZmY1ZmRlNGE1ODFmNWNiNmU3YjYxOTViNzgyZjdiLi4wZTZmMDM4
OTQzYmFjNzM3MWUzZDc4YTdkMjBkMGZjNTVmYzFjMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cApAQCAtMTQ0MSw3ICsxNDQxLDcgQEAKICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgfSwKICAgICAgICAgfV0sCi0gICAgICAgIFsnT1MgIT0gImFuZHJvaWQiIGFuZCAi
V1RGX1VTRV9XRUJBVURJT19GRk1QRUc9MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywgeworICAgICAg
ICBbJyJXVEZfVVNFX1dFQkFVRElPX0ZGTVBFRz0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7CiAg
ICAgICAgICAgIyBUaGlzIGRpcmVjdG9yeSBuZWVkcyB0byBiZSBvbiB0aGUgaW5jbHVkZSBwYXRo
IGZvciBtdWx0aXBsZSBzdWItdGFyZ2V0cyBvZiB3ZWJjb3JlLgogICAgICAgICAgICdkaXJlY3Rf
ZGVwZW5kZW50X3NldHRpbmdzJzogewogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCmluZGV4IDE5
YTgwMGQzNWQzMmQwM2FiZjZmN2M3ZDU5OTY2YTY0Yjc5MGY2ZWQuLjZhMjdiZTVmNjc5ZWYwNDM0
MDY4ZWM5MjU1ZDMyOWFmZDg0NzM4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZURnJhbWVTdHViLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIEZGVEZyYW1lOjpt
dWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQordm9pZCBGRlRGcmFtZTo6
ZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMzVmODZjZjI0MTFhYzg4ZjUx
MGE2OTU5MzkwZTU4NmUxNTE3YTdkMC4uZjMwM2MxMjk2YTNhY2ZiM2E4MGRlYTNhMTk4ZDk4YjNl
ZjM0NDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtMTg3LDcgKzE4
Nyw3IEBACiAgICAgICAgIF0sCiAgICAgICB9XSwKICAgICAgICMgTWFjIE9TIFggdXNlcyBBY2Nl
bGVyYXRlLmZyYW1ld29yayBGRlQgYnkgZGVmYXVsdCBpbnN0ZWFkIG9mIEZGbXBlZy4KLSAgICAg
IFsnT1MhPSJtYWMiJywgeworICAgICAgWydPUyE9Im1hYyIgYW5kIE9TIT0iYW5kcm9pZCInLCB7
CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAgICAgICAgJ1dURl9VU0VfV0VCQVVE
SU9fRkZNUEVHPTEnLAogICAgICAgICBdLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>