<?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>67590</bug_id>
          
          <creation_ts>2011-09-05 01:32:55 -0700</creation_ts>
          <short_desc>Implement DRT support for Android.</short_desc>
          <delta_ts>2011-09-09 10:36:17 -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>Tools / Tests</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>
          
          <blocked>66689</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Hao Zheng">zhenghao</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>jnd</cc>
    
    <cc>ojan</cc>
    
    <cc>peter</cc>
    
    <cc>steveblock</cc>
    
    <cc>tony</cc>
    
    <cc>wangxianzhu</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462072</commentid>
    <comment_count>0</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-05 01:32:55 -0700</bug_when>
    <thetext>When testing on Android, we need to send input command for DRT from host machine to target device through &apos;adb shell&apos;, which is not that reliable. And it is also not reliable to receive DRT output from target device to host machine. So we add 2 mechanism to make DRT interaction more robust:
- Send &apos;QUIT&apos; to DRT to make it stop.
- Wait for receiving &apos;#READY&apos; from DRT, so that DRT won&apos;t miss any input commands before it starts.

And LayoutTestController.cpp needs to include &lt;cctype&gt; for &apos;tolower&apos; and &lt;clocale&gt; for &apos;LC_ALL&apos; to compile on Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462073</commentid>
    <comment_count>1</comment_count>
      <attachid>106315</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-05 01:39:33 -0700</bug_when>
    <thetext>Created attachment 106315
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462085</commentid>
    <comment_count>2</comment_count>
      <attachid>106315</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-05 02:46:07 -0700</bug_when>
    <thetext>Comment on attachment 106315
Proposed patch.

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

&gt; Tools/DumpRenderTree/chromium/DumpRenderTree.cpp:68
&gt; +static const char optionPrintReady[] = &quot;--print-ready&quot;;

&apos;print-ready&apos; seems like an odd name, as there&apos;s no visible printing as far as the user of the tool is concerned. How about &apos;send-ready-command&apos; or similar?

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:63
&gt; +#include &lt;clocale&gt;

Why are these needed on Android? If this is a deficiency in bionic, we should have a bug to track this, like in http://code.google.com/p/android/issues/detail?id=19764

&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:58
&gt; +    signal(SIGALRM, AlarmHandler);

The signal() man page recommends using sigaction() instead.

&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:77
&gt; +}

Will these methods ever be implemented? I think you should add a comment/FIXME/DCHECK etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462090</commentid>
    <comment_count>3</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-05 03:16:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 106315 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106315&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/DumpRenderTree.cpp:68
&gt; &gt; +static const char optionPrintReady[] = &quot;--print-ready&quot;;
&gt; 
&gt; &apos;print-ready&apos; seems like an odd name, as there&apos;s no visible printing as far as the user of the tool is concerned. How about &apos;send-ready-command&apos; or similar?
&gt; 

How about &apos;send-ready&apos;?

&gt; &gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:63
&gt; &gt; +#include &lt;clocale&gt;
&gt; 
&gt; Why are these needed on Android? If this is a deficiency in bionic, we should have a bug to track this, like in http://code.google.com/p/android/issues/detail?id=19764
&gt; 

I don&apos;t think it&apos;s a bug in bionic, because LC_ALL should be defined in clocale and tolower should be in cctype. I guess we can build DRT on other platforms because other headers happen to include the defines, so explicitly including the files here should be fine.

&gt; &gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:58
&gt; &gt; +    signal(SIGALRM, AlarmHandler);
&gt; 
&gt; The signal() man page recommends using sigaction() instead.
&gt; 

Ok.

&gt; &gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:77
&gt; &gt; +}
&gt; 
&gt; Will these methods ever be implemented? I think you should add a comment/FIXME/DCHECK etc.

I do not expect they will be implemented. Anyway, I will add some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462110</commentid>
    <comment_count>4</comment_count>
      <attachid>106315</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-05 04:11:23 -0700</bug_when>
    <thetext>Comment on attachment 106315
Proposed patch.

Attachment 106315 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9587794</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462341</commentid>
    <comment_count>5</comment_count>
      <attachid>106383</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-05 21:07:42 -0700</bug_when>
    <thetext>Created attachment 106383
Proposed patch 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462345</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-05 21:09:52 -0700</bug_when>
    <thetext>Attachment 106383 did not pass style-queue:

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

Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:57:  alarm_action is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:62:  Use 0 instead of NULL.  [readability/null] [5]
Tools/DumpRenderTree/chromium/TestShellGtk.cpp:177:  alarm_action is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Tools/DumpRenderTree/chromium/TestShellGtk.cpp:182:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 4 in 8 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>462356</commentid>
    <comment_count>7</comment_count>
      <attachid>106387</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-05 21:37:45 -0700</bug_when>
    <thetext>Created attachment 106387
Proposed patch 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462436</commentid>
    <comment_count>8</comment_count>
      <attachid>106387</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-06 02:35:41 -0700</bug_when>
    <thetext>Comment on attachment 106387
Proposed patch 3.

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

&gt; Source/WebKit/chromium/WebKit.gyp:1130
&gt; +                    # FIXME(zhenghao): Reserve for upstream in the near future.

This wasn&apos;t in the previous patch and I don&apos;t understand the comment. Can you explain?

&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:74
&gt; +// TODO: Implement the following metheds if needed.

WebKit uses FIXME, not TODO. And this is rather vague. If you don&apos;t know of a reason why they&apos;d be used, I don&apos;t think you should use a FIXME - use &apos;not required on Android&apos; or an ASSERT_NOT_REACHED(). This can always be changed if we later find a reason why they&apos;re needed.

&gt; Tools/DumpRenderTree/chromium/TestShellGtk.cpp:180
&gt; +    alarmAction.sa_flags = SA_RESETHAND;

Mention this fix in the ChangeLog

&gt; Tools/DumpRenderTree/chromium/TestShellGtk.cpp:-188
&gt; -    signal(SIGALRM, SIG_DFL);

Why don&apos;t we need to reset the previous handler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462443</commentid>
    <comment_count>9</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-06 02:53:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 106387 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106387&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gyp:1130
&gt; &gt; +                    # FIXME(zhenghao): Reserve for upstream in the near future.
&gt; 
&gt; This wasn&apos;t in the previous patch and I don&apos;t understand the comment. Can you explain?

See comment #4. It breaks other builds, so exclude the newly added file here in !os(android) part. And the os(android) part is reserved for patches in the near future.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:74
&gt; &gt; +// TODO: Implement the following metheds if needed.
&gt; 
&gt; WebKit uses FIXME, not TODO. And this is rather vague. If you don&apos;t know of a reason why they&apos;d be used, I don&apos;t think you should use a FIXME - use &apos;not required on Android&apos; or an ASSERT_NOT_REACHED(). This can always be changed if we later find a reason why they&apos;re needed.

We cannot use ASSERT_NOT_REACHED() there, because we will reach them. All we need to do is to provide an null implementation for now. &apos;not required&apos; is also not suitable, IMHO. I think no comment there is reasonable, like patch 1.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellGtk.cpp:180
&gt; &gt; +    alarmAction.sa_flags = SA_RESETHAND;
&gt; 
&gt; Mention this fix in the ChangeLog

Ok.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellGtk.cpp:-188
&gt; &gt; -    signal(SIGALRM, SIG_DFL);
&gt; 
&gt; Why don&apos;t we need to reset the previous handler?

alarmAction.sa_flags = SA_RESETHAND;
This will reset the handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462451</commentid>
    <comment_count>10</comment_count>
      <attachid>106403</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-06 03:50:47 -0700</bug_when>
    <thetext>Created attachment 106403
Proposed patch 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462711</commentid>
    <comment_count>11</comment_count>
      <attachid>106403</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-06 11:56:17 -0700</bug_when>
    <thetext>Comment on attachment 106403
Proposed patch 4.

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

&gt; Source/WebKit/chromium/WebKit.gyp:1131
&gt; +                [&apos;OS==&quot;android&quot;&apos;, {
&gt; +                    # FIXME(zhenghao): Reserve for upstream in the near future.
&gt; +                },{ # OS!=&quot;android&quot;

This is weird.  Just flip your condition (OS!=&quot;android&quot;) and remove the else clause.

&gt; Tools/ChangeLog:11
&gt; +        - Wait until receiving &apos;#READY&apos; from DRT, so that DRT won&apos;t miss any
&gt; +        input commands before it starts.

Can you explain your architecture to me?  It sounds like DRT runs on Android, but it&apos;s not clear to me if new-run-webkit-tests runs on Android or the desktop.

It seems unfortunate that DRT needs to acknowledge that it has started so I was trying to brainstorm ways to avoid this.

&gt; Tools/DumpRenderTree/chromium/DumpRenderTree.cpp:151
&gt; +    bool sendReady = false; // Effective only in testShellMode.

Maybe print a warning to stderr if --send-ready is used without --test-shell?

&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:41
&gt; +static void AlarmHandler(int signatl)

Nit: Remove signatl (WebKit style normally just omits unused params)?

&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:81
&gt; +{
&gt; +}

notImplemented()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463003</commentid>
    <comment_count>12</comment_count>
      <attachid>106403</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-06 17:01:33 -0700</bug_when>
    <thetext>Comment on attachment 106403
Proposed patch 4.

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

&gt;&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:81
&gt;&gt; +}
&gt; 
&gt; notImplemented()

I thought that notImplemented() was for methods that aren&apos;t (yet) implemented because we don&apos;t expect them to be called? I think that here, that&apos;s not the case. These methods are expected to be called, but the implementation is intentionally empty. Is there a function or macro to denote that, or is a comment best?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463034</commentid>
    <comment_count>13</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-06 18:18:04 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 106403 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106403&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:81
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; notImplemented()
&gt; 
&gt; I thought that notImplemented() was for methods that aren&apos;t (yet) implemented because we don&apos;t expect them to be called? I think that here, that&apos;s not the case. These methods are expected to be called, but the implementation is intentionally empty. Is there a function or macro to denote that, or is a comment best?

In that case, I agree that a comment would be better.  Something along the lines of, &quot;// Nothing to do here.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463048</commentid>
    <comment_count>14</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-06 18:38:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 106403 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106403&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gyp:1131
&gt; &gt; +                [&apos;OS==&quot;android&quot;&apos;, {
&gt; &gt; +                    # FIXME(zhenghao): Reserve for upstream in the near future.
&gt; &gt; +                },{ # OS!=&quot;android&quot;
&gt; 
&gt; This is weird.  Just flip your condition (OS!=&quot;android&quot;) and remove the else clause.

I will upstream some stuff in the first brace very soon. Is it acceptable to leave it there? If not, I can remove it.
My intention here is to facilitate our regular merge effort. It will generate minimum diff when we merge upstream code now.

&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +        - Wait until receiving &apos;#READY&apos; from DRT, so that DRT won&apos;t miss any
&gt; &gt; +        input commands before it starts.
&gt; 
&gt; Can you explain your architecture to me?  It sounds like DRT runs on Android, but it&apos;s not clear to me if new-run-webkit-tests runs on Android or the desktop.

Sure! I intend to elaborate on that when I upstream NRWT. Anyway, let me explain it here.

NRWT on host machine (linux/mac)
                 |
Android shell connecting host and device (adb shell)
                 |
DRT on Android

As Android shell is rather limited, we cannot run NRWT on it. &apos;adb shell&apos; can forward stdin/stdout between host and device, but unfortunately it doesn&apos;t ensure integrity, like an unreliable &apos;pipe&apos;.

&gt; 
&gt; It seems unfortunate that DRT needs to acknowledge that it has started so I was trying to brainstorm ways to avoid this.

If we send the first command to &apos;adb shell&apos; and unfortunately DRT is not ready to receive stdin at that time, &apos;adb shell&apos; will throw the command away. Then NRWT will wait for the DRT output, and DRT will wait for the NRWT input, which becomes a dead lock. That&apos;s why we need a way to make sure DRT is ready when NRWT sends the first command.

And &apos;adb shell&apos; is also not reliable to send the EOF to DRT, so we add the &apos;QUIT&apos; command.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/DumpRenderTree.cpp:151
&gt; &gt; +    bool sendReady = false; // Effective only in testShellMode.
&gt; 
&gt; Maybe print a warning to stderr if --send-ready is used without --test-shell?

Ok.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:41
&gt; &gt; +static void AlarmHandler(int signatl)
&gt; 
&gt; Nit: Remove signatl (WebKit style normally just omits unused params)?

Ok.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:81
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; notImplemented()

As Steve said, I intentionally leave them empty. If I put notImplemented() there, DRT will output annoying warning every time the functions are reached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463201</commentid>
    <comment_count>15</comment_count>
      <attachid>106550</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-07 00:10:42 -0700</bug_when>
    <thetext>Created attachment 106550
Proposed patch 5.

&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/chromium/TestShellGtk.cpp:-188
&gt; &gt; &gt; -    signal(SIGALRM, SIG_DFL);
&gt; &gt; 
&gt; &gt; Why don&apos;t we need to reset the previous handler?
&gt; 
&gt; alarmAction.sa_flags = SA_RESETHAND;
&gt; This will reset the handler.

Sorry, I&apos;m wrong at this point. SA_RESETHAND will only reset handler when the signal is received. Seems we only need to install the handler once for DRT, and no need to install&amp;reset handler for every test. But I still keep it the old way here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463395</commentid>
    <comment_count>16</comment_count>
      <attachid>106550</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-07 09:49:32 -0700</bug_when>
    <thetext>Comment on attachment 106550
Proposed patch 5.

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

This patch is OK, but I&apos;m worried it&apos;s going to hurt us in the long run.  Specifically, we want to move away from the --test-shell API and switch to the same API as the other DRTs.  This patch is basically adding a third API that we have to support.

That said, handling QUIT seems pretty harmless. I would perhaps remove the --send-ready command line option and just put that in platformInit() since I doubt the other chromium ports will ever use that flag.

I think most of the difficulty in maintaining this is going to end up in new-run-webkit-tests.  Maybe abarth or dpranke have an opinion about this.

&gt; Source/WebKit/chromium/WebKit.gyp:1131
&gt; +                [&apos;OS==&quot;android&quot;&apos;, {
&gt; +                    # FIXME(zhenghao): Reserve for upstream in the near future.
&gt; +                },{ # OS!=&quot;android&quot;

Nit: I would still remove this and empty block and just add it in the next patch.

&gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:84
&gt; +void openStartupDialog()
&gt; +{
&gt; +    // Nothing to do here.
&gt; +}

On second thought, I think a notImplemented() is appropriate here.  You only get here if --testshell-startup-dialog is passed on the command line (normally for debugging).  It seems like in that case you would want to print something to stdout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463802</commentid>
    <comment_count>17</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-07 18:25:40 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 106550 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106550&amp;action=review
&gt; 
&gt; This patch is OK, but I&apos;m worried it&apos;s going to hurt us in the long run.  Specifically, we want to move away from the --test-shell API and switch to the same API as the other DRTs.  This patch is basically adding a third API that we have to support.
&gt; 
&gt; That said, handling QUIT seems pretty harmless. I would perhaps remove the --send-ready command line option and just put that in platformInit() since I doubt the other chromium ports will ever use that flag.

I have tried to put it there, but platformInit is too early in execution and flakiness still happens on Android. I admit it is only useful to Android, but I cannot come to a better way for now. When changing the --test-shell API, we can change it accordingly.

&gt; 
&gt; I think most of the difficulty in maintaining this is going to end up in new-run-webkit-tests.  Maybe abarth or dpranke have an opinion about this.
&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gyp:1131
&gt; &gt; +                [&apos;OS==&quot;android&quot;&apos;, {
&gt; &gt; +                    # FIXME(zhenghao): Reserve for upstream in the near future.
&gt; &gt; +                },{ # OS!=&quot;android&quot;
&gt; 
&gt; Nit: I would still remove this and empty block and just add it in the next patch.

Ok.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellAndroid.cpp:84
&gt; &gt; +void openStartupDialog()
&gt; &gt; +{
&gt; &gt; +    // Nothing to do here.
&gt; &gt; +}
&gt; 
&gt; On second thought, I think a notImplemented() is appropriate here.  You only get here if --testshell-startup-dialog is passed on the command line (normally for debugging).  It seems like in that case you would want to print something to stdout.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463809</commentid>
    <comment_count>18</comment_count>
      <attachid>106678</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-07 18:41:08 -0700</bug_when>
    <thetext>Created attachment 106678
Proposed patch 6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464318</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-08 13:47:46 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 106550 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106550&amp;action=review
&gt; &gt; 
&gt; &gt; This patch is OK, but I&apos;m worried it&apos;s going to hurt us in the long run.  Specifically, we want to move away from the --test-shell API and switch to the same API as the other DRTs.  This patch is basically adding a third API that we have to support.
&gt; &gt; 
&gt; &gt; That said, handling QUIT seems pretty harmless. I would perhaps remove the --send-ready command line option and just put that in platformInit() since I doubt the other chromium ports will ever use that flag.
&gt; 
&gt; I have tried to put it there, but platformInit is too early in execution and flakiness still happens on Android. I admit it is only useful to Android, but I cannot come to a better way for now. When changing the --test-shell API, we can change it accordingly.

Can we put this behind an #if OS(ANDROID) block?  That seems like less complexity than a command line flag.

With that change, this LGTM, but I think we want to hide as much of the differences in NRWT as possible.  For example, rather than sending QUIT to drt, can we use adb to get the pid and send a kill command?  Or rather than having drt print #READY, can we send test URLs until we get text back from DRT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464541</commentid>
    <comment_count>20</comment_count>
      <attachid>106822</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-08 18:00:02 -0700</bug_when>
    <thetext>Created attachment 106822
Proposed patch 7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464545</commentid>
    <comment_count>21</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2011-09-08 18:02:32 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; (From update of attachment 106550 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106550&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; This patch is OK, but I&apos;m worried it&apos;s going to hurt us in the long run.  Specifically, we want to move away from the --test-shell API and switch to the same API as the other DRTs.  This patch is basically adding a third API that we have to support.
&gt; &gt; &gt; 
&gt; &gt; &gt; That said, handling QUIT seems pretty harmless. I would perhaps remove the --send-ready command line option and just put that in platformInit() since I doubt the other chromium ports will ever use that flag.
&gt; &gt; 
&gt; &gt; I have tried to put it there, but platformInit is too early in execution and flakiness still happens on Android. I admit it is only useful to Android, but I cannot come to a better way for now. When changing the --test-shell API, we can change it accordingly.
&gt; 
&gt; Can we put this behind an #if OS(ANDROID) block?  That seems like less complexity than a command line flag.

Ok. Good idea. Maybe this is better.

&gt; 
&gt; With that change, this LGTM, but I think we want to hide as much of the differences in NRWT as possible.  For example, rather than sending QUIT to drt, can we use adb to get the pid and send a kill command?  Or rather than having drt print #READY, can we send test URLs until we get text back from DRT?

I will investigate the possibilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464884</commentid>
    <comment_count>22</comment_count>
      <attachid>106822</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 10:36:11 -0700</bug_when>
    <thetext>Comment on attachment 106822
Proposed patch 7.

Clearing flags on attachment: 106822

Committed r94862: &lt;http://trac.webkit.org/changeset/94862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464885</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 10:36:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106315</attachid>
            <date>2011-09-05 01:39:33 -0700</date>
            <delta_ts>2011-09-05 21:07:42 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>DRT.patch</filename>
            <type>text/plain</type>
            <size>7995</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0NTE3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTEtMDktMDUgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIDIgbWVj
aGFuaXNtIHRvIG1ha2UgRFJUIGludGVyYWN0aW9uIG1vcmUgcm9idXN0IG9uIEFuZHJvaWQ6Cisg
ICAgICAgIC0gU2VuZCAnUVVJVCcgdG8gRFJUIHRvIG1ha2UgaXQgc3RvcC4KKyAgICAgICAgLSBX
YWl0IHVudGlsIHJlY2VpdmluZyAnI1JFQURZJyBmcm9tIERSVCwgc28gdGhhdCBEUlQgd29uJ3Qg
bWlzcyBhbnkKKyAgICAgICAgaW5wdXQgY29tbWFuZHMgYmVmb3JlIGl0IHN0YXJ0cy4KKyAgICAg
ICAgQW5kIExheW91dFRlc3RDb250cm9sbGVyLmNwcCBuZWVkcyB0byBpbmNsdWRlIDxjY3R5cGU+
IGZvciAndG9sb3dlcicKKyAgICAgICAgYW5kIDxjbG9jYWxlPiBmb3IgJ0xDX0FMTCcgdG8gY29t
cGlsZSBvbiBBbmRyb2lkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVuZGVyVHJl
ZS5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHA6IEFkZGVkLgorICAgICAgICAoQWxhcm1IYW5kbGVy
KToKKyAgICAgICAgKFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCk6CisgICAgICAgIChwbGF0
Zm9ybUluaXQpOgorICAgICAgICAob3BlblN0YXJ0dXBEaWFsb2cpOgorICAgICAgICAoY2hlY2tM
YXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKToKKwogMjAxMS0wOS0wNCAgUm9iaW4gRHVubiAg
PHJvYmluQGFsbGR1bm4uY29tPgogCiAgICAgICAgIFt3eF0gRW5hYmxlIHd4V2ViS2l0IHRvIHJ1
biB1c2luZyB0aGUgd3hHQyBDYWlybyBiYWNrZW5kIG9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIEdU
Sy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkocmV2aXNp
b24gOTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dE5hdmlnYXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5oJywKKyAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1t
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlz
aW9uIDk0MzgzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRy
ZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
IG9wdGlvblN0cmVzc09wdFtdID0gIi0KIHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvblN0cmVzc0Rl
b3B0W10gPSAiLS1zdHJlc3MtZGVvcHQiOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0aW9uSmF2YVNj
cmlwdEZsYWdzW10gPSAiLS1qcy1mbGFncz0iOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0aW9uTm9U
aW1lb3V0W10gPSAiLS1uby10aW1lb3V0IjsKK3N0YXRpYyBjb25zdCBjaGFyIG9wdGlvblByaW50
UmVhZHlbXSA9ICItLXByaW50LXJlYWR5IjsKIAogY2xhc3MgV2ViS2l0U3VwcG9ydFRlc3RFbnZp
cm9ubWVudCB7CiBwdWJsaWM6CkBAIC0xNDcsNiArMTQ4LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICBib29sIGhhcmR3YXJlQWNjZWxlcmF0ZWRHTCA9IGZhbHNlOwog
ICAgIHN0cmluZyBqYXZhU2NyaXB0RmxhZ3M7CiAgICAgYm9vbCBub1RpbWVvdXQgPSBmYWxzZTsK
KyAgICBib29sIHByaW50UmVhZHkgPSBmYWxzZTsgLy8gRWZmZWN0aXZlIG9ubHkgaW4gdGVzdFNo
ZWxsTW9kZS4KICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICBz
dHJpbmcgYXJndW1lbnQoYXJndltpXSk7CiAgICAgICAgIGlmIChhcmd1bWVudCA9PSAiLSIpCkBA
IC0yMDEsNiArMjAzLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAg
ICAgICAgIGphdmFTY3JpcHRGbGFncyA9IGFyZ3VtZW50LnN1YnN0cihzdHJsZW4ob3B0aW9uSmF2
YVNjcmlwdEZsYWdzKSk7CiAgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50ID09IG9wdGlvbk5vVGlt
ZW91dCkKICAgICAgICAgICAgIG5vVGltZW91dCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGFy
Z3VtZW50ID09IG9wdGlvblByaW50UmVhZHkpCisgICAgICAgICAgICBwcmludFJlYWR5ID0gdHJ1
ZTsKICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnQuc2l6ZSgpICYmIGFyZ3VtZW50WzBdID09ICct
JykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biBvcHRpb246ICVzXG4iLCBh
cmd2W2ldKTsKICAgICAgICAgZWxzZQpAQCAtMjM3LDYgKzI0MSwxMCBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKQogICAgICAgICAgICAgc2hlbGwuc2V0TGF5b3V0VGVzdFRpbWVv
dXQoMHgyMDAwMDAwMCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNlcnZlck1vZGUgJiYgIXRl
c3RzLnNpemUoKSkgeworICAgICAgICAgICAgaWYgKHByaW50UmVhZHkpIHsKKyAgICAgICAgICAg
ICAgICBwdXRzKCIjUkVBRFkiKTsKKyAgICAgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHBhcmFtcy5wcmludFNlcGFyYXRvcnMgPSB0cnVlOwog
ICAgICAgICAgICAgY2hhciB0ZXN0U3RyaW5nWzIwNDhdOyAvLyAyMDQ4IGlzIHRoZSBzYW1lIGFz
IHRoZSBzaXplcyBvZiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgICAgICB3aGlsZSAoZmdldHMo
dGVzdFN0cmluZywgc2l6ZW9mKHRlc3RTdHJpbmcpLCBzdGRpbikpIHsKQEAgLTI0NSwxMCArMjUz
LDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAg
ICAgICpuZXdMaW5lUG9zaXRpb24gPSAnXDAnOwogICAgICAgICAgICAgICAgIGlmICh0ZXN0U3Ry
aW5nWzBdID09ICdcMCcpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIC8vIEV4cGxpY2l0bHkgcXVpdCBvbiBwbGF0Zm9ybXMgd2hlcmUgRU9GIGlzIG5vdCBy
ZWxpYWJsZS4KKyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0U3RyaW5nLCAiUVVJVCIp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBydW5UZXN0KHNo
ZWxsLCBwYXJhbXMsIHRlc3RTdHJpbmcsIHRlc3RTaGVsbE1vZGUpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0cy5zaXplKCkpCi0gICAgICAgICAgICBwcmludGYoIiNF
T0ZcbiIpOworICAgICAgICAgICAgcHV0cygiI0VPRiIpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIHBhcmFtcy5wcmludFNlcGFyYXRvcnMgPSB0ZXN0cy5zaXplKCkgPiAxOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRlc3RzLnNpemUoKTsgaSsrKQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gOTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5
LDggQEAKICNpbmNsdWRlICJXZWJWaWV3SG9zdC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNjdHlw
ZT4KKyNpbmNsdWRlIDxjbG9jYWxlPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAJKHJldmlzaW9u
IDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXN0U2hlbGwuaCIKKworI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJX
ZWJWaWV3LmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKwor
I2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgdm9pZCBB
bGFybUhhbmRsZXIoaW50IHNpZ25hdGwpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQs
IGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBw
dXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZs
dXNoKHN0ZG91dCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50
KCk7CisgICAgZXhpdCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQo
KQoreworICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKworICAgIG1fdGVzdElzUGVuZGlu
ZyA9IHRydWU7CisKKyAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQg
d2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgorICAgIHNpZ25hbChTSUdBTFJNLCBBbGFybUhh
bmRsZXIpOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDAp
OworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJy
ZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmluaXNoZXMgbG9hZGluZy4KKyAg
ICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVz
c2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCisgICAgYWxhcm0oMCk7Cisg
ICAgc2lnbmFsKFNJR0FMUk0sIFNJR19ERkwpOworfQorCit2b2lkIHBsYXRmb3JtSW5pdChpbnQq
IGFyZ2MsIGNoYXIqKiogYXJndikKK3sKK30KKwordm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCit7
Cit9CisKK2Jvb2wgY2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKCkKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoK
</data>
<flag name="commit-queue"
          id="102721"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106383</attachid>
            <date>2011-09-05 21:07:42 -0700</date>
            <delta_ts>2011-09-05 21:37:45 -0700</delta_ts>
            <desc>Proposed patch 2.</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>10742</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDktMDUgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVkZSBBbmRyb2lk
IHNwZWNpZmljIGZpbGVzIG9mIERSVCBmcm9tIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMDktMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBtdXRsaXBsZSB0byBXZWJQb3B1cE1lbnVJbmZv
IGZvciBBbmRyb2lkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA5
NDM4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5
KQpAQCAtMTEyNiw2ICsxMTI2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnKEd0a3xMaW51eClcXC5jcHAkJ10KICAgICAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKKyAgICAg
ICAgICAgICAgICAgICAgIyBGSVhNRSh6aGVuZ2hhbyk6IFJlc2VydmUgZm9yIHVwc3RyZWFtIGlu
IHRoZSBuZWFyIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICB9LHsgIyBPUyE9ImFuZHJvaWQiCisg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsnZXhjbHVkZScsICcoQW5kcm9pZClcXC5jcHAkJ10KKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9i
dWlsZD09MSBhbmQgY29tcG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvQ2hyb21p
dW1DdXJyZW50VGltZS5jcHAnLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1NDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wOS0wNSAgSGFvIFpoZW5nICA8emhl
bmdoYW9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IERSVCBz
dXBwb3J0IGZvciBBbmRyb2lkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njc1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgMiBtZWNoYW5pc20gdG8gbWFrZSBEUlQgaW50ZXJhY3Rpb24gbW9yZSBy
b2J1c3Qgb24gQW5kcm9pZDoKKyAgICAgICAgLSBTZW5kICdRVUlUJyB0byBEUlQgdG8gbWFrZSBp
dCBzdG9wLgorICAgICAgICAtIFdhaXQgdW50aWwgcmVjZWl2aW5nICcjUkVBRFknIGZyb20gRFJU
LCBzbyB0aGF0IERSVCB3b24ndCBtaXNzIGFueQorICAgICAgICBpbnB1dCBjb21tYW5kcyBiZWZv
cmUgaXQgc3RhcnRzLgorICAgICAgICBBbmQgTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIG5lZWRz
IHRvIGluY2x1ZGUgPGNjdHlwZT4gZm9yICd0b2xvd2VyJworICAgICAgICBhbmQgPGNsb2NhbGU+
IGZvciAnTENfQUxMJyB0byBjb21waWxlIG9uIEFuZHJvaWQuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcDogQWRkZWQuCisg
ICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlz
aGVkKToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgIChvcGVuU3RhcnR1cERpYWxv
Zyk6CisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHA6CisgICAgICAgIChU
ZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorCiAyMDExLTA5LTA1ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgdGFiIHRvIGdhcmRlbi1vLW1hdGlj
IGZvciB2aWV3aW5nIGV4cGVjdGVkIGZhaWx1cmVzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkJKHJldmlzaW9uIDk0MzgzKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGwuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbScsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsV2luLmNwcCcsCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1w
UmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA5NDM4MykKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NiArNjUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBvcHRpb25TdHJlc3NPcHRbXSA9ICItCiBzdGF0
aWMgY29uc3QgY2hhciBvcHRpb25TdHJlc3NEZW9wdFtdID0gIi0tc3RyZXNzLWRlb3B0IjsKIHN0
YXRpYyBjb25zdCBjaGFyIG9wdGlvbkphdmFTY3JpcHRGbGFnc1tdID0gIi0tanMtZmxhZ3M9IjsK
IHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvbk5vVGltZW91dFtdID0gIi0tbm8tdGltZW91dCI7Citz
dGF0aWMgY29uc3QgY2hhciBvcHRpb25TZW5kUmVhZHlbXSA9ICItLXNlbmQtcmVhZHkiOwogCiBj
bGFzcyBXZWJLaXRTdXBwb3J0VGVzdEVudmlyb25tZW50IHsKIHB1YmxpYzoKQEAgLTE0Nyw2ICsx
NDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIGJvb2wgaGFyZHdh
cmVBY2NlbGVyYXRlZEdMID0gZmFsc2U7CiAgICAgc3RyaW5nIGphdmFTY3JpcHRGbGFnczsKICAg
ICBib29sIG5vVGltZW91dCA9IGZhbHNlOworICAgIGJvb2wgc2VuZFJlYWR5ID0gZmFsc2U7IC8v
IEVmZmVjdGl2ZSBvbmx5IGluIHRlc3RTaGVsbE1vZGUuCiAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBhcmdjOyArK2kpIHsKICAgICAgICAgc3RyaW5nIGFyZ3VtZW50KGFyZ3ZbaV0pOwogICAgICAg
ICBpZiAoYXJndW1lbnQgPT0gIi0iKQpAQCAtMjAxLDYgKzIwMyw4IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBqYXZhU2NyaXB0RmxhZ3MgPSBhcmd1bWVu
dC5zdWJzdHIoc3RybGVuKG9wdGlvbkphdmFTY3JpcHRGbGFncykpOwogICAgICAgICBlbHNlIGlm
IChhcmd1bWVudCA9PSBvcHRpb25Ob1RpbWVvdXQpCiAgICAgICAgICAgICBub1RpbWVvdXQgPSB0
cnVlOworICAgICAgICBlbHNlIGlmIChhcmd1bWVudCA9PSBvcHRpb25TZW5kUmVhZHkpCisgICAg
ICAgICAgICBzZW5kUmVhZHkgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChhcmd1bWVudC5zaXpl
KCkgJiYgYXJndW1lbnRbMF0gPT0gJy0nKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJV
bmtub3duIG9wdGlvbjogJXNcbiIsIGFyZ3ZbaV0pOwogICAgICAgICBlbHNlCkBAIC0yMzcsNiAr
MjQxLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBz
aGVsbC5zZXRMYXlvdXRUZXN0VGltZW91dCgweDIwMDAwMDAwKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoc2VydmVyTW9kZSAmJiAhdGVzdHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoc2Vu
ZFJlYWR5KSB7CisgICAgICAgICAgICAgICAgcHV0cygiI1JFQURZIik7CisgICAgICAgICAgICAg
ICAgZmZsdXNoKHN0ZG91dCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwYXJhbXMucHJp
bnRTZXBhcmF0b3JzID0gdHJ1ZTsKICAgICAgICAgICAgIGNoYXIgdGVzdFN0cmluZ1syMDQ4XTsg
Ly8gMjA0OCBpcyB0aGUgc2FtZSBhcyB0aGUgc2l6ZXMgb2Ygb3RoZXIgcGxhdGZvcm1zLgogICAg
ICAgICAgICAgd2hpbGUgKGZnZXRzKHRlc3RTdHJpbmcsIHNpemVvZih0ZXN0U3RyaW5nKSwgc3Rk
aW4pKSB7CkBAIC0yNDUsMTAgKzI1MywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJn
dltdKQogICAgICAgICAgICAgICAgICAgICAqbmV3TGluZVBvc2l0aW9uID0gJ1wwJzsKICAgICAg
ICAgICAgICAgICBpZiAodGVzdFN0cmluZ1swXSA9PSAnXDAnKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAvLyBFeHBsaWNpdGx5IHF1aXQgb24gcGxhdGZv
cm1zIHdoZXJlIEVPRiBpcyBub3QgcmVsaWFibGUuCisgICAgICAgICAgICAgICAgaWYgKCFzdHJj
bXAodGVzdFN0cmluZywgIlFVSVQiKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgcnVuVGVzdChzaGVsbCwgcGFyYW1zLCB0ZXN0U3RyaW5nLCB0ZXN0U2hlbGxN
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghdGVzdHMuc2l6ZSgpKQot
ICAgICAgICAgICAgcHJpbnRmKCIjRU9GXG4iKTsKKyAgICAgICAgICAgIHB1dHMoIiNFT0YiKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwYXJhbXMucHJpbnRTZXBhcmF0b3JzID0gdGVz
dHMuc2l6ZSgpID4gMTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXN0
cy5zaXplKCk7IGkrKykKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk0MzgzKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBACiAjaW5jbHVkZSAiV2ViVmlld0hvc3QuaCIKICNp
bmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxjY3R5cGU+CisjaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxj
c3RkbGliPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bEFuZHJvaWQuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5
cGVmYWNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKworc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCBzaWduYXRsKQoreworICAgIC8v
IElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSBy
ZWFsbHkgYmFkIGhhbmcuCisgICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1
dHMoIiNFT0ZcbiIpOworICAgIGZmbHVzaChzdGRvdXQpOworICAgIHdlYmtpdF9zdXBwb3J0OjpU
ZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOworICAgIGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVzdFNo
ZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7
CisgICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIEluc3RhbGwgYW4gYWxhcm0g
c2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCisgICAgc3Ry
dWN0IHNpZ2FjdGlvbiBhbGFybV9hY3Rpb247CisgICAgYWxhcm1fYWN0aW9uLnNhX2hhbmRsZXIg
PSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtX2FjdGlvbi5zYV9tYXNrKTsK
KyAgICBhbGFybV9hY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNFVEhBTkQ7CisKKyAgICBzaWdhY3Rp
b24oU0lHQUxSTSwgJmFsYXJtX2FjdGlvbiwgTlVMTCk7CisgICAgYWxhcm0obGF5b3V0VGVzdFRp
bWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CisKKyAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxs
IHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKKyAg
ICAvLyBmaW5pc2hlcyBsb2FkaW5nLgorICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCisgICAg
ICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworCisgICAgLy8gUmVtb3ZlIHRo
ZSBhbGFybS4KKyAgICBhbGFybSgwKTsKK30KKworLy8gVE9ETzogSW1wbGVtZW50IHRoZSBmb2xs
b3dpbmcgbWV0aGVkcyBpZiBuZWVkZWQuCit2b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNo
YXIqKiogYXJndikKK3sKK30KKwordm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCit7Cit9CisKK2Jv
b2wgY2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKCkKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbEFuZHJvaWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
R3RrLmNwcAkocmV2aXNpb24gOTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGxHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMTEgKzE3MSwxNSBAQCBz
dGF0aWMgdm9pZCBzZXR1cEZvbnRjb25maWcoKQogdm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0Rmlu
aXNoZWQoKQogewogICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKLQogICAgIG1fdGVzdElz
UGVuZGluZyA9IHRydWU7CiAKICAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVy
IHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgotICAgIHNpZ25hbChTSUdBTFJNLCBB
bGFybUhhbmRsZXIpOworICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1fYWN0aW9uOworICAgIGFs
YXJtX2FjdGlvbi5zYV9oYW5kbGVyID0gQWxhcm1IYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZh
bGFybV9hY3Rpb24uc2FfbWFzayk7CisgICAgYWxhcm1fYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVT
RVRIQU5EOworCisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybV9hY3Rpb24sIE5VTEwpOwog
ICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOwogCiAgICAg
Ly8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMg
bG9vcCB3aGVuIHRoZSBwYWdlCkBAIC0xODUsNyArMTg5LDYgQEAgdm9pZCBUZXN0U2hlbGw6Ondh
aXRUZXN0RmluaXNoZWQoKQogCiAgICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KICAgICBhbGFybSgw
KTsKLSAgICBzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7CiB9CiAKIHZvaWQgcGxhdGZvcm1Jbml0
KGludCogYXJnYywgY2hhcioqKiBhcmd2KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106387</attachid>
            <date>2011-09-05 21:37:45 -0700</date>
            <delta_ts>2011-09-06 03:50:47 -0700</delta_ts>
            <desc>Proposed patch 3.</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>10726</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDktMDUgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVkZSBBbmRyb2lk
IHNwZWNpZmljIGZpbGVzIG9mIERSVCBmcm9tIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMDktMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBtdXRsaXBsZSB0byBXZWJQb3B1cE1lbnVJbmZv
IGZvciBBbmRyb2lkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA5
NDM4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5
KQpAQCAtMTEyNiw2ICsxMTI2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnKEd0a3xMaW51eClcXC5jcHAkJ10KICAgICAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKKyAgICAg
ICAgICAgICAgICAgICAgIyBGSVhNRSh6aGVuZ2hhbyk6IFJlc2VydmUgZm9yIHVwc3RyZWFtIGlu
IHRoZSBuZWFyIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICB9LHsgIyBPUyE9ImFuZHJvaWQiCisg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsnZXhjbHVkZScsICcoQW5kcm9pZClcXC5jcHAkJ10KKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9i
dWlsZD09MSBhbmQgY29tcG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvQ2hyb21p
dW1DdXJyZW50VGltZS5jcHAnLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1NDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wOS0wNSAgSGFvIFpoZW5nICA8emhl
bmdoYW9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IERSVCBz
dXBwb3J0IGZvciBBbmRyb2lkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njc1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgMiBtZWNoYW5pc20gdG8gbWFrZSBEUlQgaW50ZXJhY3Rpb24gbW9yZSBy
b2J1c3Qgb24gQW5kcm9pZDoKKyAgICAgICAgLSBTZW5kICdRVUlUJyB0byBEUlQgdG8gbWFrZSBp
dCBzdG9wLgorICAgICAgICAtIFdhaXQgdW50aWwgcmVjZWl2aW5nICcjUkVBRFknIGZyb20gRFJU
LCBzbyB0aGF0IERSVCB3b24ndCBtaXNzIGFueQorICAgICAgICBpbnB1dCBjb21tYW5kcyBiZWZv
cmUgaXQgc3RhcnRzLgorICAgICAgICBBbmQgTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIG5lZWRz
IHRvIGluY2x1ZGUgPGNjdHlwZT4gZm9yICd0b2xvd2VyJworICAgICAgICBhbmQgPGNsb2NhbGU+
IGZvciAnTENfQUxMJyB0byBjb21waWxlIG9uIEFuZHJvaWQuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcDogQWRkZWQuCisg
ICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlz
aGVkKToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgIChvcGVuU3RhcnR1cERpYWxv
Zyk6CisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHA6CisgICAgICAgIChU
ZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorCiAyMDExLTA5LTA1ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgdGFiIHRvIGdhcmRlbi1vLW1hdGlj
IGZvciB2aWV3aW5nIGV4cGVjdGVkIGZhaWx1cmVzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkJKHJldmlzaW9uIDk0MzgzKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGwuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbScsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsV2luLmNwcCcsCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1w
UmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA5NDM4MykKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NiArNjUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBvcHRpb25TdHJlc3NPcHRbXSA9ICItCiBzdGF0
aWMgY29uc3QgY2hhciBvcHRpb25TdHJlc3NEZW9wdFtdID0gIi0tc3RyZXNzLWRlb3B0IjsKIHN0
YXRpYyBjb25zdCBjaGFyIG9wdGlvbkphdmFTY3JpcHRGbGFnc1tdID0gIi0tanMtZmxhZ3M9IjsK
IHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvbk5vVGltZW91dFtdID0gIi0tbm8tdGltZW91dCI7Citz
dGF0aWMgY29uc3QgY2hhciBvcHRpb25TZW5kUmVhZHlbXSA9ICItLXNlbmQtcmVhZHkiOwogCiBj
bGFzcyBXZWJLaXRTdXBwb3J0VGVzdEVudmlyb25tZW50IHsKIHB1YmxpYzoKQEAgLTE0Nyw2ICsx
NDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIGJvb2wgaGFyZHdh
cmVBY2NlbGVyYXRlZEdMID0gZmFsc2U7CiAgICAgc3RyaW5nIGphdmFTY3JpcHRGbGFnczsKICAg
ICBib29sIG5vVGltZW91dCA9IGZhbHNlOworICAgIGJvb2wgc2VuZFJlYWR5ID0gZmFsc2U7IC8v
IEVmZmVjdGl2ZSBvbmx5IGluIHRlc3RTaGVsbE1vZGUuCiAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBhcmdjOyArK2kpIHsKICAgICAgICAgc3RyaW5nIGFyZ3VtZW50KGFyZ3ZbaV0pOwogICAgICAg
ICBpZiAoYXJndW1lbnQgPT0gIi0iKQpAQCAtMjAxLDYgKzIwMyw4IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBqYXZhU2NyaXB0RmxhZ3MgPSBhcmd1bWVu
dC5zdWJzdHIoc3RybGVuKG9wdGlvbkphdmFTY3JpcHRGbGFncykpOwogICAgICAgICBlbHNlIGlm
IChhcmd1bWVudCA9PSBvcHRpb25Ob1RpbWVvdXQpCiAgICAgICAgICAgICBub1RpbWVvdXQgPSB0
cnVlOworICAgICAgICBlbHNlIGlmIChhcmd1bWVudCA9PSBvcHRpb25TZW5kUmVhZHkpCisgICAg
ICAgICAgICBzZW5kUmVhZHkgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChhcmd1bWVudC5zaXpl
KCkgJiYgYXJndW1lbnRbMF0gPT0gJy0nKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJV
bmtub3duIG9wdGlvbjogJXNcbiIsIGFyZ3ZbaV0pOwogICAgICAgICBlbHNlCkBAIC0yMzcsNiAr
MjQxLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBz
aGVsbC5zZXRMYXlvdXRUZXN0VGltZW91dCgweDIwMDAwMDAwKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoc2VydmVyTW9kZSAmJiAhdGVzdHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoc2Vu
ZFJlYWR5KSB7CisgICAgICAgICAgICAgICAgcHV0cygiI1JFQURZIik7CisgICAgICAgICAgICAg
ICAgZmZsdXNoKHN0ZG91dCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwYXJhbXMucHJp
bnRTZXBhcmF0b3JzID0gdHJ1ZTsKICAgICAgICAgICAgIGNoYXIgdGVzdFN0cmluZ1syMDQ4XTsg
Ly8gMjA0OCBpcyB0aGUgc2FtZSBhcyB0aGUgc2l6ZXMgb2Ygb3RoZXIgcGxhdGZvcm1zLgogICAg
ICAgICAgICAgd2hpbGUgKGZnZXRzKHRlc3RTdHJpbmcsIHNpemVvZih0ZXN0U3RyaW5nKSwgc3Rk
aW4pKSB7CkBAIC0yNDUsMTAgKzI1MywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJn
dltdKQogICAgICAgICAgICAgICAgICAgICAqbmV3TGluZVBvc2l0aW9uID0gJ1wwJzsKICAgICAg
ICAgICAgICAgICBpZiAodGVzdFN0cmluZ1swXSA9PSAnXDAnKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAvLyBFeHBsaWNpdGx5IHF1aXQgb24gcGxhdGZv
cm1zIHdoZXJlIEVPRiBpcyBub3QgcmVsaWFibGUuCisgICAgICAgICAgICAgICAgaWYgKCFzdHJj
bXAodGVzdFN0cmluZywgIlFVSVQiKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgcnVuVGVzdChzaGVsbCwgcGFyYW1zLCB0ZXN0U3RyaW5nLCB0ZXN0U2hlbGxN
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghdGVzdHMuc2l6ZSgpKQot
ICAgICAgICAgICAgcHJpbnRmKCIjRU9GXG4iKTsKKyAgICAgICAgICAgIHB1dHMoIiNFT0YiKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwYXJhbXMucHJpbnRTZXBhcmF0b3JzID0gdGVz
dHMuc2l6ZSgpID4gMTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXN0
cy5zaXplKCk7IGkrKykKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk0MzgzKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBACiAjaW5jbHVkZSAiV2ViVmlld0hvc3QuaCIKICNp
bmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxjY3R5cGU+CisjaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxj
c3RkbGliPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bEFuZHJvaWQuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5
cGVmYWNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKworc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCBzaWduYXRsKQoreworICAgIC8v
IElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSBy
ZWFsbHkgYmFkIGhhbmcuCisgICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1
dHMoIiNFT0ZcbiIpOworICAgIGZmbHVzaChzdGRvdXQpOworICAgIHdlYmtpdF9zdXBwb3J0OjpU
ZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOworICAgIGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVzdFNo
ZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7
CisgICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIEluc3RhbGwgYW4gYWxhcm0g
c2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCisgICAgc3Ry
dWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKKyAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0g
QWxhcm1IYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKKyAg
ICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU0VUSEFORDsKKworICAgIHNpZ2FjdGlvbihT
SUdBTFJNLCAmYWxhcm1BY3Rpb24sIDApOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9y
V2F0Y2hEb2coKSAvIDEwMDApOworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEg
cXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmlu
aXNoZXMgbG9hZGluZy4KKyAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJr
aXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0u
CisgICAgYWxhcm0oMCk7Cit9CisKKy8vIFRPRE86IEltcGxlbWVudCB0aGUgZm9sbG93aW5nIG1l
dGhlZHMgaWYgbmVlZGVkLgordm9pZCBwbGF0Zm9ybUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFy
Z3YpCit7Cit9CisKK3ZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQoreworfQorCitib29sIGNoZWNr
TGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGxBbmRyb2lkLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAJ
KHJldmlzaW9uIDk0MzgzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDExICsxNzEsMTUgQEAgc3RhdGljIHZv
aWQgc2V0dXBGb250Y29uZmlnKCkKIHZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkK
IHsKICAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7Ci0KICAgICBtX3Rlc3RJc1BlbmRpbmcg
PSB0cnVlOwogCiAgICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdp
bGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KLSAgICBzaWduYWwoU0lHQUxSTSwgQWxhcm1IYW5k
bGVyKTsKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9u
LnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9u
LnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTRVRIQU5EOworCisg
ICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgMCk7CiAgICAgYWxhcm0obGF5b3V0
VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CiAKICAgICAvLyBUZXN0RmluaXNoZWQo
KSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBh
Z2UKQEAgLTE4NSw3ICsxODksNiBAQCB2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgp
CiAKICAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgogICAgIGFsYXJtKDApOwotICAgIHNpZ25hbChT
SUdBTFJNLCBTSUdfREZMKTsKIH0KIAogdm9pZCBwbGF0Zm9ybUluaXQoaW50KiBhcmdjLCBjaGFy
KioqIGFyZ3YpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106403</attachid>
            <date>2011-09-06 03:50:47 -0700</date>
            <delta_ts>2011-09-07 00:10:42 -0700</delta_ts>
            <desc>Proposed patch 4.</desc>
            <filename>DRT.patch</filename>
            <type>text/plain</type>
            <size>10867</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDktMDUgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVkZSBBbmRyb2lk
IHNwZWNpZmljIGZpbGVzIG9mIERSVCBmcm9tIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMDktMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBtdXRsaXBsZSB0byBXZWJQb3B1cE1lbnVJbmZv
IGZvciBBbmRyb2lkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA5
NDM4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5
KQpAQCAtMTEyNiw2ICsxMTI2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnKEd0a3xMaW51eClcXC5jcHAkJ10KICAgICAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKKyAgICAg
ICAgICAgICAgICAgICAgIyBGSVhNRSh6aGVuZ2hhbyk6IFJlc2VydmUgZm9yIHVwc3RyZWFtIGlu
IHRoZSBuZWFyIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICB9LHsgIyBPUyE9ImFuZHJvaWQiCisg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsnZXhjbHVkZScsICcoQW5kcm9pZClcXC5jcHAkJ10KKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9i
dWlsZD09MSBhbmQgY29tcG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvQ2hyb21p
dW1DdXJyZW50VGltZS5jcHAnLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1NDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wOS0wNSAgSGFvIFpoZW5nICA8emhl
bmdoYW9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IERSVCBz
dXBwb3J0IGZvciBBbmRyb2lkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njc1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgMiBtZWNoYW5pc20gdG8gbWFrZSBEUlQgaW50ZXJhY3Rpb24gbW9yZSBy
b2J1c3Qgb24gQW5kcm9pZDoKKyAgICAgICAgLSBTZW5kICdRVUlUJyB0byBEUlQgdG8gbWFrZSBp
dCBzdG9wLgorICAgICAgICAtIFdhaXQgdW50aWwgcmVjZWl2aW5nICcjUkVBRFknIGZyb20gRFJU
LCBzbyB0aGF0IERSVCB3b24ndCBtaXNzIGFueQorICAgICAgICBpbnB1dCBjb21tYW5kcyBiZWZv
cmUgaXQgc3RhcnRzLgorICAgICAgICBBbmQgTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIG5lZWRz
IHRvIGluY2x1ZGUgPGNjdHlwZT4gZm9yICd0b2xvd2VyJworICAgICAgICBhbmQgPGNsb2NhbGU+
IGZvciAnTENfQUxMJyB0byBjb21waWxlIG9uIEFuZHJvaWQuCisKKyAgICAgICAgQWxzbyBjaGFu
Z2UgdG8gdXNlIHNpZ2FjdGlvbiBpbnN0ZWFkIG9mIHNpZ25hbCBmb3IgVGVzdFNoZWxsR3RrLmNw
cCwKKyAgICAgICAgYXMgc2lnbmFsKCkgbWFuIHBhZ2UgcmVjb21tZW5kcyB1c2luZyBzaWdhY3Rp
b24oKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbEFuZHJvaWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFsYXJtSGFuZGxlcik6CisgICAgICAg
IChUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAocGxhdGZvcm1Jbml0KToK
KyAgICAgICAgKG9wZW5TdGFydHVwRGlhbG9nKToKKyAgICAgICAgKGNoZWNrTGF5b3V0VGVzdFN5
c3RlbURlcGVuZGVuY2llcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsR3RrLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCk6CisK
IDIwMTEtMDktMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
ZGQgYSB0YWIgdG8gZ2FyZGVuLW8tbWF0aWMgZm9yIHZpZXdpbmcgZXhwZWN0ZWQgZmFpbHVyZXMK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkocmV2aXNpb24g
OTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdE5h
dmlnYXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9u
IDk0MzgzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIG9w
dGlvblN0cmVzc09wdFtdID0gIi0KIHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvblN0cmVzc0Rlb3B0
W10gPSAiLS1zdHJlc3MtZGVvcHQiOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0aW9uSmF2YVNjcmlw
dEZsYWdzW10gPSAiLS1qcy1mbGFncz0iOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0aW9uTm9UaW1l
b3V0W10gPSAiLS1uby10aW1lb3V0IjsKK3N0YXRpYyBjb25zdCBjaGFyIG9wdGlvblNlbmRSZWFk
eVtdID0gIi0tc2VuZC1yZWFkeSI7CiAKIGNsYXNzIFdlYktpdFN1cHBvcnRUZXN0RW52aXJvbm1l
bnQgewogcHVibGljOgpAQCAtMTQ3LDYgKzE0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pCiAgICAgYm9vbCBoYXJkd2FyZUFjY2VsZXJhdGVkR0wgPSBmYWxzZTsKICAgICBz
dHJpbmcgamF2YVNjcmlwdEZsYWdzOwogICAgIGJvb2wgbm9UaW1lb3V0ID0gZmFsc2U7CisgICAg
Ym9vbCBzZW5kUmVhZHkgPSBmYWxzZTsgLy8gRWZmZWN0aXZlIG9ubHkgaW4gdGVzdFNoZWxsTW9k
ZS4KICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICBzdHJpbmcg
YXJndW1lbnQoYXJndltpXSk7CiAgICAgICAgIGlmIChhcmd1bWVudCA9PSAiLSIpCkBAIC0yMDEs
NiArMjAzLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAg
IGphdmFTY3JpcHRGbGFncyA9IGFyZ3VtZW50LnN1YnN0cihzdHJsZW4ob3B0aW9uSmF2YVNjcmlw
dEZsYWdzKSk7CiAgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50ID09IG9wdGlvbk5vVGltZW91dCkK
ICAgICAgICAgICAgIG5vVGltZW91dCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50
ID09IG9wdGlvblNlbmRSZWFkeSkKKyAgICAgICAgICAgIHNlbmRSZWFkeSA9IHRydWU7CiAgICAg
ICAgIGVsc2UgaWYgKGFyZ3VtZW50LnNpemUoKSAmJiBhcmd1bWVudFswXSA9PSAnLScpCiAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gb3B0aW9uOiAlc1xuIiwgYXJndltpXSk7
CiAgICAgICAgIGVsc2UKQEAgLTIzNyw2ICsyNDEsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIHNoZWxsLnNldExheW91dFRlc3RUaW1lb3V0KDB4MjAw
MDAwMDApOwogICAgICAgICB9CiAgICAgICAgIGlmIChzZXJ2ZXJNb2RlICYmICF0ZXN0cy5zaXpl
KCkpIHsKKyAgICAgICAgICAgIGlmIChzZW5kUmVhZHkpIHsKKyAgICAgICAgICAgICAgICBwdXRz
KCIjUkVBRFkiKTsKKyAgICAgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHBhcmFtcy5wcmludFNlcGFyYXRvcnMgPSB0cnVlOwogICAgICAgICAg
ICAgY2hhciB0ZXN0U3RyaW5nWzIwNDhdOyAvLyAyMDQ4IGlzIHRoZSBzYW1lIGFzIHRoZSBzaXpl
cyBvZiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgICAgICB3aGlsZSAoZmdldHModGVzdFN0cmlu
Zywgc2l6ZW9mKHRlc3RTdHJpbmcpLCBzdGRpbikpIHsKQEAgLTI0NSwxMCArMjUzLDEzIEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAgICAgICpuZXdM
aW5lUG9zaXRpb24gPSAnXDAnOwogICAgICAgICAgICAgICAgIGlmICh0ZXN0U3RyaW5nWzBdID09
ICdcMCcpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8v
IEV4cGxpY2l0bHkgcXVpdCBvbiBwbGF0Zm9ybXMgd2hlcmUgRU9GIGlzIG5vdCByZWxpYWJsZS4K
KyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0U3RyaW5nLCAiUVVJVCIpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBydW5UZXN0KHNoZWxsLCBwYXJh
bXMsIHRlc3RTdHJpbmcsIHRlc3RTaGVsbE1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKCF0ZXN0cy5zaXplKCkpCi0gICAgICAgICAgICBwcmludGYoIiNFT0ZcbiIpOwor
ICAgICAgICAgICAgcHV0cygiI0VPRiIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBh
cmFtcy5wcmludFNlcGFyYXRvcnMgPSB0ZXN0cy5zaXplKCkgPiAxOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRlc3RzLnNpemUoKTsgaSsrKQpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gOTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAKICNp
bmNsdWRlICJXZWJWaWV3SG9zdC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9z
dXBwb3J0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNjdHlwZT4KKyNpbmNs
dWRlIDxjbG9jYWxlPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8bGltaXRzPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAJKHJldmlzaW9uIDApCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
U2hlbGwuaCIKKworI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3Lmgi
CisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKworI2luY2x1ZGUg
PHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgdm9pZCBBbGFybUhhbmRs
ZXIoaW50IHNpZ25hdGwpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhl
IHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBwdXRzKCJcbiNU
RVNUX1RJTUVEX09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZsdXNoKHN0ZG91
dCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7CisgICAg
ZXhpdCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQoreworICAg
IEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwor
CisgICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1
cyBpZiB3ZSB0aW1lIG91dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAg
IGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQo
JmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVT
RVRIQU5EOworCisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgMCk7CisgICAg
YWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CisKKyAgICAvLyBU
ZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29w
IHdoZW4gdGhlIHBhZ2UKKyAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgorICAgIHdoaWxlIChtX3Rl
c3RJc1BlbmRpbmcpCisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwor
CisgICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KKyAgICBhbGFybSgwKTsKK30KKworLy8gRklYTUU6
IEltcGxlbWVudCB0aGUgZm9sbG93aW5nIG1ldGhlZHMgaWYgbmVlZGVkLgordm9pZCBwbGF0Zm9y
bUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpCit7Cit9CisKK3ZvaWQgb3BlblN0YXJ0dXBE
aWFsb2coKQoreworfQorCitib29sIGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAJKHJldmlzaW9uIDk0MzgzKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxLDExICsxNzEsMTUgQEAgc3RhdGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkKIHZvaWQgVGVz
dFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGlu
Zyk7Ci0KICAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwogCiAgICAgLy8gSW5zdGFsbCBhbiBh
bGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KLSAg
ICBzaWduYWwoU0lHQUxSTSwgQWxhcm1IYW5kbGVyKTsKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFs
YXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7Cisg
ICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNh
X2ZsYWdzID0gU0FfUkVTRVRIQU5EOworCisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFj
dGlvbiwgMCk7CiAgICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAw
MCk7CiAKICAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8g
YnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKQEAgLTE4NSw3ICsxODksNiBAQCB2b2lkIFRl
c3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCiAKICAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgog
ICAgIGFsYXJtKDApOwotICAgIHNpZ25hbChTSUdBTFJNLCBTSUdfREZMKTsKIH0KIAogdm9pZCBw
bGF0Zm9ybUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106550</attachid>
            <date>2011-09-07 00:10:42 -0700</date>
            <delta_ts>2011-09-07 18:41:08 -0700</delta_ts>
            <desc>Proposed patch 5.</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>11736</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDktMDUgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVkZSBBbmRyb2lk
IHNwZWNpZmljIGZpbGVzIG9mIERSVCBmcm9tIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMDktMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBtdXRsaXBsZSB0byBXZWJQb3B1cE1lbnVJbmZv
IGZvciBBbmRyb2lkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA5
NDM4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5
KQpAQCAtMTEyNiw2ICsxMTI2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnKEd0a3xMaW51eClcXC5jcHAkJ10KICAgICAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKKyAgICAg
ICAgICAgICAgICAgICAgIyBGSVhNRSh6aGVuZ2hhbyk6IFJlc2VydmUgZm9yIHVwc3RyZWFtIGlu
IHRoZSBuZWFyIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICB9LHsgIyBPUyE9ImFuZHJvaWQiCisg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsnZXhjbHVkZScsICcoQW5kcm9pZClcXC5jcHAkJ10KKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9i
dWlsZD09MSBhbmQgY29tcG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvQ2hyb21p
dW1DdXJyZW50VGltZS5jcHAnLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1NDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wOS0wNSAgSGFvIFpoZW5nICA8emhl
bmdoYW9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IERSVCBz
dXBwb3J0IGZvciBBbmRyb2lkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njc1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgMiBtZWNoYW5pc20gdG8gbWFrZSBEUlQgaW50ZXJhY3Rpb24gbW9yZSBy
b2J1c3Qgb24gQW5kcm9pZDoKKyAgICAgICAgLSBTZW5kICdRVUlUJyB0byBEUlQgdG8gbWFrZSBp
dCBzdG9wLgorICAgICAgICAtIFdhaXQgdW50aWwgcmVjZWl2aW5nICcjUkVBRFknIGZyb20gRFJU
LCBzbyB0aGF0IERSVCB3b24ndCBtaXNzIGFueQorICAgICAgICBpbnB1dCBjb21tYW5kcyBiZWZv
cmUgaXQgc3RhcnRzLgorICAgICAgICBBbmQgTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIG5lZWRz
IHRvIGluY2x1ZGUgPGNjdHlwZT4gZm9yICd0b2xvd2VyJworICAgICAgICBhbmQgPGNsb2NhbGU+
IGZvciAnTENfQUxMJyB0byBjb21waWxlIG9uIEFuZHJvaWQuCisKKyAgICAgICAgQWxzbyBjaGFu
Z2UgdG8gdXNlIHNpZ2FjdGlvbiBpbnN0ZWFkIG9mIHNpZ25hbCBmb3IgVGVzdFNoZWxsR3RrLmNw
cCwKKyAgICAgICAgYXMgc2lnbmFsKCkgbWFuIHBhZ2UgcmVjb21tZW5kcyB1c2luZyBzaWdhY3Rp
b24oKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbEFuZHJvaWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFsYXJtSGFuZGxlcik6CisgICAgICAg
IChUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAocGxhdGZvcm1Jbml0KToK
KyAgICAgICAgKG9wZW5TdGFydHVwRGlhbG9nKToKKyAgICAgICAgKGNoZWNrTGF5b3V0VGVzdFN5
c3RlbURlcGVuZGVuY2llcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsR3RrLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCk6CisK
IDIwMTEtMDktMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
ZGQgYSB0YWIgdG8gZ2FyZGVuLW8tbWF0aWMgZm9yIHZpZXdpbmcgZXhwZWN0ZWQgZmFpbHVyZXMK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkocmV2aXNpb24g
OTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdE5h
dmlnYXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9u
IDk0MzgzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIG9w
dGlvblN0cmVzc09wdFtdID0gIi0KIHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvblN0cmVzc0Rlb3B0
W10gPSAiLS1zdHJlc3MtZGVvcHQiOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0aW9uSmF2YVNjcmlw
dEZsYWdzW10gPSAiLS1qcy1mbGFncz0iOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0aW9uTm9UaW1l
b3V0W10gPSAiLS1uby10aW1lb3V0IjsKK3N0YXRpYyBjb25zdCBjaGFyIG9wdGlvblNlbmRSZWFk
eVtdID0gIi0tc2VuZC1yZWFkeSI7CiAKIGNsYXNzIFdlYktpdFN1cHBvcnRUZXN0RW52aXJvbm1l
bnQgewogcHVibGljOgpAQCAtMTQ3LDYgKzE0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pCiAgICAgYm9vbCBoYXJkd2FyZUFjY2VsZXJhdGVkR0wgPSBmYWxzZTsKICAgICBz
dHJpbmcgamF2YVNjcmlwdEZsYWdzOwogICAgIGJvb2wgbm9UaW1lb3V0ID0gZmFsc2U7CisgICAg
Ym9vbCBzZW5kUmVhZHkgPSBmYWxzZTsKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsr
aSkgewogICAgICAgICBzdHJpbmcgYXJndW1lbnQoYXJndltpXSk7CiAgICAgICAgIGlmIChhcmd1
bWVudCA9PSAiLSIpCkBAIC0yMDEsNiArMjAzLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkKICAgICAgICAgICAgIGphdmFTY3JpcHRGbGFncyA9IGFyZ3VtZW50LnN1YnN0cihz
dHJsZW4ob3B0aW9uSmF2YVNjcmlwdEZsYWdzKSk7CiAgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50
ID09IG9wdGlvbk5vVGltZW91dCkKICAgICAgICAgICAgIG5vVGltZW91dCA9IHRydWU7CisgICAg
ICAgIGVsc2UgaWYgKGFyZ3VtZW50ID09IG9wdGlvblNlbmRSZWFkeSkKKyAgICAgICAgICAgIHNl
bmRSZWFkeSA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50LnNpemUoKSAmJiBhcmd1
bWVudFswXSA9PSAnLScpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gb3B0
aW9uOiAlc1xuIiwgYXJndltpXSk7CiAgICAgICAgIGVsc2UKQEAgLTIxNCw2ICsyMTgsMTAgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICItLXN0cmVzcy1vcHQgYW5kIC0tc3RyZXNzLWRlb3B0IGFyZSBtdXR1YWxseSBleGNsdXNpdmUu
XG4iKTsKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICB9CisgICAgaWYgKHNlbmRS
ZWFkeSAmJiAhc2VydmVyTW9kZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tc2VuZC1y
ZWFkeSBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggLS10ZXN0LXNoZWxsIG9yICctJy5cbiIpOwor
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KIAogICAgIHdlYmtpdF9zdXBwb3J0
OjpTZXRVcEdMQmluZGluZ3MoaGFyZHdhcmVBY2NlbGVyYXRlZEdMID8gd2Via2l0X3N1cHBvcnQ6
OkdMX0JJTkRJTkdfREVGQVVMVCA6IHdlYmtpdF9zdXBwb3J0OjpHTF9CSU5ESU5HX1NPRlRXQVJF
X1JFTkRFUkVSKTsKIApAQCAtMjM3LDYgKzI0NSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciogYXJndltdKQogICAgICAgICAgICAgc2hlbGwuc2V0TGF5b3V0VGVzdFRpbWVvdXQoMHgyMDAw
MDAwMCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNlcnZlck1vZGUgJiYgIXRlc3RzLnNpemUo
KSkgeworICAgICAgICAgICAgaWYgKHNlbmRSZWFkeSkgeworICAgICAgICAgICAgICAgIHB1dHMo
IiNSRUFEWSIpOworICAgICAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgcGFyYW1zLnByaW50U2VwYXJhdG9ycyA9IHRydWU7CiAgICAgICAgICAg
ICBjaGFyIHRlc3RTdHJpbmdbMjA0OF07IC8vIDIwNDggaXMgdGhlIHNhbWUgYXMgdGhlIHNpemVz
IG9mIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgICAgIHdoaWxlIChmZ2V0cyh0ZXN0U3RyaW5n
LCBzaXplb2YodGVzdFN0cmluZyksIHN0ZGluKSkgewpAQCAtMjQ1LDEwICsyNTcsMTMgQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgICAgICAgICAgKm5ld0xp
bmVQb3NpdGlvbiA9ICdcMCc7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RTdHJpbmdbMF0gPT0g
J1wwJykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgLy8g
RXhwbGljaXRseSBxdWl0IG9uIHBsYXRmb3JtcyB3aGVyZSBFT0YgaXMgbm90IHJlbGlhYmxlLgor
ICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHRlc3RTdHJpbmcsICJRVUlUIikpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJ1blRlc3Qoc2hlbGwsIHBhcmFt
cywgdGVzdFN0cmluZywgdGVzdFNoZWxsTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoIXRlc3RzLnNpemUoKSkKLSAgICAgICAgICAgIHByaW50ZigiI0VPRlxuIik7Cisg
ICAgICAgICAgICBwdXRzKCIjRU9GIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcGFy
YW1zLnByaW50U2VwYXJhdG9ycyA9IHRlc3RzLnNpemUoKSA+IDE7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGVzdHMuc2l6ZSgpOyBpKyspCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA5NDM4MykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdIb3N0LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1
cHBvcnQuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2N0eXBlPgorI2luY2x1
ZGUgPGNsb2NhbGU+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcAkocmV2aXNpb24gMCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RT
aGVsbC5oIgorCisjaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIK
KyNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgorCisjaW5jbHVkZSA8
c2lnbmFsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyB2b2lkIEFsYXJtSGFuZGxl
cihpbnQpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mg
c2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBwdXRzKCJcbiNURVNUX1RJTUVE
X09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7CisgICAgZXhpdCgwKTsK
K30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQoreworICAgIEFTU0VSVCgh
bV90ZXN0SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOworCisgICAgLy8g
SW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0
aW1lIG91dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAgIGFsYXJtQWN0
aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0
aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKKworICAgIHN0cnVj
dCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rp
b24sICZvbGRBY3Rpb24pOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2co
KSAvIDEwMDApOworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNz
YWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmluaXNoZXMgbG9h
ZGluZy4KKyAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuTWVzc2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCisgICAgYWxh
cm0oMCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOworfQorCit2b2lk
IHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKK3sKKyAgICAvLyBOb3RoaW5n
IHRvIGRvIGhlcmUuCit9CisKK3ZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQoreworICAgIC8vIE5v
dGhpbmcgdG8gZG8gaGVyZS4KK30KKworYm9vbCBjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRl
bmNpZXMoKQoreworICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KKyAgICByZXR1cm4gdHJ1ZTsK
K30KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbEFuZHJvaWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBM
RgoKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3Rr
LmNwcAkocmV2aXNpb24gOTQzODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogCi1zdGF0aWMgdm9pZCBBbGFybUhh
bmRsZXIoaW50IHNpZ25hdGwpCitzdGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50KQogewogICAg
IC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUg
YSByZWFsbHkgYmFkIGhhbmcuCiAgICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOwpAQCAt
MTcxLDExICsxNzEsMTYgQEAgc3RhdGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkKIHZvaWQgVGVz
dFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGlu
Zyk7Ci0KICAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwogCiAgICAgLy8gSW5zdGFsbCBhbiBh
bGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KLSAg
ICBzaWduYWwoU0lHQUxSTSwgQWxhcm1IYW5kbGVyKTsKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFs
YXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7Cisg
ICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNh
X2ZsYWdzID0gMDsKKworICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgIHNpZ2Fj
dGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOwogICAgIGFsYXJtKGxheW91
dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOwogCiAgICAgLy8gVGVzdEZpbmlzaGVk
KCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBw
YWdlCkBAIC0xODUsNyArMTkwLDcgQEAgdm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQo
KQogCiAgICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KICAgICBhbGFybSgwKTsKLSAgICBzaWduYWwo
U0lHQUxSTSwgU0lHX0RGTCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDAp
OwogfQogCiB2b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106678</attachid>
            <date>2011-09-07 18:41:08 -0700</date>
            <delta_ts>2011-09-08 18:00:02 -0700</delta_ts>
            <desc>Proposed patch 6.</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>11688</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDc0MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDktMDcgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVkZSBBbmRyb2lk
IHNwZWNpZmljIGZpbGVzIG9mIERSVCBmcm9tIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMDktMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QgY2FuIGNy
YXNoIHdoZW4gY2FsbGVkIGZyb20gb3IgYWZ0ZXIgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJl
bnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDk0NjYxKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI3
LDYgKzExMjcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcoR3Rr
fExpbnV4KVxcLmNwcCQnXQogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAg
fV0sCisgICAgICAgICAgICAgICAgWydPUyE9ImFuZHJvaWQiJywgeworICAgICAgICAgICAgICAg
ICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAn
KEFuZHJvaWQpXFwuY3BwJCddCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgfV0sCiAgICAgICAgICAgICAgICAgWydpbnNpZGVfY2hyb21pdW1fYnVpbGQ9PTEgYW5kIGNv
bXBvbmVudD09InNoYXJlZF9saWJyYXJ5IicsIHsKICAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL0Nocm9taXVtQ3VycmVudFRpbWUu
Y3BwJywKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDk0NzQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMDcgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5k
cm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IDIgbWVjaGFuaXNtIHRvIG1ha2UgRFJUIGludGVyYWN0aW9uIG1vcmUgcm9idXN0IG9uIEFuZHJv
aWQ6CisgICAgICAgIC0gU2VuZCAnUVVJVCcgdG8gRFJUIHRvIG1ha2UgaXQgc3RvcC4KKyAgICAg
ICAgLSBXYWl0IHVudGlsIHJlY2VpdmluZyAnI1JFQURZJyBmcm9tIERSVCwgc28gdGhhdCBEUlQg
d29uJ3QgbWlzcyBhbnkKKyAgICAgICAgaW5wdXQgY29tbWFuZHMgYmVmb3JlIGl0IHN0YXJ0cy4K
KyAgICAgICAgQW5kIExheW91dFRlc3RDb250cm9sbGVyLmNwcCBuZWVkcyB0byBpbmNsdWRlIDxj
Y3R5cGU+IGZvciAndG9sb3dlcicKKyAgICAgICAgYW5kIDxjbG9jYWxlPiBmb3IgJ0xDX0FMTCcg
dG8gY29tcGlsZSBvbiBBbmRyb2lkLgorCisgICAgICAgIEFsc28gY2hhbmdlIHRvIHVzZSBzaWdh
Y3Rpb24gaW5zdGVhZCBvZiBzaWduYWwgZm9yIFRlc3RTaGVsbEd0ay5jcHAsCisgICAgICAgIGFz
IHNpZ25hbCgpIG1hbiBwYWdlIHJlY29tbWVuZHMgdXNpbmcgc2lnYWN0aW9uKCkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNw
cDogQWRkZWQuCisgICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjp3
YWl0VGVzdEZpbmlzaGVkKToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgIChvcGVu
U3RhcnR1cERpYWxvZyk6CisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNp
ZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHA6
CisgICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjp3YWl0VGVzdEZp
bmlzaGVkKToKKwogMjAxMS0wOS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIHJlYmFzZWxpbmUgYnV0dG9uIGluIGdhcmRlbi1vLW1hdGljIGRldGFpbHMgdmll
dyBzaG91bGQgd29yawpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpCShyZXZpc2lvbiA5NDY2MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFNoZWxsLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsLmgnLAor
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
U2hlbGxNYWMubW0nLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAnLApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVl
LmNwcAkocmV2aXNpb24gOTQ2NjEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
dW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgb3B0aW9uU3RyZXNzT3B0W10gPSAiLQogc3RhdGljIGNvbnN0IGNoYXIgb3B0
aW9uU3RyZXNzRGVvcHRbXSA9ICItLXN0cmVzcy1kZW9wdCI7CiBzdGF0aWMgY29uc3QgY2hhciBv
cHRpb25KYXZhU2NyaXB0RmxhZ3NbXSA9ICItLWpzLWZsYWdzPSI7CiBzdGF0aWMgY29uc3QgY2hh
ciBvcHRpb25Ob1RpbWVvdXRbXSA9ICItLW5vLXRpbWVvdXQiOworc3RhdGljIGNvbnN0IGNoYXIg
b3B0aW9uU2VuZFJlYWR5W10gPSAiLS1zZW5kLXJlYWR5IjsKIAogY2xhc3MgV2ViS2l0U3VwcG9y
dFRlc3RFbnZpcm9ubWVudCB7CiBwdWJsaWM6CkBAIC0xNDcsNiArMTQ4LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBib29sIGhhcmR3YXJlQWNjZWxlcmF0ZWRHTCA9
IGZhbHNlOwogICAgIHN0cmluZyBqYXZhU2NyaXB0RmxhZ3M7CiAgICAgYm9vbCBub1RpbWVvdXQg
PSBmYWxzZTsKKyAgICBib29sIHNlbmRSZWFkeSA9IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIHN0cmluZyBhcmd1bWVudChhcmd2W2ldKTsKICAg
ICAgICAgaWYgKGFyZ3VtZW50ID09ICItIikKQEAgLTIwMSw2ICsyMDMsOCBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICAgICAgamF2YVNjcmlwdEZsYWdzID0gYXJn
dW1lbnQuc3Vic3RyKHN0cmxlbihvcHRpb25KYXZhU2NyaXB0RmxhZ3MpKTsKICAgICAgICAgZWxz
ZSBpZiAoYXJndW1lbnQgPT0gb3B0aW9uTm9UaW1lb3V0KQogICAgICAgICAgICAgbm9UaW1lb3V0
ID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoYXJndW1lbnQgPT0gb3B0aW9uU2VuZFJlYWR5KQor
ICAgICAgICAgICAgc2VuZFJlYWR5ID0gdHJ1ZTsKICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnQu
c2l6ZSgpICYmIGFyZ3VtZW50WzBdID09ICctJykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiVW5rbm93biBvcHRpb246ICVzXG4iLCBhcmd2W2ldKTsKICAgICAgICAgZWxzZQpAQCAtMjE0
LDYgKzIxOCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIi0tc3RyZXNzLW9wdCBhbmQgLS1zdHJlc3MtZGVvcHQgYXJlIG11dHVh
bGx5IGV4Y2x1c2l2ZS5cbiIpOwogICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgIH0K
KyAgICBpZiAoc2VuZFJlYWR5ICYmICFzZXJ2ZXJNb2RlKSB7CisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiLS1zZW5kLXJlYWR5IHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCAtLXRlc3Qtc2hlbGwg
b3IgJy0nLlxuIik7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQogCiAgICAg
d2Via2l0X3N1cHBvcnQ6OlNldFVwR0xCaW5kaW5ncyhoYXJkd2FyZUFjY2VsZXJhdGVkR0wgPyB3
ZWJraXRfc3VwcG9ydDo6R0xfQklORElOR19ERUZBVUxUIDogd2Via2l0X3N1cHBvcnQ6OkdMX0JJ
TkRJTkdfU09GVFdBUkVfUkVOREVSRVIpOwogCkBAIC0yMzcsNiArMjQ1LDEwIEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBzaGVsbC5zZXRMYXlvdXRUZXN0
VGltZW91dCgweDIwMDAwMDAwKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2VydmVyTW9kZSAm
JiAhdGVzdHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoc2VuZFJlYWR5KSB7CisgICAgICAg
ICAgICAgICAgcHV0cygiI1JFQURZIik7CisgICAgICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwYXJhbXMucHJpbnRTZXBhcmF0b3JzID0gdHJ1
ZTsKICAgICAgICAgICAgIGNoYXIgdGVzdFN0cmluZ1syMDQ4XTsgLy8gMjA0OCBpcyB0aGUgc2Ft
ZSBhcyB0aGUgc2l6ZXMgb2Ygb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICAgICAgd2hpbGUgKGZn
ZXRzKHRlc3RTdHJpbmcsIHNpemVvZih0ZXN0U3RyaW5nKSwgc3RkaW4pKSB7CkBAIC0yNDUsMTAg
KzI1NywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICAgICAg
ICAgICAgICAqbmV3TGluZVBvc2l0aW9uID0gJ1wwJzsKICAgICAgICAgICAgICAgICBpZiAodGVz
dFN0cmluZ1swXSA9PSAnXDAnKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAvLyBFeHBsaWNpdGx5IHF1aXQgb24gcGxhdGZvcm1zIHdoZXJlIEVPRiBpcyBu
b3QgcmVsaWFibGUuCisgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAodGVzdFN0cmluZywgIlFV
SVQiKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgcnVuVGVz
dChzaGVsbCwgcGFyYW1zLCB0ZXN0U3RyaW5nLCB0ZXN0U2hlbGxNb2RlKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmICghdGVzdHMuc2l6ZSgpKQotICAgICAgICAgICAgcHJpbnRm
KCIjRU9GXG4iKTsKKyAgICAgICAgICAgIHB1dHMoIiNFT0YiKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBwYXJhbXMucHJpbnRTZXBhcmF0b3JzID0gdGVzdHMuc2l6ZSgpID4gMTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXN0cy5zaXplKCk7IGkrKykKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk0NjYxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2
ICs1OSw4IEBACiAjaW5jbHVkZSAiV2ViVmlld0hvc3QuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxj
Y3R5cGU+CisjaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUg
PGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCShyZXZp
c2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9p
ZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCisjaW5jbHVk
ZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmgi
CisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworc3RhdGljIHZv
aWQgQWxhcm1IYW5kbGVyKGludCkKK3sKKyAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2ls
bCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgorICAgIHB1dHMo
IlxuI1RFU1RfVElNRURfT1VUXG4iKTsKKyAgICBwdXRzKCIjRU9GXG4iKTsKKyAgICBmZmx1c2go
c3Rkb3V0KTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsK
KyAgICBleGl0KDApOworfQorCit2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCit7
CisgICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOworICAgIG1fdGVzdElzUGVuZGluZyA9IHRy
dWU7CisKKyAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBr
aWxsIHVzIGlmIHdlIHRpbWUgb3V0LgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247
CisgICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKKyAgICBzaWdlbXB0
eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7CisgICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAw
OworCisgICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247CisgICAgc2lnYWN0aW9uKFNJR0FM
Uk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7CisgICAgYWxhcm0obGF5b3V0VGVzdFRpbWVv
dXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CisKKyAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBv
c3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKKyAgICAv
LyBmaW5pc2hlcyBsb2FkaW5nLgorICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCisgICAgICAg
IHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworCisgICAgLy8gUmVtb3ZlIHRoZSBh
bGFybS4KKyAgICBhbGFybSgwKTsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwg
MCk7Cit9CisKK3ZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQorewor
ICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KK30KKwordm9pZCBvcGVuU3RhcnR1cERpYWxvZygp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBjaGVja0xheW91dFRlc3RTeXN0
ZW1EZXBlbmRlbmNpZXMoKQoreworICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KKyAgICByZXR1
cm4gdHJ1ZTsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsR3RrLmNwcAkocmV2aXNpb24gOTQ2NjEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogCi1zdGF0aWMgdm9p
ZCBBbGFybUhhbmRsZXIoaW50IHNpZ25hdGwpCitzdGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50
KQogewogICAgIC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNl
IHdlIGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCiAgICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRc
biIpOwpAQCAtMTcxLDExICsxNzEsMTYgQEAgc3RhdGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkK
IHZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQoIW1fdGVz
dElzUGVuZGluZyk7Ci0KICAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwogCiAgICAgLy8gSW5z
dGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1l
IG91dC4KLSAgICBzaWduYWwoU0lHQUxSTSwgQWxhcm1IYW5kbGVyKTsKKyAgICBzdHJ1Y3Qgc2ln
YWN0aW9uIGFsYXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhh
bmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJt
QWN0aW9uLnNhX2ZsYWdzID0gMDsKKworICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOwor
ICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOwogICAgIGFs
YXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOwogCiAgICAgLy8gVGVz
dEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3
aGVuIHRoZSBwYWdlCkBAIC0xODUsNyArMTkwLDcgQEAgdm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0
RmluaXNoZWQoKQogCiAgICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KICAgICBhbGFybSgwKTsKLSAg
ICBzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRB
Y3Rpb24sIDApOwogfQogCiB2b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJn
dikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106822</attachid>
            <date>2011-09-08 18:00:02 -0700</date>
            <delta_ts>2011-09-09 10:36:11 -0700</delta_ts>
            <desc>Proposed patch 7.</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>10202</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDgyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDktMDggIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVkZSBBbmRyb2lk
IHNwZWNpZmljIGZpbGVzIG9mIERSVCBmcm9tIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMDktMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBBbm90aGVyIGF0dGVtcHQgdG8gZml4IHRoZSBDaHJvbWl1bSBidWlsZC4g
IChNaXNzZWQgb25lLikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9u
IDk0NjYxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTI3LDYgKzExMjcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhj
bHVkZScsICcoR3RrfExpbnV4KVxcLmNwcCQnXQogICAgICAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgWydPUyE9ImFuZHJvaWQiJywgeworICAg
ICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBb
J2V4Y2x1ZGUnLCAnKEFuZHJvaWQpXFwuY3BwJCddCisgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgWydpbnNpZGVfY2hyb21pdW1fYnVp
bGQ9PTEgYW5kIGNvbXBvbmVudD09InNoYXJlZF9saWJyYXJ5IicsIHsKICAgICAgICAgICAgICAg
ICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL0Nocm9taXVt
Q3VycmVudFRpbWUuY3BwJywKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODIzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMDggIEhhbyBaaGVuZyAgPHpoZW5n
aGFvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBEUlQgc3Vw
cG9ydCBmb3IgQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY3NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIDIgbWVjaGFuaXNtIHRvIG1ha2UgRFJUIGludGVyYWN0aW9uIG1vcmUgcm9i
dXN0IG9uIEFuZHJvaWQ6CisgICAgICAgIC0gU2VuZCAnUVVJVCcgdG8gRFJUIHRvIG1ha2UgaXQg
c3RvcC4KKyAgICAgICAgLSBXYWl0IHVudGlsIHJlY2VpdmluZyAnI1JFQURZJyBmcm9tIERSVCwg
c28gdGhhdCBEUlQgd29uJ3QgbWlzcyBhbnkKKyAgICAgICAgaW5wdXQgY29tbWFuZHMgYmVmb3Jl
IGl0IHN0YXJ0cy4KKyAgICAgICAgQW5kIExheW91dFRlc3RDb250cm9sbGVyLmNwcCBuZWVkcyB0
byBpbmNsdWRlIDxjY3R5cGU+IGZvciAndG9sb3dlcicKKyAgICAgICAgYW5kIDxjbG9jYWxlPiBm
b3IgJ0xDX0FMTCcgdG8gY29tcGlsZSBvbiBBbmRyb2lkLgorCisgICAgICAgIEFsc28gY2hhbmdl
IHRvIHVzZSBzaWdhY3Rpb24gaW5zdGVhZCBvZiBzaWduYWwgZm9yIFRlc3RTaGVsbEd0ay5jcHAs
CisgICAgICAgIGFzIHNpZ25hbCgpIG1hbiBwYWdlIHJlY29tbWVuZHMgdXNpbmcgc2lnYWN0aW9u
KCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGxBbmRyb2lkLmNwcDogQWRkZWQuCisgICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAo
VGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6Cisg
ICAgICAgIChvcGVuU3RhcnR1cERpYWxvZyk6CisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0
ZW1EZXBlbmRlbmNpZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbEd0ay5jcHA6CisgICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAoVGVzdFNoZWxs
Ojp3YWl0VGVzdEZpbmlzaGVkKToKKwogMjAxMS0wOS0wOCAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MjogQXNzZXJ0aW9uIHdoZW4gY2Fs
bGluZyBkaWRQZXJmb3JtKlJlZGlyZWN0IG9uIG51bGwgc291cmNlL2Rlc3RpbmF0aW9uIFVSTCBz
dHJpbmcKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkocmV2
aXNpb24gOTQ2NjEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5oJywKKyAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsTWFj
Lm1tJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJl
dmlzaW9uIDk0NjYxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRl
clRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDExIEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBzaGVsbC5zZXRMYXlvdXRUZXN0VGlt
ZW91dCgweDIwMDAwMDAwKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2VydmVyTW9kZSAmJiAh
dGVzdHMuc2l6ZSgpKSB7CisjaWYgT1MoQU5EUk9JRCkKKyAgICAgICAgICAgIC8vIFNlbmQgYSBz
aWduYWwgdG8gaG9zdCB0byBpbmRpY2F0ZSBEUlQgaXMgcmVhZHkgdG8gcHJvY2VzcyBjb21tYW5k
cy4KKyAgICAgICAgICAgIHB1dHMoIiNSRUFEWSIpOworICAgICAgICAgICAgZmZsdXNoKHN0ZG91
dCk7CisjZW5kaWYKICAgICAgICAgICAgIHBhcmFtcy5wcmludFNlcGFyYXRvcnMgPSB0cnVlOwog
ICAgICAgICAgICAgY2hhciB0ZXN0U3RyaW5nWzIwNDhdOyAvLyAyMDQ4IGlzIHRoZSBzYW1lIGFz
IHRoZSBzaXplcyBvZiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgICAgICB3aGlsZSAoZmdldHMo
dGVzdFN0cmluZywgc2l6ZW9mKHRlc3RTdHJpbmcpLCBzdGRpbikpIHsKQEAgLTI0NSwxMCArMjUw
LDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAg
ICAgICpuZXdMaW5lUG9zaXRpb24gPSAnXDAnOwogICAgICAgICAgICAgICAgIGlmICh0ZXN0U3Ry
aW5nWzBdID09ICdcMCcpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIC8vIEV4cGxpY2l0bHkgcXVpdCBvbiBwbGF0Zm9ybXMgd2hlcmUgRU9GIGlzIG5vdCBy
ZWxpYWJsZS4KKyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0U3RyaW5nLCAiUVVJVCIp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBydW5UZXN0KHNo
ZWxsLCBwYXJhbXMsIHRlc3RTdHJpbmcsIHRlc3RTaGVsbE1vZGUpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0cy5zaXplKCkpCi0gICAgICAgICAgICBwcmludGYoIiNF
T0ZcbiIpOworICAgICAgICAgICAgcHV0cygiI0VPRiIpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIHBhcmFtcy5wcmludFNlcGFyYXRvcnMgPSB0ZXN0cy5zaXplKCkgPiAxOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRlc3RzLnNpemUoKTsgaSsrKQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gOTQ2NjEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5
LDggQEAKICNpbmNsdWRlICJXZWJWaWV3SG9zdC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNjdHlw
ZT4KKyNpbmNsdWRlIDxjbG9jYWxlPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAJKHJldmlzaW9u
IDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXN0U2hlbGwuaCIKKworI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJX
ZWJWaWV3LmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKwor
I2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgdm9pZCBB
bGFybUhhbmRsZXIoaW50KQoreworICAgIC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRo
ZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCisgICAgcHV0cygiXG4j
VEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1dHMoIiNFT0ZcbiIpOworICAgIGZmbHVzaChzdGRv
dXQpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOworICAg
IGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKK3sKKyAg
ICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7CisgICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsK
KworICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwg
dXMgaWYgd2UgdGltZSBvdXQuCisgICAgc3RydWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKKyAg
ICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxhcm1IYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0
KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKKyAgICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IDA7CisK
KyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbjsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwg
JmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKKyAgICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZv
cldhdGNoRG9nKCkgLyAxMDAwKTsKKworICAgIC8vIFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBh
IHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxvb3Agd2hlbiB0aGUgcGFnZQorICAgIC8vIGZp
bmlzaGVzIGxvYWRpbmcuCisgICAgd2hpbGUgKG1fdGVzdElzUGVuZGluZykKKyAgICAgICAgd2Vi
a2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7CisKKyAgICAvLyBSZW1vdmUgdGhlIGFsYXJt
LgorICAgIGFsYXJtKDApOworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsK
K30KKwordm9pZCBwbGF0Zm9ybUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpCit7CisgICAg
Ly8gTm90aGluZyB0byBkbyBoZXJlLgorfQorCit2b2lkIG9wZW5TdGFydHVwRGlhbG9nKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIGNoZWNrTGF5b3V0VGVzdFN5c3RlbURl
cGVuZGVuY2llcygpCit7CisgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLgorICAgIHJldHVybiB0
cnVlOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGxHdGsuY3BwCShyZXZpc2lvbiA5NDY2MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKLXN0YXRpYyB2b2lkIEFs
YXJtSGFuZGxlcihpbnQgc2lnbmF0bCkKK3N0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCiB7
CiAgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2Ug
aGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KICAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7
CkBAIC0xNzEsMTEgKzE3MSwxNiBAQCBzdGF0aWMgdm9pZCBzZXR1cEZvbnRjb25maWcoKQogdm9p
ZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQogewogICAgIEFTU0VSVCghbV90ZXN0SXNQ
ZW5kaW5nKTsKLQogICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7CiAKICAgICAvLyBJbnN0YWxs
IGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0
LgotICAgIHNpZ25hbChTSUdBTFJNLCBBbGFybUhhbmRsZXIpOworICAgIHN0cnVjdCBzaWdhY3Rp
b24gYWxhcm1BY3Rpb247CisgICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxl
cjsKKyAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7CisgICAgYWxhcm1BY3Rp
b24uc2FfZmxhZ3MgPSAwOworCisgICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247CisgICAg
c2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7CiAgICAgYWxhcm0o
bGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CiAKICAgICAvLyBUZXN0Rmlu
aXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4g
dGhlIHBhZ2UKQEAgLTE4NSw3ICsxOTAsNyBAQCB2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5p
c2hlZCgpCiAKICAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgogICAgIGFsYXJtKDApOwotICAgIHNp
Z25hbChTSUdBTFJNLCBTSUdfREZMKTsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlv
biwgMCk7CiB9CiAKIHZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>