<?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>83959</bug_id>
          
          <creation_ts>2012-04-13 16:34:31 -0700</creation_ts>
          <short_desc>[chromium] Add ability to override user agent string per-WebFrameClient</short_desc>
          <delta_ts>2012-05-10 14:22:39 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>
          <dependson>86057</dependson>
    
    <dependson>86141</dependson>
          <blocked>66687</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter>dfalcantara</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602506</commentid>
    <comment_count>0</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-04-13 16:34:31 -0700</bug_when>
    <thetext>Chromium needs a way to override the user agent on a per-WebFrameClient basis, which would allow clients to dynamically swap what user agent is being used on any given page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605690</commentid>
    <comment_count>1</comment_count>
      <attachid>137923</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-04-19 10:56:21 -0700</bug_when>
    <thetext>Created attachment 137923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605691</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 11:00:03 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605921</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-19 14:35:43 -0700</bug_when>
    <thetext>Safari must do something similar?  I guess this is a chromium-level issue only since this is just changing our implementation of the WebCore hook in question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605952</commentid>
    <comment_count>4</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-04-19 14:57:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Safari must do something similar?  I guess this is a chromium-level issue only since this is just changing our implementation of the WebCore hook in question.

I&apos;m honestly not sure how Safari does it, but the only hook I could find along Chromium&apos;s current code pathways involves going through InspectorInstrumentation::applyUserAgentOverride.  It didn&apos;t seem correct to add an InstrumentingAgent, so I went with this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611098</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-04-26 17:03:44 -0700</bug_when>
    <thetext>Can you provide more context on how this will be used?  We already have hooks for overriding the user agent for site compat (see webkit/glue/webkit_glue.cc) and the web inspector also has the ability to override the user agent.  Maybe one of those methods would work for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611101</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-26 17:08:51 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can you provide more context on how this will be used?  We already have hooks for overriding the user agent for site compat (see webkit/glue/webkit_glue.cc) and the web inspector also has the ability to override the user agent.  Maybe one of those methods would work for you?

There&apos;s been some email exchanged between Dan, Darin, and myself ... they need to override the user agent per-frame in order to &quot;show the desktop version&quot; of a page. The global version isn&apos;t good enough. I don&apos;t know if the inspector approach would work or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611111</commentid>
    <comment_count>7</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-04-26 17:18:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can you provide more context on how this will be used?  We already have hooks for overriding the user agent for site compat (see webkit/glue/webkit_glue.cc) and the web inspector also has the ability to override the user agent.  Maybe one of those methods would work for you?

We need this for &quot;Request desktop site&quot; on Chrome for Android as we upstream our changes.  The feature calls for a per-NavigationEntry user agent override that can be toggled on and off on the fly.  Adding this hook allows us to override it in RenderViewImpl, which communicates with the WebContents about what user agent should be used as navigations are performed.

* A global override won&apos;t work because of the way the RenderViews can share the same WebKit instance.  Moreover, the call in webkit_glue.cc takes in only a URL, so having the same URL loaded in two different tabs would always need to share the same user agent.
* It seemed odd to add an inspector to do this, so I didn&apos;t explore this route too deeply.

There&apos;s a WIP internal doc describing the bigger picture on what we had to do; the link is on an email thread you&apos;re CCed on with me and Dirk (&quot;Desktop user agents, redux&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611906</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-04-27 14:37:05 -0700</bug_when>
    <thetext>The inspector hook is in FrameLoader::userAgent (calls into InspectorInstrumentation::applyUserAgentOverride).  I think it would be nice if we could share some code with Inspector (e.g., the override code would live in WebCore and Inspector would call into this code), but not a requirement.  The benefit of sharing would be we wouldn&apos;t have to check twice for an override.

Rather than keep track of the override in NavigationEntry, is it possible to set a bool on FrameLoaderClientImpl (by adding a method on WebFrame that you call when the menu is checked)?  That may use less memory and keep most of the code change in a single repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611967</commentid>
    <comment_count>9</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-04-27 15:55:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The inspector hook is in FrameLoader::userAgent (calls into InspectorInstrumentation::applyUserAgentOverride).  I think it would be nice if we could share some code with Inspector (e.g., the override code would live in WebCore and Inspector would call into this code), but not a requirement.  The benefit of sharing would be we wouldn&apos;t have to check twice for an override.

I agree that it&apos;d be nice, but it seems that a couple of the other platforms also introduce their own override/custom user agents aside from the Inspector.

&gt; Rather than keep track of the override in NavigationEntry, is it possible to set a bool on FrameLoaderClientImpl (by adding a method on WebFrame that you call when the menu is checked)?  That may use less memory and keep most of the code change in a single repository.

I don&apos;t think this will work with the way the feature is defined.  The flag doesn&apos;t change on a per-FrameLoaderClientImpl basis; different NavigationEntries can require the flag be set differently, depending on what the user wants it to be set as.  Since multiple NavigationEntries can share the same FrameLoaderClientImpl, we need to store it higher.

If memory is important, one possibility is to globally set a user agent override string like the one currently inside webkit_glue::UserAgentState instead of setting it on a per-Tab basis.  We really only need a single desktop UA string on Android, so it&apos;d still work for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611993</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-04-27 16:22:15 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; The inspector hook is in FrameLoader::userAgent (calls into InspectorInstrumentation::applyUserAgentOverride).  I think it would be nice if we could share some code with Inspector (e.g., the override code would live in WebCore and Inspector would call into this code), but not a requirement.  The benefit of sharing would be we wouldn&apos;t have to check twice for an override.
&gt; 
&gt; I agree that it&apos;d be nice, but it seems that a couple of the other platforms also introduce their own override/custom user agents aside from the Inspector.

I suspect if we were able to add this feature to WebCore proper, other platforms would start using it.  It&apos;s unfortunate that everyone has to reimplement the same code.  I&apos;m not saying you have to do this.  It could be left as a future cleanup.

&gt; &gt; Rather than keep track of the override in NavigationEntry, is it possible to set a bool on FrameLoaderClientImpl (by adding a method on WebFrame that you call when the menu is checked)?  That may use less memory and keep most of the code change in a single repository.
&gt; 
&gt; I don&apos;t think this will work with the way the feature is defined.  The flag doesn&apos;t change on a per-FrameLoaderClientImpl basis; different NavigationEntries can require the flag be set differently, depending on what the user wants it to be set as.  Since multiple NavigationEntries can share the same FrameLoaderClientImpl, we need to store it higher.

Does the affect of the checkbox last for the entire duration of the tab or does it uncheck when you navigate to a different domain (e.g., by clicking a link)?

Hooking into NavigationEntry seems like a more invasive change than just setting a bool on WebFrame or WebFrameClient (if that&apos;ll meet your use case).  I&apos;m not that worried about the memory, just the complexity of changing NavigationEntry.

If we&apos;re going to do a callback to WebFrameClient, we may be able to remove Platform::userAgent from Platform.h and roll that into the chrome side code directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612046</commentid>
    <comment_count>11</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-04-27 17:34:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I suspect if we were able to add this feature to WebCore proper, other platforms would start using it.  It&apos;s unfortunate that everyone has to reimplement the same code.  I&apos;m not saying you have to do this.  It could be left as a future cleanup.
I agree.  I was going to suggest opening a different bug to track it, but I wasn&apos;t clear on how the process works in the WebKit repo.

&gt; Does the affect of the checkbox last for the entire duration of the tab or does it uncheck when you navigate to a different domain (e.g., by clicking a link)?
The effect of the checkbox carries over from previous navigations on the same tab: if it&apos;s on for one page and the user clicks a link, the flag stays on.  When the user goes backwards or forwards in their history, the flag tracks what UA was used to load the page when they were last on the page and re-sets it accordingly.  This helps avoid issues with saved zoom levels and scroll positions when the user reloads a page with a different UA than it is expecting.

&gt; Hooking into NavigationEntry seems like a more invasive change than just setting a bool on WebFrame or WebFrameClient (if that&apos;ll meet your use case).  I&apos;m not that worried about the memory, just the complexity of changing NavigationEntry.
Yeah, I understand.  I&apos;m definitely open to suggestions for cleaner ways to satisfy the requirements...

&gt; If we&apos;re going to do a callback to WebFrameClient, we may be able to remove Platform::userAgent from Platform.h and roll that into the chrome side code directly.
That makes sense.  We&apos;d be able to pull it out of webkit_glue, if I&apos;m understanding the implications correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614704</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-05-02 14:59:45 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Does the affect of the checkbox last for the entire duration of the tab or does it uncheck when you navigate to a different domain (e.g., by clicking a link)?
&gt; The effect of the checkbox carries over from previous navigations on the same tab: if it&apos;s on for one page and the user clicks a link, the flag stays on.  When the user goes backwards or forwards in their history, the flag tracks what UA was used to load the page when they were last on the page and re-sets it accordingly.  This helps avoid issues with saved zoom levels and scroll positions when the user reloads a page with a different UA than it is expecting.

Is this setting remembered across browsing sessions?  If I set it for foo.com and I visit foo.com a few days later, will it remember that I want to use the desktop site?

Anyway, using NavigationEntry seems reasonable to me since it&apos;s tied to specific pages, not the lifetime of a WebFrame.

This change is fine with me; it needs approval from one of the WebKit API maintainers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616356</commentid>
    <comment_count>13</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-05-04 10:16:08 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Is this setting remembered across browsing sessions?  If I set it for foo.com and I visit foo.com a few days later, will it remember that I want to use the desktop site?
The current spec discards the flag across sessions, though there is an open feature request to have sticky per domain.

&gt; Anyway, using NavigationEntry seems reasonable to me since it&apos;s tied to specific pages, not the lifetime of a WebFrame.
&gt; 
&gt; This change is fine with me; it needs approval from one of the WebKit API maintainers.
Cool, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616388</commentid>
    <comment_count>14</comment_count>
      <attachid>137923</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-04 10:39:14 -0700</bug_when>
    <thetext>Comment on attachment 137923
Patch

Can we write a unit test for this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617992</commentid>
    <comment_count>15</comment_count>
      <attachid>140602</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-05-07 15:16:38 -0700</bug_when>
    <thetext>Created attachment 140602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618004</commentid>
    <comment_count>16</comment_count>
      <attachid>140602</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-05-07 15:25:22 -0700</bug_when>
    <thetext>Comment on attachment 140602
Patch

Added a unit test; please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620188</commentid>
    <comment_count>17</comment_count>
      <attachid>140602</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-09 19:56:43 -0700</bug_when>
    <thetext>Comment on attachment 140602
Patch

Thanks for the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620202</commentid>
    <comment_count>18</comment_count>
      <attachid>140602</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 20:43:37 -0700</bug_when>
    <thetext>Comment on attachment 140602
Patch

Clearing flags on attachment: 140602

Committed r116602: &lt;http://trac.webkit.org/changeset/116602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620203</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 20:43:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620223</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 21:10:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 86057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620225</commentid>
    <comment_count>21</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-09 21:11:16 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 140602 [details])
&gt; Clearing flags on attachment: 140602
&gt; 
&gt; Committed r116602: &lt;http://trac.webkit.org/changeset/116602&gt;

I&apos;m rolling it out because of a build error on Windows Debug.


1&gt;.\tests\FrameLoaderClientImplTest.cpp(91) :error C2665: &apos;WebKit::WebString::fromUTF8&apos; : none of the 2 overloads could convert all the argument types
1&gt;        c:\b\build\slave\webkit-win-latest-dbg\build\src\third_party\webkit\source\webkit\chromium\public\platform\../../../../Platform/chromium/public/WebString.h(87): could be &apos;WebKit::WebString WebKit::WebString::fromUTF8(const char *)&apos;
1&gt;        while trying to match the argument list &apos;(WTF::CString)&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620228</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-09 21:20:15 -0700</bug_when>
    <thetext>/me will fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620236</commentid>
    <comment_count>23</comment_count>
      <attachid>141082</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-09 21:45:14 -0700</bug_when>
    <thetext>Created attachment 141082
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620289</commentid>
    <comment_count>24</comment_count>
      <attachid>141082</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 23:41:28 -0700</bug_when>
    <thetext>Comment on attachment 141082
Patch for landing

Clearing flags on attachment: 141082

Committed r116612: &lt;http://trac.webkit.org/changeset/116612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620290</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 23:41:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620939</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 14:06:00 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 86141</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137923</attachid>
            <date>2012-04-19 10:56:21 -0700</date>
            <delta_ts>2012-05-07 15:16:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83959-20120419105619.patch</filename>
            <type>text/plain</type>
            <size>2193</size>
            <attacher>dfalcantara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2NDkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTA0LTE5ICBEYW4gQWxjYW50YXJhICA8ZGZhbGNhbnRhcmFAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIGFiaWxpdHkgdG8gb3ZlcnJpZGUgdXNlciBhZ2Vu
dCBzdHJpbmcgcGVyLVdlYkZyYW1lQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgYSBtZXRob2QgdGhhdCBjYW4gYmUgdXNlZCB0byBvdmVy
cmlkZSB0aGUgbm9ybWFsIHVzZXIgYWdlbnQgaW4KKyAgICAgICAgY2hyb21pdW0uCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OnVzZXJBZ2VudCk6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6dXNlckFnZW50KToKKwogMjAxMi0wNC0xOSAgQWxlYyBGbGV0dCAgPGFs
ZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdHViIG91dCBJREJD
dXJzb3IuYWR2YW5jZSBmb3IgbGFuZGluZwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAxMTQ1NzIpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTcsNiArMzk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gdGFy
Z2V0LAogICAgICAgICBXZWJET01NZXNzYWdlRXZlbnQpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAg
ICAvLyBBc2tzIHRoZSBlbWJlZGRlciBpZiBhIHNwZWNpZmljIHVzZXIgYWdlbnQgc2hvdWxkIGJl
IHVzZWQgZm9yIHRoZSBnaXZlbgorICAgIC8vIFVSTC4gUmV0dXJucyB0cnVlIGlmIGl0IHNob3Vs
ZCwgYWxvbmcgd2l0aCB0aGUgdXNlciBhZ2VudC4gSWYgZmFsc2UsCisgICAgLy8gV2ViS2l0UGxh
dGZvcm1TdXBwb3J0Ojp1c2VyQWdlbnQoKSB3aWxsIGJlIGNhbGxlZCB0byBwcm92aWRlIG9uZS4K
KyAgICB2aXJ0dWFsIGJvb2wgdXNlckFnZW50KGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJTdHJpbmcq
IHVzZXJBZ2VudCkgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJGcmFt
ZUNsaWVudCgpIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTE0NTcyKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5NCw2ICsxMzk0LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpzZXRUaXRsZShjb24KIAogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dXNlckFnZW50
KGNvbnN0IEtVUkwmIHVybCkKIHsKKyAgICBXZWJTdHJpbmcgb3ZlcnJpZGU7CisgICAgaWYgKG1f
d2ViRnJhbWUtPmNsaWVudCgpLT51c2VyQWdlbnQoV2ViVVJMKHVybCksICZvdmVycmlkZSkpCisg
ICAgICAgIHJldHVybiBvdmVycmlkZTsKKwogICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKS0+dXNlckFnZW50KHVybCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140602</attachid>
            <date>2012-05-07 15:16:38 -0700</date>
            <delta_ts>2012-05-09 21:45:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83959-20120507151636.patch</filename>
            <type>text/plain</type>
            <size>7549</size>
            <attacher>dfalcantara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYzNTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDEyLTA1LTA3ICBEYW4gQWxjYW50YXJhICA8ZGZhbGNhbnRhcmFAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIGFiaWxpdHkgdG8gb3ZlcnJpZGUgdXNlciBhZ2Vu
dCBzdHJpbmcgcGVyLVdlYkZyYW1lQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk1OQorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRzIGEgbWV0aG9kIHRoYXQgY2Fu
IGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIG5vcm1hbCB1c2VyIGFnZW50IGluCisgICAgICAgIGNo
cm9taXVtLiAgQWxzbyBhZGRzIGEgdW5pdCB0ZXN0IHRvIGNoZWNrIGlmIHRoZSBvdmVycmlkZSBp
cyB0YWtpbmcgZWZmZWN0LgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIHNyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dEltcGw6OnVzZXJBZ2VudCk6CisgICAgICAgICogdGVzdHMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
VGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFRlc3RXZWJGcmFt
ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXZWJGcmFtZUNsaWVudDo6c2V0VXNlckFn
ZW50T3ZlcnJpZGUpOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbFRlc3Q6OlNldFVwKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdDo6VGVhckRvd24pOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGxUZXN0OjpzZXRVc2VyQWdlbnRPdmVycmlkZSk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbFRlc3Q6OnVzZXJBZ2VudCk6
CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTItMDUtMDcgIERhdmlkIFJldmVtYW4g
IDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVzZSBHTF9DSFJP
TUlVTV9jb21tYW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRsZSB0ZXh0dXJlIHVwbG9hZHMuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkJKHJldmlzaW9uIDExNjMxMikKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2
ICsxMDEsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAg
ICAgICAgICAgICAndGVzdHMvRmxvYXRRdWFkVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3Rz
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFt
ZVRlc3RIZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5o
JywKICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShy
ZXZpc2lvbiAxMTYzMTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNiArMzk3LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LAogICAgICAgICBXZWJET01NZXNzYWdlRXZl
bnQpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICAvLyBBc2tzIHRoZSBlbWJlZGRlciBpZiBhIHNw
ZWNpZmljIHVzZXIgYWdlbnQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBnaXZlbgorICAgIC8vIFVS
TC4gUmV0dXJucyB0cnVlIGlmIGl0IHNob3VsZCwgYWxvbmcgd2l0aCB0aGUgdXNlciBhZ2VudC4g
SWYgZmFsc2UsCisgICAgLy8gV2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp1c2VyQWdlbnQoKSB3aWxs
IGJlIGNhbGxlZCB0byBwcm92aWRlIG9uZS4KKyAgICB2aXJ0dWFsIGJvb2wgdXNlckFnZW50KGNv
bnN0IFdlYlVSTCYgdXJsLCBXZWJTdHJpbmcqIHVzZXJBZ2VudCkgeyByZXR1cm4gZmFsc2U7IH0K
KwogcHJvdGVjdGVkOgogICAgIH5XZWJGcmFtZUNsaWVudCgpIHsgfQogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkocmV2aXNpb24gMTE2MzEyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3Niw2ICsxMzc2LDEwIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRsZShjb24KIAogU3RyaW5nIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkKIHsKKyAgICBXZWJT
dHJpbmcgb3ZlcnJpZGU7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpLT51c2VyQWdlbnQo
V2ViVVJMKHVybCksICZvdmVycmlkZSkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKwogICAg
IHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnVzZXJBZ2VudCh1cmwpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsVGVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbFRlc3QuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAi
V2ViVmlldy5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsK
KworY2xhc3MgVGVzdFdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBib29sIHVzZXJBZ2VudChjb25zdCBXZWJVUkwmIHVybCwgV2ViU3RyaW5nKiB1
c2VyQWdlbnQpIE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAobV91c2VyQWdlbnRPdmVycmlk
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgKnVzZXJB
Z2VudCA9IG1fdXNlckFnZW50T3ZlcnJpZGU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoY29uc3QgV2ViU3RyaW5nJiB1c2VyQWdl
bnQpCisgICAgeworICAgICAgICBtX3VzZXJBZ2VudE92ZXJyaWRlID0gdXNlckFnZW50OworICAg
IH0KKworcHJpdmF0ZToKKyAgICBXZWJTdHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKK307CisK
K2NsYXNzIEZyYW1lTG9hZGVyQ2xpZW50SW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBtX3dlYlZpZXcgPSBX
ZWJWaWV3OjpjcmVhdGUoMCk7CisgICAgICAgIG1fd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFt
ZSgmbV93ZWJGcmFtZUNsaWVudCk7CisgICAgICAgIFdlYkZyYW1lSW1wbCogZnJhbWUgPSBzdGF0
aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtX3dlYlZpZXctPm1haW5GcmFtZSgpKTsKKyAgICAgICAg
bV9mcmFtZUxvYWRlckNsaWVudEltcGwgPSBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudElt
cGwqPihmcmFtZS0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICB9CisKKyAgICB2
b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldFVzZXJBZ2VudE92ZXJyaWRlKGNvbnN0IFdlYlN0cmluZyYgdXNlckFn
ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fd2ViRnJhbWVDbGllbnQuc2V0VXNlckFnZW50
T3ZlcnJpZGUodXNlckFnZW50KTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJTdHJpbmcgdXNlckFn
ZW50KCkKKyAgICB7CisgICAgICAgIC8vIFRoZSB0ZXN0IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1l
IHVzZXIgYWdlbnQsIHJlZ2FyZGxlc3Mgb2YgdGhlIFVSTCBwYXNzZWQgaW4uCisgICAgICAgIGNv
bnN0IFdlYkNvcmU6OktVUkwgZHVtbXlVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCAiYWJv
dXQ6YmxhbmsiKTsKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVURjgobV9mcmFtZUxv
YWRlckNsaWVudEltcGwtPnVzZXJBZ2VudChkdW1teVVSTCkudXRmOCgpKTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICBUZXN0V2ViRnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKKyAgICBG
cmFtZUxvYWRlckNsaWVudEltcGwqIG1fZnJhbWVMb2FkZXJDbGllbnRJbXBsOworICAgIFdlYlZp
ZXcqIG1fd2ViVmlldzsKK307CisKK1RFU1RfRihGcmFtZUxvYWRlckNsaWVudEltcGxUZXN0LCBV
c2VyQWdlbnRPdmVycmlkZSkKK3sKKyAgICBjb25zdCBXZWJTdHJpbmcgZGVmYXVsdFVzZXJBZ2Vu
dCA9IHVzZXJBZ2VudCgpOworICAgIGNvbnN0IFdlYlN0cmluZyBvdmVycmlkZSA9IFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImR1bW15IG92ZXJyaWRlIik7CisKKyAgICAvLyBPdmVycmlkZSB0aGUgdXNl
ciBhZ2VudCBhbmQgbWFrZSBzdXJlIHdlIGdldCBpdCBiYWNrLgorICAgIHNldFVzZXJBZ2VudE92
ZXJyaWRlKG92ZXJyaWRlKTsKKyAgICBFWFBFQ1RfVFJVRShvdmVycmlkZS5lcXVhbHModXNlckFn
ZW50KCkpKTsKKworICAgIC8vIFJlbW92ZSB0aGUgb3ZlcnJpZGUgYW5kIG1ha2Ugc3VyZSB3ZSBn
ZXQgdGhlIG9yaWdpbmFsIGJhY2suCisgICAgc2V0VXNlckFnZW50T3ZlcnJpZGUoV2ViU3RyaW5n
KCkpOworICAgIEVYUEVDVF9UUlVFKGRlZmF1bHRVc2VyQWdlbnQuZXF1YWxzKHVzZXJBZ2VudCgp
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141082</attachid>
            <date>2012-05-09 21:45:14 -0700</date>
            <delta_ts>2012-05-09 23:41:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83959-20120509214513.patch</filename>
            <type>text/plain</type>
            <size>7572</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTY2MDUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDEyLTA1LTA5ICBEYW4gQWxjYW50YXJhICA8ZGZhbGNhbnRhcmFAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIGFiaWxpdHkgdG8gb3ZlcnJpZGUgdXNlciBhZ2Vu
dCBzdHJpbmcgcGVyLVdlYkZyYW1lQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk1OQorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KKyAgICAgICAgCisgICAgICAgIEFkZHMgYSBtZXRob2QgdGhhdCBjYW4gYmUg
dXNlZCB0byBvdmVycmlkZSB0aGUgbm9ybWFsIHVzZXIgYWdlbnQgaW4KKyAgICAgICAgY2hyb21p
dW0uICBBbHNvIGFkZHMgYSB1bml0IHRlc3QgdG8gY2hlY2sgaWYgdGhlIG92ZXJyaWRlIGlzIHRh
a2luZyBlZmZlY3QuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMv
V2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVDbGllbnQ6OnVzZXJBZ2VudCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6dXNlckFnZW50KToKKyAgICAgICAgKiB0ZXN0cy9GcmFtZUxvYWRlckNsaWVudEltcGxUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoVGVzdFdlYkZyYW1lQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VGVzdFdlYkZyYW1lQ2xpZW50OjpzZXRVc2VyQWdlbnRP
dmVycmlkZSk6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGxUZXN0KToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdDo6U2V0VXApOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGxUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbFRlc3Q6OnNldFVzZXJBZ2VudE92ZXJyaWRlKToKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdDo6dXNlckFnZW50KToKKyAg
ICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMi0wNS0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjExNjYwMi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkocmV2aXNpb24g
MTE2NjA1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBACiAgICAgICAgICAgICAndGVzdHMvRmFrZUdyYXBoaWNz
Q29udGV4dDNEVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJHcmFwaGljc0Nv
bnRleHQzRC5oJywKICAgICAgICAgICAgICd0ZXN0cy9GbG9hdFF1YWRUZXN0LmNwcCcsCisgICAg
ICAgICAgICAndGVzdHMvRnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFt
ZVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNU
ZXN0LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHJldmlzaW9uIDExNjYwNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5Nyw2ICszOTcsMTEg
QEAgcHVibGljOgogICAgICAgICBXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsCiAgICAgICAgIFdl
YkRPTU1lc3NhZ2VFdmVudCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIC8vIEFza3MgdGhlIGVt
YmVkZGVyIGlmIGEgc3BlY2lmaWMgdXNlciBhZ2VudCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGdp
dmVuCisgICAgLy8gVVJMLiBSZXR1cm5zIHRydWUgaWYgaXQgc2hvdWxkLCBhbG9uZyB3aXRoIHRo
ZSB1c2VyIGFnZW50LiBJZiBmYWxzZSwKKyAgICAvLyBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OnVz
ZXJBZ2VudCgpIHdpbGwgYmUgY2FsbGVkIHRvIHByb3ZpZGUgb25lLgorICAgIHZpcnR1YWwgYm9v
bCB1c2VyQWdlbnQoY29uc3QgV2ViVVJMJiB1cmwsIFdlYlN0cmluZyogdXNlckFnZW50KSB7IHJl
dHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMTY2MDUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgz
LDYgKzEzODMsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnNldFRpdGxlKGNvbgog
CiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJs
KQogeworICAgIFdlYlN0cmluZyBvdmVycmlkZTsKKyAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50
KCktPnVzZXJBZ2VudChXZWJVUkwodXJsKSwgJm92ZXJyaWRlKSkKKyAgICAgICAgcmV0dXJuIG92
ZXJyaWRlOworCiAgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dXNlckFn
ZW50KHVybCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GcmFtZUxvYWRlckNsaWVudEltcGxUZXN0LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwu
aCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CituYW1lc3BhY2UgeworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJh
bWVDbGllbnQgeworcHVibGljOgorICAgIGJvb2wgdXNlckFnZW50KGNvbnN0IFdlYlVSTCYgdXJs
LCBXZWJTdHJpbmcqIHVzZXJBZ2VudCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChtX3Vz
ZXJBZ2VudE92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAqdXNlckFnZW50ID0gbV91c2VyQWdlbnRPdmVycmlkZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShjb25zdCBXZWJT
dHJpbmcmIHVzZXJBZ2VudCkKKyAgICB7CisgICAgICAgIG1fdXNlckFnZW50T3ZlcnJpZGUgPSB1
c2VyQWdlbnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYlN0cmluZyBtX3VzZXJBZ2VudE92
ZXJyaWRlOworfTsKKworY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAg
IG1fd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICAgICAgbV93ZWJWaWV3LT5pbml0
aWFsaXplTWFpbkZyYW1lKCZtX3dlYkZyYW1lQ2xpZW50KTsKKyAgICAgICAgV2ViRnJhbWVJbXBs
KiBmcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1l
KCkpOworICAgICAgICBtX2ZyYW1lTG9hZGVyQ2xpZW50SW1wbCA9IHN0YXRpY19jYXN0PEZyYW1l
TG9hZGVyQ2xpZW50SW1wbCo+KGZyYW1lLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOwor
ICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgbV93ZWJWaWV3LT5j
bG9zZSgpOworICAgIH0KKworICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoY29uc3QgV2Vi
U3RyaW5nJiB1c2VyQWdlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV93ZWJGcmFtZUNsaWVu
dC5zZXRVc2VyQWdlbnRPdmVycmlkZSh1c2VyQWdlbnQpOworICAgIH0KKworICAgIGNvbnN0IFdl
YlN0cmluZyB1c2VyQWdlbnQoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHRlc3QgYWx3YXlzIHJl
dHVybnMgdGhlIHNhbWUgdXNlciBhZ2VudCwgcmVnYXJkbGVzcyBvZiB0aGUgVVJMIHBhc3NlZCBp
bi4KKyAgICAgICAgV2ViQ29yZTo6S1VSTCBkdW1teVVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJp
bmcsICJhYm91dDpibGFuayIpOworICAgICAgICBXVEY6OkNTdHJpbmcgdXNlckFnZW50ID0gbV9m
cmFtZUxvYWRlckNsaWVudEltcGwtPnVzZXJBZ2VudChkdW1teVVSTCkudXRmOCgpOworICAgICAg
ICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOCh1c2VyQWdlbnQuZGF0YSgpLCB1c2VyQWdlbnQu
bGVuZ3RoKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFRlc3RXZWJGcmFtZUNsaWVudCBt
X3dlYkZyYW1lQ2xpZW50OworICAgIEZyYW1lTG9hZGVyQ2xpZW50SW1wbCogbV9mcmFtZUxvYWRl
ckNsaWVudEltcGw7CisgICAgV2ViVmlldyogbV93ZWJWaWV3OworfTsKKworVEVTVF9GKEZyYW1l
TG9hZGVyQ2xpZW50SW1wbFRlc3QsIFVzZXJBZ2VudE92ZXJyaWRlKQoreworICAgIGNvbnN0IFdl
YlN0cmluZyBkZWZhdWx0VXNlckFnZW50ID0gdXNlckFnZW50KCk7CisgICAgY29uc3QgV2ViU3Ry
aW5nIG92ZXJyaWRlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiZHVtbXkgb3ZlcnJpZGUiKTsKKwor
ICAgIC8vIE92ZXJyaWRlIHRoZSB1c2VyIGFnZW50IGFuZCBtYWtlIHN1cmUgd2UgZ2V0IGl0IGJh
Y2suCisgICAgc2V0VXNlckFnZW50T3ZlcnJpZGUob3ZlcnJpZGUpOworICAgIEVYUEVDVF9UUlVF
KG92ZXJyaWRlLmVxdWFscyh1c2VyQWdlbnQoKSkpOworCisgICAgLy8gUmVtb3ZlIHRoZSBvdmVy
cmlkZSBhbmQgbWFrZSBzdXJlIHdlIGdldCB0aGUgb3JpZ2luYWwgYmFjay4KKyAgICBzZXRVc2Vy
QWdlbnRPdmVycmlkZShXZWJTdHJpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUoZGVmYXVsdFVzZXJB
Z2VudC5lcXVhbHModXNlckFnZW50KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>