<?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>36692</bug_id>
          
          <creation_ts>2010-03-26 20:45:05 -0700</creation_ts>
          <short_desc>Redo the file:// origin separation</short_desc>
          <delta_ts>2010-03-29 19:32:26 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Evans">scarybeasts</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204922</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-26 20:45:05 -0700</bug_when>
    <thetext>The (ab?)use of the unique origin concept breaks things such as when a local file:// legitimately creates itself a same-origin iframe via &lt;iframe&gt;&lt;/iframe&gt;

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204926</commentid>
    <comment_count>1</comment_count>
      <attachid>51809</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-26 21:12:03 -0700</bug_when>
    <thetext>Created attachment 51809
Track file:// origins by path instead of abusing the unique origin concept</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204929</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-26 21:13:43 -0700</bug_when>
    <thetext>Heya Adam -- let&apos;s get this piece landed first.
It still leaves open the question of local storage / web databases on the file:// origin. These share one database.
If we decide we should split this out, I&apos;ll do in another change. (Not that I can get excited about the threat to be honest).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204936</commentid>
    <comment_count>3</comment_count>
      <attachid>51809</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-26 22:07:30 -0700</bug_when>
    <thetext>Comment on attachment 51809
Track file:// origins by path instead of abusing the unique origin concept

Can we do this as a static instead of a member?  It doesn&apos;t make sense on an origin-by-origin basis.

You can see how we do that with the origin white list  / scheme registration stuff.

+ m_filePath

Why not just m_path and always store it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204941</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-26 23:37:06 -0700</bug_when>
    <thetext>Re: static. I&apos;m not a fan. It&apos;d complicate the test, which does a runtime flag switch.

re: m_filePath. I&apos;m happy to unconditionally store m_path but it seems an unnecessary waste in the common http case. I can&apos;t see that we&apos;d ever care about the value after construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204957</commentid>
    <comment_count>5</comment_count>
      <attachid>51809</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 00:51:14 -0700</bug_when>
    <thetext>Comment on attachment 51809
Track file:// origins by path instead of abusing the unique origin concept

+ return String(&quot;file://&quot;) + m_filePath;

This code seems wrong.  This value is exposed to web content.  We want the current value, not the extended value.

+ if (isLocal() &amp;&amp; (m_enforceFilePathSeparation || other-&gt;m_enforceFilePathSeparation) &amp;&amp; m_filePath != other-&gt;m_filePath)

This code is copy/pasted.  Whenever you copy/paste code, you should consider how to abstract it do you don&apos;t have to repeat yourself.

Other than that, this looks ok.  Do you want to add a test for the about:blank that caused us to go down this path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204958</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-27 00:58:01 -0700</bug_when>
    <thetext>Thanks for the review. I&apos;ll fix the items noted and do a little re-testing.
Re: the test of about:blank iframe, it&apos;s covered in this change by tweaking the original test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205285</commentid>
    <comment_count>7</comment_count>
      <attachid>51876</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-28 20:02:32 -0700</bug_when>
    <thetext>Created attachment 51876
Address comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205286</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-28 20:04:16 -0700</bug_when>
    <thetext>OK, attempt #2!
Throw it on the commit-queue if you like it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205310</commentid>
    <comment_count>9</comment_count>
      <attachid>51876</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 00:16:34 -0700</bug_when>
    <thetext>Comment on attachment 51876
Address comments.

+    if (m_protocol == &quot;file&quot;) {
+        String str(&quot;file://&quot;);
+        if (m_enforceFilePathSeparation)
+            str += m_filePath;

This code is still wrong.  As I said above, this value is exposed to web content and we can&apos;t just go changing it.  Making the code conditional on m_enforceFilePathSeparation doesn&apos;t solve the problem of giving providing the wrong string to JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205521</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-29 10:34:46 -0700</bug_when>
    <thetext>It&apos;s a security vulnerability to not consider the full file:// origin context in toString(). v8, at least, uses SecurityOrigin::toString() as a cache key for cached permission checks.
Since it&apos;s a security contract an unknown number of consumers are depending on, I really don&apos;t want to change it.

How is this value exposed to Javascript? We can think about whether it makes logical sense or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205527</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 10:42:31 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; It&apos;s a security vulnerability to not consider the full file:// origin context
&gt; in toString(). v8, at least, uses SecurityOrigin::toString() as a cache key for
&gt; cached permission checks.

If so, then there&apos;s a lot more work to do to fix this bug bug completely.

&gt; Since it&apos;s a security contract an unknown number of consumers are depending on,
&gt; I really don&apos;t want to change it.

We can&apos;t land the patch you&apos;ve attached here because it changes something in the web platform that we don&apos;t want to change.  If you enable this setting by default an run the LayoutTests, I think you&apos;ll find at least one failing test because of this issue.

&gt; How is this value exposed to Javascript? We can think about whether it makes
&gt; logical sense or not.

It&apos;s exposed as the &quot;origin&quot; property of message events generated via postMessage.  It&apos;s also exposed in the Origin HTTP header that&apos;s part of CORS.  There might be other cases, but those are the ones that come to mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205652</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-29 13:43:21 -0700</bug_when>
    <thetext>In the case of the postMessage origin whilst we are in &quot;isolated file origin&quot; mode, it sounds like a risk to return simply &quot;file://&quot;. The message recipient needs to know the full granularity of the source origin in order to avoid getting security decisions wrong. I stand by the patch.

If you liked, as a simple tweak to resolve this for M5, we could return &quot;null&quot; for all file:// origins when we are in &quot;isolated file origin&quot; mode. That&apos;s what currently happens without this patch (toString() on a unique origin returns &quot;null&quot;). v8 knows that a null origin implies it must always do access checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205693</commentid>
    <comment_count>13</comment_count>
      <attachid>51973</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-29 15:23:08 -0700</bug_when>
    <thetext>Created attachment 51973
Use &quot;null&quot; domain instead of exposing path as per chat with Adam</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205694</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-29 15:23:18 -0700</bug_when>
    <thetext>Third time lucky? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205695</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-29 15:25:03 -0700</bug_when>
    <thetext>Attachment 51973 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/SecurityOrigin.cpp:352:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 6 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>205712</commentid>
    <comment_count>16</comment_count>
      <attachid>51977</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-29 15:44:49 -0700</bug_when>
    <thetext>Created attachment 51977
Fix style-bot error!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205713</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-03-29 15:45:10 -0700</bug_when>
    <thetext>Bitten by style-bot... attempt #4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205718</commentid>
    <comment_count>18</comment_count>
      <attachid>51977</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 15:54:28 -0700</bug_when>
    <thetext>Comment on attachment 51977
Fix style-bot error!

Looks good.  Thanks for sticking with it.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205807</commentid>
    <comment_count>19</comment_count>
      <attachid>51977</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-29 19:32:20 -0700</bug_when>
    <thetext>Comment on attachment 51977
Fix style-bot error!

Clearing flags on attachment: 51977

Committed r56757: &lt;http://trac.webkit.org/changeset/56757&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205808</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-29 19:32:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51809</attachid>
            <date>2010-03-26 21:12:03 -0700</date>
            <delta_ts>2010-03-29 15:44:49 -0700</delta_ts>
            <desc>Track file:// origins by path instead of abusing the unique origin concept</desc>
            <filename>fileorigin.diff</filename>
            <type>text/plain</type>
            <size>7928</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDM4LDcgKzQ0MzgsNyBAQAogICAgICAgICB9IGVsc2Ug
aWYgKCFzZXR0aW5ncy0+YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCkgJiYgc2VjdXJpdHlP
cmlnaW4oKS0+aXNMb2NhbCgpKSB7CiAgICAgICAgICAgLy8gU29tZSBjbGllbnRzIHdhbnQgZmls
ZTovLyBVUkxzIHRvIGhhdmUgZXZlbiB0aWdodGVyIHJlc3RyaWN0aW9ucyBieQogICAgICAgICAg
IC8vIGRlZmF1bHQsIGFuZCBub3QgYmUgYWJsZSB0byBhY2Nlc3Mgb3RoZXIgbG9jYWwgZmlsZXMu
Ci0gICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+bWFrZVVuaXF1ZSgpOworICAgICAgICAgIHNl
Y3VyaXR5T3JpZ2luKCktPmVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMy0yNiAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvbid0IHVzZSB1bmlxdWUgZG9tYWlucyBmb3IgZmlsZTovLyBzZXBhcmF0aW9uOiBp
dCBicmVha3MgbG9jYWwKKyAgICAgICAgZGF0YWJhc2VzLCBhbmQgYWNjZXNzIHRvIHlvdXIgb3du
IHNhbWUtb3JpZ2luIGlmcmFtZXMuIEluc3RlYWQsIHVzZQorICAgICAgICBwYXRoLWJhc2VkIGFj
Y2VzcyBjaGVja3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2NjkyCisKKyAgICAgICAgVGVzdDogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1uby1maWxlLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiByZW5h
bWVkIEFQSS4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAgIEluaXRpYWxpemUgbmV3IGZsYWcuIFRha2Ugbm90
ZSBvZiBmaWxlOi8vIHBhdGguCisgICAgICAgICAgQ29weSBuZXcgZmllbGRzIGluIGNvcHkgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToK
KyAgICAgICAgICBUYWtlIGludG8gYWNjb3VudCBwYXRoLWJhc2VkIG9yaWdpbiBzZXBhcmF0aW9u
IGZvciBmaWxlOi8vCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZW5mb3JjZUZp
bGVQYXRoU2VwYXJhdGlvbik6CisgICAgICAgICAgTmV3IG1ldGhvZCB0byBlbmFibGUgZmlsZTov
LyBwYXRoIG9yaWdpbiBzZXBhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgICBEaXNwbGF5IHBhdGggZGV0YWlscyBmb3IgZmlsZTov
LyBvcmlnaW5zLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVt
ZUhvc3RQb3J0KToKKyAgICAgICAgICBUYWtlIGludG8gYWNjb3VudCBwYXRoLWJhc2VkIG9yaWdp
biBzZXBhcmF0aW9uIGZvciBmaWxlOi8vCisKIDIwMTAtMDMtMjUgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDog
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA1NjU5NikKKysrIFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDcgQEAKICAgICAs
IG1faXNVbmlxdWUoaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgfHwgc2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc05vQWNjZXNzKG1fcHJvdG9jb2wpKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MoZmFs
c2UpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQorICAgICwgbV9lbmZvcmNlRmls
ZVBhdGhTZXBhcmF0aW9uKGZhbHNlKQogewogICAgIC8vIFRoZXNlIHByb3RvY29scyBkbyBub3Qg
Y3JlYXRlIHNlY3VyaXR5IG9yaWdpbnM7IHRoZSBvd25lciBmcmFtZSBwcm92aWRlcyB0aGUgb3Jp
Z2luCiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImFib3V0IiB8fCBtX3Byb3RvY29sID09ICJqYXZh
c2NyaXB0IikKQEAgLTExMiw2ICsxMTMsOCBAQAogICAgICAgICAvLyBEaXJlY3RvcmllcyBzaG91
bGQgbmV2ZXIgYmUgcmVhZGFibGUuCiAgICAgICAgIGlmICghdXJsLmhhc1BhdGgoKSB8fCB1cmwu
cGF0aCgpLmVuZHNXaXRoKCIvIikpCiAgICAgICAgICAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKKyAg
ICAgICAgLy8gU3RvcmUgdGhlIHBhdGggaW4gY2FzZSB3ZSBhcmUgZG9pbmcgcGVyLWZpbGUgb3Jp
Z2luIGNoZWNraW5nLgorICAgICAgICBtX2ZpbGVQYXRoID0gdXJsLnBhdGgoKTsKICAgICB9CiAK
ICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydCwgbV9wcm90b2NvbCkpCkBA
IC0xMjQsMTEgKzEyNywxMyBAQAogICAgICwgbV9ob3N0KG90aGVyLT5tX2hvc3QudGhyZWFkc2Fm
ZUNvcHkoKSkKICAgICAsIG1fZW5jb2RlZEhvc3Qob3RoZXItPm1fZW5jb2RlZEhvc3QudGhyZWFk
c2FmZUNvcHkoKSkKICAgICAsIG1fZG9tYWluKG90aGVyLT5tX2RvbWFpbi50aHJlYWRzYWZlQ29w
eSgpKQorICAgICwgbV9maWxlUGF0aChvdGhlci0+bV9maWxlUGF0aC50aHJlYWRzYWZlQ29weSgp
KQogICAgICwgbV9wb3J0KG90aGVyLT5tX3BvcnQpCiAgICAgLCBtX2lzVW5pcXVlKG90aGVyLT5t
X2lzVW5pcXVlKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3Mob3RoZXItPm1fdW5pdmVyc2FsQWNj
ZXNzKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRP
TSkKICAgICAsIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzKG90aGVyLT5tX2NhbkxvYWRMb2NhbFJl
c291cmNlcykKKyAgICAsIG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihvdGhlci0+bV9lbmZv
cmNlRmlsZVBhdGhTZXBhcmF0aW9uKQogewogfQogCkBAIC0xODYsNyArMTkxLDcgQEAKIH0KIAog
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhl
cikgY29uc3QKLXsgIAorewogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTIxMywxNyArMjE4LDIxIEBACiAgICAgLy8gT3BlcmEgOSBhbGxvd3Mg
YWNjZXNzIHdoZW4gb25seSBvbmUgcGFnZSBoYXMgc2V0IGRvY3VtZW50LmRvbWFpbiwgYnV0CiAg
ICAgLy8gdGhpcyBpcyBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuCiAKKyAgICBib29sIGNhbkFj
Y2VzcyA9IGZhbHNlOwogICAgIGlmIChtX3Byb3RvY29sID09IG90aGVyLT5tX3Byb3RvY29sKSB7
CiAgICAgICAgIGlmICghbV9kb21haW5XYXNTZXRJbkRPTSAmJiAhb3RoZXItPm1fZG9tYWluV2Fz
U2V0SW5ET00pIHsKICAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBt
X3BvcnQgPT0gb3RoZXItPm1fcG9ydCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBjYW5BY2Nlc3MgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKG1fZG9t
YWluV2FzU2V0SW5ET00gJiYgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pIHsKICAgICAgICAg
ICAgIGlmIChtX2RvbWFpbiA9PSBvdGhlci0+bV9kb21haW4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgY2FuQWNjZXNzID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXNMb2NhbCgpICYmICht
X2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24gfHwgb3RoZXItPm1fZW5mb3JjZUZpbGVQYXRoU2Vw
YXJhdGlvbikgJiYgbV9maWxlUGF0aCAhPSBvdGhlci0+bV9maWxlUGF0aCkKKyAgICAgICBjYW5B
Y2Nlc3MgPSBmYWxzZTsKKworICAgIHJldHVybiBjYW5BY2Nlc3M7CiB9CiAKIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSBjb25zdApAQCAtMzAwLDkgKzMw
OSwxMCBAQAogICAgIG1fdW5pdmVyc2FsQWNjZXNzID0gdHJ1ZTsKIH0KIAotdm9pZCBTZWN1cml0
eU9yaWdpbjo6bWFrZVVuaXF1ZSgpCit2b2lkIFNlY3VyaXR5T3JpZ2luOjplbmZvcmNlRmlsZVBh
dGhTZXBhcmF0aW9uKCkKIHsKLSAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKKyAgICBBU1NFUlQoaXNM
b2NhbCgpKTsKKyAgICBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24gPSB0cnVlOwogfQogCiBi
b29sIFNlY3VyaXR5T3JpZ2luOjppc0xvY2FsKCkgY29uc3QKQEAgLTMyOSw3ICszMzksNyBAQAog
ICAgICAgICByZXR1cm4gIm51bGwiOwogCiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCJmaWxlOi8vIik7CisgICAgICAgIHJldHVybiBTdHJpbmco
ImZpbGU6Ly8iKSArIG1fZmlsZVBhdGg7CiAKICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKICAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgpICsgbV9o
b3N0Lmxlbmd0aCgpICsgMTApOwpAQCAtNDk4LDYgKzUwOCw5IEBACiAgICAgaWYgKG1fcG9ydCAh
PSBvdGhlci0+bV9wb3J0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoaXNMb2Nh
bCgpICYmIChtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24gfHwgb3RoZXItPm1fZW5mb3JjZUZp
bGVQYXRoU2VwYXJhdGlvbikgJiYgbV9maWxlUGF0aCAhPSBvdGhlci0+bV9maWxlUGF0aCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5oCShyZXZpc2lvbiA1NjU5NikKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsOCArMTM4LDggQEAKICAgICAvLyBhZGRpdGlv
biwgdGhlIFNhbmRib3hPcmlnaW4gZmxhZyBpcyBpbmhlcml0ZWQgYnkgaWZyYW1lcy4KICAgICBi
b29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1VuaXF1ZTsgfQogCi0gICAgLy8gTWFy
a3MgYW4gb3JpZ2luIGFzIGJlaW5nIHVuaXF1ZS4KLSAgICB2b2lkIG1ha2VVbmlxdWUoKTsKKyAg
ICAvLyBNYXJrcyBhIGZpbGU6Ly8gb3JpZ2luIGFzIGJlaW5nIGluIGEgZG9tYWluIGRlZmluZWQg
YnkgaXRzIHBhdGguCisgICAgdm9pZCBlbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uKCk7CiAKICAg
ICAvLyBDb252ZXJ0IHRoaXMgU2VjdXJpdHlPcmlnaW4gaW50byBhIHN0cmluZy4gVGhlIHN0cmlu
ZwogICAgIC8vIHJlcHJlc2VudGF0aW9uIG9mIGEgU2VjdXJpdHlPcmlnaW4gaXMgc2ltaWxhciB0
byBhIFVSTCwgZXhjZXB0IGl0CkBAIC0yMDYsMTEgKzIwNiwxMyBAQAogICAgIFN0cmluZyBtX2hv
c3Q7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9lbmNvZGVkSG9zdDsKICAgICBTdHJpbmcgbV9kb21h
aW47CisgICAgU3RyaW5nIG1fZmlsZVBhdGg7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0Owog
ICAgIGJvb2wgbV9pc1VuaXF1ZTsKICAgICBib29sIG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGJv
b2wgbV9kb21haW5XYXNTZXRJbkRPTTsKICAgICBib29sIG1fY2FuTG9hZExvY2FsUmVzb3VyY2Vz
OworICAgIGJvb2wgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MtcmVhbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1
ZXN0LW5vLWZpbGUtYWNjZXNzLXJlYWwuaHRtbAkocmV2aXNpb24gNTY1OTYpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1uby1maWxl
LWFjY2Vzcy1yZWFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDkgQEAKIAogICAg
ICAgICBmdW5jdGlvbiB0ZXN0WEhSRGVuaWVkKCkKICAgICAgICAgeworICAgICAgICAgICAgbG9n
KCJDaGVja2luZyB0aGF0IHNhbWUtb3JpZ2luIGlmcmFtZXMgd29yay4iKTsKKyAgICAgICAgICAg
IHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiKTsKKyAgICAgICAgICAgIGYuY29u
dGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlN1Y2Nlc3NmdWwgd3JpdGUgaW50byBpZnJh
bWUiOwogICAgICAgICAgICAgbG9nKCJEb2luZyBhbiBYSFIgdG8gYW4gZXhpc3RpbmcgZmlsZS4i
KTsKICAgICAgICAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogCkBAIC0zMyw2ICsz
Niw3IEBACiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9
InRlc3RYSFJEZW5pZWQoKSI+CisgICAgPGlmcmFtZSBpZD0iZiI+PC9pZnJhbWU+CiAgICAgICAg
IDxwPiBXZSdyZSBjaGVja2luZyB3ZSBjYW4ndCByZWFkIGFuIGFyYml0cmFyeSBmaWxlIHdoZW4g
d2Ugc2V0IGVhY2ggZmlsZTovLyBVUkkgdG8gaGF2ZSBhIHVuaXF1ZSBkb21haW4uIDwvcD4KICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSIvPgogICAgIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDU2NTk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTEgQEAKKzIwMTAtMDMtMjYgIENocmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MuaHRtbDoKKyAgICAg
ICAgICBDaGVjayB0aGF0IGFuIGlzb2xhdGVkIGZpbGU6Ly8gb3JpZ2luIGNhbiBhY2Nlc3MgYWJv
dXQ6YmxhbmsgaWZyYW1lcworICAgICAgICAgIHRoYXQgaXQgY3JlYXRlZCBpdHNlbGYuCisKIDIw
MTAtMDMtMjUgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgYW5vdGhlciBhdHRlbXB0IHRvIHVuYmxvY2sgQ2hyb21pdW0gV2luIHRlc3Qg
Ym90Lgo=
</data>
<flag name="review"
          id="35160"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51876</attachid>
            <date>2010-03-28 20:02:32 -0700</date>
            <delta_ts>2010-03-29 15:44:49 -0700</delta_ts>
            <desc>Address comments.</desc>
            <filename>fileorigin2.diff</filename>
            <type>text/plain</type>
            <size>9152</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDM4LDcgKzQ0MzgsNyBAQAogICAgICAgICB9IGVsc2Ug
aWYgKCFzZXR0aW5ncy0+YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCkgJiYgc2VjdXJpdHlP
cmlnaW4oKS0+aXNMb2NhbCgpKSB7CiAgICAgICAgICAgLy8gU29tZSBjbGllbnRzIHdhbnQgZmls
ZTovLyBVUkxzIHRvIGhhdmUgZXZlbiB0aWdodGVyIHJlc3RyaWN0aW9ucyBieQogICAgICAgICAg
IC8vIGRlZmF1bHQsIGFuZCBub3QgYmUgYWJsZSB0byBhY2Nlc3Mgb3RoZXIgbG9jYWwgZmlsZXMu
Ci0gICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+bWFrZVVuaXF1ZSgpOworICAgICAgICAgIHNl
Y3VyaXR5T3JpZ2luKCktPmVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMy0yNiAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvbid0IHVzZSB1bmlxdWUgZG9tYWlucyBmb3IgZmlsZTovLyBzZXBhcmF0aW9uOiBp
dCBicmVha3MgbG9jYWwKKyAgICAgICAgZGF0YWJhc2VzLCBhbmQgYWNjZXNzIHRvIHlvdXIgb3du
IHNhbWUtb3JpZ2luIGlmcmFtZXMuIEluc3RlYWQsIHVzZQorICAgICAgICBwYXRoLWJhc2VkIGFj
Y2VzcyBjaGVja3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2NjkyCisKKyAgICAgICAgVGVzdDogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1uby1maWxlLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiByZW5h
bWVkIEFQSS4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAgIEluaXRpYWxpemUgbmV3IGZsYWcuIFRha2Ugbm90
ZSBvZiBmaWxlOi8vIHBhdGguCisgICAgICAgICAgQ29weSBuZXcgZmllbGRzIGluIGNvcHkgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToK
KyAgICAgICAgICBUYWtlIGludG8gYWNjb3VudCBwYXRoLWJhc2VkIG9yaWdpbiBzZXBhcmF0aW9u
IGZvciBmaWxlOi8vCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZW5mb3JjZUZp
bGVQYXRoU2VwYXJhdGlvbik6CisgICAgICAgICAgTmV3IG1ldGhvZCB0byBlbmFibGUgZmlsZTov
LyBwYXRoIG9yaWdpbiBzZXBhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgICBEaXNwbGF5IHBhdGggZGV0YWlscyBmb3IgZmlsZTov
LyBvcmlnaW5zLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVt
ZUhvc3RQb3J0KToKKyAgICAgICAgICBUYWtlIGludG8gYWNjb3VudCBwYXRoLWJhc2VkIG9yaWdp
biBzZXBhcmF0aW9uIGZvciBmaWxlOi8vCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6cGFzc2VzRmlsZUNoZWNrKToKKyAgICAgICAgICBBYnN0cmFjdGlvbiBvZiBjb21tb24gbG9n
aWMgZm9yIGZpbGU6Ly8gYWNjZXNzIGNoZWNrcy4KKwogMjAxMC0wMy0yNSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQAog
ICAgICwgbV9pc1VuaXF1ZShpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSB8fCBzaG91bGRUcmVh
dFVSTFNjaGVtZUFzTm9BY2Nlc3MobV9wcm90b2NvbCkpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2Vz
cyhmYWxzZSkKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCisgICAgLCBtX2VuZm9y
Y2VGaWxlUGF0aFNlcGFyYXRpb24oZmFsc2UpCiB7CiAgICAgLy8gVGhlc2UgcHJvdG9jb2xzIGRv
IG5vdCBjcmVhdGUgc2VjdXJpdHkgb3JpZ2luczsgdGhlIG93bmVyIGZyYW1lIHByb3ZpZGVzIHRo
ZSBvcmlnaW4KICAgICBpZiAobV9wcm90b2NvbCA9PSAiYWJvdXQiIHx8IG1fcHJvdG9jb2wgPT0g
ImphdmFzY3JpcHQiKQpAQCAtMTEyLDYgKzExMyw4IEBACiAgICAgICAgIC8vIERpcmVjdG9yaWVz
IHNob3VsZCBuZXZlciBiZSByZWFkYWJsZS4KICAgICAgICAgaWYgKCF1cmwuaGFzUGF0aCgpIHx8
IHVybC5wYXRoKCkuZW5kc1dpdGgoIi8iKSkKICAgICAgICAgICAgIG1faXNVbmlxdWUgPSB0cnVl
OworICAgICAgICAvLyBTdG9yZSB0aGUgcGF0aCBpbiBjYXNlIHdlIGFyZSBkb2luZyBwZXItZmls
ZSBvcmlnaW4gY2hlY2tpbmcuCisgICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOwogICAg
IH0KIAogICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29s
KSkKQEAgLTEyNCwxMSArMTI3LDEzIEBACiAgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC50aHJl
YWRzYWZlQ29weSgpKQogICAgICwgbV9lbmNvZGVkSG9zdChvdGhlci0+bV9lbmNvZGVkSG9zdC50
aHJlYWRzYWZlQ29weSgpKQogICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLnRocmVhZHNh
ZmVDb3B5KCkpCisgICAgLCBtX2ZpbGVQYXRoKG90aGVyLT5tX2ZpbGVQYXRoLnRocmVhZHNhZmVD
b3B5KCkpCiAgICAgLCBtX3BvcnQob3RoZXItPm1fcG9ydCkKICAgICAsIG1faXNVbmlxdWUob3Ro
ZXItPm1faXNVbmlxdWUpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhvdGhlci0+bV91bml2ZXJz
YWxBY2Nlc3MpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFpbldhc1Nl
dEluRE9NKQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMob3RoZXItPm1fY2FuTG9hZExv
Y2FsUmVzb3VyY2VzKQorICAgICwgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uKG90aGVyLT5t
X2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24pCiB7CiB9CiAKQEAgLTE4Niw3ICsxOTEsNyBAQAog
fQogCiBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG90aGVyKSBjb25zdAoteyAgCit7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIApAQCAtMjEzLDE5ICsyMTgsMzMgQEAKICAgICAvLyBPcGVyYSA5IGFs
bG93cyBhY2Nlc3Mgd2hlbiBvbmx5IG9uZSBwYWdlIGhhcyBzZXQgZG9jdW1lbnQuZG9tYWluLCBi
dXQKICAgICAvLyB0aGlzIGlzIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4KIAorICAgIGJvb2wg
Y2FuQWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gb3RoZXItPm1fcHJvdG9j
b2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9NICYmICFvdGhlci0+bV9kb21h
aW5XYXNTZXRJbkRPTSkgewogICAgICAgICAgICAgaWYgKG1faG9zdCA9PSBvdGhlci0+bV9ob3N0
ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAo
bV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkgewogICAg
ICAgICAgICAgaWYgKG1fZG9tYWluID09IG90aGVyLT5tX2RvbWFpbikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYW5BY2Nlc3MgPSB0cnVlOwogICAgICAg
ICB9CiAgICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChjYW5BY2Nlc3Mg
JiYgaXNMb2NhbCgpKQorICAgICAgIGNhbkFjY2VzcyA9IHBhc3Nlc0ZpbGVDaGVjayhvdGhlcik7
CisKKyAgICByZXR1cm4gY2FuQWNjZXNzOwogfQogCitib29sIFNlY3VyaXR5T3JpZ2luOjpwYXNz
ZXNGaWxlQ2hlY2soY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdAoreworICAgIEFT
U0VSVChpc0xvY2FsKCkgJiYgb3RoZXItPmlzTG9jYWwoKSk7CisKKyAgICBpZiAoIW1fZW5mb3Jj
ZUZpbGVQYXRoU2VwYXJhdGlvbiAmJiAhb3RoZXItPm1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlv
bikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gKG1fZmlsZVBhdGggPT0gb3Ro
ZXItPm1fZmlsZVBhdGgpOworfQorCiBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNv
bnN0IEtVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCkBAIC0z
MDAsOSArMzE5LDEwIEBACiAgICAgbV91bml2ZXJzYWxBY2Nlc3MgPSB0cnVlOwogfQogCi12b2lk
IFNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKCkKK3ZvaWQgU2VjdXJpdHlPcmlnaW46OmVuZm9y
Y2VGaWxlUGF0aFNlcGFyYXRpb24oKQogewotICAgIG1faXNVbmlxdWUgPSB0cnVlOworICAgIEFT
U0VSVChpc0xvY2FsKCkpOworICAgIG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbiA9IHRydWU7
CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdApAQCAtMzI4LDggKzM0
OCwxMiBAQAogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gIm51bGwiOwogCi0g
ICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQotICAgICAgICByZXR1cm4gU3RyaW5nKCJmaWxl
Oi8vIik7CisgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKSB7CisgICAgICAgIFN0cmluZyBz
dHIoImZpbGU6Ly8iKTsKKyAgICAgICAgaWYgKG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikK
KyAgICAgICAgICAgIHN0ciArPSBtX2ZpbGVQYXRoOworICAgICAgICByZXR1cm4gc3RyOworICAg
IH0KIAogICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG1fcHJvdG9jb2wubGVuZ3RoKCkgKyBtX2hvc3QubGVuZ3RoKCkgKyAxMCk7CkBA
IC00OTgsNiArNTIyLDkgQEAKICAgICBpZiAobV9wb3J0ICE9IG90aGVyLT5tX3BvcnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmIChpc0xvY2FsKCkgJiYgIXBhc3Nlc0ZpbGVDaGVj
ayhvdGhlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gNTY1OTYpCisrKyBXZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDggKzEzOCw4IEBACiAg
ICAgLy8gYWRkaXRpb24sIHRoZSBTYW5kYm94T3JpZ2luIGZsYWcgaXMgaW5oZXJpdGVkIGJ5IGlm
cmFtZXMuCiAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmlxdWU7IH0K
IAotICAgIC8vIE1hcmtzIGFuIG9yaWdpbiBhcyBiZWluZyB1bmlxdWUuCi0gICAgdm9pZCBtYWtl
VW5pcXVlKCk7CisgICAgLy8gTWFya3MgYSBmaWxlOi8vIG9yaWdpbiBhcyBiZWluZyBpbiBhIGRv
bWFpbiBkZWZpbmVkIGJ5IGl0cyBwYXRoLgorICAgIHZvaWQgZW5mb3JjZUZpbGVQYXRoU2VwYXJh
dGlvbigpOwogCiAgICAgLy8gQ29udmVydCB0aGlzIFNlY3VyaXR5T3JpZ2luIGludG8gYSBzdHJp
bmcuIFRoZSBzdHJpbmcKICAgICAvLyByZXByZXNlbnRhdGlvbiBvZiBhIFNlY3VyaXR5T3JpZ2lu
IGlzIHNpbWlsYXIgdG8gYSBVUkwsIGV4Y2VwdCBpdApAQCAtMjAxLDE2ICsyMDEsMjAgQEAKICAg
ICBTZWN1cml0eU9yaWdpbihjb25zdCBLVVJMJiwgU2FuZGJveEZsYWdzKTsKICAgICBleHBsaWNp
dCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCisgICAgYm9vbCBwYXNz
ZXNGaWxlQ2hlY2soY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdDsKKwogICAgIFNh
bmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKICAgICBTdHJpbmcgbV9wcm90b2NvbDsKICAgICBT
dHJpbmcgbV9ob3N0OwogICAgIG11dGFibGUgU3RyaW5nIG1fZW5jb2RlZEhvc3Q7CiAgICAgU3Ry
aW5nIG1fZG9tYWluOworICAgIFN0cmluZyBtX2ZpbGVQYXRoOwogICAgIHVuc2lnbmVkIHNob3J0
IG1fcG9ydDsKICAgICBib29sIG1faXNVbmlxdWU7CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
czsKICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CiAgICAgYm9vbCBtX2NhbkxvYWRMb2Nh
bFJlc291cmNlczsKKyAgICBib29sIG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LW5vLWZpbGUtYWNjZXNzLXJlYWwuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94
bWxodHRwcmVxdWVzdC1uby1maWxlLWFjY2Vzcy1yZWFsLmh0bWwJKHJldmlzaW9uIDU2NTk2KQor
KysgTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVl
c3Qtbm8tZmlsZS1hY2Nlc3MtcmVhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxNiArMTIs
MjEgQEAKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0WEhSRGVuaWVkKCkKICAgICAgICAgeworICAg
ICAgICAgICAgbG9nKCJDaGVja2luZyB0aGF0IHNhbWUtb3JpZ2luIGlmcmFtZXMgd29yay4iKTsK
KyAgICAgICAgICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiKTsKKyAgICAg
ICAgICAgIGYuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlN1Y2Nlc3NmdWwgd3Jp
dGUgaW50byBpZnJhbWUiOwogICAgICAgICAgICAgbG9nKCJEb2luZyBhbiBYSFIgdG8gYW4gZXhp
c3RpbmcgZmlsZS4iKTsKICAgICAgICAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwog
CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiLi4v
eG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0IiwgZmFsc2UpOwogICAg
ICAgICAgICAgICAgIHhoci5zZW5kKCIiKTsKKyAgICAgICAgICAgICAgICBsb2coIkJhZDogWEhS
IGRpZG4ndCB0aHJvdyBleGNlcHRpb24iKTsKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAg
ICAgICAgICAgICAgIGxvZygiRXhjZXB0aW9uOiAiICsgZS5tZXNzYWdlKTsKICAgICAgICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHdpbmRvdy50b3Au
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKTsKKyAgICAgICAgICAgICAgICAgICAg
bG9nKCJCYWQ6IERPTSBhY2Nlc3MgZGlkbid0IHRocm93IGV4Y2VwdGlvbiIpOwogICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgbG9nKCJFeGNlcHRpb246
ICIgKyBlLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CkBAIC0zMyw2ICszOCw3IEBACiAgICAgICAgIDwvc2NyaXB0PgogICAg
IDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InRlc3RYSFJEZW5pZWQoKSI+CisgICAgPGlmcmFt
ZSBpZD0iZiI+PC9pZnJhbWU+CiAgICAgICAgIDxwPiBXZSdyZSBjaGVja2luZyB3ZSBjYW4ndCBy
ZWFkIGFuIGFyYml0cmFyeSBmaWxlIHdoZW4gd2Ugc2V0IGVhY2ggZmlsZTovLyBVUkkgdG8gaGF2
ZSBhIHVuaXF1ZSBkb21haW4uIDwvcD4KICAgICAgICAgPGRpdiBpZD0iY29uc29sZSIvPgogICAg
IDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2NTk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDMtMjYgIENocmlzIEV2
YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
bm8tZmlsZS1hY2Nlc3MuaHRtbDoKKyAgICAgICAgICBDaGVjayB0aGF0IGFuIGlzb2xhdGVkIGZp
bGU6Ly8gb3JpZ2luIGNhbiBhY2Nlc3MgYWJvdXQ6YmxhbmsgaWZyYW1lcworICAgICAgICAgIHRo
YXQgaXQgY3JlYXRlZCBpdHNlbGYuCisKIDIwMTAtMDMtMjUgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYW5vdGhlciBhdHRlbXB0IHRv
IHVuYmxvY2sgQ2hyb21pdW0gV2luIHRlc3QgYm90Lgo=
</data>
<flag name="review"
          id="35232"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51973</attachid>
            <date>2010-03-29 15:23:08 -0700</date>
            <delta_ts>2010-03-29 15:44:49 -0700</delta_ts>
            <desc>Use &quot;null&quot; domain instead of exposing path as per chat with Adam</desc>
            <filename>fileorigin3.diff</filename>
            <type>text/plain</type>
            <size>9148</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDM4LDcgKzQ0MzgsNyBAQAogICAgICAgICB9IGVsc2Ug
aWYgKCFzZXR0aW5ncy0+YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCkgJiYgc2VjdXJpdHlP
cmlnaW4oKS0+aXNMb2NhbCgpKSB7CiAgICAgICAgICAgLy8gU29tZSBjbGllbnRzIHdhbnQgZmls
ZTovLyBVUkxzIHRvIGhhdmUgZXZlbiB0aWdodGVyIHJlc3RyaWN0aW9ucyBieQogICAgICAgICAg
IC8vIGRlZmF1bHQsIGFuZCBub3QgYmUgYWJsZSB0byBhY2Nlc3Mgb3RoZXIgbG9jYWwgZmlsZXMu
Ci0gICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+bWFrZVVuaXF1ZSgpOworICAgICAgICAgIHNl
Y3VyaXR5T3JpZ2luKCktPmVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMy0yNiAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvbid0IHVzZSB1bmlxdWUgZG9tYWlucyBmb3IgZmlsZTovLyBzZXBhcmF0aW9uOiBp
dCBicmVha3MgbG9jYWwKKyAgICAgICAgZGF0YWJhc2VzLCBhbmQgYWNjZXNzIHRvIHlvdXIgb3du
IHNhbWUtb3JpZ2luIGlmcmFtZXMuIEluc3RlYWQsIHVzZQorICAgICAgICBwYXRoLWJhc2VkIGFj
Y2VzcyBjaGVja3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2NjkyCisKKyAgICAgICAgVGVzdDogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1uby1maWxlLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiByZW5h
bWVkIEFQSS4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAgIEluaXRpYWxpemUgbmV3IGZsYWcuIFRha2Ugbm90
ZSBvZiBmaWxlOi8vIHBhdGguCisgICAgICAgICAgQ29weSBuZXcgZmllbGRzIGluIGNvcHkgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToK
KyAgICAgICAgICBUYWtlIGludG8gYWNjb3VudCBwYXRoLWJhc2VkIG9yaWdpbiBzZXBhcmF0aW9u
IGZvciBmaWxlOi8vCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZW5mb3JjZUZp
bGVQYXRoU2VwYXJhdGlvbik6CisgICAgICAgICAgTmV3IG1ldGhvZCB0byBlbmFibGUgZmlsZTov
LyBwYXRoIG9yaWdpbiBzZXBhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgICBSZXR1cm4gYSBudWxsIGRvbWFpbiBmb3IgYW4gaXNv
bGF0ZWQgZmlsZSBvcmlnaW4uCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNT
YW1lU2NoZW1lSG9zdFBvcnQpOgorICAgICAgICAgIFRha2UgaW50byBhY2NvdW50IHBhdGgtYmFz
ZWQgb3JpZ2luIHNlcGFyYXRpb24gZm9yIGZpbGU6Ly8KKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpwYXNzZXNGaWxlQ2hlY2spOgorICAgICAgICAgIEFic3RyYWN0aW9uIG9mIGNv
bW1vbiBsb2dpYyBmb3IgZmlsZTovLyBhY2Nlc3MgY2hlY2tzLgorCiAyMDEwLTAzLTI1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gNTY1OTYpCisrKyBX
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5
OCw3IEBACiAgICAgLCBtX2lzVW5pcXVlKGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IHNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2VzcyhtX3Byb3RvY29sKSkKICAgICAsIG1fdW5pdmVy
c2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKKyAgICAs
IG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihmYWxzZSkKIHsKICAgICAvLyBUaGVzZSBwcm90
b2NvbHMgZG8gbm90IGNyZWF0ZSBzZWN1cml0eSBvcmlnaW5zOyB0aGUgb3duZXIgZnJhbWUgcHJv
dmlkZXMgdGhlIG9yaWdpbgogICAgIGlmIChtX3Byb3RvY29sID09ICJhYm91dCIgfHwgbV9wcm90
b2NvbCA9PSAiamF2YXNjcmlwdCIpCkBAIC0xMTIsNiArMTEzLDggQEAKICAgICAgICAgLy8gRGly
ZWN0b3JpZXMgc2hvdWxkIG5ldmVyIGJlIHJlYWRhYmxlLgogICAgICAgICBpZiAoIXVybC5oYXNQ
YXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0aCgiLyIpKQogICAgICAgICAgICAgbV9pc1VuaXF1
ZSA9IHRydWU7CisgICAgICAgIC8vIFN0b3JlIHRoZSBwYXRoIGluIGNhc2Ugd2UgYXJlIGRvaW5n
IHBlci1maWxlIG9yaWdpbiBjaGVja2luZy4KKyAgICAgICAgbV9maWxlUGF0aCA9IHVybC5wYXRo
KCk7CiAgICAgfQogCiAgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQsIG1f
cHJvdG9jb2wpKQpAQCAtMTI0LDExICsxMjcsMTMgQEAKICAgICAsIG1faG9zdChvdGhlci0+bV9o
b3N0LnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX2VuY29kZWRIb3N0KG90aGVyLT5tX2VuY29k
ZWRIb3N0LnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX2RvbWFpbihvdGhlci0+bV9kb21haW4u
dGhyZWFkc2FmZUNvcHkoKSkKKyAgICAsIG1fZmlsZVBhdGgob3RoZXItPm1fZmlsZVBhdGgudGhy
ZWFkc2FmZUNvcHkoKSkKICAgICAsIG1fcG9ydChvdGhlci0+bV9wb3J0KQogICAgICwgbV9pc1Vu
aXF1ZShvdGhlci0+bV9pc1VuaXF1ZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKG90aGVyLT5t
X3VuaXZlcnNhbEFjY2VzcykKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00ob3RoZXItPm1fZG9t
YWluV2FzU2V0SW5ET00pCiAgICAgLCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyhvdGhlci0+bV9j
YW5Mb2FkTG9jYWxSZXNvdXJjZXMpCisgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24o
b3RoZXItPm1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikKIHsKIH0KIApAQCAtMTg2LDcgKzE5
MSw3IEBACiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0
eU9yaWdpbiogb3RoZXIpIGNvbnN0Ci17ICAKK3sKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3Mp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yMTMsMTkgKzIxOCwzMyBAQAogICAgIC8vIE9w
ZXJhIDkgYWxsb3dzIGFjY2VzcyB3aGVuIG9ubHkgb25lIHBhZ2UgaGFzIHNldCBkb2N1bWVudC5k
b21haW4sIGJ1dAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogCisg
ICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKICAgICBpZiAobV9wcm90b2NvbCA9PSBvdGhlci0+
bV9wcm90b2NvbCkgewogICAgICAgICBpZiAoIW1fZG9tYWluV2FzU2V0SW5ET00gJiYgIW90aGVy
LT5tX2RvbWFpbldhc1NldEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVy
LT5tX2hvc3QgJiYgbV9wb3J0ID09IG90aGVyLT5tX3BvcnQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgY2FuQWNjZXNzID0gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9N
KSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXItPm1fZG9tYWluKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNh
bkFjY2VzcyAmJiBpc0xvY2FsKCkpCisgICAgICAgY2FuQWNjZXNzID0gcGFzc2VzRmlsZUNoZWNr
KG90aGVyKTsKKworICAgIHJldHVybiBjYW5BY2Nlc3M7CiB9CiAKK2Jvb2wgU2VjdXJpdHlPcmln
aW46OnBhc3Nlc0ZpbGVDaGVjayhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlzTG9jYWwoKSAmJiBvdGhlci0+aXNMb2NhbCgpKTsKKworICAgIGlmICgh
bV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uICYmICFvdGhlci0+bV9lbmZvcmNlRmlsZVBhdGhT
ZXBhcmF0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiAobV9maWxlUGF0
aCA9PSBvdGhlci0+bV9maWxlUGF0aCk7Cit9CisKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJl
cXVlc3QoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChtX3VuaXZlcnNhbEFjY2Vz
cykKQEAgLTMwMCw5ICszMTksMTAgQEAKICAgICBtX3VuaXZlcnNhbEFjY2VzcyA9IHRydWU7CiB9
CiAKLXZvaWQgU2VjdXJpdHlPcmlnaW46Om1ha2VVbmlxdWUoKQordm9pZCBTZWN1cml0eU9yaWdp
bjo6ZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbigpCiB7Ci0gICAgbV9pc1VuaXF1ZSA9IHRydWU7
CisgICAgQVNTRVJUKGlzTG9jYWwoKSk7CisgICAgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9u
ID0gdHJ1ZTsKIH0KIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNMb2NhbCgpIGNvbnN0CkBAIC0z
MjgsOCArMzQ4LDEyIEBACiAgICAgaWYgKGlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiAibnVs
bCI7CiAKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoImZpbGU6Ly8iKTsKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpIHsKKyAgICAgICAg
aWYgKG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikKKyAgICAgICAgICAgIHJldHVybiAibnVs
bCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAiZmlsZTovLyI7CisgICAgfQog
CiAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKQEAgLTQ5
OCw2ICs1MjIsOSBAQAogICAgIGlmIChtX3BvcnQgIT0gb3RoZXItPm1fcG9ydCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmlsZUNoZWNrKG90
aGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiA1NjU5NikKKysrIFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsOCArMTM4LDggQEAKICAgICAv
LyBhZGRpdGlvbiwgdGhlIFNhbmRib3hPcmlnaW4gZmxhZyBpcyBpbmhlcml0ZWQgYnkgaWZyYW1l
cy4KICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1VuaXF1ZTsgfQogCi0g
ICAgLy8gTWFya3MgYW4gb3JpZ2luIGFzIGJlaW5nIHVuaXF1ZS4KLSAgICB2b2lkIG1ha2VVbmlx
dWUoKTsKKyAgICAvLyBNYXJrcyBhIGZpbGU6Ly8gb3JpZ2luIGFzIGJlaW5nIGluIGEgZG9tYWlu
IGRlZmluZWQgYnkgaXRzIHBhdGguCisgICAgdm9pZCBlbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9u
KCk7CiAKICAgICAvLyBDb252ZXJ0IHRoaXMgU2VjdXJpdHlPcmlnaW4gaW50byBhIHN0cmluZy4g
VGhlIHN0cmluZwogICAgIC8vIHJlcHJlc2VudGF0aW9uIG9mIGEgU2VjdXJpdHlPcmlnaW4gaXMg
c2ltaWxhciB0byBhIFVSTCwgZXhjZXB0IGl0CkBAIC0yMDEsMTYgKzIwMSwyMCBAQAogICAgIFNl
Y3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmLCBTYW5kYm94RmxhZ3MpOwogICAgIGV4cGxpY2l0IFNl
Y3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAKKyAgICBib29sIHBhc3Nlc0Zp
bGVDaGVjayhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0OworCiAgICAgU2FuZGJv
eEZsYWdzIG1fc2FuZGJveEZsYWdzOwogICAgIFN0cmluZyBtX3Byb3RvY29sOwogICAgIFN0cmlu
ZyBtX2hvc3Q7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9lbmNvZGVkSG9zdDsKICAgICBTdHJpbmcg
bV9kb21haW47CisgICAgU3RyaW5nIG1fZmlsZVBhdGg7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9w
b3J0OwogICAgIGJvb2wgbV9pc1VuaXF1ZTsKICAgICBib29sIG1fdW5pdmVyc2FsQWNjZXNzOwog
ICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTTsKICAgICBib29sIG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzOworICAgIGJvb2wgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MtcmVhbC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0
dHByZXF1ZXN0LW5vLWZpbGUtYWNjZXNzLXJlYWwuaHRtbAkocmV2aXNpb24gNTY1OTYpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1u
by1maWxlLWFjY2Vzcy1yZWFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDE2ICsxMiwyMSBA
QAogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RYSFJEZW5pZWQoKQogICAgICAgICB7CisgICAgICAg
ICAgICBsb2coIkNoZWNraW5nIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lcyB3b3JrLiIpOworICAg
ICAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpOworICAgICAgICAg
ICAgZi5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiU3VjY2Vzc2Z1bCB3cml0ZSBp
bnRvIGlmcmFtZSI7CiAgICAgICAgICAgICBsb2coIkRvaW5nIGFuIFhIUiB0byBhbiBleGlzdGlu
ZyBmaWxlLiIpOwogICAgICAgICAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAKICAg
ICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgeGhyLm9wZW4oIkdFVCIsICIuLi94bWxo
dHRwcmVxdWVzdC1uby1maWxlLWFjY2Vzcy1leHBlY3RlZC50eHQiLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgeGhyLnNlbmQoIiIpOworICAgICAgICAgICAgICAgIGxvZygiQmFkOiBYSFIgZGlk
bid0IHRocm93IGV4Y2VwdGlvbiIpOwogICAgICAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAg
ICAgICAgICAgbG9nKCJFeGNlcHRpb246ICIgKyBlLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gd2luZG93LnRvcC5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpOworICAgICAgICAgICAgICAgICAgICBsb2co
IkJhZDogRE9NIGFjY2VzcyBkaWRuJ3QgdGhyb3cgZXhjZXB0aW9uIik7CiAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICBsb2coIkV4Y2VwdGlvbjogIiAr
IGUubWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKQEAgLTMzLDYgKzM4LDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9o
ZWFkPgogICAgIDxib2R5IG9ubG9hZD0idGVzdFhIUkRlbmllZCgpIj4KKyAgICA8aWZyYW1lIGlk
PSJmIj48L2lmcmFtZT4KICAgICAgICAgPHA+IFdlJ3JlIGNoZWNraW5nIHdlIGNhbid0IHJlYWQg
YW4gYXJiaXRyYXJ5IGZpbGUgd2hlbiB3ZSBzZXQgZWFjaCBmaWxlOi8vIFVSSSB0byBoYXZlIGEg
dW5pcXVlIGRvbWFpbi4gPC9wPgogICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIi8+CiAgICAgPC9i
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTY1OTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAxMC0wMy0yNiAgQ2hyaXMgRXZhbnMg
IDxjZXZhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1uby1m
aWxlLWFjY2Vzcy5odG1sOgorICAgICAgICAgIENoZWNrIHRoYXQgYW4gaXNvbGF0ZWQgZmlsZTov
LyBvcmlnaW4gY2FuIGFjY2VzcyBhYm91dDpibGFuayBpZnJhbWVzCisgICAgICAgICAgdGhhdCBp
dCBjcmVhdGVkIGl0c2VsZi4KKwogMjAxMC0wMy0yNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBhbm90aGVyIGF0dGVtcHQgdG8gdW5i
bG9jayBDaHJvbWl1bSBXaW4gdGVzdCBib3QuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51977</attachid>
            <date>2010-03-29 15:44:49 -0700</date>
            <delta_ts>2010-03-29 19:32:20 -0700</delta_ts>
            <desc>Fix style-bot error!</desc>
            <filename>fileorigin4.diff</filename>
            <type>text/plain</type>
            <size>9130</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDM4LDcgKzQ0MzgsNyBAQAogICAgICAgICB9IGVsc2Ug
aWYgKCFzZXR0aW5ncy0+YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCkgJiYgc2VjdXJpdHlP
cmlnaW4oKS0+aXNMb2NhbCgpKSB7CiAgICAgICAgICAgLy8gU29tZSBjbGllbnRzIHdhbnQgZmls
ZTovLyBVUkxzIHRvIGhhdmUgZXZlbiB0aWdodGVyIHJlc3RyaWN0aW9ucyBieQogICAgICAgICAg
IC8vIGRlZmF1bHQsIGFuZCBub3QgYmUgYWJsZSB0byBhY2Nlc3Mgb3RoZXIgbG9jYWwgZmlsZXMu
Ci0gICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+bWFrZVVuaXF1ZSgpOworICAgICAgICAgIHNl
Y3VyaXR5T3JpZ2luKCktPmVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2NTk2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMy0yNiAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvbid0IHVzZSB1bmlxdWUgZG9tYWlucyBmb3IgZmlsZTovLyBzZXBhcmF0aW9uOiBp
dCBicmVha3MgbG9jYWwKKyAgICAgICAgZGF0YWJhc2VzLCBhbmQgYWNjZXNzIHRvIHlvdXIgb3du
IHNhbWUtb3JpZ2luIGlmcmFtZXMuIEluc3RlYWQsIHVzZQorICAgICAgICBwYXRoLWJhc2VkIGFj
Y2VzcyBjaGVja3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2NjkyCisKKyAgICAgICAgVGVzdDogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1uby1maWxlLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiByZW5h
bWVkIEFQSS4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAgIEluaXRpYWxpemUgbmV3IGZsYWcuIFRha2Ugbm90
ZSBvZiBmaWxlOi8vIHBhdGguCisgICAgICAgICAgQ29weSBuZXcgZmllbGRzIGluIGNvcHkgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToK
KyAgICAgICAgICBUYWtlIGludG8gYWNjb3VudCBwYXRoLWJhc2VkIG9yaWdpbiBzZXBhcmF0aW9u
IGZvciBmaWxlOi8vCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZW5mb3JjZUZp
bGVQYXRoU2VwYXJhdGlvbik6CisgICAgICAgICAgTmV3IG1ldGhvZCB0byBlbmFibGUgZmlsZTov
LyBwYXRoIG9yaWdpbiBzZXBhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgICBSZXR1cm4gYSBudWxsIGRvbWFpbiBmb3IgYW4gaXNv
bGF0ZWQgZmlsZSBvcmlnaW4uCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNT
YW1lU2NoZW1lSG9zdFBvcnQpOgorICAgICAgICAgIFRha2UgaW50byBhY2NvdW50IHBhdGgtYmFz
ZWQgb3JpZ2luIHNlcGFyYXRpb24gZm9yIGZpbGU6Ly8KKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpwYXNzZXNGaWxlQ2hlY2spOgorICAgICAgICAgIEFic3RyYWN0aW9uIG9mIGNv
bW1vbiBsb2dpYyBmb3IgZmlsZTovLyBhY2Nlc3MgY2hlY2tzLgorCiAyMDEwLTAzLTI1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gNTY1OTYpCisrKyBX
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5
OCw3IEBACiAgICAgLCBtX2lzVW5pcXVlKGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IHNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2VzcyhtX3Byb3RvY29sKSkKICAgICAsIG1fdW5pdmVy
c2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKKyAgICAs
IG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihmYWxzZSkKIHsKICAgICAvLyBUaGVzZSBwcm90
b2NvbHMgZG8gbm90IGNyZWF0ZSBzZWN1cml0eSBvcmlnaW5zOyB0aGUgb3duZXIgZnJhbWUgcHJv
dmlkZXMgdGhlIG9yaWdpbgogICAgIGlmIChtX3Byb3RvY29sID09ICJhYm91dCIgfHwgbV9wcm90
b2NvbCA9PSAiamF2YXNjcmlwdCIpCkBAIC0xMTIsNiArMTEzLDggQEAKICAgICAgICAgLy8gRGly
ZWN0b3JpZXMgc2hvdWxkIG5ldmVyIGJlIHJlYWRhYmxlLgogICAgICAgICBpZiAoIXVybC5oYXNQ
YXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0aCgiLyIpKQogICAgICAgICAgICAgbV9pc1VuaXF1
ZSA9IHRydWU7CisgICAgICAgIC8vIFN0b3JlIHRoZSBwYXRoIGluIGNhc2Ugd2UgYXJlIGRvaW5n
IHBlci1maWxlIG9yaWdpbiBjaGVja2luZy4KKyAgICAgICAgbV9maWxlUGF0aCA9IHVybC5wYXRo
KCk7CiAgICAgfQogCiAgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQsIG1f
cHJvdG9jb2wpKQpAQCAtMTI0LDExICsxMjcsMTMgQEAKICAgICAsIG1faG9zdChvdGhlci0+bV9o
b3N0LnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX2VuY29kZWRIb3N0KG90aGVyLT5tX2VuY29k
ZWRIb3N0LnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX2RvbWFpbihvdGhlci0+bV9kb21haW4u
dGhyZWFkc2FmZUNvcHkoKSkKKyAgICAsIG1fZmlsZVBhdGgob3RoZXItPm1fZmlsZVBhdGgudGhy
ZWFkc2FmZUNvcHkoKSkKICAgICAsIG1fcG9ydChvdGhlci0+bV9wb3J0KQogICAgICwgbV9pc1Vu
aXF1ZShvdGhlci0+bV9pc1VuaXF1ZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKG90aGVyLT5t
X3VuaXZlcnNhbEFjY2VzcykKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00ob3RoZXItPm1fZG9t
YWluV2FzU2V0SW5ET00pCiAgICAgLCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyhvdGhlci0+bV9j
YW5Mb2FkTG9jYWxSZXNvdXJjZXMpCisgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24o
b3RoZXItPm1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikKIHsKIH0KIApAQCAtMTg2LDcgKzE5
MSw3IEBACiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0
eU9yaWdpbiogb3RoZXIpIGNvbnN0Ci17ICAKK3sKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3Mp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yMTMsMTkgKzIxOCwzMyBAQAogICAgIC8vIE9w
ZXJhIDkgYWxsb3dzIGFjY2VzcyB3aGVuIG9ubHkgb25lIHBhZ2UgaGFzIHNldCBkb2N1bWVudC5k
b21haW4sIGJ1dAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogCisg
ICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKICAgICBpZiAobV9wcm90b2NvbCA9PSBvdGhlci0+
bV9wcm90b2NvbCkgewogICAgICAgICBpZiAoIW1fZG9tYWluV2FzU2V0SW5ET00gJiYgIW90aGVy
LT5tX2RvbWFpbldhc1NldEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVy
LT5tX2hvc3QgJiYgbV9wb3J0ID09IG90aGVyLT5tX3BvcnQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgY2FuQWNjZXNzID0gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9N
KSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXItPm1fZG9tYWluKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNh
bkFjY2VzcyAmJiBpc0xvY2FsKCkpCisgICAgICAgY2FuQWNjZXNzID0gcGFzc2VzRmlsZUNoZWNr
KG90aGVyKTsKKworICAgIHJldHVybiBjYW5BY2Nlc3M7CiB9CiAKK2Jvb2wgU2VjdXJpdHlPcmln
aW46OnBhc3Nlc0ZpbGVDaGVjayhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlzTG9jYWwoKSAmJiBvdGhlci0+aXNMb2NhbCgpKTsKKworICAgIGlmICgh
bV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uICYmICFvdGhlci0+bV9lbmZvcmNlRmlsZVBhdGhT
ZXBhcmF0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiAobV9maWxlUGF0
aCA9PSBvdGhlci0+bV9maWxlUGF0aCk7Cit9CisKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJl
cXVlc3QoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChtX3VuaXZlcnNhbEFjY2Vz
cykKQEAgLTMwMCw5ICszMTksMTAgQEAKICAgICBtX3VuaXZlcnNhbEFjY2VzcyA9IHRydWU7CiB9
CiAKLXZvaWQgU2VjdXJpdHlPcmlnaW46Om1ha2VVbmlxdWUoKQordm9pZCBTZWN1cml0eU9yaWdp
bjo6ZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbigpCiB7Ci0gICAgbV9pc1VuaXF1ZSA9IHRydWU7
CisgICAgQVNTRVJUKGlzTG9jYWwoKSk7CisgICAgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9u
ID0gdHJ1ZTsKIH0KIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNMb2NhbCgpIGNvbnN0CkBAIC0z
MjgsOCArMzQ4LDExIEBACiAgICAgaWYgKGlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiAibnVs
bCI7CiAKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoImZpbGU6Ly8iKTsKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpIHsKKyAgICAgICAg
aWYgKG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikKKyAgICAgICAgICAgIHJldHVybiAibnVs
bCI7CisgICAgICAgIHJldHVybiAiZmlsZTovLyI7CisgICAgfQogCiAgICAgVmVjdG9yPFVDaGFy
PiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wcm90b2NvbC5s
ZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKQEAgLTQ5OCw2ICs1MjEsOSBAQAogICAg
IGlmIChtX3BvcnQgIT0gb3RoZXItPm1fcG9ydCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmlsZUNoZWNrKG90aGVyKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCShyZXZpc2lvbiA1NjU5NikKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzgsOCArMTM4LDggQEAKICAgICAvLyBhZGRpdGlvbiwgdGhlIFNh
bmRib3hPcmlnaW4gZmxhZyBpcyBpbmhlcml0ZWQgYnkgaWZyYW1lcy4KICAgICBib29sIGlzVW5p
cXVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1VuaXF1ZTsgfQogCi0gICAgLy8gTWFya3MgYW4gb3Jp
Z2luIGFzIGJlaW5nIHVuaXF1ZS4KLSAgICB2b2lkIG1ha2VVbmlxdWUoKTsKKyAgICAvLyBNYXJr
cyBhIGZpbGU6Ly8gb3JpZ2luIGFzIGJlaW5nIGluIGEgZG9tYWluIGRlZmluZWQgYnkgaXRzIHBh
dGguCisgICAgdm9pZCBlbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uKCk7CiAKICAgICAvLyBDb252
ZXJ0IHRoaXMgU2VjdXJpdHlPcmlnaW4gaW50byBhIHN0cmluZy4gVGhlIHN0cmluZwogICAgIC8v
IHJlcHJlc2VudGF0aW9uIG9mIGEgU2VjdXJpdHlPcmlnaW4gaXMgc2ltaWxhciB0byBhIFVSTCwg
ZXhjZXB0IGl0CkBAIC0yMDEsMTYgKzIwMSwyMCBAQAogICAgIFNlY3VyaXR5T3JpZ2luKGNvbnN0
IEtVUkwmLCBTYW5kYm94RmxhZ3MpOwogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKik7CiAKKyAgICBib29sIHBhc3Nlc0ZpbGVDaGVjayhjb25zdCBTZWN1
cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0OworCiAgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZs
YWdzOwogICAgIFN0cmluZyBtX3Byb3RvY29sOwogICAgIFN0cmluZyBtX2hvc3Q7CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9lbmNvZGVkSG9zdDsKICAgICBTdHJpbmcgbV9kb21haW47CisgICAgU3Ry
aW5nIG1fZmlsZVBhdGg7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0OwogICAgIGJvb2wgbV9p
c1VuaXF1ZTsKICAgICBib29sIG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGJvb2wgbV9kb21haW5X
YXNTZXRJbkRPTTsKICAgICBib29sIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzOworICAgIGJvb2wg
bV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0
cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MtcmVhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LW5vLWZpbGUt
YWNjZXNzLXJlYWwuaHRtbAkocmV2aXNpb24gNTY1OTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1uby1maWxlLWFjY2Vzcy1yZWFs
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDE2ICsxMiwyMSBAQAogCiAgICAgICAgIGZ1bmN0
aW9uIHRlc3RYSFJEZW5pZWQoKQogICAgICAgICB7CisgICAgICAgICAgICBsb2coIkNoZWNraW5n
IHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lcyB3b3JrLiIpOworICAgICAgICAgICAgdmFyIGYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpOworICAgICAgICAgICAgZi5jb250ZW50RG9jdW1l
bnQuYm9keS5pbm5lckhUTUwgPSAiU3VjY2Vzc2Z1bCB3cml0ZSBpbnRvIGlmcmFtZSI7CiAgICAg
ICAgICAgICBsb2coIkRvaW5nIGFuIFhIUiB0byBhbiBleGlzdGluZyBmaWxlLiIpOwogICAgICAg
ICAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAKICAgICAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICAgICAgeGhyLm9wZW4oIkdFVCIsICIuLi94bWxodHRwcmVxdWVzdC1uby1maWxl
LWFjY2Vzcy1leHBlY3RlZC50eHQiLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgeGhyLnNlbmQo
IiIpOworICAgICAgICAgICAgICAgIGxvZygiQmFkOiBYSFIgZGlkbid0IHRocm93IGV4Y2VwdGlv
biIpOwogICAgICAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgICAgICAgbG9nKCJFeGNl
cHRpb246ICIgKyBlLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICAgICAgICAgIHZhciByZXN1bHRzID0gd2luZG93LnRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0cycpOworICAgICAgICAgICAgICAgICAgICBsb2coIkJhZDogRE9NIGFjY2VzcyBk
aWRuJ3QgdGhyb3cgZXhjZXB0aW9uIik7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewog
ICAgICAgICAgICAgICAgICAgICBsb2coIkV4Y2VwdGlvbjogIiArIGUubWVzc2FnZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKQEAgLTMz
LDYgKzM4LDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5IG9u
bG9hZD0idGVzdFhIUkRlbmllZCgpIj4KKyAgICA8aWZyYW1lIGlkPSJmIj48L2lmcmFtZT4KICAg
ICAgICAgPHA+IFdlJ3JlIGNoZWNraW5nIHdlIGNhbid0IHJlYWQgYW4gYXJiaXRyYXJ5IGZpbGUg
d2hlbiB3ZSBzZXQgZWFjaCBmaWxlOi8vIFVSSSB0byBoYXZlIGEgdW5pcXVlIGRvbWFpbi4gPC9w
PgogICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIi8+CiAgICAgPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNTY1OTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMSBAQAorMjAxMC0wMy0yNiAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1uby1maWxlLWFjY2Vzcy5odG1sOgor
ICAgICAgICAgIENoZWNrIHRoYXQgYW4gaXNvbGF0ZWQgZmlsZTovLyBvcmlnaW4gY2FuIGFjY2Vz
cyBhYm91dDpibGFuayBpZnJhbWVzCisgICAgICAgICAgdGhhdCBpdCBjcmVhdGVkIGl0c2VsZi4K
KwogMjAxMC0wMy0yNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCBhbm90aGVyIGF0dGVtcHQgdG8gdW5ibG9jayBDaHJvbWl1bSBXaW4g
dGVzdCBib3QuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>