<?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>15409</bug_id>
          
          <creation_ts>2007-10-07 07:27:50 -0700</creation_ts>
          <short_desc>FrameLoaderClientGtk hardcodes data, including platform to Linux i686</short_desc>
          <delta_ts>2007-11-05 18:56:29 -0800</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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ed Schouten">ed</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>christian</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58013</commentid>
    <comment_count>0</comment_count>
    <who name="Ed Schouten">ed</who>
    <bug_when>2007-10-07 07:27:50 -0700</bug_when>
    <thetext>The FrameLoaderClientGtk class hardcodes the string:

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/420+ (KHTML, like Gecko)

This is obviously wrong in a lot of cases. This makes the browser show up wrong in webserver logs in a lot of cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58014</commentid>
    <comment_count>1</comment_count>
      <attachid>16574</attachid>
    <who name="Ed Schouten">ed</who>
    <bug_when>2007-10-07 07:29:21 -0700</bug_when>
    <thetext>Created attachment 16574
Use uname(3) to read the sysname + machine

This unhardcodes already two of the things, namely the operating system and platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58016</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-07 07:55:05 -0700</bug_when>
    <thetext>Other portions of the user agent string that are incorrect include the WebKit version number, locale, and potentially the &quot;X11&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58035</commentid>
    <comment_count>3</comment_count>
      <attachid>16574</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-10-07 16:23:43 -0700</bug_when>
    <thetext>Comment on attachment 16574
Use uname(3) to read the sysname + machine

The error handling of the call to uname seems a bit dodgy -- do we really want to have a user-agent string that doesn&apos;t have any system/architecture at all?

This definitely seems like a step in the right direction, but I think we can make this fix even more complete pretty easily:

1. As Mark said, the WebKit version number should match the one used on OS X, since that&apos;s what most websites will be checking for (&lt;http://trac.webkit.org/projects/webkit/wiki/DetectingWebKit&gt;).
2. As Mark said, the &quot;X11&quot; part of the user-agent string may not always be correct -- what about Gtk+ on Win32?
3. Also in the Win32 vein, I don&apos;t think Win32 has a uname function, so I don&apos;t think this code will compile on Gtk+/Win32. But maybe we don&apos;t care about that?

r- for now so we can figure out the above issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58075</commentid>
    <comment_count>4</comment_count>
    <who name="Ed Schouten">ed</who>
    <bug_when>2007-10-07 23:18:37 -0700</bug_when>
    <thetext>Another thing we should pay attention to:
According to kalikiana on IRC, we can figure out the locale by using g_get_language_names().

Adam,

1. I&apos;ll see if there is some kind of #define in the source tree, representing the WebKit version number.
2. Maybe it would be better if we&apos;d say `GTK+&apos; instead of `X11; U&apos;. That would be applicable to all systems.
3. It would just chicken out during compilation. I think we&apos;ll see a second patch if someone&apos;s really interested in using it on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58115</commentid>
    <comment_count>5</comment_count>
      <attachid>16590</attachid>
    <who name="Ed Schouten">ed</who>
    <bug_when>2007-10-08 12:48:38 -0700</bug_when>
    <thetext>Created attachment 16590
Use GTK+ instead of X11; U. Also unhardcode the language.

I&apos;m not sure how to check for the version number in the source code. It seems the XCode project sets FULL_VERSION, but it&apos;s not set in the Makefile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58657</commentid>
    <comment_count>6</comment_count>
      <attachid>16590</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-10-16 09:39:15 -0700</bug_when>
    <thetext>Comment on attachment 16590
Use GTK+ instead of X11; U. Also unhardcode the language.

+    m_userAgent = (WebCore::String)&quot;Mozilla/5.0 (GTK+; &quot; + un.sysname + &quot; &quot; + un.machine + &quot;; &quot; + g_get_language_names()[0] + &quot;) AppleWebKit/420+ (KHTML, like Gecko)&quot;;

I think it would be better to use String::format() here instead of building this string by appending.

We should also add a FIXME about getting the version number correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59044</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-21 16:38:58 -0700</bug_when>
    <thetext>*** Bug 15591 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59045</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-21 16:51:01 -0700</bug_when>
    <thetext>The most recent patch on bug 15591, which I just duped against this bug, is probably a better basis for work going forwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59046</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-21 16:59:46 -0700</bug_when>
    <thetext>A couple of comments on the patch...  The values returned from uname are not what you would want when running on the Mac.  They return &quot;Darwin&quot; and &quot;i386&quot; when the user agent should have &quot;Intel Mac OS X&quot; for consistency with other browsers.  The WebKit version number really needs to be kept up to date.  Perhaps it could be based on the most recent version number used on Windows, which is stored in a plain text file at WebKit/win/WebKit.vcproj/VERSION.

Ideally, IMO, the user agent string should be as similar as possible to the native Mac and Windows ports when running on those platforms.  For other platforms, I would suggest comparing looking at precisely which fields Firefox changes and following their lead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59131</commentid>
    <comment_count>10</comment_count>
      <attachid>16793</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-10-22 06:22:17 -0700</bug_when>
    <thetext>Created attachment 16793
Based on #15591, better Mac Kernel Value, overriding possible

This patch is based on #15591, but stores the agent and application name in variables and allows for custom values. The Mac kernel value is now either &apos;PPC Mac OS X&apos; or &apos;Intel Mac OS X&apos;. The WebKit version is 523+ for now.

The &apos;Kernel&apos; value should possibly come from a new function which could be shared among ports, which would also provide Windows version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59173</commentid>
    <comment_count>11</comment_count>
      <attachid>16804</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-10-22 10:54:42 -0700</bug_when>
    <thetext>Created attachment 16804
Share systemName, include Windows version

This patch adds systemName to WebCore so that code can be shared with other ports. The Windows version is a copy of osVersion from WebKitWin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60140</commentid>
    <comment_count>12</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-02 23:13:56 -0700</bug_when>
    <thetext>Christian: Can you mark this patch for review if you think it&apos;s ready? I&apos;m starting to like the current state of it, and this is a bug that needs to be addressed.

The g_get_prgname() idea is quite elegant :-)

There is still the &quot;523+&quot; but that can be dealt with in a follow up patch.

So, I&apos;d like one of the core developers with UserAgent experience to review this patch, especially with a view to sharing code with the Win port and others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60252</commentid>
    <comment_count>13</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-11-04 12:46:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=16804) [edit]
&gt; Share systemName, include Windows version
&gt; 
&gt; This patch adds systemName to WebCore so that code can be shared with other
&gt; ports. The Windows version is a copy of osVersion from WebKitWin.
&gt;

I would like to see this code move to WebKitPage. E.g. the macintosh API allows to override the UserAgent on a per URL basis and to allow this easily, the code should move into the page.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60253</commentid>
    <comment_count>14</comment_count>
    <who name="Ed Schouten">ed</who>
    <bug_when>2007-11-04 13:05:39 -0800</bug_when>
    <thetext>Sorry if I complain complain a little, but I think that assuming &quot;Linux i686&quot; is a little bit wrong. Why not just add &quot;Unknown&quot; or something to the string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60290</commentid>
    <comment_count>15</comment_count>
      <attachid>16804</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-05 08:11:19 -0800</bug_when>
    <thetext>Comment on attachment 16804
Share systemName, include Windows version

&gt;Index: WebCore/ChangeLog
&gt;===================================================================
&gt;--- WebCore/ChangeLog	(revision 26888)
&gt;+++ WebCore/ChangeLog	(working copy)
&gt;@@ -1,3 +1,19 @@
&gt;+2007-10-22  Christian Dywan  &lt;christian@twotoasts.de&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        WARNING: NO TEST CASES ADDED OR CHANGED
&gt;+
&gt;+        Implement systemName for use in the user agent.
&gt;+
&gt;+        * WebCore.pro:
&gt;+        * platform/SystemName.cpp: Added.
&gt;+        (WebCore::systemName):
&gt;+        * platform/SystemName.h: Added.
&gt;+        * platform/win/SystemNameWin.cpp: Added.
&gt;+        (WebCore::windowsVersion):
&gt;+        * platform/win/SystemNameWin.h: Added.
&gt;+
&gt; 2007-10-22  Nikolas Zimmermann  &lt;zimmermann@kde.org&gt;
&gt; 
&gt;         Reviewed by Simon.
&gt;Index: WebCore/WebCore.pro
&gt;===================================================================
&gt;--- WebCore/WebCore.pro	(revision 26888)
&gt;+++ WebCore/WebCore.pro	(working copy)
&gt;@@ -669,6 +669,7 @@ SOURCES += \
&gt;     platform/SharedBuffer.cpp \
&gt;     platform/String.cpp \
&gt;     platform/StringImpl.cpp \
&gt;+    platform/SystemName.cpp \
&gt;     platform/TextCodec.cpp \
&gt;     platform/TextCodecLatin1.cpp \
&gt;     platform/TextCodecUTF16.cpp \
&gt;@@ -955,6 +956,9 @@ gtk-port {
&gt;         ../WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
&gt;         ../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
&gt;         ../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
&gt;+
&gt;+    unix: 
&gt;+    else: SOURCES += platform/win/SystemNameWin.cpp
&gt; }
&gt; 
&gt; # ENABLE_DATABASE probably cannot be disabled without breaking things
&gt;Index: WebCore/platform/SystemName.cpp
&gt;===================================================================
&gt;--- WebCore/platform/SystemName.cpp	(revision 0)
&gt;+++ WebCore/platform/SystemName.cpp	(revision 0)
&gt;@@ -0,0 +1,63 @@
&gt;+/*
&gt;+ * Copyright (C) 2007 Christian Dywan
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt;+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt;+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
&gt;+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt;+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt;+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt;+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt;+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt;+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt;+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt;+ */
&gt;+
&gt;+#include &quot;config.h&quot;
&gt;+#include &quot;SystemName.h&quot;
&gt;+
&gt;+#include &quot;CString.h&quot;
&gt;+#include &quot;PlatformString.h&quot;
&gt;+
&gt;+#if PLATFORM(UNIX)
&gt;+#include &lt;sys/utsname.h&gt;
&gt;+#elif defined(PLATFORM(WIN))
&gt;+#include &lt;win/SystemNameWin.h&gt;
&gt;+#endif
&gt;+
&gt;+namespace WebCore {
&gt;+
&gt;+String systemName(void)
&gt;+{
&gt;+    #if PLATFORM(MAC)
&gt;+        #if PLATFORM(X86)
&gt;+        return &quot;Intel Mac OS X&quot;;
&gt;+        #else
&gt;+        return &quot;PPC Mac OS X&quot;;
&gt;+        #endif
&gt;+    #elif PLATFORM(UNIX)
&gt;+    struct utsname name;
&gt;+    if(uname(&amp;name) != -1){
&gt;+        return String::format(&quot;%s %s&quot;, name.sysname, name.machine);
&gt;+    }
&gt;+    else{
&gt;+        return &quot;Linux i686&quot;;
&gt;+    }

Coding style: no braces needed here. I&apos;m pretty sure &quot;Linux i686&quot; is not a good default value here. Better to either return some kind of &quot;Unknown&quot; or otherwise pass up an error.

&gt;+    #elif PLATFORM(WIN)
&gt;+    return windowsVersion();
&gt;+    #else
&gt;+    return &quot;Unknown&quot;;
&gt;+    #endif
&gt;+}
&gt;+
&gt;+}
&gt;Index: WebCore/platform/SystemName.h
&gt;===================================================================
&gt;--- WebCore/platform/SystemName.h	(revision 0)
&gt;+++ WebCore/platform/SystemName.h	(revision 0)
&gt;@@ -0,0 +1,37 @@
&gt;+/*
&gt;+ * Copyright (C) 2007 Christian Dywan
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt;+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt;+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
&gt;+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt;+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt;+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt;+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt;+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt;+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt;+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt;+ */
&gt;+
&gt;+#ifndef SystemName_h
&gt;+#define SystemName_h
&gt;+
&gt;+namespace WebCore {
&gt;+
&gt;+    class String;
&gt;+
&gt;+    String systemName();
&gt;+
&gt;+}
&gt;+
&gt;+#endif // SystemName_h
&gt;Index: WebCore/platform/win/SystemNameWin.cpp
&gt;===================================================================
&gt;--- WebCore/platform/win/SystemNameWin.cpp	(revision 0)
&gt;+++ WebCore/platform/win/SystemNameWin.cpp	(revision 0)
&gt;@@ -0,0 +1,66 @@
&gt;+/*
&gt;+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
&gt;+ * Copyright (C) 2007 Christian Dywan
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ *
&gt;+ * 1.  Redistributions of source code must retain the above copyright
&gt;+ *     notice, this list of conditions and the following disclaimer. 
&gt;+ * 2.  Redistributions in binary form must reproduce the above copyright
&gt;+ *     notice, this list of conditions and the following disclaimer in the
&gt;+ *     documentation and/or other materials provided with the distribution. 
&gt;+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt;+ *     its contributors may be used to endorse or promote products derived
&gt;+ *     from this software without specific prior written permission. 
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt;+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt;+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt;+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt;+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt;+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt;+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt;+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt;+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt;+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt;+ */
&gt;+
&gt;+#include &quot;config.h&quot;
&gt;+#include &quot;SystemNameWin.h&quot;
&gt;+
&gt;+#include &quot;CString.h&quot;
&gt;+#include &quot;PlatformString.h&quot;
&gt;+
&gt;+#include &lt;windowsx.h&gt;
&gt;+
&gt;+namespace WebCore {
&gt;+
&gt;+// Copied from osVersion, WebKit/win/WebView.cpp, line 1593
&gt;+String windowsVersion()
&gt;+{
&gt;+    String osVersion;
&gt;+    OSVERSIONINFO versionInfo = {0};
&gt;+    versionInfo.dwOSVersionInfoSize = sizeof(versionInfo);
&gt;+    GetVersionEx(&amp;versionInfo);
&gt;+
&gt;+    if (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
&gt;+        if (versionInfo.dwMajorVersion == 4) {
&gt;+            if (versionInfo.dwMinorVersion == 0)
&gt;+                osVersion = &quot;Windows 95&quot;;
&gt;+            else if (versionInfo.dwMinorVersion == 10)
&gt;+                osVersion = &quot;Windows 98&quot;;
&gt;+            else if (versionInfo.dwMinorVersion == 90)
&gt;+                osVersion = &quot;Windows 98; Win 9x 4.90&quot;;
&gt;+        }
&gt;+    } else if (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
&gt;+        osVersion = String::format(&quot;Windows NT %d.%d&quot;, versionInfo.dwMajorVersion, versionInfo.dwMinorVersion);
&gt;+
&gt;+    if (!osVersion.length())
&gt;+        osVersion = String::format(&quot;Windows %d.%d&quot;, versionInfo.dwMajorVersion, versionInfo.dwMinorVersion);
&gt;+
&gt;+    return osVersion;
&gt;+}
&gt;+
&gt;+} // namespace WebCore

Someone familiar with these issues on Windows should review this part.

&gt;Index: WebCore/platform/win/SystemNameWin.h
&gt;===================================================================
&gt;--- WebCore/platform/win/SystemNameWin.h	(revision 0)
&gt;+++ WebCore/platform/win/SystemNameWin.h	(revision 0)
&gt;@@ -0,0 +1,35 @@
&gt;+/*
&gt;+ * Copyright (C) 2007 Christian Dywan
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt;+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt;+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
&gt;+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt;+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt;+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt;+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt;+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt;+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt;+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt;+ */
&gt;+
&gt;+#ifndef SystemNameWin_h
&gt;+#define SystemNameWin_h
&gt;+
&gt;+namespace WebCore {
&gt;+
&gt;+String windowsVersion(void);
&gt;+
&gt;+}
&gt;+
&gt;+#endif // SystemNameWin_h
&gt;Index: WebKit/gtk/ChangeLog
&gt;===================================================================
&gt;--- WebKit/gtk/ChangeLog	(revision 26888)
&gt;+++ WebKit/gtk/ChangeLog	(working copy)
&gt;@@ -1,3 +1,16 @@
&gt;+2007-10-22  Christian Dywan  &lt;christian@twotoasts.de&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        Computer a proper user agent.
&gt;+
&gt;+        * ChangeLog:
&gt;+        * WebCoreSupport/FrameLoaderClientGtk.cpp:
&gt;+        (WebKit::composeUserAgent):
&gt;+        (WebKit::FrameLoaderClient::FrameLoaderClient):
&gt;+        (WebKit::FrameLoaderClient::userAgent):
&gt;+        * WebCoreSupport/FrameLoaderClientGtk.h:
&gt;+
&gt; 2007-10-22  Alp Toker  &lt;alp@atoker.com&gt;
&gt; 
&gt;         Reviewed by Mark Rowe.
&gt;Index: WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
&gt;===================================================================
&gt;--- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	(revision 26888)
&gt;+++ WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	(working copy)
&gt;@@ -40,10 +40,12 @@
&gt; #include &quot;HTMLFrameElement.h&quot;
&gt; #include &quot;HTMLFrameOwnerElement.h&quot;
&gt; #include &quot;HTMLNames.h&quot;
&gt;+#include &quot;Language.h&quot;
&gt; #include &quot;MIMETypeRegistry.h&quot;
&gt; #include &quot;NotImplemented.h&quot;
&gt; #include &quot;PlatformString.h&quot;
&gt; #include &quot;ResourceRequest.h&quot;
&gt;+#include &quot;SystemName.h&quot;
&gt; #include &quot;CString.h&quot;
&gt; #include &quot;ProgressTracker.h&quot;
&gt; #include &quot;webkitgtkpage.h&quot;
&gt;@@ -55,16 +57,54 @@ using namespace WebCore;
&gt; 
&gt; namespace WebKit {
&gt; 
&gt;+static String composeUserAgent(String applicationName)
&gt;+{
&gt;+    String operatingSystem;
&gt;+
&gt;+    #ifdef GDK_WINDOWING_X11
&gt;+    operatingSystem = &quot;X11&quot;;
&gt;+    #elif defined(GTK_WINDOWING_WIN32)
&gt;+    operatingSystem = &quot;Windows&quot;;
&gt;+    #elif defined(GTK_WINDOWING_QUARTZ)
&gt;+    operatingSystem = &quot;Macintosh&quot;;
&gt;+    #elif defined(GTK_WINDOWING_DIRECTFB)
&gt;+    operatingSystem = &quot;DirectFB&quot;;
&gt;+    #else
&gt;+    operatingSystem = &quot;Unknown&quot;;
&gt;+    #endif

Perhaps there should be a notImplemented() in the &quot;Unknown&quot; case.

&gt;+
&gt;+    // FIXME: The WebKit version is hardcoded
&gt;+
&gt;+    return String::format(&quot;Mozilla/5.0 (%s; U; %s; %s) AppleWebKit/%s (KHTML, like Gecko) %s&quot;
&gt;+        , operatingSystem.utf8().data()
&gt;+        , systemName().utf8().data()
&gt;+        , defaultLanguage().utf8().data()
&gt;+        , &quot;523+&quot;
&gt;+        , applicationName.utf8().data());
&gt;+}

We can fix the hard coded version in a later patch, this is fine for now. bdash has some ideas here.

&gt;+
&gt; FrameLoaderClient::FrameLoaderClient(WebKitFrame* frame)
&gt;     : m_frame(frame)
&gt;     , m_firstData(false)
&gt; {
&gt;     ASSERT(m_frame);
&gt;+
&gt;+    m_applicationNameStandard = g_get_prgname();
&gt; }
&gt; 
&gt; String FrameLoaderClient::userAgent(const KURL&amp;)
&gt; {
&gt;-    return &quot;Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/420+ (KHTML, like Gecko)&quot;;
&gt;+    if(m_userAgentOverridden)
&gt;+        return m_userAgentCustom;
&gt;+
&gt;+    if(!m_userAgentStandard.length()){
&gt;+        if(m_applicationNameOverridden)
&gt;+            m_userAgentStandard = composeUserAgent(m_applicationNameCustom);
&gt;+        else
&gt;+            m_userAgentStandard = composeUserAgent(m_applicationNameStandard);
&gt;+    }
&gt;+
&gt;+    return m_userAgentStandard;
&gt; }
&gt; 
&gt; WTF::PassRefPtr&lt;WebCore::DocumentLoader&gt; FrameLoaderClient::createDocumentLoader(const WebCore::ResourceRequest&amp; request, const SubstituteData&amp; substituteData)
&gt;Index: WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
&gt;===================================================================
&gt;--- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h	(revision 26888)
&gt;+++ WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h	(working copy)
&gt;@@ -180,6 +180,12 @@ namespace WebKit {
&gt;     private:
&gt;         WebKitFrame* m_frame;
&gt;         WebCore::ResourceResponse m_response;
&gt;+        WebCore::String m_userAgentStandard;
&gt;+        WebCore::String m_userAgentCustom;
&gt;+        WebCore::String m_applicationNameStandard;
&gt;+        WebCore::String m_applicationNameCustom;
&gt;+        bool m_userAgentOverridden;
&gt;+        bool m_applicationNameOverridden;
&gt;         bool m_firstData;
&gt;     };
&gt; 


Can you consider splitting your patch into two parts?

I can review the GTK+ part straight away, and we can add the platform/SystemName.h part afterwards, since that part needs wider review particularly as ports might be able to share it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60291</commentid>
    <comment_count>16</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-05 08:18:05 -0800</bug_when>
    <thetext>if(!m_userAgentStandard.length())

isEmpty() will do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60299</commentid>
    <comment_count>17</comment_count>
      <attachid>17044</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-11-05 09:31:13 -0800</bug_when>
    <thetext>Created attachment 17044
Gtk only part, imrpoved based on comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60303</commentid>
    <comment_count>18</comment_count>
      <attachid>17046</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-11-05 09:55:20 -0800</bug_when>
    <thetext>Created attachment 17046
Gtk only part, Updated if and #if style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60342</commentid>
    <comment_count>19</comment_count>
      <attachid>17051</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-11-05 14:11:51 -0800</bug_when>
    <thetext>Created attachment 17051
No more string abuse but clean concatenation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60353</commentid>
    <comment_count>20</comment_count>
      <attachid>17051</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-05 17:16:29 -0800</bug_when>
    <thetext>Comment on attachment 17051
No more string abuse but clean concatenation

This patch returns an empty string for the UA on Release builds due to uninitialised variables. I think it would be best to remove the &quot;custom&quot; variables for now since they&apos;re not yet used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60356</commentid>
    <comment_count>21</comment_count>
      <attachid>17053</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-05 17:37:48 -0800</bug_when>
    <thetext>Created attachment 17053
Reduction of the patch

This is a reduced version of the patch which removes the incomplete customisation support in previous versions and fixes a few coding style issues.

Christian: If you like my changes, please mark this patch for review.

We can add customisation and Windows support later but I think this is important to get included ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60357</commentid>
    <comment_count>22</comment_count>
      <attachid>17053</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-05 17:52:25 -0800</bug_when>
    <thetext>Comment on attachment 17053
Reduction of the patch

On behalf of Christian. Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60362</commentid>
    <comment_count>23</comment_count>
      <attachid>17053</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-11-05 18:43:03 -0800</bug_when>
    <thetext>Comment on attachment 17053
Reduction of the patch

I would recommend PLATFORM(DARWIN), not PLATFORM(MAC) for the agentOS function
similarly, PLATFORM(WIN_OS) for the Windows check
Otherwise r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60364</commentid>
    <comment_count>24</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-05 18:56:29 -0800</bug_when>
    <thetext>Landed in r27460.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16574</attachid>
            <date>2007-10-07 07:29:21 -0700</date>
            <delta_ts>2007-10-08 12:48:38 -0700</delta_ts>
            <desc>Use uname(3) to read the sysname + machine</desc>
            <filename>webkit-freebsd.diff</filename>
            <type>text/plain</type>
            <size>2501</size>
            <attacher name="Ed Schouten">ed</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyNjA5OSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
CiAjaW5jbHVkZSAid2Via2l0Z3RrZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRndGtwcml2YXRl
LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjAsMTEgKzYxLDIwIEBACiAgICAgLCBtX2ZpcnN0
RGF0YShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CisKKyAgICB1dHNuYW1lIHVuOwor
ICAgIAorICAgIGlmICh1bmFtZSgmdW4pICE9IDApIHsKKyAgICAJdW4uc3lzbmFtZVswXSA9ICdc
MCc7CisgICAgCXVuLm1hY2hpbmVbMF0gPSAnXDAnOworICAgIH0KKworICAgIG1fdXNlckFnZW50
ID0gKFdlYkNvcmU6OlN0cmluZykiTW96aWxsYS81LjAgKFgxMTsgVTsgIiArIHVuLnN5c25hbWUg
KyAiICIgKyB1bi5tYWNoaW5lICsgIjsgZW4tVVMpIEFwcGxlV2ViS2l0LzQyMCsgKEtIVE1MLCBs
aWtlIEdlY2tvKSI7CiB9CiAKIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNv
bnN0IEtVUkwmKQogewotICAgIHJldHVybiAiTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4
NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzQyMCsgKEtIVE1MLCBsaWtlIEdlY2tvKSI7CisgICAgcmV0
dXJuIG1fdXNlckFnZW50OwogfQogCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDI2MDk5KQorKysgV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiAr
MTc4LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdXNlckFnZW50OwogICAgICAgICBXZWJLaXRHdGtGcmFt
ZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwogICAgICAgICBib29sIG1fZmlyc3REYXRhOwpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTAwKQorKysg
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAw
Ny0xMC0wNyAgRWQgU2Nob3V0ZW4gIDxlZEBmeHEubmw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgcmVhZCB0aGUgb3BlcmF0aW5nIHN5
c3RlbSBuYW1lIGFuZCBhcmNoaXRlY3R1cmUgdGhhdAorICAgICAgICBhcmUgdXNlZCBpbiB0aGUg
dXNlciBhZ2VudCBzdHJpbmcgdGhyb3VnaCB1bmFtZSgzKSwgaW5zdGVhZCBvZgorICAgICAgICBo
YXJkY29kaW5nIGl0IHRvIExpbnV4IGk2ODYuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmg6CisKID09PSBzdGFydCBtZXJnZSBvZiB0cnVuayAwMy0xMC0yMDA3ID09PQogCiAy
MDA3LTA5LTI5ICBMYXJzIExpbmRuZXIgIDxsYXJzLmxpbmRuZXJAZ21haWwuY29tPgo=
</data>
<flag name="review"
          id="6989"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16590</attachid>
            <date>2007-10-08 12:48:38 -0700</date>
            <delta_ts>2007-10-16 09:39:15 -0700</delta_ts>
            <desc>Use GTK+ instead of X11; U. Also unhardcode the language.</desc>
            <filename>foo</filename>
            <type>text/plain</type>
            <size>2428</size>
            <attacher name="Ed Schouten">ed</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDI2
MDk5KQorKysgV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAid2Via2l0Z3RrZnJhbWUuaCIKICNp
bmNsdWRlICJ3ZWJraXRndGtwcml2YXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDxzeXMvdXRzbmFtZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjAsMTEg
KzYxLDIwIEBACiAgICAgLCBtX2ZpcnN0RGF0YShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9mcmFt
ZSk7CisKKyAgICB1dHNuYW1lIHVuOworICAgIAorICAgIGlmICh1bmFtZSgmdW4pICE9IDApIHsK
KyAgICAJdW4uc3lzbmFtZVswXSA9ICdcMCc7CisgICAgCXVuLm1hY2hpbmVbMF0gPSAnXDAnOwor
ICAgIH0KKworICAgIG1fdXNlckFnZW50ID0gKFdlYkNvcmU6OlN0cmluZykiTW96aWxsYS81LjAg
KEdUSys7ICIgKyB1bi5zeXNuYW1lICsgIiAiICsgdW4ubWFjaGluZSArICI7ICIgKyBnX2dldF9s
YW5ndWFnZV9uYW1lcygpWzBdICsgIikgQXBwbGVXZWJLaXQvNDIwKyAoS0hUTUwsIGxpa2UgR2Vj
a28pIjsKIH0KIAogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VS
TCYpCiB7Ci0gICAgcmV0dXJuICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1V
UykgQXBwbGVXZWJLaXQvNDIwKyAoS0hUTUwsIGxpa2UgR2Vja28pIjsKKyAgICByZXR1cm4gbV91
c2VyQWdlbnQ7CiB9CiAKIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQpJbmRleDogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiAy
NjA5OSkKKysrIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OCw2ICsxNzgsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQ
YWdlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICBwcml2YXRlOgorICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAg
ICAgIFdlYktpdEd0a0ZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIGJvb2wgbV9maXJzdERhdGE7CkluZGV4OiBDaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjEwMCkKKysrIENoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA3LTEwLTA3ICBFZCBTY2hv
dXRlbiAgPGVkQGZ4cS5ubD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcm9wZXJseSByZWFkIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG5hbWUgYW5kIGFy
Y2hpdGVjdHVyZSB0aGF0CisgICAgICAgIGFyZSB1c2VkIGluIHRoZSB1c2VyIGFnZW50IHN0cmlu
ZyB0aHJvdWdoIHVuYW1lKDMpLCBpbnN0ZWFkIG9mCisgICAgICAgIGhhcmRjb2RpbmcgaXQgdG8g
TGludXggaTY4Ni4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVy
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogPT09
IHN0YXJ0IG1lcmdlIG9mIHRydW5rIDAzLTEwLTIwMDcgPT09CiAKIDIwMDctMDktMjkgIExhcnMg
TGluZG5lciAgPGxhcnMubGluZG5lckBnbWFpbC5jb20+Cg==
</data>
<flag name="review"
          id="7001"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16793</attachid>
            <date>2007-10-22 06:22:17 -0700</date>
            <delta_ts>2007-10-22 10:54:42 -0700</delta_ts>
            <desc>Based on #15591, better Mac Kernel Value, overriding possible</desc>
            <filename>user-agent.diff</filename>
            <type>text/plain</type>
            <size>4191</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShSZXZpc2lvbiAyNjg2NCkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShBcmJlaXRz
a29waWUpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDctMTAtMjIgIENocmlzdGlhbiBEeXdhbiAgPGNo
cmlzdGlhbkB0d290b2FzdHMuZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ29tcHV0ZSBhIHByb3BlciB1c2VyIGFnZW50LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb21wb3NlVXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaDoKKwogMjAwNy0xMC0yMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFscC4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShSZXZpc2lvbiAyNjg2NCkKKysrIFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShBcmJlaXRza29w
aWUpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAg
LTUwLDIxICs1MSw4NCBAQAogI2luY2x1ZGUgIndlYmtpdGd0a2ZyYW1lLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z3RrcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgUExBVEZPUk0oVU5J
WCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIFN0cmluZyBjb21wb3NlVXNl
ckFnZW50KFN0cmluZyBhcHBsaWNhdGlvbk5hbWUpCit7CisgICAgU3RyaW5nIE9wZXJhdGluZ1N5
c3RlbTsKKyAgICBTdHJpbmcgS2VybmVsOworCisgICAgI2lmZGVmIEdES19XSU5ET1dJTkdfWDEx
CisgICAgT3BlcmF0aW5nU3lzdGVtID0gIlgxMSI7CisgICAgI2VsaWYgZGVmaW5lZChHVEtfV0lO
RE9XSU5HX1dJTjMyKQorICAgIE9wZXJhdGluZ1N5c3RlbSA9ICJXaW5kb3dzIjsKKyAgICAjZWxp
ZiBkZWZpbmVkKEdUS19XSU5ET1dJTkdfUVVBUlRaKQorICAgIE9wZXJhdGluZ1N5c3RlbSA9ICJN
YWNpbnRvc2giOworICAgICNlbGlmIGRlZmluZWQoR1RLX1dJTkRPV0lOR19ESVJFQ1RGQikKKyAg
ICBPcGVyYXRpbmdTeXN0ZW0gPSAiRGlyZWN0RkIiOworICAgICNlbHNlCisgICAgT3BlcmF0aW5n
U3lzdGVtID0gIlVua25vd24iOworICAgICNlbmRpZgorCisgICAgI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgI2lmIFBMQVRGT1JNKFg4NikKKyAgICAgICAgS2VybmVsID0gIkludGVsIE1hYyBP
UyBYIjsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgS2VybmVsID0gIlBQQyBNYWMgT1MgWCI7Cisg
ICAgICAgICNlbmRpZgorICAgICNlbGlmIFBMQVRGT1JNKFVOSVgpCisgICAgc3RydWN0IHV0c25h
bWUgbmFtZTsKKyAgICBpZih1bmFtZSgmbmFtZSkgIT0gLTEpeworICAgICAgICBLZXJuZWwgPSBT
dHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSk7CisgICAg
fQorICAgIGVsc2V7CisgICAgICAgIEtlcm5lbCA9ICJMaW51eCBpNjg2IjsKKyAgICB9CisgICAg
I2VsaWYgUExBVEZPUk0oV0lOKQorICAgIC8vIEZJWE1FOiBVc2UgdGhlIGFjdHVhbCBXaW5kb3dz
IHZlcnNpb24gaGVyZQorICAgIEtlcm5lbCA9ICJXaW5kb3dzIE5UIDUuMSI7CisgICAgI2Vsc2UK
KyAgICBLZXJuZWwgPSAiVW5rbm93biI7CisgICAgI2VuZGlmCisKKyAgICAvLyBGSVhNRTogVGhl
IFdlYktpdCB2ZXJzaW9uIGlzIGhhcmRjb2RlZAorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCJNb3ppbGxhLzUuMCAoJXM7IFU7ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtl
IEdlY2tvKSAlcyIKKyAgICAgICAgLCBPcGVyYXRpbmdTeXN0ZW0udXRmOCgpLmRhdGEoKQorICAg
ICAgICAsIEtlcm5lbC51dGY4KCkuZGF0YSgpCisgICAgICAgICwgZGVmYXVsdExhbmd1YWdlKCku
dXRmOCgpLmRhdGEoKQorICAgICAgICAsICI1MjMrIgorICAgICAgICAsIGFwcGxpY2F0aW9uTmFt
ZS51dGY4KCkuZGF0YSgpKTsKK30KKwogRnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xp
ZW50KFdlYktpdEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2Zp
cnN0RGF0YShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CisKKyAgICBtX2FwcGxpY2F0
aW9uTmFtZVN0YW5kYXJkID0gZ19nZXRfcHJnbmFtZSgpOwogfQogCiBTdHJpbmcgRnJhbWVMb2Fk
ZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKIHsKLSAgICByZXR1cm4gIk1vemlsbGEv
NS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC80MjArIChLSFRNTCwg
bGlrZSBHZWNrbykiOworICAgIGlmKG1fdXNlckFnZW50T3ZlcnJpZGRlbikKKyAgICAgICAgcmV0
dXJuIG1fdXNlckFnZW50Q3VzdG9tOworCisgICAgaWYoIW1fdXNlckFnZW50U3RhbmRhcmQubGVu
Z3RoKCkpeworICAgICAgICBpZihtX2FwcGxpY2F0aW9uTmFtZU92ZXJyaWRkZW4pCisgICAgICAg
ICAgICBtX3VzZXJBZ2VudFN0YW5kYXJkID0gY29tcG9zZVVzZXJBZ2VudChtX2FwcGxpY2F0aW9u
TmFtZUN1c3RvbSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdXNlckFnZW50U3RhbmRh
cmQgPSBjb21wb3NlVXNlckFnZW50KG1fYXBwbGljYXRpb25OYW1lU3RhbmRhcmQpOworICAgIH0K
KworICAgIHJldHVybiBtX3VzZXJBZ2VudFN0YW5kYXJkOwogfQogCiBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1
YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKFJldmlzaW9uIDI2ODY0KQorKysg
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShBcmJlaXRz
a29waWUpCkBAIC0xODAsNiArMTgwLDEyIEBACiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0
RnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKKyAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdXNlckFnZW50U3RhbmRhcmQ7CisgICAg
ICAgIFdlYkNvcmU6OlN0cmluZyBtX3VzZXJBZ2VudEN1c3RvbTsKKyAgICAgICAgV2ViQ29yZTo6
U3RyaW5nIG1fYXBwbGljYXRpb25OYW1lU3RhbmRhcmQ7CisgICAgICAgIFdlYkNvcmU6OlN0cmlu
ZyBtX2FwcGxpY2F0aW9uTmFtZUN1c3RvbTsKKyAgICAgICAgYm9vbCBtX3VzZXJBZ2VudE92ZXJy
aWRkZW47CisgICAgICAgIGJvb2wgbV9hcHBsaWNhdGlvbk5hbWVPdmVycmlkZGVuOwogICAgICAg
ICBib29sIG1fZmlyc3REYXRhOwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16804</attachid>
            <date>2007-10-22 10:54:42 -0700</date>
            <delta_ts>2007-11-05 09:31:13 -0800</delta_ts>
            <desc>Share systemName, include Windows version</desc>
            <filename>user-agent.diff</filename>
            <type>text/plain</type>
            <size>14183</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjg4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDctMTAtMjIgIENocmlzdGlhbiBEeXdhbiAgPGNocmlzdGlhbkB0
d290b2FzdHMuZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAg
SW1wbGVtZW50IHN5c3RlbU5hbWUgZm9yIHVzZSBpbiB0aGUgdXNlciBhZ2VudC4KKworICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL1N5c3RlbU5hbWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbU5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1N5
c3RlbU5hbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL1N5c3RlbU5hbWVXaW4u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NWZXJzaW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU3lzdGVtTmFtZVdpbi5oOiBBZGRlZC4KKwogMjAwNy0xMC0yMiAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAyNjg4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTY2OSw2ICs2NjksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9TdHJpbmcuY3BwIFwKICAgICBw
bGF0Zm9ybS9TdHJpbmdJbXBsLmNwcCBcCisgICAgcGxhdGZvcm0vU3lzdGVtTmFtZS5jcHAgXAog
ICAgIHBsYXRmb3JtL1RleHRDb2RlYy5jcHAgXAogICAgIHBsYXRmb3JtL1RleHRDb2RlY0xhdGlu
MS5jcHAgXAogICAgIHBsYXRmb3JtL1RleHRDb2RlY1VURjE2LmNwcCBcCkBAIC05NTUsNiArOTU2
LDkgQEAgZ3RrLXBvcnQgewogICAgICAgICAuLi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5jcHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorCisgICAgdW5peDogCisgICAgZWxzZTog
U09VUkNFUyArPSBwbGF0Zm9ybS93aW4vU3lzdGVtTmFtZVdpbi5jcHAKIH0KIAogIyBFTkFCTEVf
REFUQUJBU0UgcHJvYmFibHkgY2Fubm90IGJlIGRpc2FibGVkIHdpdGhvdXQgYnJlYWtpbmcgdGhp
bmdzCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5c3RlbU5hbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vU3lzdGVtTmFtZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL1N5c3RlbU5hbWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3lzdGVtTmFtZS5oIgorCisjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpZiBQTEFURk9STShVTklYKQor
I2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZWxpZiBkZWZpbmVkKFBMQVRGT1JNKFdJTikpCisj
aW5jbHVkZSA8d2luL1N5c3RlbU5hbWVXaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1N0cmluZyBzeXN0ZW1OYW1lKHZvaWQpCit7CisgICAgI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgI2lmIFBMQVRGT1JNKFg4NikKKyAgICAgICAgcmV0dXJuICJJbnRlbCBNYWMgT1Mg
WCI7CisgICAgICAgICNlbHNlCisgICAgICAgIHJldHVybiAiUFBDIE1hYyBPUyBYIjsKKyAgICAg
ICAgI2VuZGlmCisgICAgI2VsaWYgUExBVEZPUk0oVU5JWCkKKyAgICBzdHJ1Y3QgdXRzbmFtZSBu
YW1lOworICAgIGlmKHVuYW1lKCZuYW1lKSAhPSAtMSl7CisgICAgICAgIHJldHVybiBTdHJpbmc6
OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSk7CisgICAgfQorICAg
IGVsc2V7CisgICAgICAgIHJldHVybiAiTGludXggaTY4NiI7CisgICAgfQorICAgICNlbGlmIFBM
QVRGT1JNKFdJTikKKyAgICByZXR1cm4gd2luZG93c1ZlcnNpb24oKTsKKyAgICAjZWxzZQorICAg
IHJldHVybiAiVW5rbm93biI7CisgICAgI2VuZGlmCit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vU3lzdGVtTmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3lzdGVt
TmFtZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TeXN0ZW1OYW1lLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hy
aXN0aWFuIER5d2FuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU3lzdGVtTmFtZV9oCisjZGVmaW5lIFN5c3Rl
bU5hbWVfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTdHJpbmc7CisKKyAg
ICBTdHJpbmcgc3lzdGVtTmFtZSgpOworCit9CisKKyNlbmRpZiAvLyBTeXN0ZW1OYW1lX2gKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbU5hbWVXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbU5hbWVXaW4uY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtTmFtZVdpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjYgQEAKKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hyaXN0aWFuIER5
d2FuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAq
DQorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gDQorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUNCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gDQorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YNCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZA0KKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIA0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkN
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEDQorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkNCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsNCisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQNCisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRg0KKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2luY2x1ZGUgImNvbmZpZy5oIg0KKyNp
bmNsdWRlICJTeXN0ZW1OYW1lV2luLmgiDQorDQorI2luY2x1ZGUgIkNTdHJpbmcuaCINCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisNCisjaW5jbHVkZSA8d2luZG93c3guaD4NCisNCitu
YW1lc3BhY2UgV2ViQ29yZSB7DQorDQorLy8gQ29waWVkIGZyb20gb3NWZXJzaW9uLCBXZWJLaXQv
d2luL1dlYlZpZXcuY3BwLCBsaW5lIDE1OTMNCitTdHJpbmcgd2luZG93c1ZlcnNpb24oKQ0KK3sN
CisgICAgU3RyaW5nIG9zVmVyc2lvbjsNCisgICAgT1NWRVJTSU9OSU5GTyB2ZXJzaW9uSW5mbyA9
IHswfTsNCisgICAgdmVyc2lvbkluZm8uZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih2ZXJz
aW9uSW5mbyk7DQorICAgIEdldFZlcnNpb25FeCgmdmVyc2lvbkluZm8pOw0KKw0KKyAgICBpZiAo
dmVyc2lvbkluZm8uZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9XSU5ET1dTKSB7
DQorICAgICAgICBpZiAodmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24gPT0gNCkgew0KKyAgICAg
ICAgICAgIGlmICh2ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lvbiA9PSAwKQ0KKyAgICAgICAgICAg
ICAgICBvc1ZlcnNpb24gPSAiV2luZG93cyA5NSI7DQorICAgICAgICAgICAgZWxzZSBpZiAodmVy
c2lvbkluZm8uZHdNaW5vclZlcnNpb24gPT0gMTApDQorICAgICAgICAgICAgICAgIG9zVmVyc2lv
biA9ICJXaW5kb3dzIDk4IjsNCisgICAgICAgICAgICBlbHNlIGlmICh2ZXJzaW9uSW5mby5kd01p
bm9yVmVyc2lvbiA9PSA5MCkNCisgICAgICAgICAgICAgICAgb3NWZXJzaW9uID0gIldpbmRvd3Mg
OTg7IFdpbiA5eCA0LjkwIjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmICh2ZXJzaW9uSW5m
by5kd1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UKQ0KKyAgICAgICAgb3NWZXJz
aW9uID0gU3RyaW5nOjpmb3JtYXQoIldpbmRvd3MgTlQgJWQuJWQiLCB2ZXJzaW9uSW5mby5kd01h
am9yVmVyc2lvbiwgdmVyc2lvbkluZm8uZHdNaW5vclZlcnNpb24pOw0KKw0KKyAgICBpZiAoIW9z
VmVyc2lvbi5sZW5ndGgoKSkNCisgICAgICAgIG9zVmVyc2lvbiA9IFN0cmluZzo6Zm9ybWF0KCJX
aW5kb3dzICVkLiVkIiwgdmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24sIHZlcnNpb25JbmZvLmR3
TWlub3JWZXJzaW9uKTsNCisNCisgICAgcmV0dXJuIG9zVmVyc2lvbjsNCit9DQorDQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbU5hbWVX
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1OYW1lV2luLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1OYW1lV2luLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hy
aXN0aWFuIER5d2FuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU3lzdGVtTmFtZVdpbl9oCisjZGVmaW5lIFN5
c3RlbU5hbWVXaW5faAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyB3aW5kb3dzVmVy
c2lvbih2b2lkKTsKKworfQorCisjZW5kaWYgLy8gU3lzdGVtTmFtZVdpbl9oCkluZGV4OiBXZWJL
aXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2
aXNpb24gMjY4ODgpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDA3LTEwLTIyICBDaHJpc3RpYW4gRHl3YW4gIDxjaHJpc3RpYW5AdHdv
dG9hc3RzLmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvbXB1dGVyIGEgcHJvcGVyIHVzZXIgYWdlbnQuCisKKyAgICAgICAgKiBDaGFuZ2VMb2c6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpjb21wb3NlVXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OnVzZXJBZ2VudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaDoKKwogMjAwNy0xMC0yMiAgQWxwIFRva2VyICA8YWxwQGF0b2tlci5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9u
IDI2ODg4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxMiBAQAogI2luY2x1ZGUgIkhUTUxG
cmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
U3lzdGVtTmFtZS5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKICNpbmNsdWRlICJ3ZWJraXRndGtwYWdlLmgiCkBAIC01NSwxNiArNTcsNTQgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMg
U3RyaW5nIGNvbXBvc2VVc2VyQWdlbnQoU3RyaW5nIGFwcGxpY2F0aW9uTmFtZSkKK3sKKyAgICBT
dHJpbmcgb3BlcmF0aW5nU3lzdGVtOworCisgICAgI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisg
ICAgb3BlcmF0aW5nU3lzdGVtID0gIlgxMSI7CisgICAgI2VsaWYgZGVmaW5lZChHVEtfV0lORE9X
SU5HX1dJTjMyKQorICAgIG9wZXJhdGluZ1N5c3RlbSA9ICJXaW5kb3dzIjsKKyAgICAjZWxpZiBk
ZWZpbmVkKEdUS19XSU5ET1dJTkdfUVVBUlRaKQorICAgIG9wZXJhdGluZ1N5c3RlbSA9ICJNYWNp
bnRvc2giOworICAgICNlbGlmIGRlZmluZWQoR1RLX1dJTkRPV0lOR19ESVJFQ1RGQikKKyAgICBv
cGVyYXRpbmdTeXN0ZW0gPSAiRGlyZWN0RkIiOworICAgICNlbHNlCisgICAgb3BlcmF0aW5nU3lz
dGVtID0gIlVua25vd24iOworICAgICNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoZSBXZWJLaXQg
dmVyc2lvbiBpcyBoYXJkY29kZWQKKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiTW96aWxs
YS81LjAgKCVzOyBVOyAlczsgJXMpIEFwcGxlV2ViS2l0LyVzIChLSFRNTCwgbGlrZSBHZWNrbykg
JXMiCisgICAgICAgICwgb3BlcmF0aW5nU3lzdGVtLnV0ZjgoKS5kYXRhKCkKKyAgICAgICAgLCBz
eXN0ZW1OYW1lKCkudXRmOCgpLmRhdGEoKQorICAgICAgICAsIGRlZmF1bHRMYW5ndWFnZSgpLnV0
ZjgoKS5kYXRhKCkKKyAgICAgICAgLCAiNTIzKyIKKyAgICAgICAgLCBhcHBsaWNhdGlvbk5hbWUu
dXRmOCgpLmRhdGEoKSk7Cit9CisKIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVu
dChXZWJLaXRGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9maXJz
dERhdGEoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOworCisgICAgbV9hcHBsaWNhdGlv
bk5hbWVTdGFuZGFyZCA9IGdfZ2V0X3ByZ25hbWUoKTsKIH0KIAogU3RyaW5nIEZyYW1lTG9hZGVy
Q2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7Ci0gICAgcmV0dXJuICJNb3ppbGxhLzUu
MCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNDIwKyAoS0hUTUwsIGxp
a2UgR2Vja28pIjsKKyAgICBpZihtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCisgICAgICAgIHJldHVy
biBtX3VzZXJBZ2VudEN1c3RvbTsKKworICAgIGlmKCFtX3VzZXJBZ2VudFN0YW5kYXJkLmxlbmd0
aCgpKXsKKyAgICAgICAgaWYobV9hcHBsaWNhdGlvbk5hbWVPdmVycmlkZGVuKQorICAgICAgICAg
ICAgbV91c2VyQWdlbnRTdGFuZGFyZCA9IGNvbXBvc2VVc2VyQWdlbnQobV9hcHBsaWNhdGlvbk5h
bWVDdXN0b20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3VzZXJBZ2VudFN0YW5kYXJk
ID0gY29tcG9zZVVzZXJBZ2VudChtX2FwcGxpY2F0aW9uTmFtZVN0YW5kYXJkKTsKKyAgICB9CisK
KyAgICByZXR1cm4gbV91c2VyQWdlbnRTdGFuZGFyZDsKIH0KIAogV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiAyNjg4OCkKKysrIFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBj
b3B5KQpAQCAtMTgwLDYgKzE4MCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2VyQWdl
bnRTdGFuZGFyZDsKKyAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdXNlckFnZW50Q3VzdG9tOwor
ICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV9hcHBsaWNhdGlvbk5hbWVTdGFuZGFyZDsKKyAgICAg
ICAgV2ViQ29yZTo6U3RyaW5nIG1fYXBwbGljYXRpb25OYW1lQ3VzdG9tOworICAgICAgICBib29s
IG1fdXNlckFnZW50T3ZlcnJpZGRlbjsKKyAgICAgICAgYm9vbCBtX2FwcGxpY2F0aW9uTmFtZU92
ZXJyaWRkZW47CiAgICAgICAgIGJvb2wgbV9maXJzdERhdGE7CiAgICAgfTsKIAo=
</data>
<flag name="review"
          id="7232"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17044</attachid>
            <date>2007-11-05 09:31:13 -0800</date>
            <delta_ts>2007-11-05 09:55:20 -0800</delta_ts>
            <desc>Gtk only part, imrpoved based on comments</desc>
            <filename>user-agent1.diff</filename>
            <type>text/plain</type>
            <size>4428</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShSZXZpc2lvbiAyNzQzOSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShBcmJlaXRz
a29waWUpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMTEtMDUgIENocmlzdGlhbiBEeXdhbiAgPGNo
cmlzdGlhbkB0d290b2FzdHMuZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ29tcHV0ZSBhIHByb3BlciB1c2VyIGFnZW50LgorCisgICAgICAgICog
Q2hhbmdlTG9nOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29tcG9zZVVzZXJBZ2VudCk6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMDctMTEtMDUgIE1hcmsgUm93ZSAgPG1y
b3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBbHAgVG9rZXIuCklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAkoUmV2aXNpb24gMjc0MzkpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtNSw2ICs1LDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hy
aXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AdHdvdG9hc3RzLmRlPgogICoKICAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtNDAsMTAgKzQxLDE0IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpZiBQTEFURk9STShVTklY
KQorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKICNpbmNsdWRlICJDU3RyaW5nLmgi
CiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z3RrcGFnZS5o
IgpAQCAtNTksMTEgKzY0LDc3IEBACiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogewogICAgIEFTU0VS
VChtX2ZyYW1lKTsKKworICAgIG1fZGVmYXVsdEFwcGxpY2F0aW9uTmFtZSA9IGdfZ2V0X3ByZ25h
bWUoKTsKIH0KIAorU3RyaW5nIHdpbmRvd3NWZXJzaW9uKCkKK3sKKyAgICAvLyBGSVhNRTogQ29t
cHV0ZSB0aGUgd2luZG93cyB2ZXJzaW9uCisgICAgcmV0dXJuICJXaW5kb3dzIjsKK30KKworU3Ry
aW5nIHN5c3RlbU5hbWUodm9pZCkKK3sKKyAgICAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAj
aWYgUExBVEZPUk0oWDg2KQorICAgICAgICByZXR1cm4gIkludGVsIE1hYyBPUyBYIjsKKyAgICAg
ICAgI2Vsc2UKKyAgICAgICAgcmV0dXJuICJQUEMgTWFjIE9TIFgiOworICAgICAgICAjZW5kaWYK
KyAgICAjZWxpZiBQTEFURk9STShVTklYKQorICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7CisgICAg
aWYodW5hbWUoJm5hbWUpICE9IC0xKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVz
ICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuICJVbmtub3duIjsKKyAgICAjZWxpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIHdpbmRv
d3NWZXJzaW9uKCk7CisgICAgI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biAiVW5rbm93biI7CisgICAgI2VuZGlmCit9CisKK3N0YXRpYyBTdHJpbmcgY29tcG9zZVVzZXJB
Z2VudChTdHJpbmcgYXBwbGljYXRpb25OYW1lKQoreworICAgIFN0cmluZyBvcGVyYXRpbmdTeXN0
ZW07CisKKyAgICAjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyAgICBvcGVyYXRpbmdTeXN0ZW0g
PSAiWDExIjsKKyAgICAjZWxpZiBkZWZpbmVkKEdUS19XSU5ET1dJTkdfV0lOMzIpCisgICAgb3Bl
cmF0aW5nU3lzdGVtID0gIldpbmRvd3MiOworICAgICNlbGlmIGRlZmluZWQoR1RLX1dJTkRPV0lO
R19RVUFSVFopCisgICAgb3BlcmF0aW5nU3lzdGVtID0gIk1hY2ludG9zaCI7CisgICAgI2VsaWYg
ZGVmaW5lZChHVEtfV0lORE9XSU5HX0RJUkVDVEZCKQorICAgIG9wZXJhdGluZ1N5c3RlbSA9ICJE
aXJlY3RGQiI7CisgICAgI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG9wZXJhdGlu
Z1N5c3RlbSA9ICJVbmtub3duIjsKKyAgICAjZW5kaWYKKworICAgIC8vIEZJWE1FOiBUaGUgV2Vi
S2l0IHZlcnNpb24gaXMgaGFyZGNvZGVkCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJNb3pp
bGxhLzUuMCAoJXM7IFU7ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tv
KSAlcyIKKyAgICAgICAgLCBvcGVyYXRpbmdTeXN0ZW0udXRmOCgpLmRhdGEoKQorICAgICAgICAs
IHN5c3RlbU5hbWUoKS51dGY4KCkuZGF0YSgpCisgICAgICAgICwgZGVmYXVsdExhbmd1YWdlKCku
dXRmOCgpLmRhdGEoKQorICAgICAgICAsICI1MjMrIgorICAgICAgICAsIGFwcGxpY2F0aW9uTmFt
ZS51dGY4KCkuZGF0YSgpKTsKK30KKwogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdl
bnQoY29uc3QgS1VSTCYpCiB7Ci0gICAgcmV0dXJuICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51
eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNDIwKyAoS0hUTUwsIGxpa2UgR2Vja28pIjsKKyAg
ICBpZihtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCisgICAgICAgIHJldHVybiBtX2N1c3RvbVVzZXJB
Z2VudDsKKworICAgIGlmKG1fZGVmYXVsdFVzZXJBZ2VudC5pc0VtcHR5KCkpeworICAgICAgICBp
ZihtX2FwcGxpY2F0aW9uTmFtZU92ZXJyaWRkZW4pCisgICAgICAgICAgICBtX2RlZmF1bHRVc2Vy
QWdlbnQgPSBjb21wb3NlVXNlckFnZW50KG1fY3VzdG9tQXBwbGljYXRpb25OYW1lKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9kZWZhdWx0VXNlckFnZW50ID0gY29tcG9zZVVzZXJBZ2Vu
dChtX2RlZmF1bHRBcHBsaWNhdGlvbk5hbWUpOworICAgIH0KKworICAgIHJldHVybiBtX2RlZmF1
bHRVc2VyQWdlbnQ7CiB9CiAKIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1
dGVEYXRhKQpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAkoUmV2aXNpb24gMjc0MzkpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKEFyYmVpdHNrb3BpZSkKQEAgLTE4MCw2ICsxODAs
MTIgQEAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRGcmFtZSogbV9mcmFtZTsKICAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAgICBXZWJDb3Jl
OjpTdHJpbmcgbV9kZWZhdWx0VXNlckFnZW50OworICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV9j
dXN0b21Vc2VyQWdlbnQ7CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX2RlZmF1bHRBcHBsaWNh
dGlvbk5hbWU7CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX2N1c3RvbUFwcGxpY2F0aW9uTmFt
ZTsKKyAgICAgICAgYm9vbCBtX3VzZXJBZ2VudE92ZXJyaWRkZW47CisgICAgICAgIGJvb2wgbV9h
cHBsaWNhdGlvbk5hbWVPdmVycmlkZGVuOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17046</attachid>
            <date>2007-11-05 09:55:20 -0800</date>
            <delta_ts>2007-11-05 14:11:51 -0800</delta_ts>
            <desc>Gtk only part, Updated if and #if style</desc>
            <filename>user-agent1.diff</filename>
            <type>text/plain</type>
            <size>4356</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShSZXZpc2lvbiAyNzQzOSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShBcmJlaXRz
a29waWUpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMTEtMDUgIENocmlzdGlhbiBEeXdhbiAgPGNo
cmlzdGlhbkB0d290b2FzdHMuZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ29tcHV0ZSBhIHByb3BlciB1c2VyIGFnZW50LgorCisgICAgICAgICog
Q2hhbmdlTG9nOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29tcG9zZVVzZXJBZ2VudCk6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMDctMTEtMDUgIE1hcmsgUm93ZSAgPG1y
b3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBbHAgVG9rZXIuCklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAkoUmV2aXNpb24gMjc0MzkpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtNSw2ICs1LDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hy
aXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AdHdvdG9hc3RzLmRlPgogICoKICAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtNDAsMTAgKzQxLDE0IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpZiBQTEFURk9STShVTklY
KQorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKICNpbmNsdWRlICJDU3RyaW5nLmgi
CiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z3RrcGFnZS5o
IgpAQCAtNTksMTEgKzY0LDc3IEBACiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogewogICAgIEFTU0VS
VChtX2ZyYW1lKTsKKworICAgIG1fZGVmYXVsdEFwcGxpY2F0aW9uTmFtZSA9IGdfZ2V0X3ByZ25h
bWUoKTsKIH0KIAorU3RyaW5nIHdpbmRvd3NWZXJzaW9uKCkKK3sKKyAgICAvLyBGSVhNRTogQ29t
cHV0ZSB0aGUgd2luZG93cyB2ZXJzaW9uCisgICAgcmV0dXJuICJXaW5kb3dzIjsKK30KKworU3Ry
aW5nIHN5c3RlbU5hbWUodm9pZCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
WDg2KQorICAgIHJldHVybiAiSW50ZWwgTWFjIE9TIFgiOworI2Vsc2UKKyAgICByZXR1cm4gIlBQ
QyBNYWMgT1MgWCI7CisjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFVOSVgpCisgICAgc3RydWN0IHV0
c25hbWUgbmFtZTsKKyAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0xKQorICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyAg
ICByZXR1cm4gd2luZG93c1ZlcnNpb24oKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gIlVua25vd24iOworI2VuZGlmCit9CisKK3N0YXRpYyBTdHJpbmcgY29tcG9z
ZVVzZXJBZ2VudChTdHJpbmcgYXBwbGljYXRpb25OYW1lKQoreworICAgIFN0cmluZyBvcGVyYXRp
bmdTeXN0ZW07CisKKyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQorICAgIG9wZXJhdGluZ1N5c3Rl
bSA9ICJYMTEiOworI2VsaWYgZGVmaW5lZChHVEtfV0lORE9XSU5HX1dJTjMyKQorICAgIG9wZXJh
dGluZ1N5c3RlbSA9ICJXaW5kb3dzIjsKKyNlbGlmIGRlZmluZWQoR1RLX1dJTkRPV0lOR19RVUFS
VFopCisgICAgb3BlcmF0aW5nU3lzdGVtID0gIk1hY2ludG9zaCI7CisjZWxpZiBkZWZpbmVkKEdU
S19XSU5ET1dJTkdfRElSRUNURkIpCisgICAgb3BlcmF0aW5nU3lzdGVtID0gIkRpcmVjdEZCIjsK
KyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBvcGVyYXRpbmdTeXN0ZW0gPSAiVW5r
bm93biI7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBUaGUgV2ViS2l0IHZlcnNpb24gaXMgaGFy
ZGNvZGVkCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJNb3ppbGxhLzUuMCAoJXM7IFU7ICVz
OyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tvKSAlcyIKKyAgICAgICAgLCBv
cGVyYXRpbmdTeXN0ZW0udXRmOCgpLmRhdGEoKQorICAgICAgICAsIHN5c3RlbU5hbWUoKS51dGY4
KCkuZGF0YSgpCisgICAgICAgICwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKQorICAg
ICAgICAsICI1MjMrIgorICAgICAgICAsIGFwcGxpY2F0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsK
K30KKwogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7
Ci0gICAgcmV0dXJuICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBw
bGVXZWJLaXQvNDIwKyAoS0hUTUwsIGxpa2UgR2Vja28pIjsKKyAgICBpZiAobV91c2VyQWdlbnRP
dmVycmlkZGVuKQorICAgICAgICByZXR1cm4gbV9jdXN0b21Vc2VyQWdlbnQ7CisKKyAgICBpZiAo
bV9kZWZhdWx0VXNlckFnZW50LmlzRW1wdHkoKSl7CisgICAgICAgIGlmIChtX2FwcGxpY2F0aW9u
TmFtZU92ZXJyaWRkZW4pCisgICAgICAgICAgICBtX2RlZmF1bHRVc2VyQWdlbnQgPSBjb21wb3Nl
VXNlckFnZW50KG1fY3VzdG9tQXBwbGljYXRpb25OYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9kZWZhdWx0VXNlckFnZW50ID0gY29tcG9zZVVzZXJBZ2VudChtX2RlZmF1bHRBcHBs
aWNhdGlvbk5hbWUpOworICAgIH0KKworICAgIHJldHVybiBtX2RlZmF1bHRVc2VyQWdlbnQ7CiB9
CiAKIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQpJbmRleDog
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAko
UmV2aXNpb24gMjc0MzkpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmgJKEFyYmVpdHNrb3BpZSkKQEAgLTE4MCw2ICsxODAsMTIgQEAKICAgICBwcml2
YXRlOgogICAgICAgICBXZWJLaXRGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV9kZWZh
dWx0VXNlckFnZW50OworICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7
CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX2RlZmF1bHRBcHBsaWNhdGlvbk5hbWU7CisgICAg
ICAgIFdlYkNvcmU6OlN0cmluZyBtX2N1c3RvbUFwcGxpY2F0aW9uTmFtZTsKKyAgICAgICAgYm9v
bCBtX3VzZXJBZ2VudE92ZXJyaWRkZW47CisgICAgICAgIGJvb2wgbV9hcHBsaWNhdGlvbk5hbWVP
dmVycmlkZGVuOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17051</attachid>
            <date>2007-11-05 14:11:51 -0800</date>
            <delta_ts>2007-11-05 17:16:29 -0800</delta_ts>
            <desc>No more string abuse but clean concatenation</desc>
            <filename>user-agent1.diff</filename>
            <type>text/plain</type>
            <size>4283</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShSZXZpc2lvbiAyNzQzOSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShBcmJlaXRz
a29waWUpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMTEtMDUgIENocmlzdGlhbiBEeXdhbiAgPGNo
cmlzdGlhbkB0d290b2FzdHMuZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ29tcHV0ZSBhIHByb3BlciB1c2VyIGFnZW50LgorCisgICAgICAgICog
Q2hhbmdlTG9nOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29tcG9zZVVzZXJBZ2VudCk6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMDctMTEtMDUgIE1hcmsgUm93ZSAgPG1y
b3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBbHAgVG9rZXIuCklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAkoUmV2aXNpb24gMjc0MzkpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtNSw2ICs1LDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hy
aXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AdHdvdG9hc3RzLmRlPgogICoKICAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtNDAsMTAgKzQxLDE0IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpZiBQTEFURk9STShVTklY
KQorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKICNpbmNsdWRlICJDU3RyaW5nLmgi
CiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z3RrcGFnZS5o
IgpAQCAtNTksMTEgKzY0LDc2IEBACiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogewogICAgIEFTU0VS
VChtX2ZyYW1lKTsKKworICAgIG1fZGVmYXVsdEFwcGxpY2F0aW9uTmFtZSA9IGdfZ2V0X3ByZ25h
bWUoKTsKIH0KIAorU3RyaW5nIHdpbmRvd3NWZXJzaW9uKCkKK3sKKyAgICAvLyBGSVhNRTogQ29t
cHV0ZSB0aGUgd2luZG93cyB2ZXJzaW9uCisgICAgcmV0dXJuICJXaW5kb3dzIjsKK30KKworU3Ry
aW5nIHN5c3RlbU5hbWUodm9pZCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
WDg2KQorICAgIHJldHVybiAiSW50ZWwgTWFjIE9TIFgiOworI2Vsc2UKKyAgICByZXR1cm4gIlBQ
QyBNYWMgT1MgWCI7CisjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFVOSVgpCisgICAgc3RydWN0IHV0
c25hbWUgbmFtZTsKKyAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0xKQorICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyAg
ICByZXR1cm4gd2luZG93c1ZlcnNpb24oKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gIlVua25vd24iOworI2VuZGlmCit9CisKK1N0cmluZyBjb21wb3NlVXNlckFn
ZW50KFN0cmluZyBhcHBsaWNhdGlvbk5hbWUpCit7CisgICAgU3RyaW5nIG9wZXJhdGluZ1N5c3Rl
bTsKKworI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisgICAgb3BlcmF0aW5nU3lzdGVtID0gIlgx
MSI7CisjZWxpZiBkZWZpbmVkKEdUS19XSU5ET1dJTkdfV0lOMzIpCisgICAgb3BlcmF0aW5nU3lz
dGVtID0gIldpbmRvd3MiOworI2VsaWYgZGVmaW5lZChHVEtfV0lORE9XSU5HX1FVQVJUWikKKyAg
ICBvcGVyYXRpbmdTeXN0ZW0gPSAiTWFjaW50b3NoIjsKKyNlbGlmIGRlZmluZWQoR1RLX1dJTkRP
V0lOR19ESVJFQ1RGQikKKyAgICBvcGVyYXRpbmdTeXN0ZW0gPSAiRGlyZWN0RkIiOworI2Vsc2UK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG9wZXJhdGluZ1N5c3RlbSA9ICJVbmtub3duIjsK
KyNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoZSBXZWJLaXQgdmVyc2lvbiBpcyBoYXJkY29kZWQK
KyAgICByZXR1cm4gIk1vemlsbGEvNS4wICgiCisgICAgICAgICsgb3BlcmF0aW5nU3lzdGVtICsg
IjsgVTsgIiArIHN5c3RlbU5hbWUoKSArICI7ICIKKyAgICAgICAgKyBkZWZhdWx0TGFuZ3VhZ2Uo
KSArICIpICIKKyAgICAgICAgKyAiQXBwbGVXZWJLaXQvIiArICI1MjMrIiArICIgKEtIVE1MLCBs
aWtlIEdlY2tvKSAiCisgICAgICAgICsgYXBwbGljYXRpb25OYW1lOworfQorCiBTdHJpbmcgRnJh
bWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKIHsKLSAgICByZXR1cm4gIk1v
emlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC80MjArIChL
SFRNTCwgbGlrZSBHZWNrbykiOworICAgIGlmIChtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCisgICAg
ICAgIHJldHVybiBtX2N1c3RvbVVzZXJBZ2VudDsKKworICAgIGlmIChtX2RlZmF1bHRVc2VyQWdl
bnQuaXNFbXB0eSgpKXsKKyAgICAgICAgaWYgKG1fYXBwbGljYXRpb25OYW1lT3ZlcnJpZGRlbikK
KyAgICAgICAgICAgIG1fZGVmYXVsdFVzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQobV9jdXN0
b21BcHBsaWNhdGlvbk5hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RlZmF1bHRV
c2VyQWdlbnQgPSBjb21wb3NlVXNlckFnZW50KG1fZGVmYXVsdEFwcGxpY2F0aW9uTmFtZSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fZGVmYXVsdFVzZXJBZ2VudDsKIH0KIAogV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShSZXZpc2lvbiAyNzQzOSkK
KysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkoQXJi
ZWl0c2tvcGllKQpAQCAtMTgwLDYgKzE4MCwxMiBAQAogICAgIHByaXZhdGU6CiAgICAgICAgIFdl
YktpdEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX2RlZmF1bHRVc2VyQWdlbnQ7Cisg
ICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsKKyAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nIG1fZGVmYXVsdEFwcGxpY2F0aW9uTmFtZTsKKyAgICAgICAgV2ViQ29yZTo6U3Ry
aW5nIG1fY3VzdG9tQXBwbGljYXRpb25OYW1lOworICAgICAgICBib29sIG1fdXNlckFnZW50T3Zl
cnJpZGRlbjsKKyAgICAgICAgYm9vbCBtX2FwcGxpY2F0aW9uTmFtZU92ZXJyaWRkZW47CiAgICAg
fTsKIAogfQo=
</data>
<flag name="review"
          id="7251"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17053</attachid>
            <date>2007-11-05 17:37:48 -0800</date>
            <delta_ts>2007-11-05 18:43:03 -0800</delta_ts>
            <desc>Reduction of the patch</desc>
            <filename>ua-string-alp.patch</filename>
            <type>text/plain</type>
            <size>4040</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggYmUzMzRiMC4uNzFlNTQ3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwNy0xMS0wNSAg
Q2hyaXN0aWFuIER5d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb21wdXRlIGEgcHJvcGVyIHVzZXIg
YWdlbnQuCisKKyAgICAgICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb21wb3NlVXNlckFn
ZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAwNy0x
MS0wNSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IEFscCBUb2tlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggMzIxYzhjOS4uOTQyNTIzMCAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTUs
NiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVHJvbGx0ZWNoIEFTQQogICogQ29weXJp
Z2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqIENv
cHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0
IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KICAqCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJI
VE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNTAsNiArNTIsOSBAQAogI2luY2x1ZGUgIndlYmtpdGd0
a2ZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0Z3RrcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CisjaWYgUExBVEZPUk0oVU5JWCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02MSw5ICs2Niw4MCBAQCBGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0RnJhbWUqIGZyYW1lKQogICAgIEFT
U0VSVChtX2ZyYW1lKTsKIH0KIAorc3RhdGljIFN0cmluZyBhZ2VudFBsYXRmb3JtKCkKK3sKKyNp
ZmRlZiBHREtfV0lORE9XSU5HX1gxMQorICAgIHJldHVybiAiWDExIjsKKyNlbGlmIGRlZmluZWQo
R1RLX1dJTkRPV0lOR19XSU4zMikKKyAgICByZXR1cm4gIldpbmRvd3MiOworI2VsaWYgZGVmaW5l
ZChHVEtfV0lORE9XSU5HX1FVQVJUWikKKyAgICByZXR1cm4gIk1hY2ludG9zaCI7CisjZWxpZiBk
ZWZpbmVkKEdUS19XSU5ET1dJTkdfRElSRUNURkIpCisgICAgcmV0dXJuICJEaXJlY3RGQiI7Cisj
ZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJVbmtub3duIjsKKyNlbmRp
ZgorfQorCitzdGF0aWMgU3RyaW5nIGFnZW50T1MoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShYODYpCisgICAgcmV0dXJuICJJbnRlbCBNYWMgT1MgWCI7CisjZWxzZQorICAg
IHJldHVybiAiUFBDIE1hYyBPUyBYIjsKKyNlbmRpZgorI2VsaWYgUExBVEZPUk0oVU5JWCkKKyAg
ICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOworICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFj
aGluZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gIlVua25vd24iOworI2VsaWYgUExBVEZP
Uk0oV0lOKQorICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSB3aW5kb3dzIHZlcnNpb24KKyAgICBy
ZXR1cm4gIldpbmRvd3MiOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biAiVW5rbm93biI7CisjZW5kaWYKK30KKworc3RhdGljIFN0cmluZyBjb21wb3NlVXNlckFnZW50
KCkKK3sKKyAgICAvLyBUaGlzIGlzIGEgbGliZXJhbCBpbnRlcnByZXRhdGlvbiBvZiBodHRwOi8v
d3d3Lm1vemlsbGEub3JnL2J1aWxkL3JldmlzZWQtdXNlci1hZ2VudC1zdHJpbmdzLmh0bWwKKyAg
ICAvLyBTZWUgYWxzbyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkv
ZmFxLmh0bWwjYW5jaG9yMgorCisgICAgU3RyaW5nIHVhOworCisgICAgLy8gUHJvZHVjdAorICAg
IHVhICs9ICJNb3ppbGxhLzUuMCI7CisKKyAgICAvLyBDb21tZW50CisgICAgdWEgKz0gIiAoIjsK
KyAgICB1YSArPSBhZ2VudFBsYXRmb3JtKCk7IC8vIFBsYXRmb3JtCisgICAgdWEgKz0gIjsgVTsg
IjsgLy8gU2VjdXJpdHkKKyAgICB1YSArPSBhZ2VudE9TKCk7IC8vIE9TLW9yLUNQVQorICAgIHVh
ICs9ICI7ICI7CisgICAgdWEgKz0gZGVmYXVsdExhbmd1YWdlKCk7IC8vIExvY2FsaXphdGlvbiBp
bmZvcm1hdGlvbgorICAgIHVhICs9ICIpICI7CisKKyAgICAvLyBXZWJLaXQgUHJvZHVjdAorICAg
IC8vIEZJWE1FOiBUaGUgV2ViS2l0IHZlcnNpb24gaXMgaGFyZGNvZGVkCisgICAgdWEgKz0gIkFw
cGxlV2ViS2l0LzUyMysgKEtIVE1MLCBsaWtlIEdlY2tvKSAiOworCisgICAgLy8gVmVuZG9yIFBy
b2R1Y3QKKyAgICB1YSArPSBnX2dldF9wcmduYW1lKCk7CisKKyAgICByZXR1cm4gdWE7Cit9CisK
IFN0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQogewotICAg
IHJldHVybiAiTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2Vi
S2l0LzQyMCsgKEtIVE1MLCBsaWtlIEdlY2tvKSI7CisgICAgaWYgKG1fdXNlckFnZW50LmlzRW1w
dHkoKSkKKyAgICAgICAgbV91c2VyQWdlbnQgPSBjb21wb3NlVXNlckFnZW50KCk7CisKKyAgICBy
ZXR1cm4gbV91c2VyQWdlbnQ7CiB9CiAKIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCmluZGV4IDgxZWRkNjYuLmYzYjY3MTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTE4MCw2ICsxODAsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRGcmFtZSog
bV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwor
ICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgfTsKIAogfQo=
</data>
<flag name="review"
          id="7252"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>