<?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>36245</bug_id>
          
          <creation_ts>2010-03-17 15:04:41 -0700</creation_ts>
          <short_desc>rebaseline_chromium_webkit_test.py should fallback to debug if release image diff does not exist</short_desc>
          <delta_ts>2010-03-31 16:47:34 -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>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Wang">victorw</reporter>
          <assigned_to name="Victor Wang">victorw</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>jianli</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200984</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-17 15:04:41 -0700</bug_when>
    <thetext>rebaseline_chromium_webkit_test.py uses image_diff.exe to compare png diffs. Sometime, person who uses the tool only has debug or release binary, not both. Add an option to the script allow specifying which target to be used by the tool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200996</commentid>
    <comment_count>1</comment_count>
      <attachid>50965</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-17 15:25:15 -0700</bug_when>
    <thetext>Created attachment 50965
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200999</commentid>
    <comment_count>2</comment_count>
      <attachid>50965</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-17 15:30:25 -0700</bug_when>
    <thetext>Comment on attachment 50965
Proposed patch

Are we using anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201001</commentid>
    <comment_count>3</comment_count>
      <attachid>50965</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-17 15:31:43 -0700</bug_when>
    <thetext>Comment on attachment 50965
Proposed patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201004</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-17 15:33:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 50965 [details])
&gt; Are we using anywhere?

This bug was triggered by Jian Li and Albert, who only had Debug builds and couldn&apos;t run the rebaselining tool (which only looked for Release binaries). Note that the old downstream code actually defaulted to Debug, not Release, in this use case, but we&apos;ll leave the default to be Release to be consistent with the other tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201005</commentid>
    <comment_count>5</comment_count>
      <attachid>50965</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-17 15:33:53 -0700</bug_when>
    <thetext>Comment on attachment 50965
Proposed patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201008</commentid>
    <comment_count>6</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-17 15:36:13 -0700</bug_when>
    <thetext>Why not just check both instead of adding a commandline flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201010</commentid>
    <comment_count>7</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-17 15:41:20 -0700</bug_when>
    <thetext>Yes, we could modify the chromium port code to check whether the binary exists and fallback to another target if it does not.

(In reply to comment #6)
&gt; Why not just check both instead of adding a commandline flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201012</commentid>
    <comment_count>8</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-17 15:47:51 -0700</bug_when>
    <thetext>This is just for the image_diff binary right? Seems to me that we should just fallback to Debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201015</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-17 15:53:46 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This is just for the image_diff binary right? Seems to me that we should just
&gt; fallback to Debug.

The old version of the code exposed the image_diff_path() to code that was only called by the rebaselining tool, so the rebaselining tool could fall back w/o affecting the rest of the code base (e.g., paths to test_shell, etc).

The new version of the code does not expose this hook, and I don&apos;t really want to do that because it feels ugly. I am okay with providing code that figures out which platform to use if it isn&apos;t specified, but I think having a --target is probably a good idea anyway, in case the user is working on image diff or has both builds or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201026</commentid>
    <comment_count>10</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-17 16:17:51 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; This is just for the image_diff binary right? Seems to me that we should just
&gt; &gt; fallback to Debug.
&gt; 
&gt; The old version of the code exposed the image_diff_path() to code that was only
&gt; called by the rebaselining tool, so the rebaselining tool could fall back w/o
&gt; affecting the rest of the code base (e.g., paths to test_shell, etc).
&gt; 
&gt; The new version of the code does not expose this hook, and I don&apos;t really want
&gt; to do that because it feels ugly. I am okay with providing code that figures
&gt; out which platform to use if it isn&apos;t specified, but I think having a --target
&gt; is probably a good idea anyway, in case the user is working on image diff or
&gt; has both builds or something.

In case user does not specify &quot;--target&quot; option, providing port interface so rebaseline tool can figure out which platform to use sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205814</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 19:52:44 -0700</bug_when>
    <thetext>&quot;target&quot; is actually supposed to be &quot;configuration&quot; or just --release or --debug to match XCode terminology (which is why WebKit follows, for better or worse).  But we can update that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206104</commentid>
    <comment_count>12</comment_count>
      <attachid>52065</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-30 12:17:12 -0700</bug_when>
    <thetext>Created attachment 52065
Proposed patch

Added code to set option target based on which version of image_diff binary exists in case user does not specify the option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206109</commentid>
    <comment_count>13</comment_count>
      <attachid>52065</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-30 12:19:48 -0700</bug_when>
    <thetext>Comment on attachment 52065
Proposed patch

Why is this special-cased for release?  And why would this sort of logic go on the port object itself?  Seems that the port object already does this sort of check it just does it in one big method.  We could easily break out the image diff part of that check into a separate method callable from here.  The goal is easy code re-use, and this doesn&apos;t look very re-useable as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206119</commentid>
    <comment_count>14</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-30 12:34:37 -0700</bug_when>
    <thetext>Per my conversation with Dirk before, he prefer to not having these logics inside port object. If target is not specified, the rebaseline tool checks whether the release version exists, and use that if it does. Otherwise, set to debug. In case none of debug or release versions exists AND there is new image baseline, it will error out later.

I will update check_build method to reuse the check_image_diff method.

(In reply to comment #13)
&gt; (From update of attachment 52065 [details])
&gt; Why is this special-cased for release?  And why would this sort of logic go on
&gt; the port object itself?  Seems that the port object already does this sort of
&gt; check it just does it in one big method.  We could easily break out the image
&gt; diff part of that check into a separate method callable from here.  The goal is
&gt; easy code re-use, and this doesn&apos;t look very re-useable as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206203</commentid>
    <comment_count>15</comment_count>
      <attachid>52088</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-30 15:16:48 -0700</bug_when>
    <thetext>Created attachment 52088
Proposed patch

Updated check_build to re-use the image check port.

Eric,
Figuring out whether image diff exists and setting the target (if it is empty) based
on the result is kind of rebaseline tool specific so I agree with Dirk here on not having
these logics inside port object. let me know if you disagree and strongly prefer
we should move these logics into port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206205</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-30 15:22:45 -0700</bug_when>
    <thetext>I don&apos;t know if they belong in port, but certainly figuring out the default configuration is not specific to rebaseline.py.  on the perl side of things set-webkit-configuration handles setting the default and webkitdirs.pm handles reading from the default configuration (what you&apos;re calling target in this patch).  webkitdirs.pm also provides global support for handling --release and --debug flags which set the configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206206</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-30 15:28:15 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I don&apos;t know if they belong in port, but certainly figuring out the default
&gt; configuration is not specific to rebaseline.py.  on the perl side of things
&gt; set-webkit-configuration handles setting the default and webkitdirs.pm handles
&gt; reading from the default configuration (what you&apos;re calling target in this
&gt; patch).  webkitdirs.pm also provides global support for handling --release and
&gt; --debug flags which set the configuration.

This patch isn&apos;t figuring out the default configuration. This patch is attempting to make the rebaselining too use *whatever* ImageDiff it can find.

The problem is that we default to Release, but users who only have Debug builds are asking that we automatically find their binaries without needing to specify a flag.

Your suggestion that we use something like set-webkit-configuration is another way to address the desired end result; whether or not it makes the users in question happy, I don&apos;t know (because now they have to remember to call that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206209</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-30 15:33:56 -0700</bug_when>
    <thetext>You are correct that some sort of &quot;try Release&quot; and then &quot;Try debug&quot; option is unique to rebaseline.py.  Does it only apply to the ImageDiff binary, or is it more global?  Why would a user have a built copy of ImageDiff debug?  Why wouldn&apos;t rebaseline just build image_diff/ImageDiff?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206216</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-30 15:39:45 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; You are correct that some sort of &quot;try Release&quot; and then &quot;Try debug&quot; option is
&gt; unique to rebaseline.py.  Does it only apply to the ImageDiff binary, or is it
&gt; more global?  Why would a user have a built copy of ImageDiff debug?  Why
&gt; wouldn&apos;t rebaseline just build image_diff/ImageDiff?

Historically, the chromium test scripts don&apos;t ever try to build things. We could certainly change that.

Some developers apparently only have Debug builds, in which case having a rebaseline tool that defaults to Release won&apos;t find the binary they need. If they were to do rebaseline --debug, they would be fine (or if they used set-webkit-configuration). Which is why we added the --target option in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206228</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-30 16:00:20 -0700</bug_when>
    <thetext>I&apos;m confused then.  This --target option is only used for falback?

Why wouldn&apos;t we just always fallback then?  Why require an option?

It seems Ojan already suggested this in comment #6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206229</commentid>
    <comment_count>21</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-30 16:05:38 -0700</bug_when>
    <thetext>Yes, this patch basically implements what Ojan suggested. The &quot;target&quot; option is an extra stuff in case user want to specify which image diff to use. It just provides extra control but if you feel it is not necessary, we could simply remove it.

(In reply to comment #20)
&gt; I&apos;m confused then.  This --target option is only used for falback?
&gt; 
&gt; Why wouldn&apos;t we just always fallback then?  Why require an option?
&gt; 
&gt; It seems Ojan already suggested this in comment #6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206254</commentid>
    <comment_count>22</comment_count>
      <attachid>52098</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-30 16:35:45 -0700</bug_when>
    <thetext>Created attachment 52098
Proposed patch

Remove the &quot;target&quot; option. The rebaseline tool already checks release image diff binary and fallback to debug if the release version does not exist. Having the extra option may confuse the user and it does not seem to be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206261</commentid>
    <comment_count>23</comment_count>
      <attachid>52098</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-30 16:54:08 -0700</bug_when>
    <thetext>Comment on attachment 52098
Proposed patch

Please document the arguments in:
 1011     if not port_obj.check_image_diff(None, False):
by naming them in the callsite.

Otherwise this looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206269</commentid>
    <comment_count>24</comment_count>
      <attachid>52103</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-30 17:11:45 -0700</bug_when>
    <thetext>Created attachment 52103
Document the arguments per comment#23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206609</commentid>
    <comment_count>25</comment_count>
      <attachid>52103</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-31 11:44:07 -0700</bug_when>
    <thetext>Comment on attachment 52103
Document the arguments per comment#23

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206818</commentid>
    <comment_count>26</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-31 16:47:01 -0700</bug_when>
    <thetext>Committed r56876: &lt;http://trac.webkit.org/changeset/56876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50965</attachid>
            <date>2010-03-17 15:25:15 -0700</date>
            <delta_ts>2010-03-30 12:17:12 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>target.patch</filename>
            <type>text/plain</type>
            <size>1424</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MTI5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMtMTcgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG9wdGlvbiAidGFyZ2V0IiB0byByZWJhc2VsaW5lX2Nocm9taXVtX3dl
YmtpdF90ZXN0LnB5CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2MjQ1CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wMy0xNyAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVi
YXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucHkJKHJldmlzaW9uIDU2MTIyKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHdv
cmtpbmcgY29weSkKQEAgLTk5MCw2ICs5OTAsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBkaXJlY3RvcnkgdGhhdCBzdG9yZXMgdGhlIHJl
c3VsdHMgZm9yJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJlYmFzZWxp
bmluZyBjb21wYXJpc29uLicpKQogCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCcnLCAn
LS10YXJnZXQnLCBkZWZhdWx0PSdyZWxlYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0oJ1NldCB0aGUgYnVpbGQgdGFyZ2V0IHVzZWQgYnkgcmViYXNlbGluaW5nICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rvb2wuJykpCisKICAgICBvcHRpb25z
ID0gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKClbMF0KIAogICAgICMgRklYTUU6IFNldHRpbmcg
b3B0aW9ucy5jaHJvbWl1bSB0byBUcnVlIGZvcmNlcyBwb3J0LmdldCgpIHRvIG9ubHkgbG9vawo=
</data>
<flag name="review"
          id="34149"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52065</attachid>
            <date>2010-03-30 12:17:12 -0700</date>
            <delta_ts>2010-03-30 15:16:48 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>target.patch</filename>
            <type>text/plain</type>
            <size>5534</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2ODAwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMzAgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG9wdGlvbiAidGFyZ2V0IiB0byByZWJhc2VsaW5lIHRvb2wgYW5kIGlm
IHRoaXMgb3B0aW9uCisgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQsIHNldCB0aGUgb3B0aW9uIGJh
c2VkIG9uIHdoZXRoZXIgdGhlCisgICAgICAgIGltYWdlX2RpZmYgYmluYXJ5IGV4aXN0cy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDUKKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzLnB5OgorCiAyMDEwLTAzLTMwICBDaHJpcyBKZXJkb25layAgPGNqZXJk
b25la0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9j
aHJvbWl1bV93ZWJraXRfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHkJKHJldmlzaW9uIDU2Nzk5KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTk4NywxMyArOTg3LDE2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9KCdUaGUgZGlyZWN0b3J5IHRoYXQgc3RvcmVzIHRoZSByZXN1bHRzIGZv
cicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZWJhc2VsaW5pbmcgY29t
cGFyaXNvbi4nKSkKIAorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignJywgJy0tdGFyZ2V0
JywgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NldCB0
aGUgYnVpbGQgdGFyZ2V0IHVzZWQgYnkgcmViYXNlbGluaW5nICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rvb2wuJykpCisKICAgICBvcHRpb25zID0gb3B0aW9uX3BhcnNl
ci5wYXJzZV9hcmdzKClbMF0KIAogICAgICMgRklYTUU6IFNldHRpbmcgb3B0aW9ucy5jaHJvbWl1
bSB0byBUcnVlIGZvcmNlcyBwb3J0LmdldCgpIHRvIG9ubHkgbG9vawogICAgICMgYXQgQ2hyb21p
dW0gcG9ydHM7IHdlIGhhcmQtY29kZSB0aGlzIGJlY2F1c2UgdGhpcyBzY3JpcHQgZG9lc24ndCB3
b3JrCiAgICAgIyBvbiBub24tQ2hyb21pdW0gcG9ydHMgeWV0LiBXZSBzaG91bGQgZml4IHRoYXQu
CiAgICAgb3B0aW9ucy5jaHJvbWl1bSA9IFRydWUKLSAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KE5v
bmUsIG9wdGlvbnMpCiAKICAgICAjIFNldCB1cCBvdXIgbG9nZ2luZyBmb3JtYXQuCiAgICAgbG9n
X2xldmVsID0gbG9nZ2luZy5JTkZPCkBAIC0xMDA0LDYgKzEwMDcsMjIgQEAgZGVmIG1haW4oKToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyUobGV2ZWxuYW1lKXMgJShtZXNzYWdl
KXMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVmbXQ9JyV5JW0lZCAlSDolTTolUycp
CiAKKyAgICAjIG9wdGlvbnMudGFyZ2V0IGlzIHVzZWQgYnkgcmViYXNlbGluZSB0b29sIHRvIGZp
bmQgaW1hZ2VfZGlmZiBiaW5hcnkuCisgICAgIyBJZiBvcHRpb25zLnRhcmdldCBpcyBub3Qgc3Bl
Y2lmaWVkLCB0cnkgdG8gZmlndXJlIHdoaWNoIGltZ2FnZV9kaWZmIGJpbmFyeQorICAgICMgKGRl
YnVnIG9yIHJlbGVhc2UpIGV4aXN0cyBhbmQgc2V0IG9wdGlvbnMudGFyZ2V0IGJhc2VkIG9uIHdo
YXQgd2UgZm91bmQuCisgICAgcG9ydF9vYmogPSBOb25lCisgICAgaWYgbm90IG9wdGlvbnMudGFy
Z2V0OgorICAgICAgICBvcHRpb25zLnRhcmdldCA9ICJyZWxlYXNlIgorICAgICAgICBwb3J0X29i
aiA9IHBvcnQuZ2V0KE5vbmUsIG9wdGlvbnMpCisgICAgICAgIGlmIG5vdCBwb3J0X29iai5jaGVj
a19pbWFnZV9kaWZmKCk6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdObyByZWxlYXNlIHZlcnNp
b24gaW1hZ2UgZGlmZiBiaW5hcnkgZm91bmQuJykKKyAgICAgICAgICAgIG9wdGlvbnMudGFyZ2V0
ID0gImRlYnVnIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnRm91bmQg
cmVsZWFzZSB2ZXJzaW9uIGltYWdlIGRpZmYgYmluYXJ5LicpCisKKyAgICBpZiBub3QgcG9ydF9v
Ymo6CisgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoTm9uZSwgb3B0aW9ucykKKwogICAgICMg
VmVyaWZ5ICdwbGF0Zm9ybXMnIG9wdGlvbiBpcyB2YWxpZAogICAgIGlmIG5vdCBvcHRpb25zLnBs
YXRmb3JtczoKICAgICAgICAgX2xvZy5lcnJvcignSW52YWxpZCAicGxhdGZvcm1zIiBvcHRpb24u
IC0tcGxhdGZvcm1zIG11c3QgYmUgJwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQkocmV2aXNpb24gNTY3OTkp
CisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgUmV0dXJucyB3aGV0aGVyIHRoZSBzeXN0ZW0gaXMgcHJvcGVybHkgY29uZmlndXJl
ZC4iIiIKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBjaGVja19pbWFnZV9kaWZmKHNl
bGYpOgorICAgICAgICAiIiJUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIGlt
YWdlX2RpZmYgYmluYXJ5IGV4aXN0cy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQo
J1BvcnQuY2hlY2tfaW1hZ2VfZGlmZicpCisKICAgICBkZWYgY29tcGFyZV90ZXh0KHNlbGYsIGV4
cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3Ig
bm90IHRoZSB0d28gc3RyaW5ncyBhcmUgKm5vdCogZXF1YWwuIFRoaXMKICAgICAgICAgcm91dGlu
ZSBpcyB1c2VkIHRvIGRpZmYgdGV4dCBvdXRwdXQuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJ
KHJldmlzaW9uIDU2Nzk5KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsOCBAQCBp
bXBvcnQgd2Vic29ja2V0X3NlcnZlcgogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC5jaHJvbWl1bSIpCiAKIAotZGVmIGNoZWNrX2ZpbGVfZXhpc3Rz
KHBhdGhfdG9fZmlsZSwgZmlsZV9kZXNjcmlwdGlvbiwgb3ZlcnJpZGVfc3RlcD1Ob25lKToKK2Rl
ZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3RvX2ZpbGUsIGZpbGVfZGVzY3JpcHRpb24sIG92ZXJy
aWRlX3N0ZXA9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBsb2dnaW5nPVRydWUpOgogICAg
ICIiIlZlcmlmeSB0aGUgZmlsZSBpcyBwcmVzZW50IHdoZXJlIGV4cGVjdGVkIG9yIGxvZyBhbiBl
cnJvci4KIAogICAgIEFyZ3M6CkBAIC01MiwxMSArNTMsMTIgQEAgZGVmIGNoZWNrX2ZpbGVfZXhp
c3RzKHBhdGhfdG9fZmlsZSwgZmlsZQogICAgICAgICAgICAgeW91J3JlIGxvb2tpbmcgZm9yIChl
LmcuLCAiSFRUUCBTZXJ2ZXIiKS4gVXNlZCBmb3IgZXJyb3IgbG9nZ2luZy4KICAgICAgICAgb3Zl
cnJpZGVfc3RlcDogQW4gb3B0aW9uYWwgc3RyaW5nIHRvIGJlIGxvZ2dlZCBpZiB0aGUgY2hlY2sg
ZmFpbHMuIiIiCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGhfdG9fZmlsZSk6Ci0gICAg
ICAgIF9sb2cuZXJyb3IoJ1VuYWJsZSB0byBmaW5kICVzJyAlIGZpbGVfZGVzY3JpcHRpb24pCi0g
ICAgICAgIF9sb2cuZXJyb3IoJyAgICBhdCAlcycgJSBwYXRoX3RvX2ZpbGUpCi0gICAgICAgIGlm
IG92ZXJyaWRlX3N0ZXA6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCcgICAgJXMnICUgb3ZlcnJp
ZGVfc3RlcCkKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgIGlmIGxvZ2dpbmc6
CisgICAgICAgICAgICBfbG9nLmVycm9yKCdVbmFibGUgdG8gZmluZCAlcycgJSBmaWxlX2Rlc2Ny
aXB0aW9uKQorICAgICAgICAgICAgX2xvZy5lcnJvcignICAgIGF0ICVzJyAlIHBhdGhfdG9fZmls
ZSkKKyAgICAgICAgICAgIGlmIG92ZXJyaWRlX3N0ZXA6CisgICAgICAgICAgICAgICAgX2xvZy5l
cnJvcignICAgICVzJyAlIG92ZXJyaWRlX3N0ZXApCisgICAgICAgICAgICAgICAgX2xvZy5lcnJv
cignJykKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgcmV0dXJuIFRydWUKIApAQCAtMTA1LDYg
KzEwNywxMCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNoZWNrX2ltYWdlX2Rp
ZmYoc2VsZik6CisgICAgICAgIGltYWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1hZ2Vf
ZGlmZigpCisgICAgICAgIHJldHVybiBjaGVja19maWxlX2V4aXN0cyhpbWFnZV9kaWZmX3BhdGgs
ICdpbWFnZSBkaWZmIGV4ZScsIE5vbmUsIEZhbHNlKQorCiAgICAgZGVmIHBhdGhfZnJvbV9jaHJv
bWl1bV9iYXNlKHNlbGYsICpjb21wcyk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0
aCB0byBwYXRoIG1hZGUgYnkgam9pbmluZyB0aGUgdG9wIG9mIHRoZQogICAgICAgICBDaHJvbWl1
bSBzb3VyY2UgdHJlZSBhbmQgdGhlIGxpc3Qgb2YgcGF0aCBjb21wb25lbnRzIGluIHwqY29tcHN8
LiIiIgo=
</data>
<flag name="review"
          id="35454"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52088</attachid>
            <date>2010-03-30 15:16:48 -0700</date>
            <delta_ts>2010-03-30 16:35:45 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>target.patch</filename>
            <type>text/plain</type>
            <size>6245</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2ODEwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMzAgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG9wdGlvbiAidGFyZ2V0IiB0byByZWJhc2VsaW5lIHRvb2wgYW5kIGlm
IHRoaXMgb3B0aW9uCisgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQsIHNldCB0aGUgb3B0aW9uIGJh
c2VkIG9uIHdoZXRoZXIgdGhlCisgICAgICAgIGltYWdlX2RpZmYgYmluYXJ5IGV4aXN0cy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDUKKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzLnB5OgorCiAyMDEwLTAzLTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHJldmlz
aW9uIDU2ODEwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTk4
NywxMyArOTg3LDE2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdUaGUgZGlyZWN0b3J5IHRoYXQgc3RvcmVzIHRoZSByZXN1bHRzIGZvcicKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZWJhc2VsaW5pbmcgY29tcGFyaXNvbi4n
KSkKIAorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignJywgJy0tdGFyZ2V0JywgZGVmYXVs
dD0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NldCB0aGUgYnVpbGQg
dGFyZ2V0IHVzZWQgYnkgcmViYXNlbGluaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rvb2wuJykpCisKICAgICBvcHRpb25zID0gb3B0aW9uX3BhcnNlci5wYXJzZV9h
cmdzKClbMF0KIAogICAgICMgRklYTUU6IFNldHRpbmcgb3B0aW9ucy5jaHJvbWl1bSB0byBUcnVl
IGZvcmNlcyBwb3J0LmdldCgpIHRvIG9ubHkgbG9vawogICAgICMgYXQgQ2hyb21pdW0gcG9ydHM7
IHdlIGhhcmQtY29kZSB0aGlzIGJlY2F1c2UgdGhpcyBzY3JpcHQgZG9lc24ndCB3b3JrCiAgICAg
IyBvbiBub24tQ2hyb21pdW0gcG9ydHMgeWV0LiBXZSBzaG91bGQgZml4IHRoYXQuCiAgICAgb3B0
aW9ucy5jaHJvbWl1bSA9IFRydWUKLSAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KE5vbmUsIG9wdGlv
bnMpCiAKICAgICAjIFNldCB1cCBvdXIgbG9nZ2luZyBmb3JtYXQuCiAgICAgbG9nX2xldmVsID0g
bG9nZ2luZy5JTkZPCkBAIC0xMDA0LDYgKzEwMDcsMjIgQEAgZGVmIG1haW4oKToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyUobGV2ZWxuYW1lKXMgJShtZXNzYWdlKXMnKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGVmbXQ9JyV5JW0lZCAlSDolTTolUycpCiAKKyAgICAj
IG9wdGlvbnMudGFyZ2V0IGlzIHVzZWQgYnkgcmViYXNlbGluZSB0b29sIHRvIGZpbmQgaW1hZ2Vf
ZGlmZiBiaW5hcnkuCisgICAgIyBJZiBvcHRpb25zLnRhcmdldCBpcyBub3Qgc3BlY2lmaWVkLCB0
cnkgdG8gZmlndXJlIHdoaWNoIGltZ2FnZV9kaWZmIGJpbmFyeQorICAgICMgKGRlYnVnIG9yIHJl
bGVhc2UpIGV4aXN0cyBhbmQgc2V0IG9wdGlvbnMudGFyZ2V0IGJhc2VkIG9uIHdoYXQgd2UgZm91
bmQuCisgICAgcG9ydF9vYmogPSBOb25lCisgICAgaWYgbm90IG9wdGlvbnMudGFyZ2V0OgorICAg
ICAgICBvcHRpb25zLnRhcmdldCA9ICJyZWxlYXNlIgorICAgICAgICBwb3J0X29iaiA9IHBvcnQu
Z2V0KE5vbmUsIG9wdGlvbnMpCisgICAgICAgIGlmIG5vdCBwb3J0X29iai5jaGVja19pbWFnZV9k
aWZmKE5vbmUsIEZhbHNlKToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ05vIHJlbGVhc2UgdmVy
c2lvbiBpbWFnZSBkaWZmIGJpbmFyeSBmb3VuZC4nKQorICAgICAgICAgICAgb3B0aW9ucy50YXJn
ZXQgPSAiZGVidWciCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdGb3Vu
ZCByZWxlYXNlIHZlcnNpb24gaW1hZ2UgZGlmZiBiaW5hcnkuJykKKworICAgIGlmIG5vdCBwb3J0
X29iajoKKyAgICAgICAgcG9ydF9vYmogPSBwb3J0LmdldChOb25lLCBvcHRpb25zKQorCiAgICAg
IyBWZXJpZnkgJ3BsYXRmb3Jtcycgb3B0aW9uIGlzIHZhbGlkCiAgICAgaWYgbm90IG9wdGlvbnMu
cGxhdGZvcm1zOgogICAgICAgICBfbG9nLmVycm9yKCdJbnZhbGlkICJwbGF0Zm9ybXMiIG9wdGlv
bi4gLS1wbGF0Zm9ybXMgbXVzdCBiZSAnCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiA1Njgx
MCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTAgQEAgY2xhc3MgUG9ydChvYmplY3Qp
OgogICAgICAgICBSZXR1cm5zIHdoZXRoZXIgdGhlIHN5c3RlbSBpcyBwcm9wZXJseSBjb25maWd1
cmVkLiIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNoZWNrX2ltYWdlX2RpZmYo
c2VsZiwgb3ZlcnJpZGVfc3RlcD1Ob25lLCBsb2dnaW5nPVRydWUpOgorICAgICAgICAiIiJUaGlz
IHJvdXRpbmUgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIGltYWdlX2RpZmYgYmluYXJ5IGV4aXN0
cy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoJ1BvcnQuY2hlY2tfaW1hZ2VfZGlm
ZicpCisKICAgICBkZWYgY29tcGFyZV90ZXh0KHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVhbF90
ZXh0KToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSB0d28gc3RyaW5ncyBh
cmUgKm5vdCogZXF1YWwuIFRoaXMKICAgICAgICAgcm91dGluZSBpcyB1c2VkIHRvIGRpZmYgdGV4
dCBvdXRwdXQuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJKHJldmlzaW9uIDU2ODEwKQorKysg
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDIyIEBAIGltcG9ydCB3ZWJzb2NrZXRfc2Vy
dmVyCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
LmNocm9taXVtIikKIAogCi1kZWYgY2hlY2tfZmlsZV9leGlzdHMocGF0aF90b19maWxlLCBmaWxl
X2Rlc2NyaXB0aW9uLCBvdmVycmlkZV9zdGVwPU5vbmUpOgorZGVmIGNoZWNrX2ZpbGVfZXhpc3Rz
KHBhdGhfdG9fZmlsZSwgZmlsZV9kZXNjcmlwdGlvbiwgb3ZlcnJpZGVfc3RlcD1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2dpbmc9VHJ1ZSk6CiAgICAgIiIiVmVyaWZ5IHRoZSBmaWxl
IGlzIHByZXNlbnQgd2hlcmUgZXhwZWN0ZWQgb3IgbG9nIGFuIGVycm9yLgogCiAgICAgQXJnczoK
ICAgICAgICAgZmlsZV9uYW1lOiBUaGUgKGh1bWFuIGZyaWVuZGx5KSBuYW1lIG9yIGRlc2NyaXB0
aW9uIG9mIHRoZSBmaWxlCiAgICAgICAgICAgICB5b3UncmUgbG9va2luZyBmb3IgKGUuZy4sICJI
VFRQIFNlcnZlciIpLiBVc2VkIGZvciBlcnJvciBsb2dnaW5nLgotICAgICAgICBvdmVycmlkZV9z
dGVwOiBBbiBvcHRpb25hbCBzdHJpbmcgdG8gYmUgbG9nZ2VkIGlmIHRoZSBjaGVjayBmYWlscy4i
IiIKKyAgICAgICAgb3ZlcnJpZGVfc3RlcDogQW4gb3B0aW9uYWwgc3RyaW5nIHRvIGJlIGxvZ2dl
ZCBpZiB0aGUgY2hlY2sgZmFpbHMuCisgICAgICAgIGxvZ2dpbmc6IFdoZXRoZXIgb3Igbm90IGxv
ZyB0aGUgZXJyb3IgbWVzc2FnZXMuIiIiCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGhf
dG9fZmlsZSk6Ci0gICAgICAgIF9sb2cuZXJyb3IoJ1VuYWJsZSB0byBmaW5kICVzJyAlIGZpbGVf
ZGVzY3JpcHRpb24pCi0gICAgICAgIF9sb2cuZXJyb3IoJyAgICBhdCAlcycgJSBwYXRoX3RvX2Zp
bGUpCi0gICAgICAgIGlmIG92ZXJyaWRlX3N0ZXA6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCcg
ICAgJXMnICUgb3ZlcnJpZGVfc3RlcCkKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAg
ICAgIGlmIGxvZ2dpbmc6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdVbmFibGUgdG8gZmluZCAl
cycgJSBmaWxlX2Rlc2NyaXB0aW9uKQorICAgICAgICAgICAgX2xvZy5lcnJvcignICAgIGF0ICVz
JyAlIHBhdGhfdG9fZmlsZSkKKyAgICAgICAgICAgIGlmIG92ZXJyaWRlX3N0ZXA6CisgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcignICAgICVzJyAlIG92ZXJyaWRlX3N0ZXApCisgICAgICAgICAg
ICAgICAgX2xvZy5lcnJvcignJykKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgcmV0dXJuIFRy
dWUKIApAQCAtODgsOCArOTEsNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYXlvdXQgdGVzdCBoZWxwZXIn
KSBhbmQgcmVzdWx0CiAKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMubm9fcGl4ZWxfdGVz
dHM6Ci0gICAgICAgICAgICBpbWFnZV9kaWZmX3BhdGggPSBzZWxmLl9wYXRoX3RvX2ltYWdlX2Rp
ZmYoKQotICAgICAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9leGlzdHMoaW1hZ2VfZGlmZl9w
YXRoLCAnaW1hZ2UgZGlmZiBleGUnLAorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja19p
bWFnZV9kaWZmKAogICAgICAgICAgICAgICAgICdUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1u
by1waXhlbC10ZXN0cycpIGFuZCByZXN1bHQKIAogICAgICAgICByZXR1cm4gcmVzdWx0CkBAIC0x
MDUsNiArMTA3LDExIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBkZWYgY2hlY2tfaW1h
Z2VfZGlmZihzZWxmLCBvdmVycmlkZV9zdGVwPU5vbmUsIGxvZ2dpbmc9VHJ1ZSk6CisgICAgICAg
IGltYWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1hZ2VfZGlmZigpCisgICAgICAgIHJl
dHVybiBjaGVja19maWxlX2V4aXN0cyhpbWFnZV9kaWZmX3BhdGgsICdpbWFnZSBkaWZmIGV4ZScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZV9zdGVwLCBsb2dnaW5n
KQorCiAgICAgZGVmIHBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKHNlbGYsICpjb21wcyk6CiAgICAg
ICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1hZGUgYnkgam9pbmluZyB0aGUg
dG9wIG9mIHRoZQogICAgICAgICBDaHJvbWl1bSBzb3VyY2UgdHJlZSBhbmQgdGhlIGxpc3Qgb2Yg
cGF0aCBjb21wb25lbnRzIGluIHwqY29tcHN8LiIiIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52098</attachid>
            <date>2010-03-30 16:35:45 -0700</date>
            <delta_ts>2010-03-31 11:43:26 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>target.patch</filename>
            <type>text/plain</type>
            <size>5579</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2ODEwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMzAgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUgdG9vbCB0byBjaGVjayB0aGUgcmVsZWFzZSBp
bWFnZSBkaWZmIGJpbmFyeSBhbmQKKyAgICAgICAgZmFsbGJhY2sgdG8gZGVidWcgaWYgdGhlIHJl
bGVhc2UgdmVyc2lvbiBkb2VzIG5vdCBleGlzdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorCiAy
MDEwLTAzLTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDU2ODEwKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTk5Myw3ICs5OTMsNiBAQCBkZWYgbWFpbigp
OgogICAgICMgYXQgQ2hyb21pdW0gcG9ydHM7IHdlIGhhcmQtY29kZSB0aGlzIGJlY2F1c2UgdGhp
cyBzY3JpcHQgZG9lc24ndCB3b3JrCiAgICAgIyBvbiBub24tQ2hyb21pdW0gcG9ydHMgeWV0LiBX
ZSBzaG91bGQgZml4IHRoYXQuCiAgICAgb3B0aW9ucy5jaHJvbWl1bSA9IFRydWUKLSAgICBwb3J0
X29iaiA9IHBvcnQuZ2V0KE5vbmUsIG9wdGlvbnMpCiAKICAgICAjIFNldCB1cCBvdXIgbG9nZ2lu
ZyBmb3JtYXQuCiAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCkBAIC0xMDA0LDYgKzEwMDMs
MTggQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyUobGV2
ZWxuYW1lKXMgJShtZXNzYWdlKXMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVmbXQ9
JyV5JW0lZCAlSDolTTolUycpCiAKKyAgICAjIG9wdGlvbnMudGFyZ2V0IGlzIHVzZWQgYnkgcG9y
dCB0byBsb2NhdGUgaW1hZ2VfZGlmZiBiaW5hcnkuCisgICAgIyBDaGVjayB0aGUgaW1nYWdlX2Rp
ZmYgcmVsZWFzZSBiaW5hcnksIGlmIGl0IGRvZXMgbm90IGV4aXN0LAorICAgICMgZmFsbGJhY2sg
dG8gZGVidWcuCisgICAgb3B0aW9ucy50YXJnZXQgPSAicmVsZWFzZSIKKyAgICBwb3J0X29iaiA9
IHBvcnQuZ2V0KE5vbmUsIG9wdGlvbnMpCisgICAgaWYgbm90IHBvcnRfb2JqLmNoZWNrX2ltYWdl
X2RpZmYoTm9uZSwgRmFsc2UpOgorICAgICAgICBfbG9nLmRlYnVnKCdObyByZWxlYXNlIHZlcnNp
b24gaW1hZ2UgZGlmZiBiaW5hcnkgZm91bmQuJykKKyAgICAgICAgb3B0aW9ucy50YXJnZXQgPSAi
ZGVidWciCisgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoTm9uZSwgb3B0aW9ucykKKyAgICBl
bHNlOgorICAgICAgIF9sb2cuZGVidWcoJ0ZvdW5kIHJlbGVhc2UgdmVyc2lvbiBpbWFnZSBkaWZm
IGJpbmFyeS4nKQorCiAgICAgIyBWZXJpZnkgJ3BsYXRmb3Jtcycgb3B0aW9uIGlzIHZhbGlkCiAg
ICAgaWYgbm90IG9wdGlvbnMucGxhdGZvcm1zOgogICAgICAgICBfbG9nLmVycm9yKCdJbnZhbGlk
ICJwbGF0Zm9ybXMiIG9wdGlvbi4gLS1wbGF0Zm9ybXMgbXVzdCBiZSAnCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5CShyZXZpc2lvbiA1NjgxMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTAgQEAg
Y2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBSZXR1cm5zIHdoZXRoZXIgdGhlIHN5c3RlbSBp
cyBwcm9wZXJseSBjb25maWd1cmVkLiIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVm
IGNoZWNrX2ltYWdlX2RpZmYoc2VsZiwgb3ZlcnJpZGVfc3RlcD1Ob25lLCBsb2dnaW5nPVRydWUp
OgorICAgICAgICAiIiJUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIGltYWdl
X2RpZmYgYmluYXJ5IGV4aXN0cy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoJ1Bv
cnQuY2hlY2tfaW1hZ2VfZGlmZicpCisKICAgICBkZWYgY29tcGFyZV90ZXh0KHNlbGYsIGV4cGVj
dGVkX3RleHQsIGFjdHVhbF90ZXh0KToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3Igbm90
IHRoZSB0d28gc3RyaW5ncyBhcmUgKm5vdCogZXF1YWwuIFRoaXMKICAgICAgICAgcm91dGluZSBp
cyB1c2VkIHRvIGRpZmYgdGV4dCBvdXRwdXQuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJKHJl
dmlzaW9uIDU2ODEwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bS5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDIyIEBAIGlt
cG9ydCB3ZWJzb2NrZXRfc2VydmVyCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0LmNocm9taXVtIikKIAogCi1kZWYgY2hlY2tfZmlsZV9leGlzdHMo
cGF0aF90b19maWxlLCBmaWxlX2Rlc2NyaXB0aW9uLCBvdmVycmlkZV9zdGVwPU5vbmUpOgorZGVm
IGNoZWNrX2ZpbGVfZXhpc3RzKHBhdGhfdG9fZmlsZSwgZmlsZV9kZXNjcmlwdGlvbiwgb3ZlcnJp
ZGVfc3RlcD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmc9VHJ1ZSk6CiAgICAg
IiIiVmVyaWZ5IHRoZSBmaWxlIGlzIHByZXNlbnQgd2hlcmUgZXhwZWN0ZWQgb3IgbG9nIGFuIGVy
cm9yLgogCiAgICAgQXJnczoKICAgICAgICAgZmlsZV9uYW1lOiBUaGUgKGh1bWFuIGZyaWVuZGx5
KSBuYW1lIG9yIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlCiAgICAgICAgICAgICB5b3UncmUgbG9v
a2luZyBmb3IgKGUuZy4sICJIVFRQIFNlcnZlciIpLiBVc2VkIGZvciBlcnJvciBsb2dnaW5nLgot
ICAgICAgICBvdmVycmlkZV9zdGVwOiBBbiBvcHRpb25hbCBzdHJpbmcgdG8gYmUgbG9nZ2VkIGlm
IHRoZSBjaGVjayBmYWlscy4iIiIKKyAgICAgICAgb3ZlcnJpZGVfc3RlcDogQW4gb3B0aW9uYWwg
c3RyaW5nIHRvIGJlIGxvZ2dlZCBpZiB0aGUgY2hlY2sgZmFpbHMuCisgICAgICAgIGxvZ2dpbmc6
IFdoZXRoZXIgb3Igbm90IGxvZyB0aGUgZXJyb3IgbWVzc2FnZXMuIiIiCiAgICAgaWYgbm90IG9z
LnBhdGguZXhpc3RzKHBhdGhfdG9fZmlsZSk6Ci0gICAgICAgIF9sb2cuZXJyb3IoJ1VuYWJsZSB0
byBmaW5kICVzJyAlIGZpbGVfZGVzY3JpcHRpb24pCi0gICAgICAgIF9sb2cuZXJyb3IoJyAgICBh
dCAlcycgJSBwYXRoX3RvX2ZpbGUpCi0gICAgICAgIGlmIG92ZXJyaWRlX3N0ZXA6Ci0gICAgICAg
ICAgICBfbG9nLmVycm9yKCcgICAgJXMnICUgb3ZlcnJpZGVfc3RlcCkKLSAgICAgICAgICAgIF9s
b2cuZXJyb3IoJycpCisgICAgICAgIGlmIGxvZ2dpbmc6CisgICAgICAgICAgICBfbG9nLmVycm9y
KCdVbmFibGUgdG8gZmluZCAlcycgJSBmaWxlX2Rlc2NyaXB0aW9uKQorICAgICAgICAgICAgX2xv
Zy5lcnJvcignICAgIGF0ICVzJyAlIHBhdGhfdG9fZmlsZSkKKyAgICAgICAgICAgIGlmIG92ZXJy
aWRlX3N0ZXA6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignICAgICVzJyAlIG92ZXJyaWRl
X3N0ZXApCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKICAgICAgICAgcmV0dXJuIEZh
bHNlCiAgICAgcmV0dXJuIFRydWUKIApAQCAtODgsOCArOTEsNyBAQCBjbGFzcyBDaHJvbWl1bVBv
cnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICds
YXlvdXQgdGVzdCBoZWxwZXInKSBhbmQgcmVzdWx0CiAKICAgICAgICAgaWYgbm90IHNlbGYuX29w
dGlvbnMubm9fcGl4ZWxfdGVzdHM6Ci0gICAgICAgICAgICBpbWFnZV9kaWZmX3BhdGggPSBzZWxm
Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKQotICAgICAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9l
eGlzdHMoaW1hZ2VfZGlmZl9wYXRoLCAnaW1hZ2UgZGlmZiBleGUnLAorICAgICAgICAgICAgcmVz
dWx0ID0gc2VsZi5jaGVja19pbWFnZV9kaWZmKAogICAgICAgICAgICAgICAgICdUbyBvdmVycmlk
ZSwgaW52b2tlIHdpdGggLS1uby1waXhlbC10ZXN0cycpIGFuZCByZXN1bHQKIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0CkBAIC0xMDUsNiArMTA3LDExIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNl
LlBvcnQpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAK
KyAgICBkZWYgY2hlY2tfaW1hZ2VfZGlmZihzZWxmLCBvdmVycmlkZV9zdGVwPU5vbmUsIGxvZ2dp
bmc9VHJ1ZSk6CisgICAgICAgIGltYWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1hZ2Vf
ZGlmZigpCisgICAgICAgIHJldHVybiBjaGVja19maWxlX2V4aXN0cyhpbWFnZV9kaWZmX3BhdGgs
ICdpbWFnZSBkaWZmIGV4ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVy
cmlkZV9zdGVwLCBsb2dnaW5nKQorCiAgICAgZGVmIHBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKHNl
bGYsICpjb21wcyk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1h
ZGUgYnkgam9pbmluZyB0aGUgdG9wIG9mIHRoZQogICAgICAgICBDaHJvbWl1bSBzb3VyY2UgdHJl
ZSBhbmQgdGhlIGxpc3Qgb2YgcGF0aCBjb21wb25lbnRzIGluIHwqY29tcHN8LiIiIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52103</attachid>
            <date>2010-03-30 17:11:45 -0700</date>
            <delta_ts>2010-03-31 16:47:34 -0700</delta_ts>
            <desc>Document the arguments per comment#23</desc>
            <filename>target.patch</filename>
            <type>text/plain</type>
            <size>5601</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2ODEwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMzAgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUgdG9vbCB0byBjaGVjayB0aGUgcmVsZWFzZSBp
bWFnZSBkaWZmIGJpbmFyeSBhbmQKKyAgICAgICAgZmFsbGJhY2sgdG8gZGVidWcgaWYgdGhlIHJl
bGVhc2UgdmVyc2lvbiBkb2VzIG5vdCBleGlzdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorCiAy
MDEwLTAzLTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDU2ODEwKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTk5Myw3ICs5OTMsNiBAQCBkZWYgbWFpbigp
OgogICAgICMgYXQgQ2hyb21pdW0gcG9ydHM7IHdlIGhhcmQtY29kZSB0aGlzIGJlY2F1c2UgdGhp
cyBzY3JpcHQgZG9lc24ndCB3b3JrCiAgICAgIyBvbiBub24tQ2hyb21pdW0gcG9ydHMgeWV0LiBX
ZSBzaG91bGQgZml4IHRoYXQuCiAgICAgb3B0aW9ucy5jaHJvbWl1bSA9IFRydWUKLSAgICBwb3J0
X29iaiA9IHBvcnQuZ2V0KE5vbmUsIG9wdGlvbnMpCiAKICAgICAjIFNldCB1cCBvdXIgbG9nZ2lu
ZyBmb3JtYXQuCiAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCkBAIC0xMDA0LDYgKzEwMDMs
MTggQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyUobGV2
ZWxuYW1lKXMgJShtZXNzYWdlKXMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVmbXQ9
JyV5JW0lZCAlSDolTTolUycpCiAKKyAgICAjIG9wdGlvbnMudGFyZ2V0IGlzIHVzZWQgYnkgcG9y
dCB0byBsb2NhdGUgaW1hZ2VfZGlmZiBiaW5hcnkuCisgICAgIyBDaGVjayB0aGUgaW1nYWdlX2Rp
ZmYgcmVsZWFzZSBiaW5hcnksIGlmIGl0IGRvZXMgbm90IGV4aXN0LAorICAgICMgZmFsbGJhY2sg
dG8gZGVidWcuCisgICAgb3B0aW9ucy50YXJnZXQgPSAicmVsZWFzZSIKKyAgICBwb3J0X29iaiA9
IHBvcnQuZ2V0KE5vbmUsIG9wdGlvbnMpCisgICAgaWYgbm90IHBvcnRfb2JqLmNoZWNrX2ltYWdl
X2RpZmYob3ZlcnJpZGVfc3RlcD1Ob25lLCBsb2dnaW5nPUZhbHNlKToKKyAgICAgICAgX2xvZy5k
ZWJ1ZygnTm8gcmVsZWFzZSB2ZXJzaW9uIGltYWdlIGRpZmYgYmluYXJ5IGZvdW5kLicpCisgICAg
ICAgIG9wdGlvbnMudGFyZ2V0ID0gImRlYnVnIgorICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0
KE5vbmUsIG9wdGlvbnMpCisgICAgZWxzZToKKyAgICAgICBfbG9nLmRlYnVnKCdGb3VuZCByZWxl
YXNlIHZlcnNpb24gaW1hZ2UgZGlmZiBiaW5hcnkuJykKKwogICAgICMgVmVyaWZ5ICdwbGF0Zm9y
bXMnIG9wdGlvbiBpcyB2YWxpZAogICAgIGlmIG5vdCBvcHRpb25zLnBsYXRmb3JtczoKICAgICAg
ICAgX2xvZy5lcnJvcignSW52YWxpZCAicGxhdGZvcm1zIiBvcHRpb24uIC0tcGxhdGZvcm1zIG11
c3QgYmUgJwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQkocmV2aXNpb24gNTY4MTApCisrKyBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgUmV0dXJu
cyB3aGV0aGVyIHRoZSBzeXN0ZW0gaXMgcHJvcGVybHkgY29uZmlndXJlZC4iIiIKICAgICAgICAg
cmV0dXJuIFRydWUKIAorICAgIGRlZiBjaGVja19pbWFnZV9kaWZmKHNlbGYsIG92ZXJyaWRlX3N0
ZXA9Tm9uZSwgbG9nZ2luZz1UcnVlKToKKyAgICAgICAgIiIiVGhpcyByb3V0aW5lIGlzIHVzZWQg
dG8gY2hlY2sgd2hldGhlciBpbWFnZV9kaWZmIGJpbmFyeSBleGlzdHMuIiIiCisgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkKCdQb3J0LmNoZWNrX2ltYWdlX2RpZmYnKQorCiAgICAgZGVmIGNv
bXBhcmVfdGV4dChzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCk6CiAgICAgICAgICIi
IlJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgdHdvIHN0cmluZ3MgYXJlICpub3QqIGVxdWFsLiBU
aGlzCiAgICAgICAgIHJvdXRpbmUgaXMgdXNlZCB0byBkaWZmIHRleHQgb3V0cHV0LgpJbmRleDog
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CShyZXZpc2lvbiA1NjgxMCkKKysrIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDE5ICs0NCwyMiBAQCBpbXBvcnQgd2Vic29ja2V0X3NlcnZlcgogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5jaHJvbWl1bSIpCiAKIAot
ZGVmIGNoZWNrX2ZpbGVfZXhpc3RzKHBhdGhfdG9fZmlsZSwgZmlsZV9kZXNjcmlwdGlvbiwgb3Zl
cnJpZGVfc3RlcD1Ob25lKToKK2RlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3RvX2ZpbGUsIGZp
bGVfZGVzY3JpcHRpb24sIG92ZXJyaWRlX3N0ZXA9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBsb2dnaW5nPVRydWUpOgogICAgICIiIlZlcmlmeSB0aGUgZmlsZSBpcyBwcmVzZW50IHdoZXJl
IGV4cGVjdGVkIG9yIGxvZyBhbiBlcnJvci4KIAogICAgIEFyZ3M6CiAgICAgICAgIGZpbGVfbmFt
ZTogVGhlIChodW1hbiBmcmllbmRseSkgbmFtZSBvciBkZXNjcmlwdGlvbiBvZiB0aGUgZmlsZQog
ICAgICAgICAgICAgeW91J3JlIGxvb2tpbmcgZm9yIChlLmcuLCAiSFRUUCBTZXJ2ZXIiKS4gVXNl
ZCBmb3IgZXJyb3IgbG9nZ2luZy4KLSAgICAgICAgb3ZlcnJpZGVfc3RlcDogQW4gb3B0aW9uYWwg
c3RyaW5nIHRvIGJlIGxvZ2dlZCBpZiB0aGUgY2hlY2sgZmFpbHMuIiIiCisgICAgICAgIG92ZXJy
aWRlX3N0ZXA6IEFuIG9wdGlvbmFsIHN0cmluZyB0byBiZSBsb2dnZWQgaWYgdGhlIGNoZWNrIGZh
aWxzLgorICAgICAgICBsb2dnaW5nOiBXaGV0aGVyIG9yIG5vdCBsb2cgdGhlIGVycm9yIG1lc3Nh
Z2VzLiIiIgogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoX3RvX2ZpbGUpOgotICAgICAg
ICBfbG9nLmVycm9yKCdVbmFibGUgdG8gZmluZCAlcycgJSBmaWxlX2Rlc2NyaXB0aW9uKQotICAg
ICAgICBfbG9nLmVycm9yKCcgICAgYXQgJXMnICUgcGF0aF90b19maWxlKQotICAgICAgICBpZiBv
dmVycmlkZV9zdGVwOgotICAgICAgICAgICAgX2xvZy5lcnJvcignICAgICVzJyAlIG92ZXJyaWRl
X3N0ZXApCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICBpZiBsb2dnaW5nOgor
ICAgICAgICAgICAgX2xvZy5lcnJvcignVW5hYmxlIHRvIGZpbmQgJXMnICUgZmlsZV9kZXNjcmlw
dGlvbikKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgICBhdCAlcycgJSBwYXRoX3RvX2ZpbGUp
CisgICAgICAgICAgICBpZiBvdmVycmlkZV9zdGVwOgorICAgICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJyAgICAlcycgJSBvdmVycmlkZV9zdGVwKQorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
JycpCiAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBUcnVlCiAKQEAgLTg4LDggKzkx
LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnbGF5b3V0IHRlc3QgaGVscGVyJykgYW5kIHJlc3VsdAogCiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLm5vX3BpeGVsX3Rlc3RzOgotICAgICAgICAgICAg
aW1hZ2VfZGlmZl9wYXRoID0gc2VsZi5fcGF0aF90b19pbWFnZV9kaWZmKCkKLSAgICAgICAgICAg
IHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKGltYWdlX2RpZmZfcGF0aCwgJ2ltYWdlIGRpZmYg
ZXhlJywKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY2hlY2tfaW1hZ2VfZGlmZigKICAgICAg
ICAgICAgICAgICAnVG8gb3ZlcnJpZGUsIGludm9rZSB3aXRoIC0tbm8tcGl4ZWwtdGVzdHMnKSBh
bmQgcmVzdWx0CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMTA1LDYgKzEwNywxMSBAQCBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQog
ICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNoZWNrX2ltYWdlX2RpZmYoc2VsZiwgb3Zl
cnJpZGVfc3RlcD1Ob25lLCBsb2dnaW5nPVRydWUpOgorICAgICAgICBpbWFnZV9kaWZmX3BhdGgg
PSBzZWxmLl9wYXRoX3RvX2ltYWdlX2RpZmYoKQorICAgICAgICByZXR1cm4gY2hlY2tfZmlsZV9l
eGlzdHMoaW1hZ2VfZGlmZl9wYXRoLCAnaW1hZ2UgZGlmZiBleGUnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVfc3RlcCwgbG9nZ2luZykKKwogICAgIGRlZiBwYXRo
X2Zyb21fY2hyb21pdW1fYmFzZShzZWxmLCAqY29tcHMpOgogICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKICAgICAg
ICAgQ2hyb21pdW0gc291cmNlIHRyZWUgYW5kIHRoZSBsaXN0IG9mIHBhdGggY29tcG9uZW50cyBp
biB8KmNvbXBzfC4iIiIK
</data>
<flag name="review"
          id="35500"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>