<?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>40278</bug_id>
          
          <creation_ts>2010-06-07 19:35:54 -0700</creation_ts>
          <short_desc>[EFL] EFLWebKit doesn&apos;t support viewport meta tag</short_desc>
          <delta_ts>2010-07-07 07:49:33 -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 API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41742</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barbieri</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung</cc>
    
    <cc>hyuki.kim</cc>
    
    <cc>jesus</cc>
    
    <cc>joone.hur</cc>
    
    <cc>joone</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235098</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-07 19:35:54 -0700</bug_when>
    <thetext>EFLWebKit dones&apos;t support viewport meta tag. I think EFLWebkit also should support viewport meta tag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235105</commentid>
    <comment_count>1</comment_count>
      <attachid>58104</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-07 19:42:49 -0700</bug_when>
    <thetext>Created attachment 58104
viewport-patch-for-eflwebkit

I implemented efl port of webkit sends the arguments of viewport tag to application.
So, application can set layout according to the data regarding viewport tag.

3 APIs are added in this patch.
  - ewk_view_set_viewport() : To send arguments of viewport to application.
  - ewk_view_set_zoom_range() : To set zoom range according to minimumScale / maximumScale.
  - ewk_view_set_user_scalable() : To set if user can zoom page or not.

I would like to get comments related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235459</commentid>
    <comment_count>2</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-06-08 13:00:03 -0700</bug_when>
    <thetext>I&apos;m not a reviewer, so consider this as an informal review.

&gt; Index: WebKit/ChangeLog
&gt; +        * efl/EWebLauncher/main.c:
&gt; +        (on_viewport_changed):
&gt; +        (browserCreate):
&gt; +        * efl/WebCoreSupport/ChromeClientEfl.cpp:
&gt; +        (WebCore::ChromeClientEfl::didReceiveViewportArguments):
&gt; +        * efl/ewk/ewk_view.cpp:
&gt; +        (_ewk_view_priv_new):
&gt; +        (ewk_view_zoom_set):
&gt; +        (ewk_view_zoom_weak_set):
&gt; +        (ewk_view_zoom_animated_set):
&gt; +        (ewk_view_load_started):
&gt; +        (ewk_view_set_viewport):
&gt; +        (ewk_view_set_zoom_range):
&gt; +        (ewk_view_set_user_scalable):
&gt; +        * efl/ewk/ewk_view.h:

Try to write small, one-line summaries, explaining the changes.

&gt; Index: WebKit/efl/ewk/ewk_view.cpp
&gt; ===================================================================
&gt; --- WebKit/efl/ewk/ewk_view.cpp	(revision 60742)
&gt; +++ WebKit/efl/ewk/ewk_view.cpp	(working copy)
&gt; @@ -100,6 +100,7 @@ struct _Ewk_View_Private_Data {
&gt;          Eina_Bool resizable_textareas:1;
&gt;          Eina_Bool private_browsing:1;
&gt;          Eina_Bool caret_browsing:1;
&gt; +        Eina_Bool isUserScalable:1;
&gt;      } settings;
&gt;      struct {
&gt;          struct {
&gt; @@ -121,6 +122,10 @@ struct _Ewk_View_Private_Data {
&gt;          Evas_Coord w, h;
&gt;          Eina_Bool use:1;
&gt;      } fixed_layout;
&gt; +    struct {
&gt; +        float minimumScale;
&gt; +        float maximumScale;
&gt; +    } zoom_range;
&gt;  };

Naming isn&apos;t consistent with the rest of EWK files. camelCase is used inside WebKit, but EWK prefers unix_hacker_style.


Patch looks fine otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235467</commentid>
    <comment_count>3</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-06-08 13:08:43 -0700</bug_when>
    <thetext>Hi Gyuyoung Kim,

First part of the review is coding style of EFL and is important in order to let it consistent with other bits like Evas, Edje and Elementary:

 * the place of &quot;set&quot; and &quot;get&quot; keywords are at the end, not at the beginning as the rest of EFL (ie: evas_object_color_get())

 * The struct members should not be in camelCase, rather all in lower case and underline &quot;_&quot; separated. So it&apos;s not &quot;isUserScalable&quot; but &quot;user_scalable&quot;.  Width and Height are always used as &quot;w&quot; and &quot;h&quot;, minimum and maximum as &quot;min&quot; and &quot;max&quot; (in the case of minimumScale and maximumScale inside zoom_range, just &quot;min&quot; and &quot;max&quot; are more than enough)

 * add a call ewk_view_viewport_get(), instead of just rely on the signal being emitted.

 * last but not least, avoid a new structure like Ewk_Viewport. Rasterman says he rather use individual and optional variables for these members, so your code would be (and likewise for ewk_view_viewport_set()):

    void ewk_view_viewport_get(const Evas_Object *view, int *w, int *h, float *init_scale, float *max_scale, float *min_scale, Eina_Bool *user_scalable)
    {
        // regular validity checks on view...
        if (w) *w = ...sd-&gt;settings.viewport.w;
        if (h) *h = ...sd-&gt;settings.viewport.h;
        ...
    }

    This is like other pieces of EFL are. You can also do more simpler methods like ewk_view_viewport_size_get(view, w, h) and ewk_view_viewport_scale_get(view, init, min, max).
    You should just use the Ewk_Viewport if you want to handle this as callback data, but it is not necessary. You can just provide ewk_view_viewport_get() and then emit the callback with NULL data, the user would just call the method to retrieve data if he is interested.

The code looks fine, just be sure to fix these coding style otherwise EFL developer will not get crazy or confused. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236150</commentid>
    <comment_count>4</comment_count>
      <attachid>58325</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-09 21:35:32 -0700</bug_when>
    <thetext>Created attachment 58325
viewport-patch-for-eflwebkit-2

Thank you for your advice. I modified this patch according to your guidance.
If this patch still has any nits, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236151</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 21:37:38 -0700</bug_when>
    <thetext>Attachment 58325 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:458:  user_scalable is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/efl/EWebLauncher/main.c:353:  init_scale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/efl/EWebLauncher/main.c:353:  min_scale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/efl/EWebLauncher/main.c:353:  max_scale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/efl/EWebLauncher/main.c:354:  user_scalable is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 6 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236154</commentid>
    <comment_count>6</comment_count>
      <attachid>58326</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-09 21:49:50 -0700</bug_when>
    <thetext>Created attachment 58326
viewport-patch-for-eflwebkit-3

I fix the errors regarding coading style. Is this right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236156</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 21:56:08 -0700</bug_when>
    <thetext>Attachment 58326 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236157</commentid>
    <comment_count>8</comment_count>
      <attachid>58327</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-09 22:16:16 -0700</bug_when>
    <thetext>Created attachment 58327
viewport-patch-for-eflwebkit-4

Oops, style nit is still exist. I want that there are not nits anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236168</commentid>
    <comment_count>9</comment_count>
      <attachid>58330</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-09 23:01:19 -0700</bug_when>
    <thetext>Created attachment 58330
viewport-patch-for-eflwebkit-5

Sorry, there are some problems in previous patch. I fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236326</commentid>
    <comment_count>10</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-06-10 06:09:26 -0700</bug_when>
    <thetext>Hi Gyuyoung Kim, patch is highly improved! Thanks. Very minor nitpickings to make it perfect:

 * The comment of ewk_view_viewport_set() is now incorrect:
       Emits signal: &quot;viewport,changed&quot; with arguments of viewport
   You now have no arguments (NULL/0 is used).

 * As ewk_view_viewport_set() is internal/private just to WebCoreSupport usage, it should be in ewk_private.h, not ewk_view.h

 * Missing signal &quot;viewport,changed&quot; documentation in ewk_view.h

 * ewk_view_viewport_get() is not @internal, rather for public usage. Maybe copy &amp; paste from the _set()? (The setter should be considered internal, as it is just to be provided from WebCoreSupport)

 * As other EFL, ewk_view_viewport_get() should get optional arguments. So you should check if any of the given return pointers are not NULL:
       - *w = priv-&gt;settings.viewport.w;
       + if (w) *w = priv-&gt;settings.viewport.w;


Now some important questions, as ViewportArguments.h is not in my knowledge domain but may result in bugs if not handled properly:

  1. Should the meta tag ALWAYS be enforced in the user? Should it always prohibit users from changing zoom level or limiting the available zoom range? I don&apos;t think so. It should be only enforced by Browsers and thus ewk_view users.   If this is the case, then you must have a different structure to hold WebCore/dom reported values, and another one that is user-settable with the values to enforce with ewk_view_zoom_range_set() and ewk_view_user_scalable_set(). With this approach you will also need ewk_view_zoom_range_get() and ewk_view_user_scalable_get() as ewk_view_viewport_get() will always report the original WebCore/dom values.   In any case, you must document this behavior and side-effects in the public API in ewk_view.cpp

  2. How to reset these values on new page load? Are you sure WebCore/dom will always report new value for each visited page, even if the page does not contain the mentioned meta tag? If does and allows you to reset the values, good, otherwise you&apos;d have to reset these values yourself. Failing to do so will result in bugs when user visits one page that applies the tag and then goes to another that does not and is not prepared to handle those constraints.

As I&apos;m not an official reviewer, I&apos;ll try to find someone that knows about it to comment on these questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236337</commentid>
    <comment_count>11</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2010-06-10 06:43:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
I&apos;ve been working on this recently for the Qt WebKit port. This is the bug which has a patch pending review: https://bugs.webkit.org/show_bug.cgi?id=39902

&gt;   1. Should the meta tag ALWAYS be enforced in the user? Should it always prohibit users from changing zoom level or limiting the available zoom range? I don&apos;t think so. It should be only enforced by Browsers and thus ewk_view users.   If this is the case, then you must have a different structure to hold WebCore/dom reported values, and another one that is user-settable with the values to enforce with ewk_view_zoom_range_set() and ewk_view_user_scalable_set(). With this approach you will also need ewk_view_zoom_range_get() and ewk_view_user_scalable_get() as ewk_view_viewport_get() will always report the original WebCore/dom values.   In any case, you must document this behavior and side-effects in the public API in ewk_view.cpp

IMHO the values shouldn&apos;t be enforced always. This meta tag was created for the iPhone, so targeting mobile browsers is the best idea. So we have two code paths here: one when the webpage does have the viewport meta tag and one when it does not.
In order to cover these two cases I added the signal QWebPage::viewportChangeRequested(ViewportHints). For the first case, when we have the meta tag, I implemented the ChromeClient::didReceiveViewportArguments  in our ChromeClientQt, which creates our ViewportHints and emits the signal. For the second case we now emits the signal with an empty ViewportHints on FrameLoaderClientQt::dispatchDidCommitLoad. 
In both cases this signal will be emitted before any visual layout of the page so you can adapt your viewport if needed and avoid extra re-layouts after. By doing this we also ignore any viewport meta tag that is not on the &lt;head&gt;, which is correctly by the meta tag specification.
It&apos;s expected that the browser developer will handle this signal properly by following its documentation and nothing changes for your application if you don&apos;t use this signal at all.

 
&gt;   2. How to reset these values on new page load? Are you sure WebCore/dom will always report new value for each visited page, even if the page does not contain the mentioned meta tag? If does and allows you to reset the values, good, otherwise you&apos;d have to reset these values yourself. Failing to do so will result in bugs when user visits one page that applies the tag and then goes to another that does not and is not prepared to handle those constraints.
&gt; 

IIRC, yes, WebCore/dom is our friend! :)
I think that the explanation above covers the rest of this question, right? Having those two code paths cover this quite well.

I&apos;ll have a quick look at the patch now and see if I can help. I&apos;ll try but since I&apos;m not an EFL-deep-underground-hacker I&apos;m not sure I can go any further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236341</commentid>
    <comment_count>12</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2010-06-10 06:53:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I&apos;ll have a quick look at the patch now and see if I can help. I&apos;ll try but since I&apos;m not an EFL-deep-underground-hacker I&apos;m not sure I can go any further.

Well, I think that the major problem of the patch is what concerns Gustavo: always applying the viewport meta tag arguments. You could try to add a callback and handle both cases by using it on the application layer. Hope that this helps you out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236350</commentid>
    <comment_count>13</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-10 07:05:58 -0700</bug_when>
    <thetext>Hi, Gustavo Sverzut Barbieri and Jesus Sanchez-Palencia, Thank you for your advice.

I also have considered the problems Gustavo mentioned. Temporarily, I set default value regarding the width, height, zoom level and so on when page loading is started. But, I think this is bad method. Thus, I didn&apos;t add the codes to this patch so far. 

As mentioned in Jesus Sanchez-Palencia&apos;s comment, it seems to me that we can emit signals both with viewport and without viewport. If website doens&apos;t contain viewport tag, we can send empty viewport data to application. Then, application can decide if data of viewport is used or not. In this case, application should know default value regarding width, height, userScalable and so on. Or, we can send default values from WebCore/dom when there are no viewport tag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236351</commentid>
    <comment_count>14</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-10 07:07:39 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; I&apos;ll have a quick look at the patch now and see if I can help. I&apos;ll try but since I&apos;m not an EFL-deep-underground-hacker I&apos;m not sure I can go any further.
&gt; 
&gt; Well, I think that the major problem of the patch is what concerns Gustavo: always applying the viewport meta tag arguments. You could try to add a callback and handle both cases by using it on the application layer. Hope that this helps you out!

Ok, I will report new patch accroding to Gustavo and you&apos;s guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236358</commentid>
    <comment_count>15</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-10 07:22:56 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; I&apos;ll have a quick look at the patch now and see if I can help. I&apos;ll try but since I&apos;m not an EFL-deep-underground-hacker I&apos;m not sure I can go any further.
&gt; 
&gt; Well, I think that the major problem of the patch is what concerns Gustavo: always applying the viewport meta tag arguments.

One more thing, I think that viewport meta tag arguments is not always adjusted.
The viewport only can be adjusted when webpage contains viewport. As far as I know, didReceiveViewportArguments() function only can be invoked when webpage contains the viewport tag. 

In my opinion, major problem is that application goes website which has viewport, and then it goes other websites which doesn&apos;t contain viewport. In latest patch, there are no solutions for this case. 

I think we are already enough to know this problem. I will try to consider this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237807</commentid>
    <comment_count>16</comment_count>
      <attachid>58643</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-14 07:17:26 -0700</bug_when>
    <thetext>Created attachment 58643
 viewport-patch-for-eflwebkit-6

I tried to make a patch accroding to Gustavo and Jesus Sanchez-Palencia&apos;s advice. 

First, I distinguish zoom_range variables from viewport struct in order to set zoom_range by application or users.

+        struct {
+            float min_scale;
+            float max_scale;
+        } viewport;
+        struct {
+            float min_scale;
+            float max_scale;
+        } zoom_range;

So, zoom range can be changed by ewk_view_zoom_range_set() function.

Second, I modify this patch to send signal(viewport,changed) both there is viewport and no viewport. So, if website contains &quot;viewport&quot; meta tag, viewport signal is sent by didReceiveViewportArguments() in ChromeClientEfl.cpp. However, if there no viewport, the signal(viewport,changed) is sent by dispatchDidFirstVisuallyNonEmptyLayout() in FrameLoaderClientEfl.cpp. As far as i know, the dispatchDidFirstVisuallyNonEmptyLayout() will be invoked when layout is just started(). Thus, I think viewport signal need to be sent by the function when there are no viewport meta tag.

If the signal already was sent by viewport meta tag, we should not send signal duplicately. So, I add a condition to check if layout is done or not as below,

void FrameLoaderClientEfl::dispatchDidFirstVisuallyNonEmptyLayout()
{
-    notImplemented();
+    if (!ewk_view_init_layout_completed_get(m_view)) {
+        ViewportArguments arguments;
+        ewk_view_viewport_set(m_view, (int)arguments.width, (int)arguments.height, arguments.initialScale, arguments.minimumScale, arguments.maximumScale, arguments.userScalable);
+    }
}

If website doesn&apos;t contain viewport meta tag, all data except for userScalable is set as &quot;-1&quot;. So, application need to process them when viewport&apos;s datas are &quot;-1&quot;. I mentioned this in EWebLauncher/main.c,

+on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
+{
+    w = (w == -1) ? DEFAULT_WIDTH : w;
+    h = (h == -1) ? DEFAULT_HEIGHT : h;
+    initScale = ((int)initScale == -1) ? DEFAULT_SCALE : initScale;
+    minScale = ((int)minScale == -1) ? DEFAULT_SCALE : minScale; 
+    maxScale = ((int)maxScale == -1) ? DEFAULT_SCALE : maxScale;
...


Gustavo,
I would like to know how do you think about new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237809</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 07:18:55 -0700</bug_when>
    <thetext>Attachment 58643 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/efl/ewk/ewk_view.cpp:3810:  More than one command on the same line in if  [whitespace/parens] [4]
WebKit/efl/ewk/ewk_view.cpp:3811:  More than one command on the same line in if  [whitespace/parens] [4]
WebKit/efl/ewk/ewk_view.cpp:3812:  More than one command on the same line in if  [whitespace/parens] [4]
WebKit/efl/ewk/ewk_view.cpp:3813:  More than one command on the same line in if  [whitespace/parens] [4]
WebKit/efl/ewk/ewk_view.cpp:3814:  More than one command on the same line in if  [whitespace/parens] [4]
WebKit/efl/ewk/ewk_view.cpp:3815:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 6 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237810</commentid>
    <comment_count>18</comment_count>
      <attachid>58645</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-14 07:23:12 -0700</bug_when>
    <thetext>Created attachment 58645
viewport-patch-for-eflwebkit-6

Opps, there was style errors. I fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237907</commentid>
    <comment_count>19</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-14 10:56:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=58327) [details]
&gt; viewport-patch-for-eflwebkit-4
&gt; 
&gt; Oops, style nit is still exist. I want that there are not nits anymore.

Just a suggestion on this: you can always run &apos;WebKitTools/Scripts/check-webkit-style&apos; manually in order to avoid sending twice the same patch with style fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238008</commentid>
    <comment_count>20</comment_count>
      <attachid>58645</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-14 13:12:35 -0700</bug_when>
    <thetext>Comment on attachment 58645
viewport-patch-for-eflwebkit-6

&gt;Index: WebKit/ChangeLog
&gt;===================================================================
&gt;--- WebKit/ChangeLog	(revision 61120)
&gt;+++ WebKit/ChangeLog	(working copy)
&gt;@@ -1,3 +1,35 @@
&gt;+2010-06-14  Gyuyoung Kim  &lt;gyuyoung.kim@samsung.com&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        [EFL] EFLWebKit doesn&apos;t support viewport meta tag.
Please describe the patch here, not the but title.

&gt;+        https://bugs.webkit.org/show_bug.cgi?id=40278
&gt;+
&gt;+        Support viewport meta tag on EFL Port.
&gt;+
&gt;+        * efl/EWebLauncher/main.c:
&gt;+        (on_viewport_changed):
&gt;+        (browserCreate):
&gt;+        * efl/WebCoreSupport/ChromeClientEfl.cpp:
&gt;+        (WebCore::ChromeClientEfl::didReceiveViewportArguments):
&gt;+        * efl/WebCoreSupport/ChromeClientEfl.h:
&gt;+        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
&gt;+        (WebCore::FrameLoaderClientEfl::dispatchDidCommitLoad):
&gt;+        (WebCore::FrameLoaderClientEfl::dispatchDidFirstVisuallyNonEmptyLayout):
&gt;+        * efl/ewk/ewk_private.h:
&gt;+        * efl/ewk/ewk_view.cpp:
&gt;+        (_ewk_view_priv_new):
&gt;+        (ewk_view_zoom_set):
&gt;+        (ewk_view_zoom_weak_set):
&gt;+        (ewk_view_zoom_animated_set):
&gt;+        (ewk_view_init_layout_completed_set):
&gt;+        (ewk_view_init_layout_completed_get):
&gt;+        (ewk_view_viewport_set):
&gt;+        (ewk_view_viewport_get):
&gt;+        (ewk_view_zoom_range_set):
&gt;+        (ewk_view_user_scalable_set):
&gt;+        * efl/ewk/ewk_view.h:
&gt;+
Comments about the changed functions are still missing.

&gt; 2010-06-14  Ilya Tikhonovsky  &lt;loislo@chromium.org&gt;
&gt; 
&gt;         Reviewed by Pavel Feldman.
&gt;Index: WebKit/efl/EWebLauncher/main.c
&gt;===================================================================
&gt;--- WebKit/efl/EWebLauncher/main.c	(revision 61116)
&gt;+++ WebKit/efl/EWebLauncher/main.c	(working copy)
&gt;@@ -47,6 +47,7 @@
&gt; 
&gt; #define DEFAULT_WIDTH      800
&gt; #define DEFAULT_HEIGHT     600
&gt;+#define DEFAULT_SCALE      1.0
&gt; 
&gt; #define info(format, args...)       \
&gt;     do {                            \
&gt;@@ -346,6 +347,27 @@ on_tooltip_text_set(void* user_data, Eva
&gt; }
&gt; 
&gt; static void
&gt;+on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
&gt;+{
&gt;+    int w, h;
&gt;+    float initScale, minScale, maxScale;
&gt;+    Eina_Bool userScalable;
&gt;+
&gt;+    ewk_view_viewport_get(webview, &amp;w, &amp;h, &amp;initScale, &amp;maxScale, &amp;minScale, &amp;userScalable);
&gt;+
&gt;+    w = (w == -1) ? DEFAULT_WIDTH : w;
&gt;+    h = (h == -1) ? DEFAULT_HEIGHT : h;
&gt;+    initScale = ((int)initScale == -1) ? DEFAULT_SCALE : initScale;
&gt;+    minScale = ((int)minScale == -1) ? DEFAULT_SCALE : minScale; 
&gt;+    maxScale = ((int)maxScale == -1) ? DEFAULT_SCALE : maxScale;
imo these two are wrong. The default should be ZOOM_MIN/ZOOM_MAX respectively. Otherwise, if the page does not have a viewport meta tag it will not possible to set the zoom because of checks made in ewk_view_zoom_set() and functions alike.

&gt;+
&gt;+    ewk_view_fixed_layout_size_set(webview, w, h);
&gt;+    ewk_view_zoom_set(webview, initScale, 0, 0);
&gt;+    ewk_view_zoom_range_set(webview, minScale, maxScale);
&gt;+    ewk_view_user_scalable_set(webview, userScalable);
&gt;+}

What if I don&apos;t want to be forced to apply the new viewport arguments? There&apos;s no way as of now to ignore the meta tag.


&gt;+void ChromeClientEfl::didReceiveViewportArguments(Frame* frame, const ViewportArguments&amp; arguments) const
&gt;+{
&gt;+    Eina_Bool userScalable;
&gt;+
&gt;+    userScalable = (int)arguments.userScalable == 1 ? EINA_TRUE : EINA_FALSE;
You should check for arguments.userScalable == -1, not just == 1.

&gt;+    ewk_view_viewport_set(m_view, (int)arguments.width, (int)arguments.height, arguments.initialScale, arguments.minimumScale, arguments.maximumScale, userScalable);
&gt;+    ewk_view_init_layout_completed_set(m_view, EINA_TRUE);

Since the only place where you need this is inside ChromeClientEfl/FrameLoaderClientEfl, it&apos;s not necessary (neither desired) to have this function as an ewk_view_*. Just add a boolean field to FrameLoaderClientEfl to check/set if the signal has already been sent.


&gt;Index: WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp
&gt;===================================================================
&gt;@@ -580,6 +581,8 @@ void FrameLoaderClientEfl::dispatchDidCo
&gt;         return;
&gt;     ewk_view_title_set(m_view, 0);
&gt;     ewk_view_uri_changed(m_view);
&gt;+
&gt;+    ewk_view_init_layout_completed_set(m_view, EINA_FALSE);
Same here, use a field in this class.

&gt;Index: WebKit/efl/ewk/ewk_private.h
&gt;===================================================================
&gt;--- WebKit/efl/ewk/ewk_private.h	(revision 61116)
&gt;+++ WebKit/efl/ewk/ewk_private.h	(working copy)
&gt;@@ -93,6 +93,10 @@ WTF::PassRefPtr&lt;WebCore::Widget&gt; ewk_vie
&gt; 
&gt; void             ewk_view_popup_new(Evas_Object *o, WebCore::PopupMenuClient* client, int selected, const WebCore::IntRect&amp; rect);
&gt; 
&gt;+void             ewk_view_viewport_set(Evas_Object *o, int w, int h, float init_scale, float max_scale, float min_scale, Eina_Bool user_scalable);
&gt;+void             ewk_view_init_layout_completed_set(Evas_Object *o, Eina_Bool init_layout);
&gt;+Eina_Bool        ewk_view_init_layout_completed_get(Evas_Object *o);
As mentioned above, I think it&apos;s better if we don&apos;t have these two .

&gt;Index: WebKit/efl/ewk/ewk_view.cpp
&gt;===================================================================
&gt;--- WebKit/efl/ewk/ewk_view.cpp	(revision 61116)
&gt;+++ WebKit/efl/ewk/ewk_view.cpp	(working copy)
&gt;@@ -100,6 +100,20 @@ struct _Ewk_View_Private_Data {
&gt;         Eina_Bool resizable_textareas:1;
&gt;         Eina_Bool private_browsing:1;
&gt;         Eina_Bool caret_browsing:1;
&gt;+        Eina_Bool init_layout_completed:1;
&gt;+        Eina_Bool user_scalable:1;
&gt;+        struct {
&gt;+            int w;
&gt;+            int h;
&gt;+            float init_scale;
&gt;+            float min_scale;
&gt;+            float max_scale;
&gt;+            Eina_Bool user_scalable:1;
You have 2 user_scalable... one inside and one outside viewport.

&gt;+        } viewport;
&gt;+        struct {
&gt;+            float min_scale;
&gt;+            float max_scale;
&gt;+        } zoom_range;
&gt;     } settings;
&gt;     struct {
&gt;         struct {
&gt;@@ -574,6 +588,9 @@ static Ewk_View_Private_Data* _ewk_view_
&gt;     priv-&gt;settings.private_browsing = priv-&gt;page_settings-&gt;privateBrowsingEnabled();
&gt;     priv-&gt;settings.caret_browsing = priv-&gt;page_settings-&gt;caretBrowsingEnabled();
&gt; 
&gt;+    priv-&gt;settings.zoom_range.min_scale = ZOOM_MIN;
&gt;+    priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;
&gt;+
Why did you set these parameters and didn&apos;t set the others? This would be set anyway when the first page is loaded, even when it does not have a viewport tag, doesn&apos;t it?

&gt;     priv-&gt;main_frame = _ewk_view_core_frame_new(sd, priv, 0).get();
&gt;     if (!priv-&gt;main_frame) {
&gt;         CRITICAL(&quot;Could not create main frame.&quot;);
&gt;@@ -1754,14 +1771,22 @@ float ewk_view_zoom_get(const Evas_Objec
&gt; Eina_Bool ewk_view_zoom_set(Evas_Object* o, float zoom, Evas_Coord cx, Evas_Coord cy)
&gt; {
&gt;     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
&gt;+    EWK_VIEW_PRIV_GET(sd, priv);
&gt;+
&gt;     EINA_SAFETY_ON_NULL_RETURN_VAL(sd-&gt;api, EINA_FALSE);
&gt;     EINA_SAFETY_ON_NULL_RETURN_VAL(sd-&gt;api-&gt;zoom_set, EINA_FALSE);
&gt;-    if (zoom &lt; ZOOM_MIN) {
&gt;-        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)ZOOM_MIN, (double)zoom);
&gt;+
&gt;+    if (!priv-&gt;settings.user_scalable) {
Again, there must be a way to ignore the tag.

&gt;+        WRN(&quot;userScalable is false&quot;);
&gt;         return EINA_FALSE;
&gt;     }
&gt;-    if (zoom &gt; ZOOM_MAX) {
&gt;-        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)ZOOM_MAX, (double)zoom);
&gt;+
&gt;+    if (zoom &lt; priv-&gt;settings.zoom_range.min_scale) {
priv-&gt;settings.zoom_range.min_scale can be == -1 if page didn&apos;t add the tag. Therefore, You must check if priv-&gt;settings.zoom_range.min_scale != -1 before comparing to zoom. something like this:

    if (priv-&gt;settings.zoom_range.min_scale &gt;= 0.0 &amp;&amp; zoom &lt; priv-&gt;settings.zoom_range.min_scale) {


&gt;+        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt;+        return EINA_FALSE;
&gt;+    }
&gt;+    if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
Here you have to put the same check as above.

&gt;+        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt;         return EINA_FALSE;
&gt;     }
&gt; 
&gt;@@ -1824,14 +1849,22 @@ void ewk_view_zoom_weak_smooth_scale_set
&gt; Eina_Bool ewk_view_zoom_weak_set(Evas_Object* o, float zoom, Evas_Coord cx, Evas_Coord cy)
&gt; {
&gt;     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
&gt;+    EWK_VIEW_PRIV_GET(sd, priv);
&gt;+
&gt;     EINA_SAFETY_ON_NULL_RETURN_VAL(sd-&gt;api, EINA_FALSE);
&gt;     EINA_SAFETY_ON_NULL_RETURN_VAL(sd-&gt;api-&gt;zoom_weak_set, EINA_FALSE);
&gt;-    if (zoom &lt; ZOOM_MIN) {
&gt;-        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)ZOOM_MIN, (double)zoom);
&gt;+
&gt;+    if (!priv-&gt;settings.user_scalable) {
&gt;+        WRN(&quot;userScalable is false&quot;);
&gt;+        return EINA_FALSE;
&gt;+    }
&gt;+
&gt;+    if (zoom &lt; priv-&gt;settings.zoom_range.min_scale) {
check here as above.

&gt;+        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt;         return EINA_FALSE;
&gt;     }
&gt;-    if (zoom &gt; ZOOM_MAX) {
&gt;-        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)ZOOM_MAX, (double)zoom);
&gt;+    if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
check here as above.

&gt;@@ -1974,12 +2007,17 @@ Eina_Bool ewk_view_zoom_animated_set(Eva
&gt;     EINA_SAFETY_ON_NULL_RETURN_VAL(sd-&gt;api, EINA_FALSE);
&gt;     EINA_SAFETY_ON_NULL_RETURN_VAL(sd-&gt;api-&gt;zoom_weak_set, EINA_FALSE);
&gt; 
&gt;-    if (zoom &lt; ZOOM_MIN) {
&gt;-        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)ZOOM_MIN, (double)zoom);
&gt;+    if (!priv-&gt;settings.user_scalable) {
&gt;+        WRN(&quot;userScalable is false&quot;);
&gt;         return EINA_FALSE;
&gt;     }
&gt;-    if (zoom &gt; ZOOM_MAX) {
&gt;-        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)ZOOM_MAX, (double)zoom);
&gt;+
&gt;+    if (zoom &lt; priv-&gt;settings.zoom_range.min_scale) {
check here as above.

&gt;+        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt;+        return EINA_FALSE;
&gt;+    }
&gt;+    if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
check here as above.

&lt;...&gt;

&gt;Index: WebKit/efl/ewk/ewk_view.h
&gt;===================================================================
&gt;--- WebKit/efl/ewk/ewk_view.h	(revision 61116)
&gt;+++ WebKit/efl/ewk/ewk_view.h	(working copy)
&gt;@@ -83,6 +83,7 @@ extern &quot;C&quot; {
&gt;  *  - &quot;download,request&quot;, Ewk_Download: reports a download is being requested
&gt;  *    and as arguments gives its details.
&gt;  *  - &quot;icon,received&quot;, void: main frame received an icon.
&gt;+ *  - &quot;viewport,changed&quot;, void: Report that viewport was changed. 
&gt;  */
&gt; 
&gt; typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
&gt;@@ -451,6 +452,10 @@ EAPI void ewk_view_paint_context_transla
&gt; EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
&gt; EAPI Eina_Bool ewk_view_paint_contents(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
&gt; 
&gt;+EAPI void ewk_view_viewport_get(Evas_Object *o, int* w, int* h, float* init_scale, float* max_scale, float* min_scale, Eina_Bool* user_scalable);
&gt;+EAPI void ewk_view_zoom_range_set(Evas_Object* o, float min_scale, float max_scale);
&gt;+EAPI void ewk_view_user_scalable_set(Evas_Object* o, Eina_Bool user_scalable);
Missing the getters for these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238015</commentid>
    <comment_count>21</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-14 13:22:56 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Second, I modify this patch to send signal(viewport,changed) both there is viewport and no viewport. So, if website contains &quot;viewport&quot; meta tag, viewport signal is sent by didReceiveViewportArguments() in ChromeClientEfl.cpp. However, if there no viewport, the signal(viewport,changed) is sent by dispatchDidFirstVisuallyNonEmptyLayout() in FrameLoaderClientEfl.cpp. As far as 

Please, consider the comment #11 about the place to put this signal in order to ignore the meta tag outside of &lt;head&gt;&lt;/head&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238024</commentid>
    <comment_count>22</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-14 13:51:54 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt;+        Eina_Bool init_layout_completed:1;
&gt; &gt;+        Eina_Bool user_scalable:1;
Ahn... I got why you have 2 user_scalable fields. But please, move this one inside zoom_range to make it clearer.

&gt; &gt;+        struct {
&gt; &gt;+            int w;
&gt; &gt;+            int h;
&gt; &gt;+            float init_scale;
&gt; &gt;+            float min_scale;
&gt; &gt;+            float max_scale;
&gt; &gt;+            Eina_Bool user_scalable:1;
&gt; You have 2 user_scalable... one inside and one outside viewport.
this on is ok.

&gt; 
&gt; &gt;+        } viewport;
&gt; &gt;+        struct {
&gt; &gt;+            float min_scale;
&gt; &gt;+            float max_scale;
put the first one here.

&gt; &gt;+        } zoom_range;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238203</commentid>
    <comment_count>23</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-14 19:36:14 -0700</bug_when>
    <thetext>Hello Lukasz, 
Thank you for your review. It seems I need to explain this patch more detail.

First of all, this patch implemented that viewport tag should be processed by application(EWebLauncher) or user.

When the viewport is found in WebCore, viewport arguments are sent to ChromeClientEfl::didReceiveViewportArguments(). Then, the function sends a signal &quot;viewport,changed&quot; to application(EWebLauncher). When application receives the signal, application can decide if viewport tag is adjusted or not as below,

+on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
+{
+    int w, h;
+    float initScale, minScale, maxScale;
+    Eina_Bool userScalable;
+
+    ewk_view_viewport_get(webview, &amp;w, &amp;h, &amp;initScale, &amp;maxScale, &amp;minScale, &amp;userScalable);
+
+    w = (w == -1) ? DEFAULT_WIDTH : w;
+    h = (h == -1) ? DEFAULT_HEIGHT : h;
+    initScale = ((int)initScale == -1) ? DEFAULT_SCALE : initScale;
+    minScale = ((int)minScale == -1) ? DEFAULT_SCALE : minScale; 
+    maxScale = ((int)maxScale == -1) ? DEFAULT_SCALE : maxScale;

I think, if application doens&apos;t want to adjust viewport, they just doesn&apos;t process nothing in the callback function(on_viewport_changed).

But, if user want to process viewport tag, they can process viewport via APIs below,

+    ewk_view_fixed_layout_size_set(webview, w, h);
+    ewk_view_zoom_set(webview, initScale, 0, 0);
+    ewk_view_zoom_range_set(webview, minScale, maxScale);
+    ewk_view_user_scalable_set(webview, userScalable);

As you know, the ewk_view_zoom_range_set(), ewk_view_zoom_scalable_set() were made by this patch. 

Zoom range can be set via the ewk_view_zoom_range_set() as below,
+void ewk_view_zoom_range_set(...)
+{
+    priv-&gt;settings.zoom_range.min_scale = min_scale;
+    priv-&gt;settings.zoom_range.max_scale = max_scale;
+}
 
I needed to have min_scale, max_scale, init_scale and user_scalable respectively.

+        Eina_Bool user_scalable:1;
+        struct {
+            int w;
+            int h;
+            float init_scale;
+            float min_scale;
+            float max_scale;
+            Eina_Bool user_scalable:1;
+        } viewport;
+        struct {
+            float min_scale;
+            float max_scale;
+        } zoom_range;


Because there are two reasons. First. to store argument of viewport tag in order to send the data of viewport via ewk_viewport_get() to application(EWebLauncher). Second, do not adjust the data of viewport directly. If we don&apos;t have two vairaiables, viewport can be set via ewk_view_viewport_set() directly, Or, there are no way to adjust viewport by application(EWebLauncher). So, I made two variables respectly.

The min_scale and max_scale in zoom_range were just replaced with ZOOM_MIN / ZOOM_MAX in order to change ZOOM_MIN, ZOOM_MAX with application&apos;s request(I mean ewk_view_zoom_range_set())

+        struct {
+            float min_scale;
+            float max_scale;
+        } zoom_range;

Thus, I need to initialize the min_scale and max_scale with ZOOM_MIN, ZOOM_MAX

&gt;+    priv-&gt;settings.zoom_range.min_scale = ZOOM_MIN;
&gt;+    priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;

As mentioned in above, the zoom_range.min_scale/max_scale only can be changed by the ewk_view_zoom_set()(from application)


&gt;+void ChromeClientEfl::didReceiveViewportArguments(Frame* frame, const ViewportArguments&amp; arguments) const
&gt;+{
&gt;+    Eina_Bool userScalable;
&gt;+

&gt;+
&gt;+    userScalable = (int)arguments.userScalable == 1 ? EINA_TRUE : EINA_FALSE;
&gt;&gt;You should check for arguments.userScalable == -1, not just == 1.

As you know, userScalable is boolean(yes or no) check if user can scale or not. So, I process it in the didReceiveViewportArguments directly. If userScalable is &quot;1&quot;, user can scalable, If not so, user can&apos;t scalable. The user-scalable is defined as below,

&quot;Determines whether or not the user can zoom in and out—whether or not the user can change the scale of the viewport. Set to yes to allow scaling and no to disallow scaling. The default is yes.&quot;
(http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html#//apple_ref/html/const/viewport)

However, if you think it is better userScalalble also is processed by application, I will modify it.

&gt;&gt; Please, consider the comment #11 about the place to put this signal in order to ignore the meta tag outside of &lt;head&gt;&lt;/head&gt;.

According to the comment #11, I put this signal on &quot;dispatchDidCommitLoad&quot; and ChromeClientEfl::didReceiveViewportArguments. However, To my debugging, dispatchDidCommitLoad() is invoked more faster than didReceiveViewportArguments(). Thus, if webpage contains viewport tag, the viewport,changed signal are sent to application twice by dispatchDidCommitLoad() and ChromeClientEfl::didReceiveViewportArguments(). I don&apos;t want to send twice signal to application. It can make confusion for application. Because application processes viewport tag twice.


If didReceiveViewportArguments() is invoked, I don&apos;t want to send a signal for viewport to applicaiton. So, I needed to set flag (initialLayoutComplete), But, there was no way to notify the flog from ChoromeClientEfl to FrameLoaderClientEfl. So, I made internal APIs for the flag as below,

+void   ewk_view_init_layout_completed_set(Evas_Object *o, Eina_Bool init_layout);
+Eina_Bool ewk_view_init_layout_completed_get(Evas_Object *o);
  
Do you think should we send viewport signal twice ?

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238207</commentid>
    <comment_count>24</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-14 19:50:29 -0700</bug_when>
    <thetext>&gt; 
&gt; typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
&gt;@@ -451,6 +452,10 @@ EAPI void ewk_view_paint_context_transla
&gt; EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
&gt; EAPI Eina_Bool ewk_view_paint_contents(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
&gt; 
&gt;+EAPI void ewk_view_viewport_get(Evas_Object *o, int* w, int* h, float* init_scale, float* max_scale, float* min_scale, Eina_Bool* user_scalable);
&gt;+EAPI void ewk_view_zoom_range_set(Evas_Object* o, float min_scale, float max_scale);
&gt;+EAPI void ewk_view_user_scalable_set(Evas_Object* o, Eina_Bool user_scalable);

&gt;&gt; Missing the getters for these functions.

One more thing,
Appliaction can get data regarding zoom_range and user_scalable by ewk_view_viewport_get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238220</commentid>
    <comment_count>25</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-06-14 20:28:21 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Zoom range can be set via the ewk_view_zoom_range_set() as below,
&gt; +void ewk_view_zoom_range_set(...)
&gt; +{
&gt; +    priv-&gt;settings.zoom_range.min_scale = min_scale;
&gt; +    priv-&gt;settings.zoom_range.max_scale = max_scale;
&gt; +}
&gt; 
&gt; I needed to have min_scale, max_scale, init_scale and user_scalable respectively.

Missing sanity checks here, min_scale &lt;= max_scale.


&gt; &gt;+void ChromeClientEfl::didReceiveViewportArguments(Frame* frame, const ViewportArguments&amp; arguments) const
&gt; &gt;+{
&gt; &gt;+    Eina_Bool userScalable;
&gt; &gt;+
&gt; 
&gt; &gt;+
&gt; &gt;+    userScalable = (int)arguments.userScalable == 1 ? EINA_TRUE : EINA_FALSE;
&gt; &gt;&gt;You should check for arguments.userScalable == -1, not just == 1.
&gt; 
&gt; As you know, userScalable is boolean(yes or no) check if user can scale or not. So, I process it in the didReceiveViewportArguments directly. If userScalable is &quot;1&quot;, user can scalable, If not so, user can&apos;t scalable. The user-scalable is defined as below,

WebCore/dom/ViewportArguments.h: 

    enum { ValueUndefined = -1 };
    ...
    userScalable(ValueUndefined)

so Lucas is right, must check for it being -1. The type of this variable is float (no idea why :-P).


&gt; +void   ewk_view_init_layout_completed_set(Evas_Object *o, Eina_Bool init_layout);
&gt; +Eina_Bool ewk_view_init_layout_completed_get(Evas_Object *o);
&gt; 
&gt; Do you think should we send viewport signal twice ?

No, but as he said this should be controlled in FrameLoaderClientEfl itself. No need to have these C-like functions in &quot;ewk&quot;, just have them in WebCoreSupport/FrameLoaderClientEfl and use them from ChromeClientEfl.


(In reply to comment #24)
&gt;&gt;+EAPI void ewk_view_viewport_get(Evas_Object *o, int* w, int* h, float* init_scale, float* max_scale, float* min_scale, Eina_Bool* user_scalable);
&gt;&gt;+EAPI void ewk_view_zoom_range_set(Evas_Object* o, float min_scale, float max_scale);
&gt;&gt;+EAPI void ewk_view_user_scalable_set(Evas_Object* o, Eina_Bool user_scalable);
&gt;&gt;&gt; Missing the getters for these functions.
&gt;
&gt;One more thing,
&gt;Appliaction can get data regarding zoom_range and user_scalable by &gt;ewk_view_viewport_get().

This is not correct. The function you said is about document/tag provided values, the one Lucas said is about user-set values (values one previously set before, or may be used to query the initial/default values). Will be of use particularly for debug. Make sure you follow the other functions and make the return pointers optional.

Patch is coming along nicely, most ready to be merged in my opinion (need some official reviewer to grant it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238232</commentid>
    <comment_count>26</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-14 21:09:16 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; Zoom range can be set via the ewk_view_zoom_range_set() as below,
&gt; &gt; +void ewk_view_zoom_range_set(...)
&gt; &gt; +{
&gt; &gt; +    priv-&gt;settings.zoom_range.min_scale = min_scale;
&gt; &gt; +    priv-&gt;settings.zoom_range.max_scale = max_scale;
&gt; &gt; +}
&gt; &gt; 
&gt; &gt; I needed to have min_scale, max_scale, init_scale and user_scalable respectively.
&gt; 
&gt; Missing sanity checks here, min_scale &lt;= max_scale.
&gt; 
&gt; 
&gt; &gt; &gt;+void ChromeClientEfl::didReceiveViewportArguments(Frame* frame, const ViewportArguments&amp; arguments) const
&gt; &gt; &gt;+{
&gt; &gt; &gt;+    Eina_Bool userScalable;
&gt; &gt; &gt;+
&gt; &gt; 
&gt; &gt; &gt;+
&gt; &gt; &gt;+    userScalable = (int)arguments.userScalable == 1 ? EINA_TRUE : EINA_FALSE;
&gt; &gt; &gt;&gt;You should check for arguments.userScalable == -1, not just == 1.
&gt; &gt; 
&gt; &gt; As you know, userScalable is boolean(yes or no) check if user can scale or not. So, I process it in the didReceiveViewportArguments directly. If userScalable is &quot;1&quot;, user can scalable, If not so, user can&apos;t scalable. The user-scalable is defined as below,
&gt; 
&gt; WebCore/dom/ViewportArguments.h: 
&gt; 
&gt;     enum { ValueUndefined = -1 };
&gt;     ...
&gt;     userScalable(ValueUndefined)
&gt; 
&gt; so Lucas is right, must check for it being -1. The type of this variable is float (no idea why :-P).
&gt; 
&gt; 
&gt; &gt; +void   ewk_view_init_layout_completed_set(Evas_Object *o, Eina_Bool init_layout);
&gt; &gt; +Eina_Bool ewk_view_init_layout_completed_get(Evas_Object *o);
&gt; &gt; 
&gt; &gt; Do you think should we send viewport signal twice ?
&gt; 
&gt; No, but as he said this should be controlled in FrameLoaderClientEfl itself. No need to have these C-like functions in &quot;ewk&quot;, just have them in WebCoreSupport/FrameLoaderClientEfl and use them from ChromeClientEfl.
&gt; 
&gt; 
&gt; (In reply to comment #24)
&gt; &gt;&gt;+EAPI void ewk_view_viewport_get(Evas_Object *o, int* w, int* h, float* init_scale, float* max_scale, float* min_scale, Eina_Bool* user_scalable);
&gt; &gt;&gt;+EAPI void ewk_view_zoom_range_set(Evas_Object* o, float min_scale, float max_scale);
&gt; &gt;&gt;+EAPI void ewk_view_user_scalable_set(Evas_Object* o, Eina_Bool user_scalable);
&gt; &gt;&gt;&gt; Missing the getters for these functions.
&gt; &gt;
&gt; &gt;One more thing,
&gt; &gt;Appliaction can get data regarding zoom_range and user_scalable by &gt;ewk_view_viewport_get().
&gt; 
&gt; This is not correct. The function you said is about document/tag provided values, the one Lucas said is about user-set values (values one previously set before, or may be used to query the initial/default values). Will be of use particularly for debug. Make sure you follow the other functions and make the return pointers optional.
&gt; 
&gt; Patch is coming along nicely, most ready to be merged in my opinion (need some official reviewer to grant it).

Thank you your help, I will change this patch according to your guys soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238762</commentid>
    <comment_count>27</comment_count>
      <attachid>58867</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-16 02:58:48 -0700</bug_when>
    <thetext>Created attachment 58867
viewport-patch-for-eflwebkit-7

I tried to modify this patch according to profusion&apos;s guys. I remove the ewk functions regarding init_layout.
It is just processed by FrameLoaderClientEfl. I add two APIs to get viewport data as below,

    void ewk_view_zoom_range_get(Evas_Object* o, float* min_scale, float* max_scale);
    void ewk_view_user_scalable_get(Evas_Object* o, Eina_Bool* user_scalable);

Lastly, I modify WebKit&apos;s ChangeLog and try to add comment to EWebLauncher/main.c file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238826</commentid>
    <comment_count>28</comment_count>
      <attachid>58867</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-16 06:01:26 -0700</bug_when>
    <thetext>Comment on attachment 58867
viewport-patch-for-eflwebkit-7

Hi,  Gyuyoung

Now the patch is indeed better than before. I have a few comments yet.

&gt;Index: WebKit/ChangeLog
Thanks for explaining in the ChangeLog the changes you made. Now it&apos;s ok.

&gt;+/**
&gt;+ * &quot;viewport,changed&quot; signal will be always emitted irregardless of the viewport existence. 
typo: s/irregardless/regardless/

&gt;+ *
&gt;+ * If you don&apos;t want to process the viewport tag, you can either do nothing in this callback
&gt;+ * or simply ignore the signal in your application.
Good.
&gt;+ */
&gt;+static void
&gt;+on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
&gt;+{
&gt;+    int w, h;
&gt;+    float initScale, minScale, maxScale, userScalable;
&gt;+
&gt;+    ewk_view_viewport_get(webview, &amp;w, &amp;h, &amp;initScale, &amp;maxScale, &amp;minScale, &amp;userScalable);
&gt;+
&gt;+    /**
&gt;+     * If there is no argument in viewport tag, argument&apos;s value is -1.
&gt;+     */
&gt;+    w = (w == -1) ? DEFAULT_WIDTH : w;
&gt;+    h = (h == -1) ? DEFAULT_HEIGHT : h;
&gt;+    initScale = ((int)initScale == -1) ? ZOOM_INIT : initScale;
&gt;+    minScale = ((int)minScale == -1) ? ZOOM_MIN : minScale; 
&gt;+    maxScale = ((int)maxScale == -1) ? ZOOM_MAX : maxScale;
&gt;+    userScalable = ((int)userScalable == -1) ? EINA_TRUE : userScalable;

Why are you using the &quot;?&quot; operator if the else part is the same value as before? Isn&apos;t it better to do like this?
if (w == -1)
    w = DEFAULT_WIDTH;

&gt;+void ChromeClientEfl::didReceiveViewportArguments(Frame* frame, const ViewportArguments&amp; arguments) const
&gt;+{
&gt;+    ewk_view_viewport_set(m_view, (int)arguments.width, (int)arguments.height, arguments.initialScale, arguments.minimumScale, arguments.maximumScale, arguments.userScalable);
&gt;+
&gt;+    FrameLoaderClientEfl* client = static_cast&lt;FrameLoaderClientEfl*&gt;(frame-&gt;loader()-&gt;client());
&gt;+    client-&gt;setInitLayoutCompleted(true);

What the viewport arguments has to do with &quot;InitLayoutCompleted&quot;? I know you are calling this function to not send twice the signal to the application, but the name is meaningless. I suggest something like &quot;setViewportArgumentsReceived(true);&quot;


&gt;Index: WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp
&gt;===================================================================
&gt;--- WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp	(revision 61229)
&gt;+++ WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp	(working copy)

&gt; &lt;...&gt;
&gt; void FrameLoaderClientEfl::dispatchDidFinishDocumentLoad()
&gt;@@ -595,7 +598,10 @@ void FrameLoaderClientEfl::dispatchDidFi
&gt; 
&gt; void FrameLoaderClientEfl::dispatchDidFirstVisuallyNonEmptyLayout()

I understood your point about using this function. However if you set the viewport on this function it will trigger a re-layout. I think the double signal you got on the other function is related to something else, since QT guys are using it with no problem (afaik).


&gt;Index: WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h
&gt;===================================================================
&gt;--- WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h	(revision 61229)
&gt;+++ WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h	(working copy)
&gt;@@ -55,6 +55,9 @@ class FrameLoaderClientEfl : public Fram
&gt;     void setCustomUserAgent(const String &amp;agent);
&gt;     const String&amp; customUserAgent() const;
&gt; 
&gt;+    void setInitLayoutCompleted(bool completed) { m_initLayoutCompleted = completed; }
&gt;+    bool getInitLayoutCompleted() { return m_initLayoutCompleted; }
As I told, please re-think these names.


&gt;Index: WebKit/efl/ewk/ewk_private.h
&gt;===================================================================
&gt;--- WebKit/efl/ewk/ewk_private.h	(revision 61229)
&gt;+++ WebKit/efl/ewk/ewk_private.h	(working copy)
&gt;@@ -93,6 +93,8 @@ WTF::PassRefPtr&lt;WebCore::Widget&gt; ewk_vie
&gt; 
&gt; void             ewk_view_popup_new(Evas_Object *o, WebCore::PopupMenuClient* client, int selected, const WebCore::IntRect&amp; rect);
&gt; 
&gt;+void             ewk_view_viewport_set(Evas_Object *o, int w, int h, float init_scale, float max_scale, float min_scale, float user_scalable);

w and h are int, requiring casts when you call this function. However, user_scalable is float, as in WebCore. In order to avoid the casts I&apos;d let w and h as floats too.

&gt;Index: WebKit/efl/ewk/ewk_view.cpp
&gt;===================================================================
&gt;--- WebKit/efl/ewk/ewk_view.cpp	(revision 61229)
&gt;+++ WebKit/efl/ewk/ewk_view.cpp	(working copy)
&gt;@@ -3692,3 +3729,135 @@ void ewk_view_download_request(Evas_Obje
&gt;     DBG(&quot;view=%p&quot;, o);
&gt;     evas_object_smart_callback_call(o, &quot;download,request&quot;, download);
&gt; }
&gt;+
&gt;+/**
&gt;+ * @internal
&gt;+ * Reports the viewport was changed.
s/was/has/


&gt; &lt;...&gt;
&gt;+/**
&gt;+ * Get if zoom is enabled.
&gt;+ *
&gt;+ * @param o view.
&gt;+ * @param user_scalable where to return the current user scalable value.
&gt;+ */
&gt;+void ewk_view_user_scalable_get(Evas_Object* o, Eina_Bool* user_scalable)
Eina_Bool ewk_view_user_scalable_get(Evas_Object* o)

&gt;+{
&gt;+    EWK_VIEW_SD_GET(o, sd);
&gt;+    EWK_VIEW_PRIV_GET(sd, priv);
&gt;+
&gt;+    if (user_scalable)
&gt;+        *user_scalable = priv-&gt;settings.zoom_range.user_scalable;

There&apos;s only 1 parameter to get. It&apos;s meaningless to make it optional in this case. Just change the function signature and return priv-&gt;settings.zoom_range.user_scalable

&gt;Index: WebKit/efl/ewk/ewk_view.h
&gt;===================================================================
&gt;--- WebKit/efl/ewk/ewk_view.h	(revision 61229)
&gt;+++ WebKit/efl/ewk/ewk_view.h	(working copy)
&gt;@@ -83,6 +83,7 @@ extern &quot;C&quot; {
&gt;  *  - &quot;download,request&quot;, Ewk_Download: reports a download is being requested
&gt;  *    and as arguments gives its details.
&gt;  *  - &quot;icon,received&quot;, void: main frame received an icon.
&gt;+ *  - &quot;viewport,changed&quot;, void: Report that viewport was changed. 
s/was/has/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239264</commentid>
    <comment_count>29</comment_count>
      <attachid>58966</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-17 00:16:10 -0700</bug_when>
    <thetext>Created attachment 58966
viewport-patch-for-eflwebkit-8

Hi Lukas, 

Thank you for your detail review. I modified this patch according to your points again.

&gt;&gt;I understood your point about using this function. However if you set the viewport on this function it will trigger a re-layout. I think the double signal you got on the other function is related to something else, since QT guys are using it with no problem (afaik).

I tried to understand the viewport patch for QT port. As far as I understand, the QT&apos;s patch sends signal regarding viewport in both cases there is viewport and no viewport before any visual layout of the page. And, QT&apos;s patch prohibits to set layout before finishing first layout. Because, to prevent re-layout.

void QWebPage::setPreferredContentsSize(const QSize&amp; size) const 
{
    if (frame-&gt;d-&gt;initialLayoutComplete) // the initialLayoutComplete can be set on FrameLoaderClientQt::dispatchDidFirstLayout()
        view-&gt;layout();

It means that application only can received data of viewport tag on callback function for viewport. Application can&apos;t set layout with viewport data as soon as viewport signal is received. Because, viewport tag should be located at &lt;head&gt;...&lt;/head&gt;. The first layout is not finished on &lt;head&gt;...&lt;/head&gt;. Thus, user needs to find good position in order to adjust viewport tag. It seems this can prevent re-layout because application only can decide if viewport is adjust or not. In other words, application is responsible for layout.

I modified this patch similar to QT port&apos;s patch and add an example code to adjust viewport tag as below,

/**
 * This is en example function to adjust viewport via viewport tag&apos;s arguments.
 * Application can invoke this function in order to adjust viewport tag when it is required.
 */
static void
viewport_set()
{
    ELauncher *app;
    app = (ELauncher*) eina_list_data_get(windows);

    ewk_view_fixed_layout_size_set(app-&gt;browser, app-&gt;viewport.w, app-&gt;viewport.h);
    ewk_view_zoom_set(app-&gt;browser, app-&gt;viewport.initScale, 0, 0);
    if (!ewk_view_zoom_range_set(app-&gt;browser, app-&gt;viewport.minScale, app-&gt;viewport.maxScale))
       info(&quot; Fail to set zoom range. minScale = %f, maxScale = %f\n&quot;, app-&gt;viewport.minScale, app-&gt;viewport.maxScale);
    ewk_view_user_scalable_set(app-&gt;browser, app-&gt;viewport.userScalable);
}

It seems to me that callback function regarding dispatchDidFirstVisuallyNonEmptyLayout() is best. Of course, user can decide to put the viewport_set().


I also prohibit to set layout before finishing first layout.

void ewk_view_fixed_layout_size_set(Evas_Object* o, Evas_Coord w, Evas_Coord h)
{
    EWK_VIEW_SD_GET_OR_RETURN(o, sd);
    EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv);

    WebCore::FrameLoaderClientEfl* client = static_cast&lt;WebCore::FrameLoaderClientEfl*&gt;(priv-&gt;main_frame-&gt;loader()-&gt;client());
    if (!client-&gt;getInitLayoutCompleted())
        return;
...


Thanks,
Gyuyoung Kim</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239269</commentid>
    <comment_count>30</comment_count>
      <attachid>58967</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-17 00:48:31 -0700</bug_when>
    <thetext>Created attachment 58967
viewport-patch-for-eflwebkit-9

There was a problem regarding float variable and initialize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240073</commentid>
    <comment_count>31</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-18 12:28:01 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Created an attachment (id=58966) [details]
&gt; viewport-patch-for-eflwebkit-8
&gt; 
&gt; Hi Lukas, 
&gt; 
&gt; Thank you for your detail review. I modified this patch according to your points again.

Looks awesome! Thanks for your patience updating this patch to meet the requirements.

Now I&apos;ll try to find a reviewer that can give you r+/cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240078</commentid>
    <comment_count>32</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-18 12:40:49 -0700</bug_when>
    <thetext>Dimitri Glazkov / Eric Seidel,


We made the informal reviews from our port side.

Can you check this patch and r+/cq+ in case there are no other problems?

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240558</commentid>
    <comment_count>33</comment_count>
      <attachid>59221</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-20 18:56:36 -0700</bug_when>
    <thetext>Created attachment 59221
viewport-patch-for-eflwebkit-10

Lukas,Thank you for your review. 
I upload new patch modified in some comments. There are no code changes.

Dimitri Glazkov / Eric Seidel,
Please review this patch. I am waiting for your review as well.

Thanks,
Gyuyoung Kim</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242482</commentid>
    <comment_count>34</comment_count>
      <attachid>59221</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-24 06:28:54 -0700</bug_when>
    <thetext>Comment on attachment 59221
viewport-patch-for-eflwebkit-10

WebKit/efl/EWebLauncher/main.c:52
 +  #define ZOOM_MAX           1.0
Is it really good with default that does not allow zooming in the example app?
WebKit/efl/EWebLauncher/main.c:379
 +   * &quot;viewport,changed&quot; signal will be always emitted regardless of the viewport existence. 
viewport existence? Existence of the viewport meta tag?

WebKit/efl/ewk/ewk_view.cpp:115
 +          } zoom_range;
zoom_range contains min_scale etc? Shouldnt it be called scale_range instead?

WebKit/efl/ewk/ewk_view.cpp:591
 +      priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;
Same here... confusing that you mix scale and zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242570</commentid>
    <comment_count>35</comment_count>
      <attachid>59221</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-24 10:19:31 -0700</bug_when>
    <thetext>Comment on attachment 59221
viewport-patch-for-eflwebkit-10

Kenneth, thank you for spotting this bug. You are right.

Gyuyoung, I&apos;m removing cq+ because this must be fixed before getting in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242599</commentid>
    <comment_count>36</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-24 11:14:25 -0700</bug_when>
    <thetext>&gt;Index: WebKit/efl/EWebLauncher/main.c
&gt;===================================================================
&gt;--- WebKit/efl/EWebLauncher/main.c	(revision 61229)
&gt;+++ WebKit/efl/EWebLauncher/main.c	(working copy)
&gt;@@ -47,6 +47,9 @@
&gt; 
&gt; #define DEFAULT_WIDTH      800
&gt; #define DEFAULT_HEIGHT     600
&gt;+#define ZOOM_INIT          1.0
&gt;+#define ZOOM_MIN           1.0
&gt;+#define ZOOM_MAX           1.0

You should not define those here. Instead, they have to come from WebKit.

&gt;+    if (!ewk_view_zoom_range_set(app-&gt;browser, app-&gt;viewport.minScale, app-&gt;viewport.maxScale))
&gt;+       info(&quot; Fail to set zoom range. minScale = %f, maxScale = %f\n&quot;, app-&gt;viewport.minScale, app-&gt;viewport.maxScale);

Problem with style. Use 4 spaces.

&gt;@@ -345,6 +375,48 @@ on_tooltip_text_set(void* user_data, Eva
&gt;         info(&quot;%s\n&quot;, text);
&gt; }
&gt; 
&gt;+/**
&gt;+ * &quot;viewport,changed&quot; signal will be always emitted regardless of the viewport existence. 
&gt;+ *
&gt;+ * If you don&apos;t want to process the viewport tag, you can either do nothing in this callback
&gt;+ * or simply ignore the signal in your application.
&gt;+ * 
&gt;+ * More information about this can be found at http://developer.apple.com/safari/library/docum
&gt;+ * entation/appleapplications/reference/safariwebcontent/usingtheviewport/usingtheviewport.html
&gt;+ */
&gt;+static void
&gt;+on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
&gt;+{
&gt;+    ELauncher *app = (ELauncher *)user_data;
&gt;+   

There are several trailing white spaces. Although WebKit does not prohibit
them, we try to avoid them. Please, remove.

&gt;+    float w, h, initScale, minScale, maxScale, userScalable;
&gt;+
&gt;+    ewk_view_viewport_get(webview, &amp;w, &amp;h, &amp;initScale, &amp;maxScale, &amp;minScale, &amp;userScalable);
&gt;+
&gt;+    /**
&gt;+     * If there is no argument in viewport tag, argument&apos;s value is -1.
&gt;+     */
&gt;+    if ((int)w == -1)
&gt;+        w = DEFAULT_WIDTH;
&gt;+    if ((int)h == -1)
&gt;+        h = DEFAULT_HEIGHT;
&gt;+    if ((int)initScale == -1)
&gt;+        initScale = ZOOM_INIT;
&gt;+    if ((int)minScale == -1)
&gt;+        minScale = ZOOM_MIN;
&gt;+    if ((int)maxScale == -1)
&gt;+        maxScale = ZOOM_MAX;
&gt;+    if ((int)userScalable == -1)
&gt;+         userScalable = EINA_TRUE;

Here you have 5 spaces. Use 4, instead. This should be caught by
check-webkit-style. Don&apos;t know why it didn&apos;t get.

Worse than style issues, as Kenneth noticed, this would not allow to set zoom
if there isn&apos;t any meta tag. Either define the constants the same of webkit or,
better, add the proper API to get/set max and min zoom. Although the second is
the desired approach, I understand it would overly complicate this patch you
are submitting. Therefore, it would suffice if you submit the first one.



Please, consider also the other comments from Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242728</commentid>
    <comment_count>37</comment_count>
      <attachid>59221</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-24 16:52:27 -0700</bug_when>
    <thetext>Comment on attachment 59221
viewport-patch-for-eflwebkit-10

It was a misunderstanding between me and Eric. Please, fix these minor issues and it will be rq+ again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242783</commentid>
    <comment_count>38</comment_count>
      <attachid>59719</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-24 18:50:32 -0700</bug_when>
    <thetext>Created attachment 59719
 viewport-patch-for-eflwebkit-11

Kenneth and Lukas, thank you for your review. :)
I try to fix the style errors. I hope that there are no style erros anymore.

I add &quot;DEFAULT_&quot; to ZOOM_INIT, ZOOM_MIN and ZOOM_MAX as prefix. The macro meaning needs to be clear.

The DEFAULT_ZOOM_INIT, DEFAULT_ZOOM_MIN and DEFAULT_ZOOM_MAX are used when there are no arguments of viewport tag in webpage. Thus, application needs to set default zoom_init, zoom_max and zoom_min fot that situation.

So, I think that 1.0 value is appropriate. Because, currently, viewport tag is used by mobile webpage. Almost mobile webpages do not permit to zoom.

And, as you know, we can set / get zoom range via ewk_view_zoom_range_set(), ewk_view_zoom_range_get(). User(application) can decide if the zoom range is chagned via viewport information.

By the way, Should I request review again for new patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242796</commentid>
    <comment_count>39</comment_count>
      <attachid>59719</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-24 20:31:47 -0700</bug_when>
    <thetext>Comment on attachment 59719
 viewport-patch-for-eflwebkit-11

&gt;Index: WebKit/efl/EWebLauncher/main.c
&gt;===================================================================
&gt;--- WebKit/efl/EWebLauncher/main.c	(revision 61229)
&gt;+++ WebKit/efl/EWebLauncher/main.c	(working copy)
&gt;@@ -47,6 +47,9 @@
&gt; 
&gt; #define DEFAULT_WIDTH      800
&gt; #define DEFAULT_HEIGHT     600
&gt;+#define DEFAULT_ZOOM_INIT  1.0
&gt;+#define DEFAULT_ZOOM_MIN   1.0
&gt;+#define DEFAULT_ZOOM_MAX   1.0

Suppose the following scenario:
1. The function on_viewport_changed() is implemented by browser to cover the case in which there&apos;s a viewport meta tag. 
2. You go to a website that doesn&apos;t use the tag;
3. As WebKit always sends the notification about viewport (even if the meta tag doesn&apos;t exist), a notification will arrive with all fields == -1.0.
4. At that time the browser will call on_viewport_changed() and you will set 
+    if ((int)initScale == -1)
+        initScale = DEFAULT_ZOOM_INIT;
+    if ((int)minScale == -1)
+        minScale = DEFAULT_ZOOM_MIN;
+    if ((int)maxScale == -1)
+        maxScale = DEFAULT_ZOOM_MAX

5. What happens now if browser tries to zoom in and call ewk_view_zoom_set()?

+    if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
+        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
         return EINA_FALSE;
     }

But:
maxScale == DEFAULT_ZOOM_MAX == 1.0

Bang! Browser can&apos;t zoom in anymore. With the same reasoning, it can&apos;t zoom out neither. This is why you have to set ZOOM_MIN and ZOOM_MAX to the same values of webkit or add the proper APIs as I&apos;ve suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242809</commentid>
    <comment_count>40</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-24 21:14:44 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 59719 [details])
&gt; &gt;Index: WebKit/efl/EWebLauncher/main.c
&gt; &gt;===================================================================
&gt; &gt;--- WebKit/efl/EWebLauncher/main.c	(revision 61229)
&gt; &gt;+++ WebKit/efl/EWebLauncher/main.c	(working copy)
&gt; &gt;@@ -47,6 +47,9 @@
&gt; &gt; 
&gt; &gt; #define DEFAULT_WIDTH      800
&gt; &gt; #define DEFAULT_HEIGHT     600
&gt; &gt;+#define DEFAULT_ZOOM_INIT  1.0
&gt; &gt;+#define DEFAULT_ZOOM_MIN   1.0
&gt; &gt;+#define DEFAULT_ZOOM_MAX   1.0
&gt; 
&gt; Suppose the following scenario:
&gt; 1. The function on_viewport_changed() is implemented by browser to cover the case in which there&apos;s a viewport meta tag. 
&gt; 2. You go to a website that doesn&apos;t use the tag;
&gt; 3. As WebKit always sends the notification about viewport (even if the meta tag doesn&apos;t exist), a notification will arrive with all fields == -1.0.
&gt; 4. At that time the browser will call on_viewport_changed() and you will set 
&gt; +    if ((int)initScale == -1)
&gt; +        initScale = DEFAULT_ZOOM_INIT;
&gt; +    if ((int)minScale == -1)
&gt; +        minScale = DEFAULT_ZOOM_MIN;
&gt; +    if ((int)maxScale == -1)
&gt; +        maxScale = DEFAULT_ZOOM_MAX
&gt; 
&gt; 5. What happens now if browser tries to zoom in and call ewk_view_zoom_set()?
&gt; 
&gt; +    if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt;          return EINA_FALSE;
&gt;      }
&gt; 
&gt; But:
&gt; maxScale == DEFAULT_ZOOM_MAX == 1.0
&gt; 
&gt; Bang! Browser can&apos;t zoom in anymore. With the same reasoning, it can&apos;t zoom out neither. This is why you have to set ZOOM_MIN and ZOOM_MAX to the same values of webkit or add the proper APIs as I&apos;ve suggested.

Browser can zoom in / out in that case. the on_viewport_changed() just receives arguments of viewport. Browser should call the functions below in order to adjust viewport tag.

 87 +/**
 88 + * This is en example function to adjust viewport via viewport tag&apos;s arguments.
 89 + * Application can invoke this function in order to adjust viewport tag when it is required.
 90 + */
 1 +static void
 92 +viewport_set()
 93 +{
 94 +    ELauncher *app;
 95 +    app = (ELauncher*) eina_list_data_get(windows);
 96 +
 97 +    ewk_view_fixed_layout_size_set(app-&gt;browser, app-&gt;viewport.w, app-&gt;viewport.h);
 98 +    ewk_view_zoom_set(app-&gt;browser, app-&gt;viewport.initScale, 0, 0);
 99 +    if (!ewk_view_zoom_range_set(app-&gt;browser, app-&gt;viewport.minScale, app-&gt;viewport.maxScale))
100 +        info(&quot; Fail to set zoom range. minScale = %f, maxScale = %f\n&quot;, app-&gt;viewport.minScale, app-&gt;viewport.maxScale);
101 +    ewk_view_user_scalable_set(app-&gt;browser, app-&gt;viewport.userScalable);
102 +}
 
If browser doesn&apos;t invoke ewk_view_zoom_range_set(), ewk_view_user_scalable_set(), viewport is not adjusted. So, browser can zoom in / out. I made an example function (viewport_set()) to show how to adjust viewport meta tag. If browser doesn&apos;t want to adjust viewport, it doesn&apos;t invoke ewk_view_zoom_range_set(), ewk_view_user_scalable_set().


&gt; +    if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, 

By default, the zoom_range.max_scale / min_scale is set as ZOOM_MIN(0.5) / ZOOM_MAX(4.0) defined in ewk_view.cpp

313 +    priv-&gt;settings.zoom_range.min_scale = ZOOM_MIN;
314 +    priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;

Do you mean we should set the DEFAULT_ZOOM_MAX as 4.0 in EWebLauncher/main.c ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242812</commentid>
    <comment_count>41</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-24 21:20:27 -0700</bug_when>
    <thetext>Lukas, do you mean we should set the zoom min / max value from webkit as below when website doesn&apos;t define zoom max / min ?

7 static void
388 on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
389 {
...
406     if ((int)minScale == -1) 
407         minScale = ewk_view_zoom_min_get();
408     if ((int)maxScale == -1) 
409         maxScale = ewk_view_zoom_max_get();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242973</commentid>
    <comment_count>42</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-25 05:29:55 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Lukas, do you mean we should set the zoom min / max value from webkit as below when website doesn&apos;t define zoom max / min ?
&gt; 
&gt; 7 static void
&gt; 388 on_viewport_changed(void* user_data, Evas_Object* webview, void* event_info)
&gt; 389 {
&gt; ...
&gt; 406     if ((int)minScale == -1) 
&gt; 407         minScale = ewk_view_zoom_min_get();
&gt; 408     if ((int)maxScale == -1) 
&gt; 409         maxScale = ewk_view_zoom_max_get();

Yes, you got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243041</commentid>
    <comment_count>43</comment_count>
      <attachid>59773</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-25 09:18:58 -0700</bug_when>
    <thetext>Created attachment 59773
viewport-patch-for-eflwebkit-12

Lukas, you are right. The default value of zoom range should be set as value of webkit.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244242</commentid>
    <comment_count>44</comment_count>
      <attachid>60015</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-06-29 05:53:12 -0700</bug_when>
    <thetext>Created attachment 60015
viewport-patch-for-eflwebkit-13

Hello Keneeth,

I told that you rejected this patch. Because, there are mixing zoom with scale.

   priv-&gt;settings.zoom_range.min_scale = ZOOM_MIN;
   priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;

However, there is no scale seprated from zooming in webkit-efl. As far as I know, webkit-efl can scale based on zoom.
Thus, this patch implements functionality of viewport meta tag using zoom.

In order to avoid this patch can make a confusion, I add comments for this issue as below,

   // Since there&apos;s no scale separated from zooming in webkit-efl, this functionality of
   // viewport meta tag is implemented using zoom.
   priv-&gt;settings.zoom_range.min_scale = ZOOM_MIN;
   priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;

If webkit-efl separate scale from zoom, I will also modify this patch based on the change.


Hello barbieri and lucas,

I would like to know your opinions as well.


Thank you,
Gyuyoung Kim</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244716</commentid>
    <comment_count>45</comment_count>
      <attachid>59221</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 03:16:05 -0700</bug_when>
    <thetext>Comment on attachment 59221
viewport-patch-for-eflwebkit-10

Cleared Kenneth Rohde Christiansen&apos;s review+ from obsolete attachment 59221 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244802</commentid>
    <comment_count>46</comment_count>
      <attachid>60015</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2010-06-30 09:09:02 -0700</bug_when>
    <thetext>Comment on attachment 60015
viewport-patch-for-eflwebkit-13


&gt; @@ -3449,7 +3493,7 @@ uint64_t ewk_view_exceeded_database_quot
&gt;      if (!sd-&gt;api-&gt;exceeded_database_quota)
&gt;          return 0;
&gt;  
&gt; -    ERR(&quot;##### %lu %lu&quot;, current_size, expected_size);
&gt; +    ERR(&quot;##### %u %u&quot;, current_size, expected_size);
&gt;      return sd-&gt;api-&gt;exceeded_database_quota(sd, frame, databaseName, current_size, expected_size);
&gt;  }

It seems that your last patch came with more pieces than needed. Also, this was a problem with warnings and was already fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246562</commentid>
    <comment_count>47</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-07-05 03:51:34 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; (From update of attachment 60015 [details])
&gt; 
&gt; &gt; @@ -3449,7 +3493,7 @@ uint64_t ewk_view_exceeded_database_quot
&gt; &gt;      if (!sd-&gt;api-&gt;exceeded_database_quota)
&gt; &gt;          return 0;
&gt; &gt;  
&gt; &gt; -    ERR(&quot;##### %lu %lu&quot;, current_size, expected_size);
&gt; &gt; +    ERR(&quot;##### %u %u&quot;, current_size, expected_size);
&gt; &gt;      return sd-&gt;api-&gt;exceeded_database_quota(sd, frame, databaseName, current_size, expected_size);
&gt; &gt;  }
&gt; 
&gt; It seems that your last patch came with more pieces than needed. Also, this was a problem with warnings and was already fixed.

Ok, I will remove the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246563</commentid>
    <comment_count>48</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-07-05 04:05:24 -0700</bug_when>
    <thetext>Hello Gustavo and Lucas,

It seems kenneth wants to add scale zoomMode to this patch. For example, WebCore has two zoom modes as below,

enum ZoomMode {
    ZoomPage,
    ZoomTextOnly
};

He wants to add scale zoom for EFL port.

enum ZoomMode {
    ZoomPage,
    ZoomTextOnly,
    ZoomScale
};

So, this viewport patch works on Scale zoom. Is this easy ?

However, as you know, this work takes more time. I heard that you will add cairo scaling patch to WebKitEFL in future.

As mentioned in comment #44, this patch is landed first, then I would like to modify this patch after pushing cairo scaling patch.

Gustavo and Lucas, I wants to know your opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247277</commentid>
    <comment_count>49</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-07-06 20:24:12 -0700</bug_when>
    <thetext>I&apos;m fine with merge this one first as we don&apos;t have the scale zoom type yet. When we integrate it we can sure add the suggested way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247323</commentid>
    <comment_count>50</comment_count>
      <attachid>60684</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-07-06 22:51:34 -0700</bug_when>
    <thetext>Created attachment 60684
viewport-patch-for-eflwebkit-14

Hello Kenneth,

As mentioned in Gustavo&apos;s comment above, EFL port doesn&apos;t have scale zoom type yet. I heard that Gustavo will contribute scale zoom patch based on cairo. So, in my opinion, I will modify this patch when the scale zoom patch is contributed to WebKitEFL.

In ewk_view.cpp, I add a comment for this issue.

313 +    // Since there&apos;s no scale separated from zooming in webkit-efl, this functionality of
314 +    // viewport meta tag is implemented using zoom. When scale zoom is supported by webkit-efl,
315 +    // this functionality will be modified by the scale zoom patch.
316 +    priv-&gt;settings.zoom_range.min_scale = ZOOM_MIN;
317 +    priv-&gt;settings.zoom_range.max_scale = ZOOM_MAX;


For now, in my opinion, this patch need to be landed first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247325</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-06 22:53:45 -0700</bug_when>
    <thetext>Attachment 60684 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/efl/ewk/ewk_private.h:98:  Extra space between void and ewk_view_viewport_set  [whitespace/declaration] [3]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247331</commentid>
    <comment_count>52</comment_count>
      <attachid>60686</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-07-06 23:05:38 -0700</bug_when>
    <thetext>Created attachment 60686
viewport-patch-for-eflwebkit-15

Sorry for my frequent patch uploading. It seems to me that ewk_private.h has style errors as below,

WebKit/efl/ewk/ewk_private.h:51:  Extra space between void and ewk_view_ready  [whitespace/declaration] [3]
WebKit/efl/ewk/ewk_private.h:52:  Extra space between void and ewk_view_title_set  [whitespace/declaration] [3]
WebKit/efl/ewk/ewk_private.h:53:  Extra space between void and ewk_view_uri_changed  [whitespace/declaration] [3]
WebKit/efl/ewk/ewk_private.h:54:  Extra space between void and ewk_view_load_started  [whitespace/declaration] [3]

I think this style errors in ewk_private.h should be fixed as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247501</commentid>
    <comment_count>53</comment_count>
      <attachid>60686</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-07-07 05:39:45 -0700</bug_when>
    <thetext>Comment on attachment 60686
viewport-patch-for-eflwebkit-15

I&apos;m fine with it, you can fix the rest in follow-up patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247552</commentid>
    <comment_count>54</comment_count>
      <attachid>60686</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-07 07:49:25 -0700</bug_when>
    <thetext>Comment on attachment 60686
viewport-patch-for-eflwebkit-15

Clearing flags on attachment: 60686

Committed r62666: &lt;http://trac.webkit.org/changeset/62666&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247553</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-07 07:49:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58104</attachid>
            <date>2010-06-07 19:42:49 -0700</date>
            <delta_ts>2010-06-09 21:35:32 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit</desc>
            <filename>viewport_efl.patch</filename>
            <type>text/plain</type>
            <size>10846</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjA3ODUpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTAtMDYtMDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVk
KToKKyAgICAgICAgKGV3a192aWV3X3NldF92aWV3cG9ydCk6CisgICAgICAgIChld2tfdmlld19z
ZXRfem9vbV9yYW5nZSk6CisgICAgICAgIChld2tfdmlld19zZXRfdXNlcl9zY2FsYWJsZSk6Cisg
ICAgICAgICogZWZsL2V3ay9ld2tfdmlldy5oOgorCiAyMDEwLTA2LTAxICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CkluZGV4OiBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9l
ZmwvRVdlYkxhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAog
CiAjZGVmaW5lIERFRkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQg
ICAgIDYwMAorI2RlZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhm
b3JtYXQsIGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTM0Niw2ICszNDcsMjggQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2Vy
X2RhdGEsIEV2YQogfQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1
c2VyX2RhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV3a19WaWV3cG9ydCAqdmlld3BvcnQgPSAoRXdrX1ZpZXdwb3J0KilldmVudF9pbmZvOworCisg
ICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZmxvYXQgaW5pdGlhbFNjYWxlLCBtaW5pbXVtU2Nh
bGUsIG1heGltdW1TY2FsZTsKKyAgICBFaW5hX0Jvb2wgaXNVc2VyU2NhbGFibGU7CisgICAKKyAg
ICB3aWR0aCA9IHZpZXdwb3J0LT53aWR0aCA9PSAtMSA/IERFRkFVTFRfV0lEVEggOiB2aWV3cG9y
dC0+d2lkdGg7CisgICAgaGVpZ2h0ID0gdmlld3BvcnQtPmhlaWdodCA9PSAtMSA/IERFRkFVTFRf
SEVJR0hUIDogdmlld3BvcnQtPmhlaWdodDsKKyAgICBpbml0aWFsU2NhbGUgPSAoaW50KXZpZXdw
b3J0LT5pbml0aWFsU2NhbGUgPT0gLTEgPyBERUZBVUxUX1NDQUxFIDogdmlld3BvcnQtPmluaXRp
YWxTY2FsZTsKKyAgICBtaW5pbXVtU2NhbGUgPSAoaW50KXZpZXdwb3J0LT5taW5pbXVtU2NhbGUg
PT0gLTEgPyBERUZBVUxUX1NDQUxFIDogdmlld3BvcnQtPm1pbmltdW1TY2FsZTsKKyAgICBtYXhp
bXVtU2NhbGUgPSAoaW50KXZpZXdwb3J0LT5tYXhpbXVtU2NhbGUgPT0gLTEgPyBERUZBVUxUX1ND
QUxFIDogdmlld3BvcnQtPm1heGltdW1TY2FsZTsKKyAgICBpc1VzZXJTY2FsYWJsZSA9IChpbnQp
dmlld3BvcnQtPnVzZXJTY2FsYWJsZSA9PSAxID8gRUlOQV9UUlVFIDogRUlOQV9GQUxTRTsKKwor
ICAgIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCh3ZWJ2aWV3LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICBld2tfdmlld196b29tX3NldCh3ZWJ2aWV3LCBpbml0aWFsU2NhbGUsIDAsIDApOwor
ICAgIGV3a192aWV3X3NldF96b29tX3JhbmdlKHdlYnZpZXcsIG1pbmltdW1TY2FsZSwgbWF4aW11
bVNjYWxlKTsKKyAgICBld2tfdmlld19zZXRfdXNlcl9zY2FsYWJsZSh3ZWJ2aWV3LCBpc1VzZXJT
Y2FsYWJsZSk7Cit9CisKK3N0YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2
YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEV2
YXNfRXZlbnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZlbnRf
aW5mbzsKQEAgLTU3OSw2ICs2MDIsNyBAQCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwg
Y29uc3QgY2hhCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3Nl
ciwgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwgb25f
cHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+
YnJvd3NlciwgImxvYWQsZmluaXNoZWQiLCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxjaGFu
Z2VkIiwgb25fdmlld3BvcnRfY2hhbmdlZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9uX3Rv
b2xiYXJzX3Zpc2libGVfc2V0LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJzX3Zp
c2libGVfZ2V0LCBhcHApOwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw0ICs0NTIs
MTggQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29zZUljb25Gb3JGaWxlcwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpkaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1l
bnRzKSBjb25zdAoreworICAgIEV3a19WaWV3cG9ydCB2aWV3cG9ydDsKKworICAgIHZpZXdwb3J0
LndpZHRoID0gKGludClhcmd1bWVudHMud2lkdGg7CisgICAgdmlld3BvcnQuaGVpZ2h0ID0gKGlu
dClhcmd1bWVudHMuaGVpZ2h0OworICAgIHZpZXdwb3J0LmluaXRpYWxTY2FsZSA9IGFyZ3VtZW50
cy5pbml0aWFsU2NhbGU7CisgICAgdmlld3BvcnQubWluaW11bVNjYWxlID0gYXJndW1lbnRzLm1p
bmltdW1TY2FsZTsKKyAgICB2aWV3cG9ydC5tYXhpbXVtU2NhbGUgPSBhcmd1bWVudHMubWF4aW11
bVNjYWxlOworICAgIHZpZXdwb3J0LnVzZXJTY2FsYWJsZSA9IGFyZ3VtZW50cy51c2VyU2NhbGFi
bGUgPT0gMSA/IEVJTkFfVFJVRSA6IEVJTkFfRkFMU0U7CisKKyAgICBld2tfdmlld19zZXRfdmll
d3BvcnQobV92aWV3LCAmdmlld3BvcnQpOworfQorCiB9CkluZGV4OiBXZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCShy
ZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsK
ICAgICAgICAgRWluYV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9C
b29sIHByaXZhdGVfYnJvd3Npbmc6MTsKICAgICAgICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5n
OjE7CisgICAgICAgIEVpbmFfQm9vbCBpc1VzZXJTY2FsYWJsZToxOwogICAgIH0gc2V0dGluZ3M7
CiAgICAgc3RydWN0IHsKICAgICAgICAgc3RydWN0IHsKQEAgLTEyMSw2ICsxMjIsMTAgQEAgc3Ry
dWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CiAg
ICAgICAgIEVpbmFfQm9vbCB1c2U6MTsKICAgICB9IGZpeGVkX2xheW91dDsKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBmbG9hdCBtaW5pbXVtU2NhbGU7CisgICAgICAgIGZsb2F0IG1heGltdW1TY2Fs
ZTsKKyAgICB9IHpvb21fcmFuZ2U7CiB9OwogCiAjaWZuZGVmIEVXS19UWVBFX0NIRUNLCkBAIC01
NzQsNiArNTc5LDkgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3Xwog
ICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVfYnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdz
LT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRfYnJv
d3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogCisg
ICAgcHJpdi0+em9vbV9yYW5nZS5taW5pbXVtU2NhbGUgPSBaT09NX01JTjsKKyAgICBwcml2LT56
b29tX3JhbmdlLm1heGltdW1TY2FsZSA9IFpPT01fTUFYOworCiAgICAgcHJpdi0+bWFpbl9mcmFt
ZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAgICAgaWYg
KCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRl
IG1haW4gZnJhbWUuIik7CkBAIC0xNzU2LDEyICsxNzY0LDE4IEBAIEVpbmFfQm9vbCBld2tfdmll
d196b29tX3NldChFdmFzX09iamVjdCoKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNk
LT5hcGktPnpvb21fc2V0LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7
Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlO
LCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy5pc1VzZXJTY2FsYWJs
ZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnpvb21fcmFuZ2Uu
bWludW1TY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRv
dWJsZSlwcml2LT56b29tX3JhbmdlLm1pbmltdW1TY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgs
IChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT56b29tX3JhbmdlLm1heGltdW1T
Y2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlw
cml2LT56b29tX3JhbmdlLm1heGltdW1TY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xODI2LDEyICsxODQwLDE4IEBAIEVpbmFfQm9v
bCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2IKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29t
IDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChk
b3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdz
LmlzVXNlclNjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7
CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01f
TUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpP
T01fTUFYLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT56b29tX3Jhbmdl
Lm1pbmltdW1TY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwg
KGRvdWJsZSlwcml2LT56b29tX3JhbmdlLm1pbmltdW1TY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4gcHJpdi0+em9v
bV9yYW5nZS5tYXhpbXVtU2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpcHJpdi0+em9vbV9yYW5nZS5tYXhpbXVtU2NhbGUsIChkb3VibGUpem9v
bSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTk3NCwxMiArMTk5
NCwxNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhCiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5B
X0ZBTFNFKTsKIAotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9vbSk7Cisg
ICAgaWYgKCFwcml2LT5zZXR0aW5ncy5pc1VzZXJTY2FsYWJsZSkgeworICAgICAgICBXUk4oInVz
ZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9
Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMg
PiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICh6
b29tIDwgcHJpdi0+em9vbV9yYW5nZS5taW5pbXVtU2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+em9vbV9yYW5nZS5taW5pbXVtU2Nh
bGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKyAg
ICBpZiAoem9vbSA+IHByaXYtPnpvb21fcmFuZ2UubWF4aW11bVNjYWxlKSB7CisgICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnpvb21fcmFuZ2UubWF4
aW11bVNjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAg
ICB9CiAKQEAgLTMwMTEsNiArMzAzNiw3IEBAIHZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZh
c19PYmplY3QqIG8KIHZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIERCRygibz0lcCIsIG8pOworCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChvLCAibG9hZCxzdGFydGVkIiwgMCk7CiB9CiAKQEAgLTM2OTIsMyArMzcxOCw0OCBAQCB2
b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplCiAgICAgREJHKCJ2aWV3PSVw
Iiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZG93bmxvYWQs
cmVxdWVzdCIsIGRvd25sb2FkKTsKIH0KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMg
dGhlIHZpZXcgZmluZCB2aWV3cG9ydCBtZXRhIHRhZy4KKyAqCisgKiBAcGFyYW0gZG93bmxvYWQg
RXdrX1ZpZXdwb3J0IHN0cnVjdCB0byBiZSBzZW50LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInZp
ZXdwb3J0LGNoYW5nZSIgd2l0aCBhcmd1bWVudHMgb2Ygdmlld3BvcnQuCisgKi8KK3ZvaWQgZXdr
X3ZpZXdfc2V0X3ZpZXdwb3J0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVmlld3BvcnQqIHZpZXdwb3J0
KQoreworICAgIERCRygibz0lcCIsIG8pOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCB2aWV3cG9ydCk7Cit9IAorCisvKioKKyAqIFNl
dCBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gVmlldy4KKyAqIEBwYXJhbSBt
aW5pbXVtU2NhbGUgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlCisgKiBAcGFyYW0gbWF4aW11
bVNjYWxlIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5nZQorICovCitFQVBJIHZvaWQgZXdrX3Zp
ZXdfc2V0X3pvb21fcmFuZ2UoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbmltdW1TY2FsZSwgZmxv
YXQgbWF4aW11bVNjYWxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+em9vbV9yYW5nZS5taW5pbXVt
U2NhbGUgPSBtaW5pbXVtU2NhbGU7CisgICAgcHJpdi0+em9vbV9yYW5nZS5tYXhpbXVtU2NhbGUg
PSBtYXhpbXVtU2NhbGU7Cit9CisKKy8qKgorICogU2V0IGlmIHpvb20gaXMgZW5hYmxlZC4KKyAq
CisgKiBAcGFyYW0gbyBWaWV3LgorICogQHBhcmFtIHVzZXJTY2FsZSBib29sZWFuIHBvaW50ZXIg
aW4gd2hpY2ggdG8gZW5hYmxlIHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUu
CisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19zZXRfdXNlcl9zY2FsYWJsZShFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIHVzZXJTY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2Qp
OworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHByaXYtPnNldHRpbmdz
LmlzVXNlclNjYWxhYmxlID0gdXNlclNjYWxhYmxlOworfQpJbmRleDogV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCShyZXZp
c2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3Myw2ICsyNzMsMTYgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKICAgICB9
IGNoYW5nZWQ7CiB9OwogCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdwb3J0IEV3a19WaWV3cG9y
dDsKK3N0cnVjdCBfRXdrX1ZpZXdwb3J0IHsKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdo
dDsKKyAgICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAgZmxvYXQgbWluaW11bVNjYWxlOworICAg
IGZsb2F0IG1heGltdW1TY2FsZTsKKyAgICBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlOworfTsKKwog
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgKmFwaSk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0
KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogCkBAIC00NTEsNiArNDYxLDEwIEBAIEVBUEkg
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGEKIEVBUEkgRWluYV9Cb29sIGV3a192
aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0
IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2Nv
bnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlICphcmVhKTsKIAorRUFQSSB2b2lkIGV3a192aWV3X3NldF92aWV3cG9ydChF
dmFzX09iamVjdCogbywgRXdrX1ZpZXdwb3J0KiB2aWV3cG9ydCk7CitFQVBJIHZvaWQgZXdrX3Zp
ZXdfc2V0X3pvb21fcmFuZ2UoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbmltdW1TY2FsZSwgZmxv
YXQgbWF4aW11bVNjYWxlKTsKK0VBUEkgdm9pZCBld2tfdmlld19zZXRfdXNlcl9zY2FsYWJsZShF
dmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJTY2FsYWJsZSk7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58325</attachid>
            <date>2010-06-09 21:35:32 -0700</date>
            <delta_ts>2010-06-09 21:49:50 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-2</desc>
            <filename>viewport_efl.patch-2</filename>
            <type>text/plain</type>
            <size>11867</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjA5MzIpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTAtMDYtMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVk
KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X3NldCk6CisgICAgICAgIChld2tfdmlld192
aWV3cG9ydF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3Zp
ZXcuaDoKKworCiAyMDEwLTA2LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4ODkuCkluZGV4
OiBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvRVdl
YkxhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogCiAjZGVm
aW5lIERFRkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYw
MAorI2RlZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQs
IGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTM0Niw2ICszNDcsMjcgQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEs
IEV2YQogfQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIGludCB3
LCBoOworICAgIGZsb2F0IGluaXRfc2NhbGUsIG1pbl9zY2FsZSwgbWF4X3NjYWxlOworICAgIEVp
bmFfQm9vbCB1c2VyX3NjYWxhYmxlOworCisgICAgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KHdlYnZp
ZXcsICZ3LCAmaCwgJmluaXRfc2NhbGUsICZtYXhfc2NhbGUsICZtaW5fc2NhbGUsICZ1c2VyX3Nj
YWxhYmxlKTsKKworICAgIHcgPSAodyA9PSAtMSkgPyBERUZBVUxUX1dJRFRIIDogdzsKKyAgICBo
ID0gKGggPT0gLTEpID8gREVGQVVMVF9IRUlHSFQgOiBoOworICAgIGluaXRfc2NhbGUgPSAoKGlu
dClpbml0X3NjYWxlID09IC0xKSA/IERFRkFVTFRfU0NBTEUgOiBpbml0X3NjYWxlOworICAgIG1p
bl9zY2FsZSA9ICgoaW50KW1pbl9zY2FsZSA9PSAtMSkgPyBERUZBVUxUX1NDQUxFIDogbWluX3Nj
YWxlOyAKKyAgICBtYXhfc2NhbGUgPSAoKGludCltYXhfc2NhbGUgPT0gLTEpID8gREVGQVVMVF9T
Q0FMRSA6IG1heF9zY2FsZTsKKworICAgIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCh3
ZWJ2aWV3LCB3LCBoKTsKKyAgICBld2tfdmlld196b29tX3NldCh3ZWJ2aWV3LCBpbml0X3NjYWxl
LCAwLCAwKTsKKyAgICBld2tfdmlld196b29tX3JhbmdlX3NldCh3ZWJ2aWV3LCBtaW5fc2NhbGUs
IG1heF9zY2FsZSk7CisgICAgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQod2VidmlldywgdXNl
cl9zY2FsYWJsZSk7Cit9CisKK3N0YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAg
IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZl
bnRfaW5mbzsKQEAgLTU3OSw2ICs2MDEsNyBAQCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVy
bCwgY29uc3QgY2hhCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJv
d3NlciwgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwg
b25fcHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFw
cC0+YnJvd3NlciwgImxvYWQsZmluaXNoZWQiLCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxj
aGFuZ2VkIiwgb25fdmlld3BvcnRfY2hhbmdlZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9u
X3Rvb2xiYXJzX3Zpc2libGVfc2V0LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJz
X3Zpc2libGVfZ2V0LCBhcHApOwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDcgQEAKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NTIsNCArNDUzLDEy
IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpjaG9vc2VJY29uRm9yRmlsZXMKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudEVmbDo6ZGlkUmVjZWl2ZVZpZXdwb3J0
QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50
cykgY29uc3QKK3sKKyAgICBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZTsKKworICAgIHVzZXJfc2Nh
bGFibGUgPSAoaW50KWFyZ3VtZW50cy51c2VyU2NhbGFibGUgPT0gMSA/IEVJTkFfVFJVRSA6IEVJ
TkFfRkFMU0U7CisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgKGludClhcmd1bWVu
dHMud2lkdGgsIChpbnQpYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRzLmluaXRpYWxTY2FsZSwg
YXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1TY2FsZSwgdXNlcl9zY2Fs
YWJsZSk7Cit9CisKIH0KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDYwNzQyKQorKysg
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAw
LDE0IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWluYV9Cb29s
IHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Np
bmc6MTsKICAgICAgICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICBpbnQgdzsKKyAgICAgICAgICAgIGludCBoOworICAgICAgICAgICAg
ZmxvYXQgaW5pdF9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAg
ICAgIGZsb2F0IG1heF9zY2FsZTsKKyAgICAgICAgICAgIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxl
OjE7CisgICAgICAgIH0gdmlld3BvcnQ7CiAgICAgfSBzZXR0aW5nczsKICAgICBzdHJ1Y3Qgewog
ICAgICAgICBzdHJ1Y3QgewpAQCAtNTc0LDYgKzU4Miw5IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2
YXRlX0RhdGEqIF9ld2tfdmlld18KICAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5n
ID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHBy
aXYtPnNldHRpbmdzLmNhcmV0X2Jyb3dzaW5nID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+Y2FyZXRC
cm93c2luZ0VuYWJsZWQoKTsKIAorICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2Fs
ZSA9IFpPT01fTUlOOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IFpP
T01fTUFYOworCiAgICAgcHJpdi0+bWFpbl9mcmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25l
dyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAgICAgaWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAg
ICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIG1haW4gZnJhbWUuIik7CkBAIC0xNzU2LDEy
ICsxNzY3LDE4IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCoKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpvb21fc2V0LCBFSU5BX0ZBTFNF
KTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworCisgICAgaWYg
KCFwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigi
dXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAg
IH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworCisgICAgaWYg
KHpvb20gPCBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mudmlld3Bv
cnQubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KyAgICB9CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUp
IHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+
c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE4MjYsMTIgKzE4NDMsMTggQEAgRWluYV9Cb29s
IGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20g
PCBaT09NX01JTikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRv
dWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQudXNlcl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBm
YWxzZSIpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20g
PiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRv
dWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICh6b29tIDwgcHJpdi0+c2V0
dGluZ3Mudmlld3BvcnQubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8
ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSwgKGRv
dWJsZSl6b29tKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6
b29tID4gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigi
em9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnZpZXdwb3J0
Lm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAg
ICAgfQogCkBAIC0xOTc0LDEyICsxOTk3LDE3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2Fu
aW1hdGVkX3NldChFdmEKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFw
aSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5h
cGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwogCi0gICAgaWYgKHpvb20gPCBaT09NX01J
TikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09N
X01JTiwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVz
ZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5z
ZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlz
IDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlLCAo
ZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYg
KHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVm
IiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoem9vbSA+IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUs
IChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAt
MzAxMSw2ICszMDM5LDcgQEAgdm9pZCBld2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCog
bwogdm9pZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJH
KCJvPSVwIiwgbyk7CisKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJs
b2FkLHN0YXJ0ZWQiLCAwKTsKIH0KIApAQCAtMzY5MiwzICszNzIxLDg4IEBAIHZvaWQgZXdrX3Zp
ZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamUKICAgICBEQkcoInZpZXc9JXAiLCBvKTsKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJkb3dubG9hZCxyZXF1ZXN0Iiwg
ZG93bmxvYWQpOwogfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGUgdmlldyBm
aW5kIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0g
dyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRp
YWxTY2FsZSB2YWx1ZQorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUKKyAq
IEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bVNjYWxlIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9zY2Fs
YWJsZSB1c2Vyc2NhbGFibGUgZmxhZy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxj
aGFuZ2UiIHdpdGggYXJndW1lbnRzIG9mIHZpZXdwb3J0LgorICovCit2b2lkIGV3a192aWV3X3Zp
ZXdwb3J0X3NldChFdmFzX09iamVjdCAqbywgaW50IHcsIGludCBoLCBmbG9hdCBpbml0X3NjYWxl
LCBmbG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2FsZSwgRWluYV9Cb29sIHVzZXJfc2NhbGFi
bGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC53ID0gdzsKKyAgICBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC5oID0gaDsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9y
dC5pbml0X3NjYWxlID0gaW5pdF9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5t
aW5fc2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3Nj
YWxlID0gbWF4X3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFi
bGUgPSB1c2VyX3NjYWxhYmxlOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChvLCAidmlld3BvcnQsY2hhbmdlZCIsIDApOworfSAKKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
IEdldCBkYXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisg
KiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3Nj
YWxlIGluaXRpYWwgU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bSBTY2Fs
ZSB2YWx1ZQorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVtIFNjYWxlIHZhbHVlCisgKiBAcGFy
YW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIGZsYWcuCisgKi8KK3ZvaWQgZXdrX3ZpZXdf
dmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcsIGludCogaCwgZmxvYXQqIGluaXRf
c2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIEVpbmFfQm9vbCogdXNl
cl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKyAgIAorICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3Bv
cnQudzsKKyAgICAqaCA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lmg7CisgICAgKmluaXRfc2Nh
bGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlOworICAgICptYXhfc2NhbGUg
PSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgKm1pbl9zY2FsZSA9IHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICAqdXNlcl9zY2FsYWJsZSA9IHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0IGN1
cnJlbnQgem9vbSByYW5nZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIG1pbl9z
Y2FsZSBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UKKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4
aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlCisgKi8KK3ZvaWQgZXdrX3ZpZXdfem9vbV9yYW5nZV9z
ZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxl
OworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKK30K
KworLyoqCisgKiBTZXQgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcu
CisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gZW5h
YmxlIHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8KK3ZvaWQgZXdr
X3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2Fs
YWJsZSA9IHVzZXJfc2NhbGFibGU7Cit9CkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHJldmlzaW9uIDYwNzQy
KQorKysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYg
KzQ1MSwxMSBAQCBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhCiBFQVBJ
IEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNh
aXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiBFQVBJIEVpbmFfQm9vbCBl
d2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJv
X3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKK0VBUEkgdm9pZCBld2tfdmll
d192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB3LCBpbnQgaCwgZmxvYXQgaW5pdF9z
Y2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlKQorRUFQSSB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2dldChFdmFzX09iamVjdCAqbywg
aW50KiB3LCBpbnQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlLCBmbG9h
dCogbWluX3NjYWxlLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCitFQVBJIHZvaWQgZXdrX3Zp
ZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQg
bWF4X3NjYWxlKTsKK0VBUEkgdm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58326</attachid>
            <date>2010-06-09 21:49:50 -0700</date>
            <delta_ts>2010-06-09 22:16:16 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-3</desc>
            <filename>viewport_efl.patch-3</filename>
            <type>text/plain</type>
            <size>11844</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjA5MzIpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTAtMDYtMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVk
KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X3NldCk6CisgICAgICAgIChld2tfdmlld192
aWV3cG9ydF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3Zp
ZXcuaDoKKworCiAyMDEwLTA2LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4ODkuCkluZGV4
OiBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvRVdl
YkxhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogCiAjZGVm
aW5lIERFRkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYw
MAorI2RlZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQs
IGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTM0Niw2ICszNDcsMjcgQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEs
IEV2YQogfQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIGludCB3
LCBoOworICAgIGZsb2F0IGluaXRTY2FsZSwgbWluU2NhbGUsIG1heFNjYWxlOworICAgIEVpbmFf
Qm9vbCB1c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3cG9ydF9nZXQod2Vidmlldywg
JncsICZoLCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2FsZSwgJnVzZXJTY2FsYWJsZSk7
CisKKyAgICB3ID0gKHcgPT0gLTEpID8gREVGQVVMVF9XSURUSCA6IHc7CisgICAgaCA9IChoID09
IC0xKSA/IERFRkFVTFRfSEVJR0hUIDogaDsKKyAgICBpbml0U2NhbGUgPSAoKGludClpbml0U2Nh
bGUgPT0gLTEpID8gREVGQVVMVF9TQ0FMRSA6IGluaXRTY2FsZTsKKyAgICBtaW5TY2FsZSA9ICgo
aW50KW1pblNjYWxlID09IC0xKSA/IERFRkFVTFRfU0NBTEUgOiBtaW5TY2FsZTsgCisgICAgbWF4
U2NhbGUgPSAoKGludCltYXhTY2FsZSA9PSAtMSkgPyBERUZBVUxUX1NDQUxFIDogbWF4U2NhbGU7
CisKKyAgICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQod2VidmlldywgdywgaCk7Cisg
ICAgZXdrX3ZpZXdfem9vbV9zZXQod2VidmlldywgaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBld2tf
dmlld196b29tX3JhbmdlX3NldCh3ZWJ2aWV3LCBtaW5TY2FsZSwgbWF4c1NhbGUpOworICAgIGV3
a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KHdlYnZpZXcsIHVzZXJTY2FsYWJsZSk7Cit9CisKK3N0
YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93
biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZlbnRfaW5mbzsKQEAgLTU3OSw2ICs2
MDEsNyBAQCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQi
LCBvbl90aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmlu
aXNoZWQiLCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRf
Y2hhbmdlZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAt
PmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0
LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIs
ICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJ
bmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAko
cmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXaW5k
b3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NTIsNCArNDUzLDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpjaG9vc2VJY29uRm9yRmlsZXMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lk
IENocm9tZUNsaWVudEVmbDo6ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3QKK3sKKyAgICBFaW5h
X0Jvb2wgdXNlclNjYWxhYmxlOworCisgICAgdXNlclNjYWxhYmxlID0gKGludClhcmd1bWVudHMu
dXNlclNjYWxhYmxlID09IDEgPyBFSU5BX1RSVUUgOiBFSU5BX0ZBTFNFOworICAgIGV3a192aWV3
X3ZpZXdwb3J0X3NldChtX3ZpZXcsIChpbnQpYXJndW1lbnRzLndpZHRoLCAoaW50KWFyZ3VtZW50
cy5oZWlnaHQsIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50cy5taW5pbXVtU2NhbGUs
IGFyZ3VtZW50cy5tYXhpbXVtU2NhbGUsIHVzZXJTY2FsYWJsZSk7Cit9CisKIH0KSW5kZXg6IFdl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAJKHJldmlzaW9uIDYwNzQyKQorKysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDE0IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsK
ICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmc6MTsKICAgICAgICAgRWluYV9Cb29s
IGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQgdzsK
KyAgICAgICAgICAgIGludCBoOworICAgICAgICAgICAgZmxvYXQgaW5pdF9zY2FsZTsKKyAgICAg
ICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1heF9zY2FsZTsKKyAg
ICAgICAgICAgIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlOjE7CisgICAgICAgIH0gdmlld3BvcnQ7
CiAgICAgfSBzZXR0aW5nczsKICAgICBzdHJ1Y3QgewogICAgICAgICBzdHJ1Y3QgewpAQCAtNTc0
LDYgKzU4Miw5IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld18KICAg
ICBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0X2Jyb3dz
aW5nID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKIAorICAg
IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSA9IFpPT01fTUlOOworICAgIHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IFpPT01fTUFYOworCiAgICAgcHJpdi0+bWFp
bl9mcmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAg
ICAgaWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3Qg
Y3JlYXRlIG1haW4gZnJhbWUuIik7CkBAIC0xNzU2LDEyICsxNzY3LDE4IEBAIEVpbmFfQm9vbCBl
d2tfdmlld196b29tX3NldChFdmFzX09iamVjdCoKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5hcGktPnpvb21fc2V0LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01f
TUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpP
T01fTUlOLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy52aWV3cG9y
dC51c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7
CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01f
TUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpP
T01fTUFYLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy52
aWV3cG9ydC5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAl
ZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlLCAoZG91YmxlKXpv
b20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisgICAgaWYgKHpvb20gPiBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxl
dmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3Nj
YWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAK
QEAgLTE4MjYsMTIgKzE4NDMsMTggQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQo
RXZhc19PYgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNF
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFr
X3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikgewotICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwgKGRvdWJsZSl6
b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZSkg
eworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwogICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6
b29tKTsKKworICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxl
KSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mudmll
d3BvcnQubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYi
LCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSwgKGRvdWJsZSl6b29t
KTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xOTc0LDEyICsxOTk3
LDE3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmEKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFf
RkFMU0UpOwogCi0gICAgaWYgKHpvb20gPCBaT09NX01JTikgewotICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKyAg
ICBpZiAoIXByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGUpIHsKKyAgICAgICAg
V1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2Nh
bGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJp
di0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAg
ICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRv
dWJsZSl6b29tKTsKKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9z
Y2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMzAxMSw2ICszMDM5LDcgQEAgdm9pZCBl
d2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCogbwogdm9pZCBld2tfdmlld19sb2FkX3N0
YXJ0ZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CisKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLHN0YXJ0ZWQiLCAwKTsKIH0KIApA
QCAtMzY5MiwzICszNzIxLDg4IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFz
X09iamUKICAgICBEQkcoInZpZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwogfQorCisvKioKKyAq
IEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGUgdmlldyBmaW5kIHZpZXdwb3J0IG1ldGEgdGFnLgor
ICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhl
aWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWxTY2FsZSB2YWx1ZQorICogQHBhcmFt
IG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11
bVNjYWxlIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2Vyc2NhbGFibGUgZmxhZy4K
KyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIGFyZ3VtZW50cyBv
ZiB2aWV3cG9ydC4KKyAqLwordm9pZCBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3Qg
Km8sIGludCB3LCBpbnQgaCwgZmxvYXQgaW5pdF9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9h
dCBtaW5fc2NhbGUsIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NE
X0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJp
di0+c2V0dGluZ3Mudmlld3BvcnQudyA9IHc7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQu
aCA9IGg7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZSA9IGluaXRfc2Nh
bGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOwor
ICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKKyAgICBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKKwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQi
LCAwKTsKK30gCisKKy8qKgorICogQGludGVybmFsCisgKiBHZXQgZGF0YSBvZiB2aWV3cG9ydCBt
ZXRhIHRhZy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIHcgd2lkdGguCisgKiBA
cGFyYW0gaCBoZWlnaHQuCisgKiBAcGFyYW0gaW5pdF9zY2FsZSBpbml0aWFsIFNjYWxlIHZhbHVl
CisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtaW5f
c2NhbGUgbWluaW11bSBTY2FsZSB2YWx1ZQorICogQHBhcmFtIHVzZXJfc2NhbGFibGUgdXNlciBT
Y2FsYWJsZSBmbGFnLgorICovCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2dldChFdmFzX09iamVj
dCAqbywgaW50KiB3LCBpbnQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxl
LCBmbG9hdCogbWluX3NjYWxlLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7Cisg
ICAKKyAgICAqdyA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lnc7CisgICAgKmggPSBwcml2LT5z
ZXR0aW5ncy52aWV3cG9ydC5oOworICAgICppbml0X3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmll
d3BvcnQuaW5pdF9zY2FsZTsKKyAgICAqbWF4X3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3Bv
cnQubWF4X3NjYWxlOworICAgICptaW5fc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5t
aW5fc2NhbGU7CisgICAgKnVzZXJfc2NhbGFibGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51
c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIFNldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgor
ICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2YWx1ZSBvZiB6
b29tIHJhbmdlCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5n
ZQorICovCit2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9h
dCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywg
c2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHByaXYtPnNldHRp
bmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSA9IG1pbl9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52
aWV3cG9ydC5tYXhfc2NhbGUgPSBtYXhfc2NhbGU7Cit9CisKKy8qKgorICogU2V0IGlmIHpvb20g
aXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIHVzZXJfc2NhbGFi
bGUgYm9vbGVhbiBwb2ludGVyIGluIHdoaWNoIHRvIGVuYWJsZSB6b29tLiBJdCBkZWZhdWx0cwor
ICogdG8gQGMgRUlOQV9UUlVFLgorICovCit2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAg
IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGUgPSB1c2VyX3NjYWxhYmxlOwor
fQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCShyZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvZXdrL2V3
a192aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2ICs0NTEsMTEgQEAgRUFQSSB2b2lkIGV3
a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYQogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFp
bnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9S
ZWN0YW5nbGUgKmFyZWEpOwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0
YW5nbGUgKmFyZWEpOwogCitFQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBpbnQgdywgaW50IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwg
ZmxvYXQgbWluX3NjYWxlLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKK0VBUEkgdm9pZCBld2tf
dmlld192aWV3cG9ydF9nZXQoRXZhc19PYmplY3QgKm8sIGludCogdywgaW50KiBoLCBmbG9hdCog
aW5pdF9zY2FsZSwgZmxvYXQqIG1heF9zY2FsZSwgZmxvYXQqIG1pbl9zY2FsZSwgRWluYV9Cb29s
KiB1c2VyX3NjYWxhYmxlKQorRUFQSSB2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNf
T2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJIHZvaWQg
ZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2Vy
X3NjYWxhYmxlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58327</attachid>
            <date>2010-06-09 22:16:16 -0700</date>
            <delta_ts>2010-06-09 23:01:19 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-4</desc>
            <filename>viewport_efl.patch-4</filename>
            <type>text/plain</type>
            <size>11693</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjA5MzIpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTAtMDYtMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVk
KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X3NldCk6CisgICAgICAgIChld2tfdmlld192
aWV3cG9ydF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3Zp
ZXcuaDoKKworCiAyMDEwLTA2LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4ODkuCkluZGV4
OiBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvRVdl
YkxhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogCiAjZGVm
aW5lIERFRkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYw
MAorI2RlZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQs
IGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTM0Niw2ICszNDcsMjcgQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEs
IEV2YQogfQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIGludCB3
LCBoOworICAgIGZsb2F0IGluaXRTY2FsZSwgbWluU2NhbGUsIG1heFNjYWxlOworICAgIEVpbmFf
Qm9vbCB1c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3cG9ydF9nZXQod2Vidmlldywg
JncsICZoLCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2FsZSwgJnVzZXJTY2FsYWJsZSk7
CisKKyAgICB3ID0gKHcgPT0gLTEpID8gREVGQVVMVF9XSURUSCA6IHc7CisgICAgaCA9IChoID09
IC0xKSA/IERFRkFVTFRfSEVJR0hUIDogaDsKKyAgICBpbml0U2NhbGUgPSAoKGludClpbml0U2Nh
bGUgPT0gLTEpID8gREVGQVVMVF9TQ0FMRSA6IGluaXRTY2FsZTsKKyAgICBtaW5TY2FsZSA9ICgo
aW50KW1pblNjYWxlID09IC0xKSA/IERFRkFVTFRfU0NBTEUgOiBtaW5TY2FsZTsgCisgICAgbWF4
U2NhbGUgPSAoKGludCltYXhTY2FsZSA9PSAtMSkgPyBERUZBVUxUX1NDQUxFIDogbWF4U2NhbGU7
CisKKyAgICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQod2VidmlldywgdywgaCk7Cisg
ICAgZXdrX3ZpZXdfem9vbV9zZXQod2VidmlldywgaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBld2tf
dmlld196b29tX3JhbmdlX3NldCh3ZWJ2aWV3LCBtaW5TY2FsZSwgbWF4c1NhbGUpOworICAgIGV3
a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KHdlYnZpZXcsIHVzZXJTY2FsYWJsZSk7Cit9CisKK3N0
YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93
biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZlbnRfaW5mbzsKQEAgLTU3OSw2ICs2
MDEsNyBAQCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQi
LCBvbl90aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmlu
aXNoZWQiLCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRf
Y2hhbmdlZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAt
PmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0
LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIs
ICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJ
bmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAko
cmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVh
dHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTQ1Miw0ICs0NTMsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29z
ZUljb25Gb3JGaWxlcwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBW
aWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKSBjb25zdAoreworICAgIEVpbmFfQm9vbCB1c2Vy
U2NhbGFibGU7CisKKyAgICB1c2VyU2NhbGFibGUgPSAoaW50KWFyZ3VtZW50cy51c2VyU2NhbGFi
bGUgPT0gMSA/IEVJTkFfVFJVRSA6IEVJTkFfRkFMU0U7CisgICAgZXdrX3ZpZXdfdmlld3BvcnRf
c2V0KG1fdmlldywgKGludClhcmd1bWVudHMud2lkdGgsIChpbnQpYXJndW1lbnRzLmhlaWdodCwg
YXJndW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRz
Lm1heGltdW1TY2FsZSwgdXNlclNjYWxhYmxlKTsKK30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAkocmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTQgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewogICAgICAgICBFaW5hX0Jvb2wgcmVzaXphYmxlX3RleHRhcmVhczoxOwogICAgICAgICBF
aW5hX0Jvb2wgcHJpdmF0ZV9icm93c2luZzoxOwogICAgICAgICBFaW5hX0Jvb2wgY2FyZXRfYnJv
d3Npbmc6MTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludCB3OworICAgICAgICAg
ICAgaW50IGg7CisgICAgICAgICAgICBmbG9hdCBpbml0X3NjYWxlOworICAgICAgICAgICAgZmxv
YXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOworICAgICAgICAgICAg
RWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB2aWV3cG9ydDsKICAgICB9IHNl
dHRpbmdzOwogICAgIHN0cnVjdCB7CiAgICAgICAgIHN0cnVjdCB7CkBAIC01NzQsNiArNTgyLDkg
QEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgIHByaXYtPnNl
dHRpbmdzLnByaXZhdGVfYnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRfYnJvd3NpbmcgPSBwcml2
LT5wYWdlX3NldHRpbmdzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogCisgICAgcHJpdi0+c2V0
dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gWk9PTV9NSU47CisgICAgcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQubWF4X3NjYWxlID0gWk9PTV9NQVg7CisKICAgICBwcml2LT5tYWluX2ZyYW1lID0g
X2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKICAgICBpZiAoIXBy
aXYtPm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgbWFp
biBmcmFtZS4iKTsKQEAgLTE3NTYsMTIgKzE3NjcsMTggQEAgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fc2V0KEV2YXNfT2JqZWN0KgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFw
aS0+em9vbV9zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChk
b3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2Nh
bGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKICAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChk
b3VibGUpem9vbSk7CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1p
bl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJs
ZSlwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRp
bmdzLnZpZXdwb3J0Lm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAl
ZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTgyNiwx
MiArMTg0MywxOCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iCiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5B
X0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworCisg
ICAgaWYgKCFwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlKSB7CisgICAgICAg
IFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworCisg
ICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUpIHsKKyAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICB9CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhf
c2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUp
cHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE5NzQsMTIgKzE5OTcsMTcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7CiAK
LSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8
ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworICAgIGlmICghcHJp
di0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJT
Y2FsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisK
KyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSkgeworICAg
ICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5n
cy52aWV3cG9ydC5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigi
em9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20p
OworICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlKSB7Cisg
ICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRp
bmdzLnZpZXdwb3J0Lm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CiAgICAgfQogCkBAIC0zNjkyLDMgKzM3MjAsODggQEAgdm9pZCBld2tfdmlld19k
b3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZQogICAgIERCRygidmlldz0lcCIsIG8pOwogICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3du
bG9hZCk7CiB9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoZSB2aWV3IGZpbmQg
dmlld3BvcnQgbWV0YSB0YWcuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdp
ZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbFNj
YWxlIHZhbHVlCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW1TY2FsZSB2YWx1ZQorICogQHBh
cmFtIG1pbl9zY2FsZSBtaW5pbXVtU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxl
IHVzZXJzY2FsYWJsZSBmbGFnLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInZpZXdwb3J0LGNoYW5n
ZWQiIHdpdGggYXJndW1lbnRzIG9mIHZpZXdwb3J0LgorICovCit2b2lkIGV3a192aWV3X3ZpZXdw
b3J0X3NldChFdmFzX09iamVjdCAqbywgaW50IHcsIGludCBoLCBmbG9hdCBpbml0X3NjYWxlLCBm
bG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2FsZSwgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC53ID0gdzsKKyAgICBwcml2
LT5zZXR0aW5ncy52aWV3cG9ydC5oID0gaDsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5p
bml0X3NjYWxlID0gaW5pdF9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5f
c2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxl
ID0gbWF4X3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGUg
PSB1c2VyX3NjYWxhYmxlOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAidmlld3BvcnQsY2hhbmdlZCIsIDApOworfSAKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdl
dCBkYXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBA
cGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxl
IGluaXRpYWwgU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2
YWx1ZQorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVtIFNjYWxlIHZhbHVlCisgKiBAcGFyYW0g
dXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIGZsYWcuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmll
d3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcsIGludCogaCwgZmxvYXQqIGluaXRfc2Nh
bGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIEVpbmFfQm9vbCogdXNlcl9z
Y2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUKHNkLCBwcml2KTsKKyAgIAorICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQu
dzsKKyAgICAqaCA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lmg7CisgICAgKmluaXRfc2NhbGUg
PSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlOworICAgICptYXhfc2NhbGUgPSBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgKm1pbl9zY2FsZSA9IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICAqdXNlcl9zY2FsYWJsZSA9IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0IGN1cnJl
bnQgem9vbSByYW5nZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIG1pbl9zY2Fs
ZSBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UKKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11
bSB2YWx1ZSBvZiB6b29tIHJhbmdlCisgKi8KK3ZvaWQgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQo
RXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKQoreworICAg
IEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOwor
ICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKK30KKwor
LyoqCisgKiBTZXQgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisg
KiBAcGFyYW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gZW5hYmxl
IHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8KK3ZvaWQgZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJs
ZSA9IHVzZXJfc2NhbGFibGU7Cit9CkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHJldmlzaW9uIDYwNzQyKQor
KysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1
MSwxMSBAQCBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhCiBFQVBJIEVp
bmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJv
X3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3Qg
KmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKK0VBUEkgdm9pZCBld2tfdmlld192
aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB3LCBpbnQgaCwgZmxvYXQgaW5pdF9zY2Fs
ZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKQorRUFQSSB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2dldChFdmFzX09iamVjdCAqbywgaW50
KiB3LCBpbnQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlLCBmbG9hdCog
bWluX3NjYWxlLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCitFQVBJIHZvaWQgZXdrX3ZpZXdf
em9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4
X3NjYWxlKTsKK0VBUEkgdm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58330</attachid>
            <date>2010-06-09 23:01:19 -0700</date>
            <delta_ts>2010-06-14 07:17:26 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-5</desc>
            <filename>viewport_efl.patch-5</filename>
            <type>text/plain</type>
            <size>11695</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjA5MzIpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTAtMDYtMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVk
KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X3NldCk6CisgICAgICAgIChld2tfdmlld192
aWV3cG9ydF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3Zp
ZXcuaDoKKworCiAyMDEwLTA2LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4ODkuCkluZGV4
OiBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MDc0MikKKysrIFdlYktpdC9lZmwvRVdl
YkxhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogCiAjZGVm
aW5lIERFRkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYw
MAorI2RlZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQs
IGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTM0Niw2ICszNDcsMjcgQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEs
IEV2YQogfQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIGludCB3
LCBoOworICAgIGZsb2F0IGluaXRTY2FsZSwgbWluU2NhbGUsIG1heFNjYWxlOworICAgIEVpbmFf
Qm9vbCB1c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3cG9ydF9nZXQod2Vidmlldywg
JncsICZoLCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2FsZSwgJnVzZXJTY2FsYWJsZSk7
CisKKyAgICB3ID0gKHcgPT0gLTEpID8gREVGQVVMVF9XSURUSCA6IHc7CisgICAgaCA9IChoID09
IC0xKSA/IERFRkFVTFRfSEVJR0hUIDogaDsKKyAgICBpbml0U2NhbGUgPSAoKGludClpbml0U2Nh
bGUgPT0gLTEpID8gREVGQVVMVF9TQ0FMRSA6IGluaXRTY2FsZTsKKyAgICBtaW5TY2FsZSA9ICgo
aW50KW1pblNjYWxlID09IC0xKSA/IERFRkFVTFRfU0NBTEUgOiBtaW5TY2FsZTsgCisgICAgbWF4
U2NhbGUgPSAoKGludCltYXhTY2FsZSA9PSAtMSkgPyBERUZBVUxUX1NDQUxFIDogbWF4U2NhbGU7
CisKKyAgICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQod2VidmlldywgdywgaCk7Cisg
ICAgZXdrX3ZpZXdfem9vbV9zZXQod2VidmlldywgaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBld2tf
dmlld196b29tX3JhbmdlX3NldCh3ZWJ2aWV3LCBtaW5TY2FsZSwgbWF4c1NhbGUpOworICAgIGV3
a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KHdlYnZpZXcsIHVzZXJTY2FsYWJsZSk7Cit9CisKK3N0
YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93
biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZlbnRfaW5mbzsKQEAgLTU3OSw2ICs2
MDEsNyBAQCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQi
LCBvbl90aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmlu
aXNoZWQiLCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRf
Y2hhbmdlZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAt
PmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0
LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIs
ICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJ
bmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAko
cmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVh
dHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTQ1Miw0ICs0NTMsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29z
ZUljb25Gb3JGaWxlcwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBW
aWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKSBjb25zdAoreworICAgIEVpbmFfQm9vbCB1c2Vy
U2NhbGFibGU7CisKKyAgICB1c2VyU2NhbGFibGUgPSAoaW50KWFyZ3VtZW50cy51c2VyU2NhbGFi
bGUgPT0gMSA/IEVJTkFfVFJVRSA6IEVJTkFfRkFMU0U7CisgICAgZXdrX3ZpZXdfdmlld3BvcnRf
c2V0KG1fdmlldywgKGludClhcmd1bWVudHMud2lkdGgsIChpbnQpYXJndW1lbnRzLmhlaWdodCwg
YXJndW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRz
Lm1heGltdW1TY2FsZSwgdXNlclNjYWxhYmxlKTsKK30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAkocmV2aXNpb24gNjA3NDIpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTQgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewogICAgICAgICBFaW5hX0Jvb2wgcmVzaXphYmxlX3RleHRhcmVhczoxOwogICAgICAgICBF
aW5hX0Jvb2wgcHJpdmF0ZV9icm93c2luZzoxOwogICAgICAgICBFaW5hX0Jvb2wgY2FyZXRfYnJv
d3Npbmc6MTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludCB3OworICAgICAgICAg
ICAgaW50IGg7CisgICAgICAgICAgICBmbG9hdCBpbml0X3NjYWxlOworICAgICAgICAgICAgZmxv
YXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOworICAgICAgICAgICAg
RWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB2aWV3cG9ydDsKICAgICB9IHNl
dHRpbmdzOwogICAgIHN0cnVjdCB7CiAgICAgICAgIHN0cnVjdCB7CkBAIC01NzQsNiArNTgyLDkg
QEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgIHByaXYtPnNl
dHRpbmdzLnByaXZhdGVfYnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRfYnJvd3NpbmcgPSBwcml2
LT5wYWdlX3NldHRpbmdzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogCisgICAgcHJpdi0+c2V0
dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gWk9PTV9NSU47CisgICAgcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQubWF4X3NjYWxlID0gWk9PTV9NQVg7CisKICAgICBwcml2LT5tYWluX2ZyYW1lID0g
X2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKICAgICBpZiAoIXBy
aXYtPm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgbWFp
biBmcmFtZS4iKTsKQEAgLTE3NTYsMTIgKzE3NjcsMTggQEAgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fc2V0KEV2YXNfT2JqZWN0KgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFw
aS0+em9vbV9zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChk
b3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2Nh
bGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKICAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChk
b3VibGUpem9vbSk7CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1p
bl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJs
ZSlwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRp
bmdzLnZpZXdwb3J0Lm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAl
ZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTgyNiwx
MiArMTg0MywxOCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iCiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5B
X0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworCisg
ICAgaWYgKCFwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlKSB7CisgICAgICAg
IFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworCisg
ICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUpIHsKKyAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICB9CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhf
c2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUp
cHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE5NzQsMTIgKzE5OTcsMTcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7CiAK
LSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8
ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworICAgIGlmICghcHJp
di0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJT
Y2FsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisK
KyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSkgeworICAg
ICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5n
cy52aWV3cG9ydC5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigi
em9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20p
OworICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlKSB7Cisg
ICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRp
bmdzLnZpZXdwb3J0Lm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CiAgICAgfQogCkBAIC0zNjkyLDMgKzM3MjAsODggQEAgdm9pZCBld2tfdmlld19k
b3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZQogICAgIERCRygidmlldz0lcCIsIG8pOwogICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3du
bG9hZCk7CiB9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoZSB2aWV3IGZpbmQg
dmlld3BvcnQgbWV0YSB0YWcuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdp
ZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbFNj
YWxlIHZhbHVlCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW1TY2FsZSB2YWx1ZQorICogQHBh
cmFtIG1pbl9zY2FsZSBtaW5pbXVtU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxl
IHVzZXJzY2FsYWJsZSBmbGFnLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInZpZXdwb3J0LGNoYW5n
ZWQiIHdpdGggYXJndW1lbnRzIG9mIHZpZXdwb3J0LgorICovCit2b2lkIGV3a192aWV3X3ZpZXdw
b3J0X3NldChFdmFzX09iamVjdCAqbywgaW50IHcsIGludCBoLCBmbG9hdCBpbml0X3NjYWxlLCBm
bG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2FsZSwgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC53ID0gdzsKKyAgICBwcml2
LT5zZXR0aW5ncy52aWV3cG9ydC5oID0gaDsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5p
bml0X3NjYWxlID0gaW5pdF9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5f
c2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxl
ID0gbWF4X3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGUg
PSB1c2VyX3NjYWxhYmxlOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAidmlld3BvcnQsY2hhbmdlZCIsIDApOworfSAKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdl
dCBkYXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBA
cGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxl
IGluaXRpYWwgU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2
YWx1ZQorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVtIFNjYWxlIHZhbHVlCisgKiBAcGFyYW0g
dXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIGZsYWcuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmll
d3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcsIGludCogaCwgZmxvYXQqIGluaXRfc2Nh
bGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIEVpbmFfQm9vbCogdXNlcl9z
Y2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUKHNkLCBwcml2KTsKKyAgIAorICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQu
dzsKKyAgICAqaCA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lmg7CisgICAgKmluaXRfc2NhbGUg
PSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlOworICAgICptYXhfc2NhbGUgPSBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgKm1pbl9zY2FsZSA9IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICAqdXNlcl9zY2FsYWJsZSA9IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0IGN1cnJl
bnQgem9vbSByYW5nZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIG1pbl9zY2Fs
ZSBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UKKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11
bSB2YWx1ZSBvZiB6b29tIHJhbmdlCisgKi8KK3ZvaWQgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQo
RXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKQoreworICAg
IEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOwor
ICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKK30KKwor
LyoqCisgKiBTZXQgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisg
KiBAcGFyYW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gZW5hYmxl
IHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8KK3ZvaWQgZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJs
ZSA9IHVzZXJfc2NhbGFibGU7Cit9CkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHJldmlzaW9uIDYwNzQyKQor
KysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1
MSwxMSBAQCBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhCiBFQVBJIEVp
bmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJv
X3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3Qg
KmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKK0VBUEkgdm9pZCBld2tfdmlld192
aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB3LCBpbnQgaCwgZmxvYXQgaW5pdF9zY2Fs
ZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKTsKK0VBUEkgdm9pZCBld2tfdmlld192aWV3cG9ydF9nZXQoRXZhc19PYmplY3QgKm8sIGlu
dCogdywgaW50KiBoLCBmbG9hdCogaW5pdF9zY2FsZSwgZmxvYXQqIG1heF9zY2FsZSwgZmxvYXQq
IG1pbl9zY2FsZSwgRWluYV9Cb29sKiB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgdm9pZCBld2tfdmll
d196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBt
YXhfc2NhbGUpOworRUFQSSB2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58643</attachid>
            <date>2010-06-14 07:17:26 -0700</date>
            <delta_ts>2010-06-14 07:23:12 -0700</delta_ts>
            <desc> viewport-patch-for-eflwebkit-6</desc>
            <filename>viewport-patch-6.txt</filename>
            <type>text/plain</type>
            <size>16158</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjExMjApCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTAtMDYtMTQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaDoKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAg
ICAgICAqIGVmbC9ld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBlZmwvZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tfdmlld196
b29tX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2luaXRfbGF5b3V0
X2NvbXBsZXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29tcGxldGVk
X2dldCk6CisgICAgICAgIChld2tfdmlld192aWV3cG9ydF9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdmlld3BvcnRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KToKKyAgICAgICAgKiBlZmwvZXdrL2V3
a192aWV3Lmg6CisKIDIwMTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJL
aXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9FV2Vi
TGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MTExNikKKysrIFdlYktpdC9lZmwvRVdlYkxhdW5j
aGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogCiAjZGVmaW5lIERF
RkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYwMAorI2Rl
ZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQsIGFyZ3Mu
Li4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTM0
Niw2ICszNDcsMjcgQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEsIEV2YQog
fQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIGludCB3LCBoOwor
ICAgIGZsb2F0IGluaXRTY2FsZSwgbWluU2NhbGUsIG1heFNjYWxlOworICAgIEVpbmFfQm9vbCB1
c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3cG9ydF9nZXQod2VidmlldywgJncsICZo
LCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2FsZSwgJnVzZXJTY2FsYWJsZSk7CisKKyAg
ICB3ID0gKHcgPT0gLTEpID8gREVGQVVMVF9XSURUSCA6IHc7CisgICAgaCA9IChoID09IC0xKSA/
IERFRkFVTFRfSEVJR0hUIDogaDsKKyAgICBpbml0U2NhbGUgPSAoKGludClpbml0U2NhbGUgPT0g
LTEpID8gREVGQVVMVF9TQ0FMRSA6IGluaXRTY2FsZTsKKyAgICBtaW5TY2FsZSA9ICgoaW50KW1p
blNjYWxlID09IC0xKSA/IERFRkFVTFRfU0NBTEUgOiBtaW5TY2FsZTsgCisgICAgbWF4U2NhbGUg
PSAoKGludCltYXhTY2FsZSA9PSAtMSkgPyBERUZBVUxUX1NDQUxFIDogbWF4U2NhbGU7CisKKyAg
ICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQod2VidmlldywgdywgaCk7CisgICAgZXdr
X3ZpZXdfem9vbV9zZXQod2VidmlldywgaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBld2tfdmlld196
b29tX3JhbmdlX3NldCh3ZWJ2aWV3LCBtaW5TY2FsZSwgbWF4U2NhbGUpOworICAgIGV3a192aWV3
X3VzZXJfc2NhbGFibGVfc2V0KHdlYnZpZXcsIHVzZXJTY2FsYWJsZSk7Cit9CisKK3N0YXRpYyB2
b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2
aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYg
PSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZlbnRfaW5mbzsKQEAgLTU3OSw2ICs2MDEsNyBA
QCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQiLCBvbl90
aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChh
cHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmluaXNoZWQi
LCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRfY2hhbmdl
ZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dz
ZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0LCBhcHAp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29s
YmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJbmRleDog
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNp
b24gNjExMTYpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMu
aCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTQ1Miw0ICs0NTMsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29zZUljb25G
b3JGaWxlcwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZs
OjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9y
dEFyZ3VtZW50cyYgYXJndW1lbnRzKSBjb25zdAoreworICAgIEVpbmFfQm9vbCB1c2VyU2NhbGFi
bGU7CisKKyAgICB1c2VyU2NhbGFibGUgPSAoaW50KWFyZ3VtZW50cy51c2VyU2NhbGFibGUgPT0g
MSA/IEVJTkFfVFJVRSA6IEVJTkFfRkFMU0U7CisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1f
dmlldywgKGludClhcmd1bWVudHMud2lkdGgsIChpbnQpYXJndW1lbnRzLmhlaWdodCwgYXJndW1l
bnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGlt
dW1TY2FsZSwgdXNlclNjYWxhYmxlKTsKKyAgICBld2tfdmlld19pbml0X2xheW91dF9jb21wbGV0
ZWRfc2V0KG1fdmlldywgRUlOQV9UUlVFKTsKK30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShyZXZpc2lvbiA2MTExNikKKysrIFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBp
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZywgMHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hv
b3Nlcj4pOwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhG
cmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0Owor
CiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKICAgICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CiB9
OwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAJKHJldmlzaW9uIDYxMTE2KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtNTgwLDYgKzU4MSw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkQ28KICAgICAgICAgcmV0dXJuOwogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3Zp
ZXcsIDApOwogICAgIGV3a192aWV3X3VyaV9jaGFuZ2VkKG1fdmlldyk7CisKKyAgICBld2tfdmll
d19pbml0X2xheW91dF9jb21wbGV0ZWRfc2V0KG1fdmlldywgRUlOQV9GQUxTRSk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkK
QEAgLTU5NSw3ICs1OTgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIWV3
a192aWV3X2luaXRfbGF5b3V0X2NvbXBsZXRlZF9nZXQobV92aWV3KSkgeworICAgICAgICBWaWV3
cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgICAgIGV3a192aWV3X3ZpZXdwb3J0X3NldCht
X3ZpZXcsIChpbnQpYXJndW1lbnRzLndpZHRoLCAoaW50KWFyZ3VtZW50cy5oZWlnaHQsIGFyZ3Vt
ZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50cy5taW5pbXVtU2NhbGUsIGFyZ3VtZW50cy5tYXhp
bXVtU2NhbGUsIGFyZ3VtZW50cy51c2VyU2NhbGFibGUpOworICAgIH0KIH0KIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hTaG93KCkKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAko
cmV2aXNpb24gNjExMTYpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw2ICs5MywxMCBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBld2tfdmllCiAKIHZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2Jq
ZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50IHNlbGVjdGVkLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIAordm9pZCAgICAgICAgICAgICBld2tfdmll
d192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB3LCBpbnQgaCwgZmxvYXQgaW5pdF9z
Y2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlKTsKK3ZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29tcGxldGVk
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGluaXRfbGF5b3V0KTsKK0VpbmFfQm9vbCAg
ICAgICAgZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29tcGxldGVkX2dldChFdmFzX09iamVjdCAqbyk7
CisKIEV3a19IaXN0b3J5ICAgICAgKmV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3QgKmhpc3RvcnkpOwogdm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfZnJlZShFd2tf
SGlzdG9yeSAqaGlzdG9yeSk7CiAKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDYxMTE2
KQorKysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDIwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWlu
YV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVf
YnJvd3Npbmc6MTsKICAgICAgICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAg
IEVpbmFfQm9vbCBpbml0X2xheW91dF9jb21wbGV0ZWQ6MTsKKyAgICAgICAgRWluYV9Cb29sIHVz
ZXJfc2NhbGFibGU6MTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludCB3OworICAg
ICAgICAgICAgaW50IGg7CisgICAgICAgICAgICBmbG9hdCBpbml0X3NjYWxlOworICAgICAgICAg
ICAgZmxvYXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOworICAgICAg
ICAgICAgRWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB2aWV3cG9ydDsKKyAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAgICAg
IGZsb2F0IG1heF9zY2FsZTsKKyAgICAgICAgfSB6b29tX3JhbmdlOwogICAgIH0gc2V0dGluZ3M7
CiAgICAgc3RydWN0IHsKICAgICAgICAgc3RydWN0IHsKQEAgLTU3NCw2ICs1ODgsOSBAQCBzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJpdi0+c2V0dGluZ3Mu
cHJpdmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZyA9IHByaXYtPnBhZ2Vf
c2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAKKyAgICBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1pbl9zY2FsZSA9IFpPT01fTUlOOworICAgIHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlID0gWk9PTV9NQVg7CisKICAgICBwcml2LT5tYWluX2ZyYW1lID0gX2V3
a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKICAgICBpZiAoIXByaXYt
Pm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgbWFpbiBm
cmFtZS4iKTsKQEAgLTE3NTQsMTQgKzE3NzEsMjIgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplYwogRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0
KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc2QtPmFwaS0+em9vbV9zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9PTV9N
SU4pIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9P
TV9NSU4sIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnVzZXJfc2Nh
bGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5n
cy56b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAl
ZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRv
dWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6
b29tID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIs
IChkb3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2Fs
ZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBA
IC0xODI0LDE0ICsxODQ5LDIyIEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9zZXQKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01J
TikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09N
X01JTiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3MudXNlcl9zY2Fs
YWJsZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwogICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAg
ICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRv
dWJsZSl6b29tKTsKKworICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
aW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3Vi
bGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7Cisg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKyAgICBpZiAoem9vbSA+IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxl
LCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAg
LTE5NzQsMTIgKzIwMDcsMTcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0
KEV2YQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZB
TFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93
ZWFrX3NldCwgRUlOQV9GQUxTRSk7CiAKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAg
ICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91
YmxlKXpvb20pOworICAgIGlmICghcHJpdi0+c2V0dGluZ3MudXNlcl9zY2FsYWJsZSkgeworICAg
ICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91
YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwog
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01B
WCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09N
X01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYi
LCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpv
b20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTM2OTIsMyArMzcz
MCwxMTggQEAgdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZQogICAgIERC
Rygidmlldz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
ImRvd25sb2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7CiB9CisKKy8qKgorICogQGludGVybmFsCisg
KiBTZXQgaWYgaW5pdGlhbCBsYXlvdXQgaXMgY29tcGxldGVkLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcuCisgKiBAcGFyYW0gY29tcGxldGVkIEBjIEVJTkFfVFJVRSBpZiBpbml0aWFsX2xheW91dF9j
b21wbGV0ZWQgaXMgZmluaXNoZWQuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29t
cGxldGVkX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGNvbXBsZXRlZCkKK3sKKyAgICBF
V0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsK
KyAgCisgICAgcHJpdi0+c2V0dGluZ3MuaW5pdF9sYXlvdXRfY29tcGxldGVkID0gY29tcGxldGVk
OworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogR2V0IGlmIGluaXRpYWwgbGF5b3V0IGlzIGNv
bXBsZXRlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIGNvbXBsZXRlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisgKi8KK0VpbmFfQm9vbCBl
d2tfdmlld19pbml0X2xheW91dF9jb21wbGV0ZWRfZ2V0KEV2YXNfT2JqZWN0ICpvKQoreworICAg
IEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OworICAgICAgCisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmluaXRfbGF5b3V0X2NvbXBsZXRl
ZDsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZpZXdwb3J0IHdhcyBj
aGFuZ2VkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBw
YXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWxTY2FsZSB2YWx1ZQor
ICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtaW5fc2Nh
bGUgbWluaW11bVNjYWxlIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2Vyc2NhbGFi
bGUgZmxhZy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5v
IHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgdywgaW50IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxv
YXQgbWluX3NjYWxlLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0LncgPSB3OworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0
LmggPSBoOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LmluaXRfc2NhbGUgPSBpbml0X3Nj
YWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSA9IG1pbl9zY2FsZTsK
KyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUgPSBtYXhfc2NhbGU7CisgICAg
cHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZSA9IHVzZXJfc2NhbGFibGU7CisK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ2aWV3cG9ydCxjaGFuZ2Vk
IiwgMCk7Cit9IAorCisvKioKKyAqIEdldCBkYXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoK
KyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdo
dC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWwgU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBt
YXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2YWx1ZQorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVt
IFNjYWxlIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIGZsYWcu
CisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcs
IGludCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5f
c2NhbGUsIEVpbmFfQm9vbCogdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKyAgIAorICAgIGlmICh3
KSAqdyA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lnc7CisgICAgaWYgKGgpICpoID0gcHJpdi0+
c2V0dGluZ3Mudmlld3BvcnQuaDsKKyAgICBpZiAoaW5pdF9zY2FsZSkgKmluaXRfc2NhbGUgPSBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlOworICAgIGlmIChtYXhfc2NhbGUpICpt
YXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgaWYgKG1p
bl9zY2FsZSkgKm1pbl9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsK
KyAgICBpZiAodXNlcl9zY2FsYWJsZSkgKnVzZXJfc2NhbGFibGUgPSBwcml2LT5zZXR0aW5ncy52
aWV3cG9ydC51c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIFNldCBjdXJyZW50IHpvb20gcmFu
Z2UuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2
YWx1ZSBvZiB6b29tIHJhbmdlCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFsdWUgb2Yg
em9vbSByYW5nZQorICovCit2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0
KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlID0gbWF4X3NjYWxlOworfQorCisvKioKKyAq
IFNldCBpZiB6b29tIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJh
bSB1c2VyX3NjYWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBlbmFibGUgem9vbS4g
SXQgZGVmYXVsdHMKKyAqIHRvIEBjIEVJTkFfVFJVRS4KKyAqLwordm9pZCBld2tfdmlld191c2Vy
X3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJs
ZTsKK30KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuaAkocmV2aXNpb24gNjExMTYpCisrKyBXZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIGV4dGVybiAiQyIg
ewogICogIC0gImRvd25sb2FkLHJlcXVlc3QiLCBFd2tfRG93bmxvYWQ6IHJlcG9ydHMgYSBkb3du
bG9hZCBpcyBiZWluZyByZXF1ZXN0ZWQKICAqICAgIGFuZCBhcyBhcmd1bWVudHMgZ2l2ZXMgaXRz
IGRldGFpbHMuCiAgKiAgLSAiaWNvbixyZWNlaXZlZCIsIHZvaWQ6IG1haW4gZnJhbWUgcmVjZWl2
ZWQgYW4gaWNvbi4KKyAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgdm9pZDogUmVwb3J0IHRoYXQg
dmlld3BvcnQgd2FzIGNoYW5nZWQuIAogICovCiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19T
bWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CkBAIC00NTEsNiArNDUyLDEwIEBAIEVBUEkg
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGEKIEVBUEkgRWluYV9Cb29sIGV3a192
aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0
IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2Nv
bnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlICphcmVhKTsKIAorRUFQSSB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2dldChF
dmFzX09iamVjdCAqbywgaW50KiB3LCBpbnQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCog
bWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpOwor
RUFQSSB2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBt
aW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2Fs
YWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58645</attachid>
            <date>2010-06-14 07:23:12 -0700</date>
            <delta_ts>2010-06-16 02:58:48 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-6</desc>
            <filename>viewport-patch-6.txt</filename>
            <type>text/plain</type>
            <size>16212</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjExMjApCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTAtMDYtMTQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorCisgICAgICAgICog
ZWZsL0VXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKToK
KyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaDoKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAg
ICAgICAqIGVmbC9ld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBlZmwvZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tfdmlld196
b29tX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2luaXRfbGF5b3V0
X2NvbXBsZXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29tcGxldGVk
X2dldCk6CisgICAgICAgIChld2tfdmlld192aWV3cG9ydF9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdmlld3BvcnRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KToKKyAgICAgICAgKiBlZmwvZXdrL2V3
a192aWV3Lmg6CisKIDIwMTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJL
aXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9FV2Vi
TGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MTExNikKKysrIFdlYktpdC9lZmwvRVdlYkxhdW5j
aGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogCiAjZGVmaW5lIERF
RkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYwMAorI2Rl
ZmluZSBERUZBVUxUX1NDQUxFICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQsIGFyZ3Mu
Li4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTM0
Niw2ICszNDcsMjcgQEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEsIEV2YQog
fQogCiBzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIGludCB3LCBoOwor
ICAgIGZsb2F0IGluaXRTY2FsZSwgbWluU2NhbGUsIG1heFNjYWxlOworICAgIEVpbmFfQm9vbCB1
c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3cG9ydF9nZXQod2VidmlldywgJncsICZo
LCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2FsZSwgJnVzZXJTY2FsYWJsZSk7CisKKyAg
ICB3ID0gKHcgPT0gLTEpID8gREVGQVVMVF9XSURUSCA6IHc7CisgICAgaCA9IChoID09IC0xKSA/
IERFRkFVTFRfSEVJR0hUIDogaDsKKyAgICBpbml0U2NhbGUgPSAoKGludClpbml0U2NhbGUgPT0g
LTEpID8gREVGQVVMVF9TQ0FMRSA6IGluaXRTY2FsZTsKKyAgICBtaW5TY2FsZSA9ICgoaW50KW1p
blNjYWxlID09IC0xKSA/IERFRkFVTFRfU0NBTEUgOiBtaW5TY2FsZTsgCisgICAgbWF4U2NhbGUg
PSAoKGludCltYXhTY2FsZSA9PSAtMSkgPyBERUZBVUxUX1NDQUxFIDogbWF4U2NhbGU7CisKKyAg
ICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQod2VidmlldywgdywgaCk7CisgICAgZXdr
X3ZpZXdfem9vbV9zZXQod2VidmlldywgaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBld2tfdmlld196
b29tX3JhbmdlX3NldCh3ZWJ2aWV3LCBtaW5TY2FsZSwgbWF4U2NhbGUpOworICAgIGV3a192aWV3
X3VzZXJfc2NhbGFibGVfc2V0KHdlYnZpZXcsIHVzZXJTY2FsYWJsZSk7Cit9CisKK3N0YXRpYyB2
b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2
aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYg
PSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKikgZXZlbnRfaW5mbzsKQEAgLTU3OSw2ICs2MDEsNyBA
QCBicm93c2VyQ3JlYXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQiLCBvbl90
aXRsZV9jaGFuZ2VkLCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChh
cHAtPmJyb3dzZXIsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmluaXNoZWQi
LCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRfY2hhbmdl
ZCwgYXBwKTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dz
ZXIsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0LCBhcHAp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29s
YmFycyx2aXNpYmxlLGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJbmRleDog
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNp
b24gNjExMTYpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMu
aCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTQ1Miw0ICs0NTMsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29zZUljb25G
b3JGaWxlcwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZs
OjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9y
dEFyZ3VtZW50cyYgYXJndW1lbnRzKSBjb25zdAoreworICAgIEVpbmFfQm9vbCB1c2VyU2NhbGFi
bGU7CisKKyAgICB1c2VyU2NhbGFibGUgPSAoaW50KWFyZ3VtZW50cy51c2VyU2NhbGFibGUgPT0g
MSA/IEVJTkFfVFJVRSA6IEVJTkFfRkFMU0U7CisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1f
dmlldywgKGludClhcmd1bWVudHMud2lkdGgsIChpbnQpYXJndW1lbnRzLmhlaWdodCwgYXJndW1l
bnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGlt
dW1TY2FsZSwgdXNlclNjYWxhYmxlKTsKKyAgICBld2tfdmlld19pbml0X2xheW91dF9jb21wbGV0
ZWRfc2V0KG1fdmlldywgRUlOQV9UUlVFKTsKK30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShyZXZpc2lvbiA2MTExNikKKysrIFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBp
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZywgMHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hv
b3Nlcj4pOwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhG
cmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0Owor
CiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKICAgICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CiB9
OwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAJKHJldmlzaW9uIDYxMTE2KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtNTgwLDYgKzU4MSw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkQ28KICAgICAgICAgcmV0dXJuOwogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3Zp
ZXcsIDApOwogICAgIGV3a192aWV3X3VyaV9jaGFuZ2VkKG1fdmlldyk7CisKKyAgICBld2tfdmll
d19pbml0X2xheW91dF9jb21wbGV0ZWRfc2V0KG1fdmlldywgRUlOQV9GQUxTRSk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkK
QEAgLTU5NSw3ICs1OTgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIWV3
a192aWV3X2luaXRfbGF5b3V0X2NvbXBsZXRlZF9nZXQobV92aWV3KSkgeworICAgICAgICBWaWV3
cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgICAgIGV3a192aWV3X3ZpZXdwb3J0X3NldCht
X3ZpZXcsIChpbnQpYXJndW1lbnRzLndpZHRoLCAoaW50KWFyZ3VtZW50cy5oZWlnaHQsIGFyZ3Vt
ZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50cy5taW5pbXVtU2NhbGUsIGFyZ3VtZW50cy5tYXhp
bXVtU2NhbGUsIGFyZ3VtZW50cy51c2VyU2NhbGFibGUpOworICAgIH0KIH0KIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hTaG93KCkKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAko
cmV2aXNpb24gNjExMTYpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw2ICs5MywxMCBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBld2tfdmllCiAKIHZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2Jq
ZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50IHNlbGVjdGVkLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIAordm9pZCAgICAgICAgICAgICBld2tfdmll
d192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB3LCBpbnQgaCwgZmxvYXQgaW5pdF9z
Y2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlKTsKK3ZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29tcGxldGVk
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGluaXRfbGF5b3V0KTsKK0VpbmFfQm9vbCAg
ICAgICAgZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29tcGxldGVkX2dldChFdmFzX09iamVjdCAqbyk7
CisKIEV3a19IaXN0b3J5ICAgICAgKmV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3QgKmhpc3RvcnkpOwogdm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfZnJlZShFd2tf
SGlzdG9yeSAqaGlzdG9yeSk7CiAKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDYxMTE2
KQorKysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDIwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWlu
YV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVf
YnJvd3Npbmc6MTsKICAgICAgICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAg
IEVpbmFfQm9vbCBpbml0X2xheW91dF9jb21wbGV0ZWQ6MTsKKyAgICAgICAgRWluYV9Cb29sIHVz
ZXJfc2NhbGFibGU6MTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludCB3OworICAg
ICAgICAgICAgaW50IGg7CisgICAgICAgICAgICBmbG9hdCBpbml0X3NjYWxlOworICAgICAgICAg
ICAgZmxvYXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOworICAgICAg
ICAgICAgRWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB2aWV3cG9ydDsKKyAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAgICAg
IGZsb2F0IG1heF9zY2FsZTsKKyAgICAgICAgfSB6b29tX3JhbmdlOwogICAgIH0gc2V0dGluZ3M7
CiAgICAgc3RydWN0IHsKICAgICAgICAgc3RydWN0IHsKQEAgLTU3NCw2ICs1ODgsOSBAQCBzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJpdi0+c2V0dGluZ3Mu
cHJpdmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZyA9IHByaXYtPnBhZ2Vf
c2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAKKyAgICBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1pbl9zY2FsZSA9IFpPT01fTUlOOworICAgIHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlID0gWk9PTV9NQVg7CisKICAgICBwcml2LT5tYWluX2ZyYW1lID0gX2V3
a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKICAgICBpZiAoIXByaXYt
Pm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgbWFpbiBm
cmFtZS4iKTsKQEAgLTE3NTQsMTQgKzE3NzEsMjIgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplYwogRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0
KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc2QtPmFwaS0+em9vbV9zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9PTV9N
SU4pIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9P
TV9NSU4sIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnVzZXJfc2Nh
bGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKICAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChk
b3VibGUpem9vbSk7CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91
YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwor
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisgICAgaWYgKHpvb20gPiBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2Fs
ZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBA
IC0xODI0LDE0ICsxODQ5LDIyIEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9zZXQKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01J
TikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09N
X01JTiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3MudXNlcl9zY2Fs
YWJsZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdz
Lnpvb21fcmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVm
IDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91
YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpv
b20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwg
KGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoem9vbSA+IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxl
LCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAg
LTE5NzQsMTIgKzIwMDcsMTcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0
KEV2YQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZB
TFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93
ZWFrX3NldCwgRUlOQV9GQUxTRSk7CiAKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAg
ICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91
YmxlKXpvb20pOworICAgIGlmICghcHJpdi0+c2V0dGluZ3MudXNlcl9zY2FsYWJsZSkgeworICAg
ICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwogICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpv
b20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsK
KworICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsK
KyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0
dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgIH0KKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYi
LCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpv
b20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTM2OTIsMyArMzcz
MCwxMjQgQEAgdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZQogICAgIERC
Rygidmlldz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
ImRvd25sb2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7CiB9CisKKy8qKgorICogQGludGVybmFsCisg
KiBTZXQgaWYgaW5pdGlhbCBsYXlvdXQgaXMgY29tcGxldGVkLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcuCisgKiBAcGFyYW0gY29tcGxldGVkIEBjIEVJTkFfVFJVRSBpZiBpbml0aWFsX2xheW91dF9j
b21wbGV0ZWQgaXMgZmluaXNoZWQuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfaW5pdF9sYXlvdXRfY29t
cGxldGVkX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGNvbXBsZXRlZCkKK3sKKyAgICBF
V0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsK
KyAgCisgICAgcHJpdi0+c2V0dGluZ3MuaW5pdF9sYXlvdXRfY29tcGxldGVkID0gY29tcGxldGVk
OworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogR2V0IGlmIGluaXRpYWwgbGF5b3V0IGlzIGNv
bXBsZXRlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIGNvbXBsZXRlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisgKi8KK0VpbmFfQm9vbCBl
d2tfdmlld19pbml0X2xheW91dF9jb21wbGV0ZWRfZ2V0KEV2YXNfT2JqZWN0ICpvKQoreworICAg
IEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OworICAgICAgCisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmluaXRfbGF5b3V0X2NvbXBsZXRl
ZDsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZpZXdwb3J0IHdhcyBj
aGFuZ2VkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBw
YXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWxTY2FsZSB2YWx1ZQor
ICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtaW5fc2Nh
bGUgbWluaW11bVNjYWxlIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2Vyc2NhbGFi
bGUgZmxhZy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5v
IHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgdywgaW50IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxv
YXQgbWluX3NjYWxlLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0LncgPSB3OworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0
LmggPSBoOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LmluaXRfc2NhbGUgPSBpbml0X3Nj
YWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZSA9IG1pbl9zY2FsZTsK
KyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUgPSBtYXhfc2NhbGU7CisgICAg
cHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZSA9IHVzZXJfc2NhbGFibGU7CisK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ2aWV3cG9ydCxjaGFuZ2Vk
IiwgMCk7Cit9IAorCisvKioKKyAqIEdldCBkYXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoK
KyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdo
dC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWwgU2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBt
YXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2YWx1ZQorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVt
IFNjYWxlIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIGZsYWcu
CisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcs
IGludCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5f
c2NhbGUsIEVpbmFfQm9vbCogdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKyAgIAorICAgIGlmICh3
KQorICAgICAgICAqdyA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lnc7CisgICAgaWYgKGgpCisg
ICAgICAgICpoID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaDsKKyAgICBpZiAoaW5pdF9zY2Fs
ZSkKKyAgICAgICAgKmluaXRfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3Nj
YWxlOworICAgIGlmIChtYXhfc2NhbGUpCisgICAgICAgICptYXhfc2NhbGUgPSBwcml2LT5zZXR0
aW5ncy52aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1p
bl9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICBpZiAodXNl
cl9zY2FsYWJsZSkKKyAgICAgICAgKnVzZXJfc2NhbGFibGUgPSBwcml2LT5zZXR0aW5ncy52aWV3
cG9ydC51c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIFNldCBjdXJyZW50IHpvb20gcmFuZ2Uu
CisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2YWx1
ZSBvZiB6b29tIHJhbmdlCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFsdWUgb2Ygem9v
bSByYW5nZQorICovCit2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBv
LCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK3sKKyAgICBFV0tfVklFV19TRF9H
RVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlID0gbWF4X3NjYWxlOworfQorCisvKioKKyAqIFNl
dCBpZiB6b29tIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB1
c2VyX3NjYWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBlbmFibGUgem9vbS4gSXQg
ZGVmYXVsdHMKKyAqIHRvIEBjIEVJTkFfVFJVRS4KKyAqLwordm9pZCBld2tfdmlld191c2VyX3Nj
YWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJp
dik7CisKKyAgICBwcml2LT5zZXR0aW5ncy51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsK
K30KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaAkocmV2aXNpb24gNjExMTYpCisrKyBXZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIGV4dGVybiAiQyIgewog
ICogIC0gImRvd25sb2FkLHJlcXVlc3QiLCBFd2tfRG93bmxvYWQ6IHJlcG9ydHMgYSBkb3dubG9h
ZCBpcyBiZWluZyByZXF1ZXN0ZWQKICAqICAgIGFuZCBhcyBhcmd1bWVudHMgZ2l2ZXMgaXRzIGRl
dGFpbHMuCiAgKiAgLSAiaWNvbixyZWNlaXZlZCIsIHZvaWQ6IG1haW4gZnJhbWUgcmVjZWl2ZWQg
YW4gaWNvbi4KKyAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgdm9pZDogUmVwb3J0IHRoYXQgdmll
d3BvcnQgd2FzIGNoYW5nZWQuIAogICovCiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CkBAIC00NTEsNiArNDUyLDEwIEBAIEVBUEkgdm9p
ZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGEKIEVBUEkgRWluYV9Cb29sIGV3a192aWV3
X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlICphcmVhKTsKIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRl
bnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlICphcmVhKTsKIAorRUFQSSB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2dldChFdmFz
X09iamVjdCAqbywgaW50KiB3LCBpbnQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4
X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpOworRUFQ
SSB2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5f
c2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJs
ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58867</attachid>
            <date>2010-06-16 02:58:48 -0700</date>
            <delta_ts>2010-06-17 00:16:10 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-7</desc>
            <filename>viewport-patch-7.txt</filename>
            <type>text/plain</type>
            <size>18718</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjEyNDkpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTAtMDYtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAgICAgICAqIGVm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFuZ2VkJyBzaWduYWwu
CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKTogQWRkIGEgY2FsbGJhY2sgZnVuY3Rpb24g
Zm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAgICAoYnJvd3NlckNyZWF0
ZSk6IFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6IEltcGxlbWVudCBtZXRob2QgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiAgRGVmaW5l
IG1ldGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgYSBmdW5jdGlvbiB0byBz
ZXQgbGF5b3V0CisgICAgICAgIHdoZW4gd2Vic2l0ZSBkb2Vzbid0IGNvbnRhaW4gdmlld3BvcnQg
dGFnLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAgICAgICAqIGVmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OnNldEluaXRMYXlvdXRDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmdldEluaXRMYXlvdXRDb21wbGV0ZWQpOgorICAg
ICAgICAqIGVmbC9ld2svZXdrX3ByaXZhdGUuaDogQWRkZWQgaW50ZXJuYWwgQVBJcyB0byBwcm9j
ZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvZXdrL2V3a192aWV3LmNwcDogQWRkZWQg
QVBJcyB0byBwcm9jZXNzIGFuZCB0byBoYW5kbGUgdmlld3BvcnQgdGFnLgorICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fc2V0KToKKyAgICAgICAg
KGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRl
ZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRfc2V0KTogUmVwb3J0IHRoYXQgdmll
d3BvcnQgd2FzIGNoYW5nZWQuCisgICAgICAgIChld2tfdmlld192aWV3cG9ydF9nZXQpOiBHZXQg
ZGF0YSBvZiB2aWV3cG9ydCB0YWcuCisgICAgICAgIChld2tfdmlld196b29tX3JhbmdlX3NldCk6
IFNldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld196b29tX3JhbmdlX2dl
dCk6IEdldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxh
YmxlX3NldCk6IFNldCBpZiB6b29tIGlzIGVuYWJsZWQuCisgICAgICAgIChld2tfdmlld191c2Vy
X3NjYWxhYmxlX2dldCk6IEdldCBpZiB6b29tIGlzIGVuYWJsZWQuCisgICAgICAgICogZWZsL2V3
ay9ld2tfdmlldy5oOgorCiAyMDEwLTA2LTE1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNA
Z25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGJ1aWxkIGZpeC4gU2ltcGxlIHR5
cG8uCkluZGV4OiBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktp
dC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOSBA
QAogCiAjZGVmaW5lIERFRkFVTFRfV0lEVEggICAgICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlH
SFQgICAgIDYwMAorI2RlZmluZSBaT09NX0lOSVQgICAgICAgICAgMS4wCisjZGVmaW5lIFpPT01f
TUlOICAgICAgICAgICAxLjAKKyNkZWZpbmUgWk9PTV9NQVggICAgICAgICAgIDEuMAogCiAjZGVm
aW5lIGluZm8oZm9ybWF0LCBhcmdzLi4uKSAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCkBAIC0zNDUsNiArMzQ4LDM3IEBAIG9uX3Rvb2x0aXBfdGV4dF9zZXQo
dm9pZCogdXNlcl9kYXRhLCBFdmEKICAgICAgICAgaW5mbygiJXNcbiIsIHRleHQpOwogfQogCisv
KioKKyAqICJ2aWV3cG9ydCxjaGFuZ2VkIiBzaWduYWwgd2lsbCBiZSBhbHdheXMgZW1pdHRlZCBp
cnJlZ2FyZGxlc3Mgb2YgdGhlIHZpZXdwb3J0IGV4aXN0ZW5jZS4gCisgKgorICogSWYgeW91IGRv
bid0IHdhbnQgdG8gcHJvY2VzcyB0aGUgdmlld3BvcnQgdGFnLCB5b3UgY2FuIGVpdGhlciBkbyBu
b3RoaW5nIGluIHRoaXMgY2FsbGJhY2sKKyAqIG9yIHNpbXBseSBpZ25vcmUgdGhlIHNpZ25hbCBp
biB5b3VyIGFwcGxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdl
ZCh2b2lkKiB1c2VyX2RhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZv
KQoreworICAgIGludCB3LCBoOworICAgIGZsb2F0IGluaXRTY2FsZSwgbWluU2NhbGUsIG1heFNj
YWxlLCB1c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3cG9ydF9nZXQod2Vidmlldywg
JncsICZoLCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2FsZSwgJnVzZXJTY2FsYWJsZSk7
CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGVyZSBpcyBubyBhcmd1bWVudCBpbiB2aWV3cG9ydCB0
YWcsIGFyZ3VtZW50J3MgdmFsdWUgaXMgLTEuCisgICAgICovCisgICAgdyA9ICh3ID09IC0xKSA/
IERFRkFVTFRfV0lEVEggOiB3OworICAgIGggPSAoaCA9PSAtMSkgPyBERUZBVUxUX0hFSUdIVCA6
IGg7CisgICAgaW5pdFNjYWxlID0gKChpbnQpaW5pdFNjYWxlID09IC0xKSA/IFpPT01fSU5JVCA6
IGluaXRTY2FsZTsKKyAgICBtaW5TY2FsZSA9ICgoaW50KW1pblNjYWxlID09IC0xKSA/IFpPT01f
TUlOIDogbWluU2NhbGU7IAorICAgIG1heFNjYWxlID0gKChpbnQpbWF4U2NhbGUgPT0gLTEpID8g
Wk9PTV9NQVggOiBtYXhTY2FsZTsKKyAgICB1c2VyU2NhbGFibGUgPSAoKGludCl1c2VyU2NhbGFi
bGUgPT0gLTEpID8gRUlOQV9UUlVFIDogdXNlclNjYWxhYmxlOworCisgICAgZXdrX3ZpZXdfZml4
ZWRfbGF5b3V0X3NpemVfc2V0KHdlYnZpZXcsIHcsIGgpOworICAgIGV3a192aWV3X3pvb21fc2V0
KHdlYnZpZXcsIGluaXRTY2FsZSwgMCwgMCk7CisgICAgaWYgKCFld2tfdmlld196b29tX3Jhbmdl
X3NldCh3ZWJ2aWV3LCBtaW5TY2FsZSwgbWF4U2NhbGUpKQorICAgICAgICBpbmZvKCIgRmFpbCB0
byBzZXQgem9vbSByYW5nZS4gbWluU2NhbGUgPSAlZiwgbWF4U2NhbGUgPSAlZlxuIiwgbWluU2Nh
bGUsIG1heFNjYWxlKTsKKyAgICBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCh3ZWJ2aWV3LCAo
RWluYV9Cb29sKXVzZXJTY2FsYWJsZSk7Cit9CisKIHN0YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3du
KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9p
bmZvKQogewpAQCAtNTc5LDYgKzYxMyw3IEBAIGJyb3dzZXJDcmVhdGUoY29uc3QgY2hhciAqdXJs
LCBjb25zdCBjaGEKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93
c2VyLCAidGl0bGUsY2hhbmdlZCIsIG9uX3RpdGxlX2NoYW5nZWQsIGFwcCk7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQscHJvZ3Jlc3MiLCBv
bl9wcm9ncmVzcywgYXBwKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBw
LT5icm93c2VyLCAibG9hZCxmaW5pc2hlZCIsIG9uX2xvYWRfZmluaXNoZWQsIGFwcCk7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInZpZXdwb3J0LGNo
YW5nZWQiLCBvbl92aWV3cG9ydF9jaGFuZ2VkLCBhcHApOwogCiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2libGUsc2V0Iiwgb25f
dG9vbGJhcnNfdmlzaWJsZV9zZXQsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2libGUsZ2V0Iiwgb25fdG9vbGJhcnNf
dmlzaWJsZV9nZXQsIGFwcCk7CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDUyLDQgKzQ1MywxMiBAQCB2b2lkIENo
cm9tZUNsaWVudEVmbDo6Y2hvb3NlSWNvbkZvckZpbGVzCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhG
cmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0Cit7
CisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgKGludClhcmd1bWVudHMud2lkdGgs
IChpbnQpYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRz
Lm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1TY2FsZSwgYXJndW1lbnRzLnVzZXJTY2Fs
YWJsZSk7CisKKyAgICBGcmFtZUxvYWRlckNsaWVudEVmbCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8
RnJhbWVMb2FkZXJDbGllbnRFZmwqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBj
bGllbnQtPnNldEluaXRMYXlvdXRDb21wbGV0ZWQodHJ1ZSk7Cit9CisKIH0KSW5kZXg6IFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkocmV2aXNpb24gNjEyMjkp
CisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzQsNiArMTM0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgaWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmcsIDB1PiYsIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+KTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVmlld3BvcnRB
cmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRz
KSBjb25zdDsKKwogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CiAgICAgS1VSTCBtX2hvdmVyZWRM
aW5rVVJMOwogfTsKSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU4MCw2ICs1ODEsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERpZENvCiAgICAgICAgIHJldHVybjsKICAgICBld2tfdmlld190aXRs
ZV9zZXQobV92aWV3LCAwKTsKICAgICBld2tfdmlld191cmlfY2hhbmdlZChtX3ZpZXcpOworCisg
ICAgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gZmFsc2U7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKQEAgLTU5NSw3ICs1OTgs
MTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1faW5pdExheW91dENvbXBs
ZXRlZCkgeworICAgICAgICBWaWV3cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgICAgIGV3
a192aWV3X3ZpZXdwb3J0X3NldChtX3ZpZXcsIChpbnQpYXJndW1lbnRzLndpZHRoLCAoaW50KWFy
Z3VtZW50cy5oZWlnaHQsIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50cy5taW5pbXVt
U2NhbGUsIGFyZ3VtZW50cy5tYXhpbXVtU2NhbGUsIGFyZ3VtZW50cy51c2VyU2NhbGFibGUpOwor
ICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hTaG93KCkKSW5k
ZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIGNsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2b2lkIHNldEN1c3RvbVVzZXJB
Z2VudChjb25zdCBTdHJpbmcgJmFnZW50KTsKICAgICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJB
Z2VudCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRJbml0TGF5b3V0Q29tcGxldGVkKGJvb2wgY29t
cGxldGVkKSB7IG1faW5pdExheW91dENvbXBsZXRlZCA9IGNvbXBsZXRlZDsgfQorICAgIGJvb2wg
Z2V0SW5pdExheW91dENvbXBsZXRlZCgpIHsgcmV0dXJuIG1faW5pdExheW91dENvbXBsZXRlZDsg
fQorCiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaGFzRnJhbWVWaWV3KCkgY29uc3Q7CiAKQEAgLTIxMyw2ICsyMTYsOCBAQCBjbGFzcyBGcmFt
ZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVk
aXJlY3QgZGF0YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW47CisKKyAgICBib29sIG1faW5pdExheW91dENvbXBsZXRl
ZDsKIH07CiAKIH0KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAkocmV2aXNpb24gNjEyMjkpCisrKyBX
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4
IEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWUKIAogdm9pZCAgICAg
ICAgICAgICBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHJlY3QpOwogCit2b2lkICAgICAgICAgICAgIGV3a192aWV3X3ZpZXdwb3J0X3NldChFdmFzX09i
amVjdCAqbywgaW50IHcsIGludCBoLCBmbG9hdCBpbml0X3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUs
IGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSk7CisKIEV3a19IaXN0b3J5ICAg
ICAgKmV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QgKmhpc3RvcnkpOwog
dm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSAqaGlzdG9yeSk7
CiAKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDE5IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIHJlc2l6YWJsZV90
ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmc6MTsKICAgICAg
ICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICBpbnQgdzsKKyAgICAgICAgICAgIGludCBoOworICAgICAgICAgICAgZmxvYXQgaW5pdF9z
Y2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1h
eF9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IHVzZXJfc2NhbGFibGU7CisgICAgICAgIH0gdmll
d3BvcnQ7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBmbG9hdCBtaW5fc2NhbGU7Cisg
ICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7CisgICAgICAgICAgICBFaW5hX0Jvb2wgdXNlcl9z
Y2FsYWJsZToxOworICAgICAgICB9IHpvb21fcmFuZ2U7CiAgICAgfSBzZXR0aW5nczsKICAgICBz
dHJ1Y3QgewogICAgICAgICBzdHJ1Y3QgewpAQCAtNTc0LDYgKzU4Nyw5IEBAIHN0YXRpYyBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld18KICAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRl
X2Jyb3dzaW5nID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0X2Jyb3dzaW5nID0gcHJpdi0+cGFnZV9zZXR0aW5n
cy0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKIAorICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFu
Z2UubWluX3NjYWxlID0gWk9PTV9NSU47CisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUgPSBaT09NX01BWDsKKwogICAgIHByaXYtPm1haW5fZnJhbWUgPSBfZXdrX3ZpZXdf
Y29yZV9mcmFtZV9uZXcoc2QsIHByaXYsIDApLmdldCgpOwogICAgIGlmICghcHJpdi0+bWFpbl9m
cmFtZSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIGZyYW1lLiIp
OwpAQCAtMTc1NCwxNCArMTc3MCwyMiBAQCBmbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBF
dmFzX09iamVjCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOworCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5h
cGksIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
YXBpLT56b29tX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikgewot
ICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwg
KGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2Vy
X3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAgICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7
Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFY
LCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwg
KGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29t
KTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4gcHJp
di0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxl
dmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhf
c2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0K
IApAQCAtMTgyNCwxNCArMTg0OCwyMiBAQCB2b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhf
c2NhbGVfc2V0CiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCog
bywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVChzZCwgcHJpdik7CisKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9P
TV9NSU4pIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUp
Wk9PTV9NSU4sIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UudXNlcl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxz
ZSIpOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8
IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9v
bSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAg
ICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAo
em9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKICAgICB9CiAKQEAgLTE5NzQsMTIgKzIwMDYsMTcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfc2V0KEV2YQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
ZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7CiAKLSAgICBpZiAoem9vbSA8IFpP
T01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91Ymxl
KVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS51c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNl
Iik7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpP
T01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91Ymxl
KVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5n
cy56b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAl
ZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRv
dWJsZSl6b29tKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6
b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JO
KCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KIApAQCAtMzY5MiwzICszNzI5LDEzNSBAQCB2b2lkIGV3a192aWV3X2Rvd25sb2Fk
X3JlcXVlc3QoRXZhc19PYmplCiAgICAgREJHKCJ2aWV3PSVwIiwgbyk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZG93bmxvYWQscmVxdWVzdCIsIGRvd25sb2FkKTsK
IH0KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZpZXdwb3J0IHdhcyBjaGFu
Z2VkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJh
bSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWxTY2FsZSB2YWx1ZS4KKyAq
IEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bVNjYWxlIHZhbHVlLgorICogQHBhcmFtIG1pbl9zY2Fs
ZSBtaW5pbXVtU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2Vyc2NhbGFi
bGUgZmxhZy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5v
IHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgdywgaW50IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxv
YXQgbWluX3NjYWxlLCBmbG9hdCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dF
VChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+
c2V0dGluZ3Mudmlld3BvcnQudyA9IHc7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaCA9
IGg7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZSA9IGluaXRfc2NhbGU7
CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOworICAg
IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKKyAgICBwcml2
LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKKworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAw
KTsKK30gCisKKy8qKgorICogR2V0IGRhdGEgb2Ygdmlld3BvcnQgbWV0YSB0YWcuCisgKgorICog
QHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVpZ2h0Lgor
ICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbCBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtYXhf
c2NhbGUgbWF4aW11bSBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSBT
Y2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXIgU2NhbGFibGUgdmFsdWUu
CisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcs
IGludCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5f
c2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBz
ZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAgCisgICAgaWYgKHcpCisg
ICAgICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudzsKKyAgICBpZiAoaCkKKyAgICAg
ICAgKmggPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5oOworICAgIGlmIChpbml0X3NjYWxlKQor
ICAgICAgICAqaW5pdF9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LmluaXRfc2NhbGU7
CisgICAgaWYgKG1heF9zY2FsZSkKKyAgICAgICAgKm1heF9zY2FsZSA9IHByaXYtPnNldHRpbmdz
LnZpZXdwb3J0Lm1heF9zY2FsZTsKKyAgICBpZiAobWluX3NjYWxlKQorICAgICAgICAqbWluX3Nj
YWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlOworICAgIGlmICh1c2VyX3Nj
YWxhYmxlKQorICAgICAgICAqdXNlcl9zY2FsYWJsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0
LnVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0IGN1cnJlbnQgem9vbSByYW5nZS4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVtIHZhbHVlIG9m
IHpvb20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFsdWUgb2Ygem9vbSBy
YW5nZS4KKyAqIAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSByYW5nZSBpcyBjaGFu
Z2VkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlLgorICovCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxv
YXQgbWF4X3NjYWxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKG1heF9zY2FsZSA8IG1pbl9zY2FsZSkg
eworICAgICAgICBXUk4oIm1pbl9zY2FsZSBpcyBsYXJnZXIgdGhhbiBtYXhfc2NhbGUiKTsKKyAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS5taW5fc2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5tYXhfc2NhbGUgPSBtYXhfc2NhbGU7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQor
CisvKioKKyAqIEdldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gdmlldy4K
KyAqIEBwYXJhbSBtaW5fc2NhbGUgd2hlcmUgdG8gcmV0dXJuIHRoZSBtaW5pbXVtIHZhbHVlIG9m
IHpvb20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIHdoZXJlIHRvIHJldHVybiB0aGUgbWF4
aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICovCit2b2lkIGV3a192aWV3X3pvb21fcmFuZ2Vf
Z2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlKQor
eworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2Qs
IHByaXYpOworCisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1pbl9zY2FsZSA9IHByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlOworICAgIGlmIChtYXhfc2NhbGUpCisgICAg
ICAgICptYXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZTsKK30K
KworLyoqCisgKiBTZXQgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcu
CisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gZW5h
YmxlIHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8KK3ZvaWQgZXdr
X3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3Nj
YWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKK30KKworLyoqCisgKiBHZXQgaWYgem9vbSBpcyBlbmFi
bGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVy
ZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2FsYWJsZSB2YWx1ZS4KKyAqLwordm9pZCBl
d2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB1c2Vy
X3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKHVzZXJfc2NhbGFibGUpCisgICAgICAgICp1
c2VyX3NjYWxhYmxlID0gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlOwor
fQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvZXdrL2V3
a192aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgZXh0ZXJuICJDIiB7CiAg
KiAgLSAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZDogcmVwb3J0cyBhIGRvd25sb2Fk
IGlzIGJlaW5nIHJlcXVlc3RlZAogICogICAgYW5kIGFzIGFyZ3VtZW50cyBnaXZlcyBpdHMgZGV0
YWlscy4KICAqICAtICJpY29uLHJlY2VpdmVkIiwgdm9pZDogbWFpbiBmcmFtZSByZWNlaXZlZCBh
biBpY29uLgorICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCB2b2lkOiBSZXBvcnQgdGhhdCB2aWV3
cG9ydCB3YXMgY2hhbmdlZC4gCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKQEAgLTQ1MSw2ICs0NTIsMTIgQEAgRUFQSSB2b2lk
IGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYQogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdf
cGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWlu
YV9SZWN0YW5nbGUgKmFyZWEpOwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVu
dHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9S
ZWN0YW5nbGUgKmFyZWEpOwogCitFQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNf
T2JqZWN0ICpvLCBpbnQqIHcsIGludCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhf
c2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgRWlu
YV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5f
c2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfem9vbV9yYW5nZV9n
ZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUpOwor
RUFQSSB2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgdXNlcl9zY2FsYWJsZSk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9n
ZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCogdXNlcl9zY2FsYWJsZSk7CisKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58966</attachid>
            <date>2010-06-17 00:16:10 -0700</date>
            <delta_ts>2010-06-17 00:48:31 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-8</desc>
            <filename>viewport-patch-8.txt</filename>
            <type>text/plain</type>
            <size>21043</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjEzMDgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMTAtMDYtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAgICAgICAqIGVm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFuZ2VkJyBzaWduYWwu
CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKTogQWRkIGEgY2FsbGJhY2sgZnVuY3Rpb24g
Zm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAgICAoYnJvd3NlckNyZWF0
ZSk6IFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6IEltcGxlbWVudCBtZXRob2QgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiAgRGVmaW5l
IG1ldGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgYSBmdW5jdGlvbiB0byBz
ZXQgbGF5b3V0CisgICAgICAgIHdoZW4gd2Vic2l0ZSBkb2Vzbid0IGNvbnRhaW4gdmlld3BvcnQg
dGFnLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Z2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgICogZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oOiBBZGRlZCBpbnRlcm5hbCBBUElzIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFn
LgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBBUElzIHRvIHByb2Nlc3Mg
YW5kIHRvIGhhbmRsZSB2aWV3cG9ydCB0YWcuCisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmll
d3BvcnRfc2V0KTogUmVwb3J0IHRoYXQgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisgICAgICAgIChl
d2tfdmlld192aWV3cG9ydF9nZXQpOiBHZXQgZGF0YSBvZiB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChld2tfdmlld196b29tX3JhbmdlX3NldCk6IFNldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgICAg
ICAgIChld2tfdmlld196b29tX3JhbmdlX2dldCk6IEdldCBjdXJyZW50IHpvb20gcmFuZ2UuCisg
ICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6IFNldCBpZiB6b29tIGlzIGVuYWJs
ZWQuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX2dldCk6IEdldCBpZiB6b29tIGlz
IGVuYWJsZWQuCisgICAgICAgICogZWZsL2V3ay9ld2tfdmlldy5oOgorCiAyMDEwLTA2LTE1ICBH
dXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgRUZMIGJ1aWxkIGZpeC4gU2ltcGxlIHR5cG8uCkluZGV4OiBXZWJLaXQvZWZsL0VXZWJMYXVu
Y2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5j
CShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwkod29y
a2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOSBAQAogCiAjZGVmaW5lIERFRkFVTFRfV0lEVEggICAg
ICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYwMAorI2RlZmluZSBaT09NX0lOSVQg
ICAgICAgICAgMS4wCisjZGVmaW5lIFpPT01fTUlOICAgICAgICAgICAxLjAKKyNkZWZpbmUgWk9P
TV9NQVggICAgICAgICAgIDEuMAogCiAjZGVmaW5lIGluZm8oZm9ybWF0LCBhcmdzLi4uKSAgICAg
ICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjUsNiArMTI4
LDE1IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9ucyA9IHsKICAgICB9CiB9Owog
Cit0eXBlZGVmIHN0cnVjdCBfVmlld3BvcnQgeworICAgIGludCB3OworICAgIGludCBoOworICAg
IGZsb2F0IGluaXRTY2FsZTsKKyAgICBmbG9hdCBtaW5TY2FsZTsKKyAgICBmbG9hdCBtYXhTY2Fs
ZTsKKyAgICBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlOworfSBWaWV3cG9ydDsKKwogdHlwZWRlZiBz
dHJ1Y3QgX0VMYXVuY2hlciB7CiAgICAgRWNvcmVfRXZhcyAqZWU7CiAgICAgRXZhcyAqZXZhczsK
QEAgLTEzMiw2ICsxNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRUxhdW5jaGVyIHsKICAgICBFdmFz
X09iamVjdCAqYnJvd3NlcjsKICAgICBjb25zdCBjaGFyICp0aGVtZTsKICAgICBjb25zdCBjaGFy
ICp1c2VyQWdlbnQ7CisgICAgVmlld3BvcnQgdmlld3BvcnQ7CiB9IEVMYXVuY2hlcjsKIAogc3Rh
dGljIHZvaWQgYnJvd3NlckRlc3Ryb3koRWNvcmVfRXZhcyAqZWUpOwpAQCAtMjI1LDYgKzIzOCwy
MyBAQCB0aXRsZV9zZXQoRWNvcmVfRXZhcyAqZWUsIGNvbnN0IGNoYXIgKnRpCiAgICAgZWNvcmVf
ZXZhc190aXRsZV9zZXQoZWUsIGxhYmVsKTsKIH0KIAorLyoqCisgKiBUaGlzIGlzIGVuIGV4YW1w
bGUgZnVuY3Rpb24gdG8gYWRqdXN0IHZpZXdwb3J0IHZpYSB2aWV3cG9ydCB0YWcncyBhcmd1bWVu
dHMuCisgKiBBcHBsaWNhdGlvbiBjYW4gaW52b2tlIHRoaXMgZnVuY3Rpb24gaW4gb3JkZXIgdG8g
YWRqdXN0IHZpZXdwb3J0IHRhZyB3aGVuIGl0IGlzIHJlcXVpcmVkLgorICovCitzdGF0aWMgdm9p
ZAordmlld3BvcnRfc2V0KCkKK3sKKyAgICBFTGF1bmNoZXIgKmFwcDsKKyAgICBhcHAgPSAoRUxh
dW5jaGVyKikgZWluYV9saXN0X2RhdGFfZ2V0KHdpbmRvd3MpOworCisgICAgZXdrX3ZpZXdfZml4
ZWRfbGF5b3V0X3NpemVfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC53LCBhcHAtPnZp
ZXdwb3J0LmgpOworICAgIGV3a192aWV3X3pvb21fc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3
cG9ydC5pbml0U2NhbGUsIDAsIDApOworICAgIGlmICghZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQo
YXBwLT5icm93c2VyLCBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNj
YWxlKSkKKyAgICAgICBpbmZvKCIgRmFpbCB0byBzZXQgem9vbSByYW5nZS4gbWluU2NhbGUgPSAl
ZiwgbWF4U2NhbGUgPSAlZlxuIiwgYXBwLT52aWV3cG9ydC5taW5TY2FsZSwgYXBwLT52aWV3cG9y
dC5tYXhTY2FsZSk7CisgICAgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoYXBwLT5icm93c2Vy
LCBhcHAtPnZpZXdwb3J0LnVzZXJTY2FsYWJsZSk7Cit9CisKIHN0YXRpYyB2b2lkCiBvbl90aXRs
ZV9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2
ZW50X2luZm8pCiB7CkBAIC0zNDUsNiArMzc1LDQ5IEBAIG9uX3Rvb2x0aXBfdGV4dF9zZXQodm9p
ZCogdXNlcl9kYXRhLCBFdmEKICAgICAgICAgaW5mbygiJXNcbiIsIHRleHQpOwogfQogCisvKioK
KyAqICJ2aWV3cG9ydCxjaGFuZ2VkIiBzaWduYWwgd2lsbCBiZSBhbHdheXMgZW1pdHRlZCByZWdh
cmRsZXNzIG9mIHRoZSB2aWV3cG9ydCBleGlzdGVuY2UuIAorICoKKyAqIElmIHlvdSBkb24ndCB3
YW50IHRvIHByb2Nlc3MgdGhlIHZpZXdwb3J0IHRhZywgeW91IGNhbiBlaXRoZXIgZG8gbm90aGlu
ZyBpbiB0aGlzIGNhbGxiYWNrCisgKiBvciBzaW1wbHkgaWdub3JlIHRoZSBzaWduYWwgaW4geW91
ciBhcHBsaWNhdGlvbi4KKyAqIAorICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhbiBi
ZSBmb3VuZCBhdCBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9zYWZhcmkvbGlicmFyeS9kb2N1
bQorICogZW50YXRpb24vYXBwbGVhcHBsaWNhdGlvbnMvcmVmZXJlbmNlL3NhZmFyaXdlYmNvbnRl
bnQvdXNpbmd0aGV2aWV3cG9ydC91c2luZ3RoZXZpZXdwb3J0Lmh0bWwKKyAqLworc3RhdGljIHZv
aWQKK29uX3ZpZXdwb3J0X2NoYW5nZWQodm9pZCogdXNlcl9kYXRhLCBFdmFzX09iamVjdCogd2Vi
dmlldywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFTGF1bmNoZXIgKmFwcCA9IChFTGF1bmNo
ZXIgKil1c2VyX2RhdGE7CisgICAgCisgICAgaW50IHcsIGg7CisgICAgZmxvYXQgaW5pdFNjYWxl
LCBtaW5TY2FsZSwgbWF4U2NhbGUsIHVzZXJTY2FsYWJsZTsKKworICAgIGV3a192aWV3X3ZpZXdw
b3J0X2dldCh3ZWJ2aWV3LCAmdywgJmgsICZpbml0U2NhbGUsICZtYXhTY2FsZSwgJm1pblNjYWxl
LCAmdXNlclNjYWxhYmxlKTsKKworICAgIC8qKgorICAgICAqIElmIHRoZXJlIGlzIG5vIGFyZ3Vt
ZW50IGluIHZpZXdwb3J0IHRhZywgYXJndW1lbnQncyB2YWx1ZSBpcyAtMS4KKyAgICAgKi8KKyAg
ICBpZiAoKGludCl3ID09IC0xKQorICAgICAgICB3ID0gREVGQVVMVF9XSURUSDsKKyAgICBpZiAo
KGludCloID09IC0xKQorICAgICAgICBoID0gREVGQVVMVF9IRUlHSFQ7CisgICAgaWYgKChpbnQp
aW5pdFNjYWxlID09IC0xKQorICAgICAgICBpbml0U2NhbGUgPSBaT09NX0lOSVQ7CisgICAgaWYg
KChpbnQpbWluU2NhbGUgPT0gLTEpCisgICAgICAgIG1pblNjYWxlID0gWk9PTV9NSU47CisgICAg
aWYgKChpbnQpbWF4U2NhbGUgPT0gLTEpCisgICAgICAgIG1heFNjYWxlID0gWk9PTV9NQVg7Cisg
ICAgaWYgKChpbnQpdXNlclNjYWxhYmxlID09IC0xKQorICAgICAgICAgdXNlclNjYWxhYmxlID0g
RUlOQV9UUlVFOworCisgICAgYXBwLT52aWV3cG9ydC53ID0gKGludCl3OworICAgIGFwcC0+dmll
d3BvcnQuaCA9IChpbnQpaDsKKyAgICBhcHAtPnZpZXdwb3J0LmluaXRTY2FsZSA9IGluaXRTY2Fs
ZTsKKyAgICBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlID0gbWluU2NhbGU7CisgICAgYXBwLT52aWV3
cG9ydC5tYXhTY2FsZSA9IG1heFNjYWxlOworICAgIGFwcC0+dmlld3BvcnQudXNlclNjYWxhYmxl
ID0gKEVpbmFfQm9vbCl1c2VyU2NhbGFibGU7Cit9CisKIHN0YXRpYyB2b2lkCiBvbl9tb3VzZV9k
b3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVu
dF9pbmZvKQogewpAQCAtNTc5LDYgKzY1Miw3IEBAIGJyb3dzZXJDcmVhdGUoY29uc3QgY2hhciAq
dXJsLCBjb25zdCBjaGEKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwLT5i
cm93c2VyLCAidGl0bGUsY2hhbmdlZCIsIG9uX3RpdGxlX2NoYW5nZWQsIGFwcCk7CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQscHJvZ3Jlc3Mi
LCBvbl9wcm9ncmVzcywgYXBwKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
YXBwLT5icm93c2VyLCAibG9hZCxmaW5pc2hlZCIsIG9uX2xvYWRfZmluaXNoZWQsIGFwcCk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInZpZXdwb3J0
LGNoYW5nZWQiLCBvbl92aWV3cG9ydF9jaGFuZ2VkLCBhcHApOwogCiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2libGUsc2V0Iiwg
b25fdG9vbGJhcnNfdmlzaWJsZV9zZXQsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2libGUsZ2V0Iiwgb25fdG9vbGJh
cnNfdmlzaWJsZV9nZXQsIGFwcCk7CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDUyLDQgKzQ1MywxMyBAQCB2b2lk
IENocm9tZUNsaWVudEVmbDo6Y2hvb3NlSWNvbkZvckZpbGVzCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50
cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0
Cit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0PEZyYW1l
TG9hZGVyQ2xpZW50RWZsKj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgaWYgKGNs
aWVudC0+Z2V0SW5pdExheW91dENvbXBsZXRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBl
d2tfdmlld192aWV3cG9ydF9zZXQobV92aWV3LCBhcmd1bWVudHMud2lkdGgsIGFyZ3VtZW50cy5o
ZWlnaHQsIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50cy5taW5pbXVtU2NhbGUsIGFy
Z3VtZW50cy5tYXhpbXVtU2NhbGUsIGFyZ3VtZW50cy51c2VyU2NhbGFibGUpOworfQorCiB9Cklu
ZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHJldmlz
aW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKik7
CiAgICAgdmlydHVhbCB2b2lkIGljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nLCAwdT4m
LCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMm
IGFyZ3VtZW50cykgY29uc3Q7CisKICAgICBFdmFzX09iamVjdCogbV92aWV3OwogICAgIEtVUkwg
bV9ob3ZlcmVkTGlua1VSTDsKIH07CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNs
dWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC01NzUsMTEgKzU3NiwxNiBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CisgICAgbV9pbml0TGF5b3V0Q29tcGxl
dGVkID0gZmFsc2U7CisKICAgICBld2tfZnJhbWVfdXJpX2NoYW5nZWQobV9mcmFtZSk7CiAgICAg
aWYgKGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fdmlldykgIT0gbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuOwogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIDApOwogICAgIGV3a192aWV3
X3VyaV9jaGFuZ2VkKG1fdmlldyk7CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7
CisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgKGludClhcmd1bWVudHMud2lkdGgs
IChpbnQpYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRz
Lm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1TY2FsZSwgYXJndW1lbnRzLnVzZXJTY2Fs
YWJsZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNo
RG9jdW1lbnRMb2FkKCkKQEAgLTU5MCw3ICs1OTYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERpZEZpCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZEZpcnN0TGF5b3V0KCkKIHsKICAgICAvLyBlbWl0IG1fZnJhbWUtPmluaXRpYWxMYXlvdXRDb21w
bGV0ZWQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW5pdExheW91dENvbXBsZXRl
ZCA9IHRydWU7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDYxMjI5KQorKysgV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw2ICs1NSw5IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGlj
IEZyYW0KICAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcgJmFnZW50KTsK
ICAgICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0OwogCisgICAgdm9pZCBz
ZXRJbml0TGF5b3V0Q29tcGxldGVkKGJvb2wgY29tcGxldGVkKSB7IG1faW5pdExheW91dENvbXBs
ZXRlZCA9IGNvbXBsZXRlZDsgfQorICAgIGJvb2wgZ2V0SW5pdExheW91dENvbXBsZXRlZCgpIHsg
cmV0dXJuIG1faW5pdExheW91dENvbXBsZXRlZDsgfQorCiAgICAgdmlydHVhbCBib29sIGhhc1dl
YlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVWaWV3KCkgY29uc3Q7CiAK
QEAgLTIxMyw2ICsyMTYsOCBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBG
cmFtCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0bwogICAgIFBsdWdpblZp
ZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW47CisK
KyAgICBib29sIG1faW5pdExheW91dENvbXBsZXRlZDsKIH07CiAKIH0KSW5kZXg6IFdlYktpdC9l
ZmwvZXdrL2V3a19wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3By
aXZhdGUuaAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGV3a192aWUKIAogdm9pZCAgICAgICAgICAgICBld2tfdmlld19wb3B1cF9uZXco
RXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQgc2Vs
ZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwogCit2b2lkICAgICAgICAgICAg
IGV3a192aWV3X3ZpZXdwb3J0X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgdywgZmxvYXQgaCwg
ZmxvYXQgaW5pdF9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0
IHVzZXJfc2NhbGFibGUpOworCiBFd2tfSGlzdG9yeSAgICAgICpld2tfaGlzdG9yeV9uZXcoV2Vi
Q29yZTo6QmFja0ZvcndhcmRMaXN0ICpoaXN0b3J5KTsKIHZvaWQgICAgICAgICAgICAgIGV3a19o
aXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwogCkluZGV4OiBXZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAgICAgICAgIEVpbmFfQm9vbCByZXNpemFibGVfdGV4dGFyZWFzOjE7CiAgICAgICAgIEVp
bmFfQm9vbCBwcml2YXRlX2Jyb3dzaW5nOjE7CiAgICAgICAgIEVpbmFfQm9vbCBjYXJldF9icm93
c2luZzoxOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgaW50IHc7CisgICAgICAgICAg
ICBpbnQgaDsKKyAgICAgICAgICAgIGZsb2F0IGluaXRfc2NhbGU7CisgICAgICAgICAgICBmbG9h
dCBtaW5fc2NhbGU7CisgICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7CisgICAgICAgICAgICBm
bG9hdCB1c2VyX3NjYWxhYmxlOworICAgICAgICB9IHZpZXdwb3J0OworICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgZmxvYXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3Nj
YWxlOworICAgICAgICAgICAgRWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB6
b29tX3JhbmdlOwogICAgIH0gc2V0dGluZ3M7CiAgICAgc3RydWN0IHsKICAgICAgICAgc3RydWN0
IHsKQEAgLTU3NCw2ICs1ODcsOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdr
X3ZpZXdfCiAgICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vf
c2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5j
YXJldF9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVk
KCk7CiAKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSA9IFpPT01fTUlO
OworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlID0gWk9PTV9NQVg7CisK
ICAgICBwcml2LT5tYWluX2ZyYW1lID0gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2
LCAwKS5nZXQoKTsKICAgICBpZiAoIXByaXYtPm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElD
QUwoIkNvdWxkIG5vdCBjcmVhdGUgbWFpbiBmcmFtZS4iKTsKQEAgLTk5OCw2ICsxMDE0LDExIEBA
IHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXMKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYpOworCisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVu
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4ocHJpdi0+bWFp
bl9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBpZiAoIWNsaWVudC0+Z2V0SW5pdExh
eW91dENvbXBsZXRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJDb3JlOjpGcmFtZVZp
ZXcqIHZpZXcgPSBzZC0+X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodyA8PSAw
ICYmIGggPD0gMCkgewogICAgICAgICBpZiAoIXByaXYtPmZpeGVkX2xheW91dC51c2UpCkBAIC0x
NzU0LDE0ICsxNzc1LDIyIEBAIGZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWMKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9v
bSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CisKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlO
QV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpv
b21fc2V0LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAg
IFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91Ymxl
KXpvb20pOworCisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFi
bGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6
ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJs
ZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29t
ID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChk
b3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0
aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMg
PiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwg
KGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0x
ODI0LDE0ICsxODUzLDIyIEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9h
dCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFw
aS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikg
ewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01J
TiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51
c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFY
KSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01f
TUFYLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29t
X3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVm
IiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6
b29tKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4g
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAg
IH0KIApAQCAtMTk3NCwxMiArMjAxMSwxNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9zZXQoRXZhCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGks
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKIAotICAgIGlmICh6b29tIDwgWk9PTV9NSU4p
IHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9N
SU4sIChkb3VibGUpem9vbSk7CisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVz
ZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2Fs
ZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAg
IGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1h
eF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAg
fQogCkBAIC0zNjkyLDMgKzM3MzQsMTM2IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVz
dChFdmFzX09iamUKICAgICBEQkcoInZpZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG8sICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwogfQorCisv
KioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisg
KgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVp
Z2h0LgorICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbFNjYWxlIHZhbHVlLgorICogQHBhcmFt
IG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWluX3NjYWxlIG1pbmlt
dW1TY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXJzY2FsYWJsZSBmbGFn
LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInZpZXdwb3J0LGNoYW5nZWQiIHdpdGggbm8gcGFyYW1l
dGVycy4KKyAqLwordm9pZCBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0IHcsIGZsb2F0IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxvYXQg
bWluX3NjYWxlLCBmbG9hdCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChv
LCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0
dGluZ3Mudmlld3BvcnQudyA9IHc7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaCA9IGg7
CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZSA9IGluaXRfc2NhbGU7Cisg
ICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKKyAgICBwcml2LT5z
ZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKKworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsK
K30gCisKKy8qKgorICogR2V0IGRhdGEgb2Ygdmlld3BvcnQgbWV0YSB0YWcuCisgKgorICogQHBh
cmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICog
QHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbCBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtYXhfc2Nh
bGUgbWF4aW11bSBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSBTY2Fs
ZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXIgU2NhbGFibGUgdmFsdWUuCisg
Ki8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcsIGlu
dCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2Nh
bGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7
CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAgCisgICAgaWYgKHcpCisgICAg
ICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudzsKKyAgICBpZiAoaCkKKyAgICAgICAg
KmggPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5oOworICAgIGlmIChpbml0X3NjYWxlKQorICAg
ICAgICAqaW5pdF9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LmluaXRfc2NhbGU7Cisg
ICAgaWYgKG1heF9zY2FsZSkKKyAgICAgICAgKm1heF9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZp
ZXdwb3J0Lm1heF9zY2FsZTsKKyAgICBpZiAobWluX3NjYWxlKQorICAgICAgICAqbWluX3NjYWxl
ID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlOworICAgIGlmICh1c2VyX3NjYWxh
YmxlKQorICAgICAgICAqdXNlcl9zY2FsYWJsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVz
ZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0IGN1cnJlbnQgem9vbSByYW5nZS4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVtIHZhbHVlIG9mIHpv
b20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5n
ZS4KKyAqIAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSByYW5nZSBpcyBjaGFuZ2Vk
LCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlLgorICovCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQg
bWF4X3NjYWxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKG1heF9zY2FsZSA8IG1pbl9zY2FsZSkgewor
ICAgICAgICBXUk4oIm1pbl9zY2FsZSBpcyBsYXJnZXIgdGhhbiBtYXhfc2NhbGUiKTsKKyAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5taW5fc2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5tYXhfc2NhbGUgPSBtYXhfc2NhbGU7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisv
KioKKyAqIEdldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAq
IEBwYXJhbSBtaW5fc2NhbGUgd2hlcmUgdG8gcmV0dXJuIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHpv
b20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIHdoZXJlIHRvIHJldHVybiB0aGUgbWF4aW11
bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICovCit2b2lkIGV3a192aWV3X3pvb21fcmFuZ2VfZ2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOworCisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1pbl9zY2FsZSA9IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlOworICAgIGlmIChtYXhfc2NhbGUpCisgICAgICAg
ICptYXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZTsKK30KKwor
LyoqCisgKiBTZXQgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisg
KiBAcGFyYW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gZW5hYmxl
IHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8KK3ZvaWQgZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxh
YmxlID0gdXNlcl9zY2FsYWJsZTsKK30KKworLyoqCisgKiBHZXQgaWYgem9vbSBpcyBlbmFibGVk
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVyZSB0
byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2FsYWJsZSB2YWx1ZS4KKyAqCisgKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90Lgor
ICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoRXZhc19PYmplY3QqIG8p
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3Nj
YWxhYmxlOworfQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgZXh0ZXJu
ICJDIiB7CiAgKiAgLSAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZDogcmVwb3J0cyBh
IGRvd25sb2FkIGlzIGJlaW5nIHJlcXVlc3RlZAogICogICAgYW5kIGFzIGFyZ3VtZW50cyBnaXZl
cyBpdHMgZGV0YWlscy4KICAqICAtICJpY29uLHJlY2VpdmVkIiwgdm9pZDogbWFpbiBmcmFtZSBy
ZWNlaXZlZCBhbiBpY29uLgorICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCB2b2lkOiBSZXBvcnQg
dGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4gCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKQEAgLTQ1MSw2ICs0NTIsMTIgQEAg
RUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYQogRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwg
Y29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFp
bnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29u
c3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCitFQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRf
Z2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQqIHcsIGludCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZs
b2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKTsK
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfem9v
bV9yYW5nZV9nZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiBtYXhf
c2NhbGUpOworRUFQSSB2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9vbCBld2tfdmlld191
c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCogbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58967</attachid>
            <date>2010-06-17 00:48:31 -0700</date>
            <delta_ts>2010-06-20 18:56:36 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-9</desc>
            <filename>viewport-patch-9.txt</filename>
            <type>text/plain</type>
            <size>21230</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjEzMDgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMTAtMDYtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAgICAgICAqIGVm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFuZ2VkJyBzaWduYWwu
CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKTogQWRkIGEgY2FsbGJhY2sgZnVuY3Rpb24g
Zm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAgICAoYnJvd3NlckNyZWF0
ZSk6IFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6IEltcGxlbWVudCBtZXRob2QgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiAgRGVmaW5l
IG1ldGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgYSBmdW5jdGlvbiB0byBz
ZXQgbGF5b3V0CisgICAgICAgIHdoZW4gd2Vic2l0ZSBkb2Vzbid0IGNvbnRhaW4gdmlld3BvcnQg
dGFnLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Z2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgICogZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oOiBBZGRlZCBpbnRlcm5hbCBBUElzIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFn
LgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBBUElzIHRvIHByb2Nlc3Mg
YW5kIHRvIGhhbmRsZSB2aWV3cG9ydCB0YWcuCisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmll
d3BvcnRfc2V0KTogUmVwb3J0IHRoYXQgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisgICAgICAgIChl
d2tfdmlld192aWV3cG9ydF9nZXQpOiBHZXQgZGF0YSBvZiB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChld2tfdmlld196b29tX3JhbmdlX3NldCk6IFNldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgICAg
ICAgIChld2tfdmlld196b29tX3JhbmdlX2dldCk6IEdldCBjdXJyZW50IHpvb20gcmFuZ2UuCisg
ICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6IFNldCBpZiB6b29tIGlzIGVuYWJs
ZWQuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX2dldCk6IEdldCBpZiB6b29tIGlz
IGVuYWJsZWQuCisgICAgICAgICogZWZsL2V3ay9ld2tfdmlldy5oOgorCiAyMDEwLTA2LTE1ICBH
dXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgRUZMIGJ1aWxkIGZpeC4gU2ltcGxlIHR5cG8uCkluZGV4OiBXZWJLaXQvZWZsL0VXZWJMYXVu
Y2hlci9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5j
CShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwkod29y
a2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOSBAQAogCiAjZGVmaW5lIERFRkFVTFRfV0lEVEggICAg
ICA4MDAKICNkZWZpbmUgREVGQVVMVF9IRUlHSFQgICAgIDYwMAorI2RlZmluZSBaT09NX0lOSVQg
ICAgICAgICAgMS4wCisjZGVmaW5lIFpPT01fTUlOICAgICAgICAgICAxLjAKKyNkZWZpbmUgWk9P
TV9NQVggICAgICAgICAgIDEuMAogCiAjZGVmaW5lIGluZm8oZm9ybWF0LCBhcmdzLi4uKSAgICAg
ICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjUsNiArMTI4
LDE1IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9ucyA9IHsKICAgICB9CiB9Owog
Cit0eXBlZGVmIHN0cnVjdCBfVmlld3BvcnQgeworICAgIGludCB3OworICAgIGludCBoOworICAg
IGZsb2F0IGluaXRTY2FsZTsKKyAgICBmbG9hdCBtaW5TY2FsZTsKKyAgICBmbG9hdCBtYXhTY2Fs
ZTsKKyAgICBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlOworfSBWaWV3cG9ydDsKKwogdHlwZWRlZiBz
dHJ1Y3QgX0VMYXVuY2hlciB7CiAgICAgRWNvcmVfRXZhcyAqZWU7CiAgICAgRXZhcyAqZXZhczsK
QEAgLTEzMiw2ICsxNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRUxhdW5jaGVyIHsKICAgICBFdmFz
X09iamVjdCAqYnJvd3NlcjsKICAgICBjb25zdCBjaGFyICp0aGVtZTsKICAgICBjb25zdCBjaGFy
ICp1c2VyQWdlbnQ7CisgICAgVmlld3BvcnQgdmlld3BvcnQ7CiB9IEVMYXVuY2hlcjsKIAogc3Rh
dGljIHZvaWQgYnJvd3NlckRlc3Ryb3koRWNvcmVfRXZhcyAqZWUpOwpAQCAtMjI1LDYgKzIzOCwy
MyBAQCB0aXRsZV9zZXQoRWNvcmVfRXZhcyAqZWUsIGNvbnN0IGNoYXIgKnRpCiAgICAgZWNvcmVf
ZXZhc190aXRsZV9zZXQoZWUsIGxhYmVsKTsKIH0KIAorLyoqCisgKiBUaGlzIGlzIGVuIGV4YW1w
bGUgZnVuY3Rpb24gdG8gYWRqdXN0IHZpZXdwb3J0IHZpYSB2aWV3cG9ydCB0YWcncyBhcmd1bWVu
dHMuCisgKiBBcHBsaWNhdGlvbiBjYW4gaW52b2tlIHRoaXMgZnVuY3Rpb24gaW4gb3JkZXIgdG8g
YWRqdXN0IHZpZXdwb3J0IHRhZyB3aGVuIGl0IGlzIHJlcXVpcmVkLgorICovCitzdGF0aWMgdm9p
ZAordmlld3BvcnRfc2V0KCkKK3sKKyAgICBFTGF1bmNoZXIgKmFwcDsKKyAgICBhcHAgPSAoRUxh
dW5jaGVyKikgZWluYV9saXN0X2RhdGFfZ2V0KHdpbmRvd3MpOworCisgICAgZXdrX3ZpZXdfZml4
ZWRfbGF5b3V0X3NpemVfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC53LCBhcHAtPnZp
ZXdwb3J0LmgpOworICAgIGV3a192aWV3X3pvb21fc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3
cG9ydC5pbml0U2NhbGUsIDAsIDApOworICAgIGlmICghZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQo
YXBwLT5icm93c2VyLCBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNj
YWxlKSkKKyAgICAgICBpbmZvKCIgRmFpbCB0byBzZXQgem9vbSByYW5nZS4gbWluU2NhbGUgPSAl
ZiwgbWF4U2NhbGUgPSAlZlxuIiwgYXBwLT52aWV3cG9ydC5taW5TY2FsZSwgYXBwLT52aWV3cG9y
dC5tYXhTY2FsZSk7CisgICAgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoYXBwLT5icm93c2Vy
LCBhcHAtPnZpZXdwb3J0LnVzZXJTY2FsYWJsZSk7Cit9CisKIHN0YXRpYyB2b2lkCiBvbl90aXRs
ZV9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2
ZW50X2luZm8pCiB7CkBAIC0zNDUsNiArMzc1LDQ4IEBAIG9uX3Rvb2x0aXBfdGV4dF9zZXQodm9p
ZCogdXNlcl9kYXRhLCBFdmEKICAgICAgICAgaW5mbygiJXNcbiIsIHRleHQpOwogfQogCisvKioK
KyAqICJ2aWV3cG9ydCxjaGFuZ2VkIiBzaWduYWwgd2lsbCBiZSBhbHdheXMgZW1pdHRlZCByZWdh
cmRsZXNzIG9mIHRoZSB2aWV3cG9ydCBleGlzdGVuY2UuIAorICoKKyAqIElmIHlvdSBkb24ndCB3
YW50IHRvIHByb2Nlc3MgdGhlIHZpZXdwb3J0IHRhZywgeW91IGNhbiBlaXRoZXIgZG8gbm90aGlu
ZyBpbiB0aGlzIGNhbGxiYWNrCisgKiBvciBzaW1wbHkgaWdub3JlIHRoZSBzaWduYWwgaW4geW91
ciBhcHBsaWNhdGlvbi4KKyAqIAorICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhbiBi
ZSBmb3VuZCBhdCBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9zYWZhcmkvbGlicmFyeS9kb2N1
bQorICogZW50YXRpb24vYXBwbGVhcHBsaWNhdGlvbnMvcmVmZXJlbmNlL3NhZmFyaXdlYmNvbnRl
bnQvdXNpbmd0aGV2aWV3cG9ydC91c2luZ3RoZXZpZXdwb3J0Lmh0bWwKKyAqLworc3RhdGljIHZv
aWQKK29uX3ZpZXdwb3J0X2NoYW5nZWQodm9pZCogdXNlcl9kYXRhLCBFdmFzX09iamVjdCogd2Vi
dmlldywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFTGF1bmNoZXIgKmFwcCA9IChFTGF1bmNo
ZXIgKil1c2VyX2RhdGE7CisgICAKKyAgICBmbG9hdCB3LCBoLCBpbml0U2NhbGUsIG1pblNjYWxl
LCBtYXhTY2FsZSwgdXNlclNjYWxhYmxlOworCisgICAgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KHdl
YnZpZXcsICZ3LCAmaCwgJmluaXRTY2FsZSwgJm1heFNjYWxlLCAmbWluU2NhbGUsICZ1c2VyU2Nh
bGFibGUpOworCisgICAgLyoqCisgICAgICogSWYgdGhlcmUgaXMgbm8gYXJndW1lbnQgaW4gdmll
d3BvcnQgdGFnLCBhcmd1bWVudCdzIHZhbHVlIGlzIC0xLgorICAgICAqLworICAgIGlmICgoaW50
KXcgPT0gLTEpCisgICAgICAgIHcgPSBERUZBVUxUX1dJRFRIOworICAgIGlmICgoaW50KWggPT0g
LTEpCisgICAgICAgIGggPSBERUZBVUxUX0hFSUdIVDsKKyAgICBpZiAoKGludClpbml0U2NhbGUg
PT0gLTEpCisgICAgICAgIGluaXRTY2FsZSA9IFpPT01fSU5JVDsKKyAgICBpZiAoKGludCltaW5T
Y2FsZSA9PSAtMSkKKyAgICAgICAgbWluU2NhbGUgPSBaT09NX01JTjsKKyAgICBpZiAoKGludClt
YXhTY2FsZSA9PSAtMSkKKyAgICAgICAgbWF4U2NhbGUgPSBaT09NX01BWDsKKyAgICBpZiAoKGlu
dCl1c2VyU2NhbGFibGUgPT0gLTEpCisgICAgICAgICB1c2VyU2NhbGFibGUgPSBFSU5BX1RSVUU7
CisKKyAgICBhcHAtPnZpZXdwb3J0LncgPSAoaW50KXc7CisgICAgYXBwLT52aWV3cG9ydC5oID0g
KGludCloOworICAgIGFwcC0+dmlld3BvcnQuaW5pdFNjYWxlID0gaW5pdFNjYWxlOworICAgIGFw
cC0+dmlld3BvcnQubWluU2NhbGUgPSBtaW5TY2FsZTsKKyAgICBhcHAtPnZpZXdwb3J0Lm1heFNj
YWxlID0gbWF4U2NhbGU7CisgICAgYXBwLT52aWV3cG9ydC51c2VyU2NhbGFibGUgPSAoRWluYV9C
b29sKXVzZXJTY2FsYWJsZTsKK30KKwogc3RhdGljIHZvaWQKIG9uX21vdXNlX2Rvd24odm9pZCog
ZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50X2luZm8pCiB7
CkBAIC01NzksNiArNjUxLDcgQEAgYnJvd3NlckNyZWF0ZShjb25zdCBjaGFyICp1cmwsIGNvbnN0
IGNoYQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0
aXRsZSxjaGFuZ2VkIiwgb25fdGl0bGVfY2hhbmdlZCwgYXBwKTsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAibG9hZCxwcm9ncmVzcyIsIG9uX3Byb2dy
ZXNzLCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dz
ZXIsICJsb2FkLGZpbmlzaGVkIiwgb25fbG9hZF9maW5pc2hlZCwgYXBwKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAidmlld3BvcnQsY2hhbmdlZCIs
IG9uX3ZpZXdwb3J0X2NoYW5nZWQsIGFwcCk7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQoYXBwLT5icm93c2VyLCAidG9vbGJhcnMsdmlzaWJsZSxzZXQiLCBvbl90b29sYmFy
c192aXNpYmxlX3NldCwgYXBwKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
YXBwLT5icm93c2VyLCAidG9vbGJhcnMsdmlzaWJsZSxnZXQiLCBvbl90b29sYmFyc192aXNpYmxl
X2dldCwgYXBwKTsKSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00NTIsNCArNDUzLDEzIEBAIHZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjpjaG9vc2VJY29uRm9yRmlsZXMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIENocm9tZUNsaWVudEVmbDo6ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBm
cmFtZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3QKK3sKKyAgICBG
cmFtZUxvYWRlckNsaWVudEVmbCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8RnJhbWVMb2FkZXJDbGll
bnRFZmwqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBpZiAoY2xpZW50LT5nZXRJ
bml0TGF5b3V0Q29tcGxldGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGV3a192aWV3X3Zp
ZXdwb3J0X3NldChtX3ZpZXcsIGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdodCwgYXJn
dW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1h
eGltdW1TY2FsZSwgYXJndW1lbnRzLnVzZXJTY2FsYWJsZSk7Cit9CisKIH0KSW5kZXg6IFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkocmV2aXNpb24gNjEyMjkp
CisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzQsNiArMTM0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgaWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmcsIDB1PiYsIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+KTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVmlld3BvcnRB
cmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRz
KSBjb25zdDsKKwogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CiAgICAgS1VSTCBtX2hvdmVyZWRM
aW5rVVJMOwogfTsKSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTcwLDYgKzcxLDcgQEAgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OkZyYW1lTG9hZGVyQ2xpZW50RQogICAgICwgbV9jdXN0b21Vc2VyQWdlbnQoIiIpCiAgICAgLCBt
X3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCisg
ICAgLCBtX2luaXRMYXlvdXRDb21wbGV0ZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTU3NSwxMSArNTc3
LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2gKIAogdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKKyAgICBtX2lu
aXRMYXlvdXRDb21wbGV0ZWQgPSBmYWxzZTsKKwogICAgIGV3a19mcmFtZV91cmlfY2hhbmdlZCht
X2ZyYW1lKTsKICAgICBpZiAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV92aWV3KSAhPSBtX2Zy
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgMCk7
CiAgICAgZXdrX3ZpZXdfdXJpX2NoYW5nZWQobV92aWV3KTsKKworICAgIFZpZXdwb3J0QXJndW1l
bnRzIGFyZ3VtZW50czsKKyAgICBld2tfdmlld192aWV3cG9ydF9zZXQobV92aWV3LCBhcmd1bWVu
dHMud2lkdGgsIGFyZ3VtZW50cy5oZWlnaHQsIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFyZ3Vt
ZW50cy5taW5pbXVtU2NhbGUsIGFyZ3VtZW50cy5tYXhpbXVtU2NhbGUsIGFyZ3VtZW50cy51c2Vy
U2NhbGFibGUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZp
bmlzaERvY3VtZW50TG9hZCgpCkBAIC01OTAsNyArNTk3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRGaQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRGaXJzdExheW91dCgpCiB7CiAgICAgLy8gZW1pdCBtX2ZyYW1lLT5pbml0aWFsTGF5b3V0
Q29tcGxldGVkKCk7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2luaXRMYXlvdXRDb21w
bGV0ZWQgPSB0cnVlOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA2MTIyOSkKKysr
IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1
YmxpYyBGcmFtCiAgICAgdm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgU3RyaW5nICZhZ2Vu
dCk7CiAgICAgY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdDsKIAorICAgIHZv
aWQgc2V0SW5pdExheW91dENvbXBsZXRlZChib29sIGNvbXBsZXRlZCkgeyBtX2luaXRMYXlvdXRD
b21wbGV0ZWQgPSBjb21wbGV0ZWQ7IH0KKyAgICBib29sIGdldEluaXRMYXlvdXRDb21wbGV0ZWQo
KSB7IHJldHVybiBtX2luaXRMYXlvdXRDb21wbGV0ZWQ7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBo
YXNXZWJWaWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmlldygpIGNvbnN0
OwogCkBAIC0yMTMsNiArMjE2LDggQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJs
aWMgRnJhbQogICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KICAgICBQbHVn
aW5WaWV3KiBtX3BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2lu
OworCisgICAgYm9vbCBtX2luaXRMYXlvdXRDb21wbGV0ZWQ7CiB9OwogCiB9CkluZGV4OiBXZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfdmllCiAKIHZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfcG9wdXBf
bmV3KEV2YXNfT2JqZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50
IHNlbGVjdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIAordm9pZCAgICAgICAg
ICAgICBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHcsIGZsb2F0
IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxvYXQgbWluX3NjYWxlLCBm
bG9hdCB1c2VyX3NjYWxhYmxlKTsKKwogRXdrX0hpc3RvcnkgICAgICAqZXdrX2hpc3RvcnlfbmV3
KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCAqaGlzdG9yeSk7CiB2b2lkICAgICAgICAgICAgICBl
d2tfaGlzdG9yeV9mcmVlKEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKIApJbmRleDogV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRl
X0RhdGEgewogICAgICAgICBFaW5hX0Jvb2wgcmVzaXphYmxlX3RleHRhcmVhczoxOwogICAgICAg
ICBFaW5hX0Jvb2wgcHJpdmF0ZV9icm93c2luZzoxOwogICAgICAgICBFaW5hX0Jvb2wgY2FyZXRf
YnJvd3Npbmc6MTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGZsb2F0IHc7CisgICAg
ICAgICAgICBmbG9hdCBoOworICAgICAgICAgICAgZmxvYXQgaW5pdF9zY2FsZTsKKyAgICAgICAg
ICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1heF9zY2FsZTsKKyAgICAg
ICAgICAgIGZsb2F0IHVzZXJfc2NhbGFibGU7CisgICAgICAgIH0gdmlld3BvcnQ7CisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICBmbG9hdCBtaW5fc2NhbGU7CisgICAgICAgICAgICBmbG9h
dCBtYXhfc2NhbGU7CisgICAgICAgICAgICBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZToxOworICAg
ICAgICB9IHpvb21fcmFuZ2U7CiAgICAgfSBzZXR0aW5nczsKICAgICBzdHJ1Y3QgewogICAgICAg
ICBzdHJ1Y3QgewpAQCAtNTc0LDYgKzU4Nyw5IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIF9ld2tfdmlld18KICAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nID0gcHJp
di0+cGFnZV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHByaXYtPnNl
dHRpbmdzLmNhcmV0X2Jyb3dzaW5nID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+Y2FyZXRCcm93c2lu
Z0VuYWJsZWQoKTsKIAorICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlID0g
Wk9PTV9NSU47CisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUgPSBaT09N
X01BWDsKKwogICAgIHByaXYtPm1haW5fZnJhbWUgPSBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXco
c2QsIHByaXYsIDApLmdldCgpOwogICAgIGlmICghcHJpdi0+bWFpbl9mcmFtZSkgewogICAgICAg
ICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIGZyYW1lLiIpOwpAQCAtOTk4LDYgKzEw
MTQsMTEgQEAgdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhcwogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdik7CisKKyAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqPihw
cml2LT5tYWluX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIGlmICghY2xpZW50LT5n
ZXRJbml0TGF5b3V0Q29tcGxldGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFdlYkNvcmU6
OkZyYW1lVmlldyogdmlldyA9IHNkLT5fcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIGlm
ICh3IDw9IDAgJiYgaCA8PSAwKSB7CiAgICAgICAgIGlmICghcHJpdi0+Zml4ZWRfbGF5b3V0LnVz
ZSkKQEAgLTE3NTQsMTQgKzE3NzUsMjIgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3Qg
RXZhc19PYmplYwogRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmFwaS0+em9vbV9zZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4s
IChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UudXNl
cl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOworICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxl
LCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAg
aWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6
ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoem9vbSA+IHBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4
X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9
CiAKQEAgLTE4MjQsMTQgKzE4NTMsMjIgQEAgdm9pZCBld2tfdmlld196b29tX3dlYWtfc21vb3Ro
X3NjYWxlX3NldAogRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3Qq
IG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOworCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpP
T01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91Ymxl
KVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29t
X3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFs
c2UiKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4g
Wk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3Vi
bGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRp
bmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8
ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAo
ZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisgICAgaWYg
KHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29t
X3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CiAgICAgfQogCkBAIC0xOTc0LDEyICsyMDExLDE3IEBAIEVpbmFfQm9vbCBld2tfdmlld196
b29tX2FuaW1hdGVkX3NldChFdmEKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwogCi0gICAgaWYgKHpvb20gPCBa
T09NX01JTikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJs
ZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UudXNlcl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxz
ZSIpOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8
IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9v
bSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAg
ICB9Ci0gICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAo
em9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKICAgICB9CiAKQEAgLTM2OTIsMyArMzczNCwxMzYgQEAgdm9pZCBld2tfdmlld19kb3dubG9h
ZF9yZXF1ZXN0KEV2YXNfT2JqZQogICAgIERCRygidmlldz0lcCIsIG8pOwogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7
CiB9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoZSB2aWV3cG9ydCBoYXMgY2hh
bmdlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIHcgd2lkdGguCisgKiBAcGFy
YW0gaCBoZWlnaHQuCisgKiBAcGFyYW0gaW5pdF9zY2FsZSBpbml0aWFsU2NhbGUgdmFsdWUuCisg
KiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW1TY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2Nh
bGUgbWluaW11bVNjYWxlIHZhbHVlLgorICogQHBhcmFtIHVzZXJfc2NhbGFibGUgdXNlcnNjYWxh
YmxlIGZsYWcuCisgKgorICogRW1pdHMgc2lnbmFsOiAidmlld3BvcnQsY2hhbmdlZCIgd2l0aCBu
byBwYXJhbWV0ZXJzLgorICovCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X3NldChFdmFzX09iamVj
dCAqbywgZmxvYXQgdywgZmxvYXQgaCwgZmxvYXQgaW5pdF9zY2FsZSwgZmxvYXQgbWF4X3NjYWxl
LCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdLX1ZJRVdf
U0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC53ID0gdzsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9y
dC5oID0gaDsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlID0gaW5pdF9z
Y2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGUgPSBtaW5fc2NhbGU7
CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlID0gbWF4X3NjYWxlOworICAg
IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGUgPSB1c2VyX3NjYWxhYmxlOwor
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidmlld3BvcnQsY2hhbmdl
ZCIsIDApOworfSAKKworLyoqCisgKiBHZXQgZGF0YSBvZiB2aWV3cG9ydCBtZXRhIHRhZy4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIHcgd2lkdGguCisgKiBAcGFyYW0gaCBoZWln
aHQuCisgKiBAcGFyYW0gaW5pdF9zY2FsZSBpbml0aWFsIFNjYWxlIHZhbHVlLgorICogQHBhcmFt
IG1heF9zY2FsZSBtYXhpbXVtIFNjYWxlIHZhbHVlLgorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5p
bXVtIFNjYWxlIHZhbHVlLgorICogQHBhcmFtIHVzZXJfc2NhbGFibGUgdXNlciBTY2FsYWJsZSB2
YWx1ZS4KKyAqLwordm9pZCBld2tfdmlld192aWV3cG9ydF9nZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZs
b2F0KiBtaW5fc2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NE
X0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAgCisgICAg
aWYgKHcpCisgICAgICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudzsKKyAgICBpZiAo
aCkKKyAgICAgICAgKmggPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5oOworICAgIGlmIChpbml0
X3NjYWxlKQorICAgICAgICAqaW5pdF9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lmlu
aXRfc2NhbGU7CisgICAgaWYgKG1heF9zY2FsZSkKKyAgICAgICAgKm1heF9zY2FsZSA9IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZTsKKyAgICBpZiAobWluX3NjYWxlKQorICAgICAg
ICAqbWluX3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlOworICAgIGlm
ICh1c2VyX3NjYWxhYmxlKQorICAgICAgICAqdXNlcl9zY2FsYWJsZSA9IHByaXYtPnNldHRpbmdz
LnZpZXdwb3J0LnVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0IGN1cnJlbnQgem9vbSBy
YW5nZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVt
IHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFsdWUg
b2Ygem9vbSByYW5nZS4KKyAqIAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSByYW5n
ZSBpcyBjaGFuZ2VkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlLgorICovCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9z
Y2FsZSwgZmxvYXQgbWF4X3NjYWxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKG1heF9zY2FsZSA8IG1p
bl9zY2FsZSkgeworICAgICAgICBXUk4oIm1pbl9zY2FsZSBpcyBsYXJnZXIgdGhhbiBtYXhfc2Nh
bGUiKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgcHJpdi0+c2V0
dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGlu
Z3Muem9vbV9yYW5nZS5tYXhfc2NhbGUgPSBtYXhfc2NhbGU7CisKKyAgICByZXR1cm4gRUlOQV9U
UlVFOworfQorCisvKioKKyAqIEdldCBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFt
IG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgd2hlcmUgdG8gcmV0dXJuIHRoZSBtaW5pbXVt
IHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIHdoZXJlIHRvIHJldHVy
biB0aGUgbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICovCit2b2lkIGV3a192aWV3X3pv
b21fcmFuZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogbWF4
X3NjYWxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1pbl9zY2Fs
ZSA9IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlOworICAgIGlmIChtYXhfc2Nh
bGUpCisgICAgICAgICptYXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9z
Y2FsZTsKK30KKworLyoqCisgKiBTZXQgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJh
bSBvIHZpZXcuCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hp
Y2ggdG8gZW5hYmxlIHpvb20uIEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8K
K3ZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKK30KKworLyoqCisgKiBHZXQgaWYgem9v
bSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdXNlcl9zY2Fs
YWJsZSB3aGVyZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2FsYWJsZSB2YWx1ZS4KKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFM
U0UgaWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoRXZh
c19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS51c2VyX3NjYWxhYmxlOworfQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCShyZXZpc2lvbiA2MTIyOSkK
KysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgz
LDcgQEAgZXh0ZXJuICJDIiB7CiAgKiAgLSAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9h
ZDogcmVwb3J0cyBhIGRvd25sb2FkIGlzIGJlaW5nIHJlcXVlc3RlZAogICogICAgYW5kIGFzIGFy
Z3VtZW50cyBnaXZlcyBpdHMgZGV0YWlscy4KICAqICAtICJpY29uLHJlY2VpdmVkIiwgdm9pZDog
bWFpbiBmcmFtZSByZWNlaXZlZCBhbiBpY29uLgorICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCB2
b2lkOiBSZXBvcnQgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4gCiAgKi8KIAogdHlwZWRlZiBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKQEAgLTQ1MSw2
ICs0NTIsMTIgQEAgRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYQogRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBj
YWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWly
b190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCitFQVBJIHZvaWQgZXdrX3Zp
ZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0
KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCog
dXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChF
dmFzX09iamVjdCogbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpOworRUFQSSB2
b2lkIGV3a192aWV3X3pvb21fcmFuZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogbWluX3Nj
YWxlLCBmbG9hdCogbWF4X3NjYWxlKTsKK0VBUEkgdm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxl
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpOworRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoRXZhc19PYmplY3QqIG8pOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59221</attachid>
            <date>2010-06-20 18:56:36 -0700</date>
            <delta_ts>2010-06-30 03:16:05 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-10</desc>
            <filename>viewport-patch-10.txt</filename>
            <type>text/plain</type>
            <size>21257</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjEzMDgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMTAtMDYtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAgICAgICAqIGVm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFuZ2VkJyBzaWduYWwu
CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKTogQWRkIGEgY2FsbGJhY2sgZnVuY3Rpb24g
Zm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAgICAoYnJvd3NlckNyZWF0
ZSk6IFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6IEltcGxlbWVudCBtZXRob2QgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiAgRGVmaW5l
IG1ldGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgYSBmdW5jdGlvbiB0byBz
ZXQgbGF5b3V0CisgICAgICAgIHdoZW4gd2Vic2l0ZSBkb2Vzbid0IGNvbnRhaW4gdmlld3BvcnQg
dGFnLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Z2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgICogZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oOiBBZGRlZCBpbnRlcm5hbCBBUElzIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFn
LgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBBUElzIHRvIHByb2Nlc3Mg
YW5kIHRvIGhhbmRsZSB2aWV3cG9ydCB0YWcuCisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmll
d3BvcnRfc2V0KTogUmVwb3J0cyB0aGF0IHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICAgICAgICAo
ZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KTogR2V0cyBkYXRhIG9mIHZpZXdwb3J0IHRhZy4KKyAgICAg
ICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KTogU2V0cyB0aGUgY3VycmVudCB6b29tIHJhbmdl
LgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9nZXQpOiBHZXRzIHRoZSBjdXJyZW50IHpv
b20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6IFNldHMgaWYg
em9vbSBpcyBlbmFibGVkLgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQpOiBH
ZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBlZmwvZXdrL2V3a192aWV3Lmg6CisK
IDIwMTAtMDYtMTUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4LiBTaW1wbGUgdHlwby4KSW5kZXg6IFdlYktp
dC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0VXZWJM
YXVuY2hlci9tYWluLmMJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9FV2ViTGF1bmNo
ZXIvbWFpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5IEBACiAKICNkZWZpbmUgREVG
QVVMVF9XSURUSCAgICAgIDgwMAogI2RlZmluZSBERUZBVUxUX0hFSUdIVCAgICAgNjAwCisjZGVm
aW5lIFpPT01fSU5JVCAgICAgICAgICAxLjAKKyNkZWZpbmUgWk9PTV9NSU4gICAgICAgICAgIDEu
MAorI2RlZmluZSBaT09NX01BWCAgICAgICAgICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQs
IGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTEyNSw2ICsxMjgsMTUgQEAgc3RhdGljIGNvbnN0IEVjb3JlX0dldG9wdCBvcHRpb25zID0g
ewogICAgIH0KIH07CiAKK3R5cGVkZWYgc3RydWN0IF9WaWV3cG9ydCB7CisgICAgaW50IHc7Cisg
ICAgaW50IGg7CisgICAgZmxvYXQgaW5pdFNjYWxlOworICAgIGZsb2F0IG1pblNjYWxlOworICAg
IGZsb2F0IG1heFNjYWxlOworICAgIEVpbmFfQm9vbCB1c2VyU2NhbGFibGU7Cit9IFZpZXdwb3J0
OworCiB0eXBlZGVmIHN0cnVjdCBfRUxhdW5jaGVyIHsKICAgICBFY29yZV9FdmFzICplZTsKICAg
ICBFdmFzICpldmFzOwpAQCAtMTMyLDYgKzE0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9FTGF1bmNo
ZXIgewogICAgIEV2YXNfT2JqZWN0ICpicm93c2VyOwogICAgIGNvbnN0IGNoYXIgKnRoZW1lOwog
ICAgIGNvbnN0IGNoYXIgKnVzZXJBZ2VudDsKKyAgICBWaWV3cG9ydCB2aWV3cG9ydDsKIH0gRUxh
dW5jaGVyOwogCiBzdGF0aWMgdm9pZCBicm93c2VyRGVzdHJveShFY29yZV9FdmFzICplZSk7CkBA
IC0yMjUsNiArMjM4LDIzIEBAIHRpdGxlX3NldChFY29yZV9FdmFzICplZSwgY29uc3QgY2hhciAq
dGkKICAgICBlY29yZV9ldmFzX3RpdGxlX3NldChlZSwgbGFiZWwpOwogfQogCisvKioKKyAqIFRo
aXMgaXMgZW4gZXhhbXBsZSBmdW5jdGlvbiB0byBhZGp1c3Qgdmlld3BvcnQgdmlhIHZpZXdwb3J0
IHRhZydzIGFyZ3VtZW50cy4KKyAqIEFwcGxpY2F0aW9uIGNhbiBpbnZva2UgdGhpcyBmdW5jdGlv
biBpbiBvcmRlciB0byBhZGp1c3Qgdmlld3BvcnQgdGFnIHdoZW4gaXQgaXMgcmVxdWlyZWQuCisg
Ki8KK3N0YXRpYyB2b2lkCit2aWV3cG9ydF9zZXQoKQoreworICAgIEVMYXVuY2hlciAqYXBwOwor
ICAgIGFwcCA9IChFTGF1bmNoZXIqKSBlaW5hX2xpc3RfZGF0YV9nZXQod2luZG93cyk7CisKKyAg
ICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoYXBwLT5icm93c2VyLCBhcHAtPnZpZXdw
b3J0LncsIGFwcC0+dmlld3BvcnQuaCk7CisgICAgZXdrX3ZpZXdfem9vbV9zZXQoYXBwLT5icm93
c2VyLCBhcHAtPnZpZXdwb3J0LmluaXRTY2FsZSwgMCwgMCk7CisgICAgaWYgKCFld2tfdmlld196
b29tX3JhbmdlX3NldChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQubWluU2NhbGUsIGFwcC0+
dmlld3BvcnQubWF4U2NhbGUpKQorICAgICAgIGluZm8oIiBGYWlsIHRvIHNldCB6b29tIHJhbmdl
LiBtaW5TY2FsZSA9ICVmLCBtYXhTY2FsZSA9ICVmXG4iLCBhcHAtPnZpZXdwb3J0Lm1pblNjYWxl
LCBhcHAtPnZpZXdwb3J0Lm1heFNjYWxlKTsKKyAgICBld2tfdmlld191c2VyX3NjYWxhYmxlX3Nl
dChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQudXNlclNjYWxhYmxlKTsKK30KKwogc3RhdGlj
IHZvaWQKIG9uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vi
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAgLTM0NSw2ICszNzUsNDggQEAgb25fdG9vbHRp
cF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEsIEV2YQogICAgICAgICBpbmZvKCIlc1xuIiwgdGV4
dCk7CiB9CiAKKy8qKgorICogInZpZXdwb3J0LGNoYW5nZWQiIHNpZ25hbCB3aWxsIGJlIGFsd2F5
cyBlbWl0dGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHZpZXdwb3J0IGV4aXN0ZW5jZS4gCisgKgorICog
SWYgeW91IGRvbid0IHdhbnQgdG8gcHJvY2VzcyB0aGUgdmlld3BvcnQgdGFnLCB5b3UgY2FuIGVp
dGhlciBkbyBub3RoaW5nIGluIHRoaXMgY2FsbGJhY2sKKyAqIG9yIHNpbXBseSBpZ25vcmUgdGhl
IHNpZ25hbCBpbiB5b3VyIGFwcGxpY2F0aW9uLgorICogCisgKiBNb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoaXMgY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3NhZmFy
aS9saWJyYXJ5L2RvY3VtCisgKiBlbnRhdGlvbi9hcHBsZWFwcGxpY2F0aW9ucy9yZWZlcmVuY2Uv
c2FmYXJpd2ViY29udGVudC91c2luZ3RoZXZpZXdwb3J0L3VzaW5ndGhldmlld3BvcnQuaHRtbAor
ICovCitzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEVMYXVuY2hlciAq
YXBwID0gKEVMYXVuY2hlciAqKXVzZXJfZGF0YTsKKyAgIAorICAgIGZsb2F0IHcsIGgsIGluaXRT
Y2FsZSwgbWluU2NhbGUsIG1heFNjYWxlLCB1c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192
aWV3cG9ydF9nZXQod2VidmlldywgJncsICZoLCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5T
Y2FsZSwgJnVzZXJTY2FsYWJsZSk7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGVyZSBpcyBubyBh
cmd1bWVudCBpbiB2aWV3cG9ydCB0YWcsIGFyZ3VtZW50J3MgdmFsdWUgaXMgLTEuCisgICAgICov
CisgICAgaWYgKChpbnQpdyA9PSAtMSkKKyAgICAgICAgdyA9IERFRkFVTFRfV0lEVEg7CisgICAg
aWYgKChpbnQpaCA9PSAtMSkKKyAgICAgICAgaCA9IERFRkFVTFRfSEVJR0hUOworICAgIGlmICgo
aW50KWluaXRTY2FsZSA9PSAtMSkKKyAgICAgICAgaW5pdFNjYWxlID0gWk9PTV9JTklUOworICAg
IGlmICgoaW50KW1pblNjYWxlID09IC0xKQorICAgICAgICBtaW5TY2FsZSA9IFpPT01fTUlOOwor
ICAgIGlmICgoaW50KW1heFNjYWxlID09IC0xKQorICAgICAgICBtYXhTY2FsZSA9IFpPT01fTUFY
OworICAgIGlmICgoaW50KXVzZXJTY2FsYWJsZSA9PSAtMSkKKyAgICAgICAgIHVzZXJTY2FsYWJs
ZSA9IEVJTkFfVFJVRTsKKworICAgIGFwcC0+dmlld3BvcnQudyA9IChpbnQpdzsKKyAgICBhcHAt
PnZpZXdwb3J0LmggPSAoaW50KWg7CisgICAgYXBwLT52aWV3cG9ydC5pbml0U2NhbGUgPSBpbml0
U2NhbGU7CisgICAgYXBwLT52aWV3cG9ydC5taW5TY2FsZSA9IG1pblNjYWxlOworICAgIGFwcC0+
dmlld3BvcnQubWF4U2NhbGUgPSBtYXhTY2FsZTsKKyAgICBhcHAtPnZpZXdwb3J0LnVzZXJTY2Fs
YWJsZSA9IChFaW5hX0Jvb2wpdXNlclNjYWxhYmxlOworfQorCiBzdGF0aWMgdm9pZAogb25fbW91
c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCog
ZXZlbnRfaW5mbykKIHsKQEAgLTU3OSw2ICs2NTEsNyBAQCBicm93c2VyQ3JlYXRlKGNvbnN0IGNo
YXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFw
cC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRsZV9jaGFuZ2VkLCBhcHApOwogICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJsb2FkLHByb2dy
ZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmluaXNoZWQiLCBvbl9sb2FkX2ZpbmlzaGVkLCBhcHAp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ2aWV3
cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRfY2hhbmdlZCwgYXBwKTsKIAogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLHNl
dCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIG9uX3Rv
b2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQ1Miw0ICs0NTMsMTMgQEAg
dm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29zZUljb25Gb3JGaWxlcwogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1
bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKSBj
b25zdAoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNfY2FzdDxG
cmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIGlm
IChjbGllbnQtPmdldEluaXRMYXlvdXRDb21wbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgYXJndW1lbnRzLndpZHRoLCBhcmd1bWVu
dHMuaGVpZ2h0LCBhcmd1bWVudHMuaW5pdGlhbFNjYWxlLCBhcmd1bWVudHMubWluaW11bVNjYWxl
LCBhcmd1bWVudHMubWF4aW11bVNjYWxlLCBhcmd1bWVudHMudXNlclNjYWxhYmxlKTsKK30KKwog
fQpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShy
ZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFt
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBpY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZywg
MHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1l
bnRzJiBhcmd1bWVudHMpIGNvbnN0OworCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKICAgICBL
VVJMIG1faG92ZXJlZExpbmtVUkw7CiB9OwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDYxMjI5KQorKysg
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisj
aW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNzAsNiArNzEsNyBAQCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFCiAgICAgLCBtX2N1c3RvbVVzZXJBZ2Vu
dCgiIikKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1Bs
dWdpbihmYWxzZSkKKyAgICAsIG1faW5pdExheW91dENvbXBsZXRlZChmYWxzZSkKIHsKIH0KIApA
QCAtNTc1LDExICs1NzcsMTYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDaAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQo
KQogeworICAgIG1faW5pdExheW91dENvbXBsZXRlZCA9IGZhbHNlOworCiAgICAgZXdrX2ZyYW1l
X3VyaV9jaGFuZ2VkKG1fZnJhbWUpOwogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldCht
X3ZpZXcpICE9IG1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBld2tfdmlld190aXRsZV9z
ZXQobV92aWV3LCAwKTsKICAgICBld2tfdmlld191cmlfY2hhbmdlZChtX3ZpZXcpOworCisgICAg
Vmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworICAgIGV3a192aWV3X3ZpZXdwb3J0X3NldCht
X3ZpZXcsIGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRzLmluaXRp
YWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1TY2FsZSwg
YXJndW1lbnRzLnVzZXJTY2FsYWJsZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKQEAgLTU5MCw3ICs1OTcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKIHsKICAgICAvLyBlbWl0IG1fZnJhbWUt
PmluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
aW5pdExheW91dENvbXBsZXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKSW5kZXg6IFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlz
aW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIGNsYXNzIEZyYW1lTG9hZGVy
Q2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25z
dCBTdHJpbmcgJmFnZW50KTsKICAgICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCgpIGNv
bnN0OwogCisgICAgdm9pZCBzZXRJbml0TGF5b3V0Q29tcGxldGVkKGJvb2wgY29tcGxldGVkKSB7
IG1faW5pdExheW91dENvbXBsZXRlZCA9IGNvbXBsZXRlZDsgfQorICAgIGJvb2wgZ2V0SW5pdExh
eW91dENvbXBsZXRlZCgpIHsgcmV0dXJuIG1faW5pdExheW91dENvbXBsZXRlZDsgfQorCiAgICAg
dmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJh
bWVWaWV3KCkgY29uc3Q7CiAKQEAgLTIxMyw2ICsyMTYsOCBAQCBjbGFzcyBGcmFtZUxvYWRlckNs
aWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0
YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJl
c3BvbnNlVG9QbHVnaW47CisKKyAgICBib29sIG1faW5pdExheW91dENvbXBsZXRlZDsKIH07CiAK
IH0KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZs
L2V3ay9ld2tfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWUKIAogdm9pZCAgICAgICAgICAgICBl
d2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwog
Cit2b2lkICAgICAgICAgICAgIGV3a192aWV3X3ZpZXdwb3J0X3NldChFdmFzX09iamVjdCAqbywg
ZmxvYXQgdywgZmxvYXQgaCwgZmxvYXQgaW5pdF9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9h
dCBtaW5fc2NhbGUsIGZsb2F0IHVzZXJfc2NhbGFibGUpOworCiBFd2tfSGlzdG9yeSAgICAgICpl
d2tfaGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0ICpoaXN0b3J5KTsKIHZvaWQg
ICAgICAgICAgICAgIGV3a19oaXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwogCklu
ZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxOSBAQCBzdHJ1Y3QgX0V3
a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgIEVpbmFfQm9vbCByZXNpemFibGVfdGV4dGFy
ZWFzOjE7CiAgICAgICAgIEVpbmFfQm9vbCBwcml2YXRlX2Jyb3dzaW5nOjE7CiAgICAgICAgIEVp
bmFfQm9vbCBjYXJldF9icm93c2luZzoxOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
ZmxvYXQgdzsKKyAgICAgICAgICAgIGZsb2F0IGg7CisgICAgICAgICAgICBmbG9hdCBpbml0X3Nj
YWxlOworICAgICAgICAgICAgZmxvYXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4
X3NjYWxlOworICAgICAgICAgICAgZmxvYXQgdXNlcl9zY2FsYWJsZTsKKyAgICAgICAgfSB2aWV3
cG9ydDsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAg
ICAgICAgICAgIGZsb2F0IG1heF9zY2FsZTsKKyAgICAgICAgICAgIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlOjE7CisgICAgICAgIH0gem9vbV9yYW5nZTsKICAgICB9IHNldHRpbmdzOwogICAgIHN0
cnVjdCB7CiAgICAgICAgIHN0cnVjdCB7CkBAIC01NzQsNiArNTg3LDkgQEAgc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVf
YnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRfYnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdz
LT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogCisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5taW5fc2NhbGUgPSBaT09NX01JTjsKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1h
eF9zY2FsZSA9IFpPT01fTUFYOworCiAgICAgcHJpdi0+bWFpbl9mcmFtZSA9IF9ld2tfdmlld19j
b3JlX2ZyYW1lX25ldyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAgICAgaWYgKCFwcml2LT5tYWluX2Zy
YW1lKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIG1haW4gZnJhbWUuIik7
CkBAIC05OTgsNiArMTAxNCwxMSBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3Nl
dChFdmFzCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKworICAgIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbCo+KHByaXYtPm1haW5fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAg
aWYgKCFjbGllbnQtPmdldEluaXRMYXlvdXRDb21wbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc2QtPl9wcml2LT5tYWluX2ZyYW1lLT52
aWV3KCk7CiAgICAgaWYgKHcgPD0gMCAmJiBoIDw9IDApIHsKICAgICAgICAgaWYgKCFwcml2LT5m
aXhlZF9sYXlvdXQudXNlKQpAQCAtMTc1NCwxNCArMTc3NSwyMiBAQCBmbG9hdCBld2tfdmlld196
b29tX2dldChjb25zdCBFdmFzX09iamVjCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20g
PCBaT09NX01JTikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRv
dWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlz
IGZhbHNlIik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIGlmICh6
b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworICAg
IGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KIApAQCAtMTgyNCwxNCArMTg1MywyMiBAQCB2b2lkIGV3a192aWV3X3pv
b21fd2Vha19zbW9vdGhfc2NhbGVfc2V0CiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Nl
dChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwotICAg
IGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYg
OiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoIXByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UudXNlcl9zY2FsYWJsZSkgeworICAgICAgICBXUk4oInVzZXJT
Y2FsYWJsZSBpcyBmYWxzZSIpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0g
ICAgaWYgKHpvb20gPiBaT09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAl
ZiA6ICVmIiwgKGRvdWJsZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICh6b29t
IDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6
b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwor
ICAgIH0KKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxl
KSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOwogICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE5NzQsMTIgKzIwMTEsMTcgQEAgRWluYV9C
b29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YQogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7CiAKLSAg
ICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVm
IDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworICAgIGlmICghcHJpdi0+
c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNj
YWxhYmxlIGlzIGZhbHNlIik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKwor
ICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKKyAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGlu
Z3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpv
b20pOworICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUp
IHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+
c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMzY5MiwzICszNzM0LDEzNiBAQCB2b2lkIGV3
a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplCiAgICAgREJHKCJ2aWV3PSVwIiwgbyk7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZG93bmxvYWQscmVxdWVz
dCIsIGRvd25sb2FkKTsKIH0KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZp
ZXdwb3J0IGhhcyBjaGFuZ2VkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdyB3
aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGluaXRpYWxT
Y2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bVNjYWxlIHZhbHVlLgorICog
QHBhcmFtIG1pbl9zY2FsZSBtaW5pbXVtU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gdXNlcl9zY2Fs
YWJsZSB1c2Vyc2NhbGFibGUgZmxhZy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxj
aGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRf
c2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB3LCBmbG9hdCBoLCBmbG9hdCBpbml0X3NjYWxlLCBm
bG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSkKK3sK
KyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBw
cml2KTsKKworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LncgPSB3OworICAgIHByaXYtPnNl
dHRpbmdzLnZpZXdwb3J0LmggPSBoOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LmluaXRf
c2NhbGUgPSBpbml0X3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2Fs
ZSA9IG1pbl9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGUgPSBt
YXhfc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZSA9IHVz
ZXJfc2NhbGFibGU7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ2
aWV3cG9ydCxjaGFuZ2VkIiwgMCk7Cit9IAorCisvKioKKyAqIEdldHMgZGF0YSBvZiB2aWV3cG9y
dCBtZXRhIHRhZy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIHcgd2lkdGguCisg
KiBAcGFyYW0gaCBoZWlnaHQuCisgKiBAcGFyYW0gaW5pdF9zY2FsZSBpbml0aWFsIFNjYWxlIHZh
bHVlLgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtIFNjYWxlIHZhbHVlLgorICogQHBhcmFt
IG1pbl9zY2FsZSBtaW5pbXVtIFNjYWxlIHZhbHVlLgorICogQHBhcmFtIHVzZXJfc2NhbGFibGUg
dXNlciBTY2FsYWJsZSB2YWx1ZS4KKyAqLwordm9pZCBld2tfdmlld192aWV3cG9ydF9nZXQoRXZh
c19PYmplY3QgKm8sIGZsb2F0KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0
KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOworICAgCisgICAgaWYgKHcpCisgICAgICAgICp3ID0gcHJpdi0+c2V0dGluZ3Mudmlld3Bv
cnQudzsKKyAgICBpZiAoaCkKKyAgICAgICAgKmggPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5o
OworICAgIGlmIChpbml0X3NjYWxlKQorICAgICAgICAqaW5pdF9zY2FsZSA9IHByaXYtPnNldHRp
bmdzLnZpZXdwb3J0LmluaXRfc2NhbGU7CisgICAgaWYgKG1heF9zY2FsZSkKKyAgICAgICAgKm1h
eF9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZTsKKyAgICBpZiAobWlu
X3NjYWxlKQorICAgICAgICAqbWluX3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWlu
X3NjYWxlOworICAgIGlmICh1c2VyX3NjYWxhYmxlKQorICAgICAgICAqdXNlcl9zY2FsYWJsZSA9
IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0LnVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogU2V0
cyB0aGUgY3VycmVudCB6b29tIHJhbmdlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFy
YW0gbWluX3NjYWxlIG1pbmltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAqIEBwYXJhbSBtYXhf
c2NhbGUgbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiB6b29tIHJhbmdlIGlzIGNoYW5nZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9y
IGZhaWx1cmUuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09i
amVjdCogbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAg
ICBpZiAobWF4X3NjYWxlIDwgbWluX3NjYWxlKSB7CisgICAgICAgIFdSTigibWluX3NjYWxlIGlz
IGxhcmdlciB0aGFuIG1heF9zY2FsZSIpOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICB9CisKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSA9IG1pbl9zY2Fs
ZTsKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSA9IG1heF9zY2FsZTsK
KworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICogR2V0cyB0aGUgY3VycmVudCB6
b29tIHJhbmdlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gbWluX3NjYWxlIHdo
ZXJlIHRvIHJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogQHBhcmFt
IG1heF9zY2FsZSB3aGVyZSB0byByZXR1cm4gdGhlIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5n
ZS4KKyAqLwordm9pZCBld2tfdmlld196b29tX3JhbmdlX2dldChFdmFzX09iamVjdCogbywgZmxv
YXQqIG1pbl9zY2FsZSwgZmxvYXQqIG1heF9zY2FsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmIChtaW5f
c2NhbGUpCisgICAgICAgICptaW5fc2NhbGUgPSBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1p
bl9zY2FsZTsKKyAgICBpZiAobWF4X3NjYWxlKQorICAgICAgICAqbWF4X3NjYWxlID0gcHJpdi0+
c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGU7Cit9CisKKy8qKgorICogU2V0cyBpZiB6b29t
IGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB1c2VyX3NjYWxh
YmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVsdHMK
KyAqIHRvIEBjIEVJTkFfVFJVRS4KKyAqLwordm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3Nl
dChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAg
ICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUgPSB1c2VyX3NjYWxhYmxl
OworfQorCisvKioKKyAqIEdldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcuCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVyZSB0byByZXR1cm4gdGhlIGN1cnJl
bnQgdXNlciBzY2FsYWJsZSB2YWx1ZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB6
b29tIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdf
U0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlOworfQpJbmRleDog
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5oCShyZXZpc2lvbiA2MTIyOSkKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgZXh0ZXJuICJDIiB7CiAgKiAgLSAiZG93
bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZDogcmVwb3J0cyBhIGRvd25sb2FkIGlzIGJlaW5n
IHJlcXVlc3RlZAogICogICAgYW5kIGFzIGFyZ3VtZW50cyBnaXZlcyBpdHMgZGV0YWlscy4KICAq
ICAtICJpY29uLHJlY2VpdmVkIiwgdm9pZDogbWFpbiBmcmFtZSByZWNlaXZlZCBhbiBpY29uLgor
ICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCB2b2lkOiBSZXBvcnQgdGhhdCB2aWV3cG9ydCBoYXMg
Y2hhbmdlZC4gCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdr
X1ZpZXdfU21hcnRfRGF0YTsKQEAgLTQ1MSw2ICs0NTIsMTIgQEAgRUFQSSB2b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfdHJhbnNsYQogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5n
bGUgKmFyZWEpOwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUg
KmFyZWEpOwogCitFQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxl
LCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogdXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9v
bCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgbWluX3NjYWxl
LCBmbG9hdCBtYXhfc2NhbGUpOworRUFQSSB2b2lkIGV3a192aWV3X3pvb21fcmFuZ2VfZ2V0KEV2
YXNfT2JqZWN0KiBvLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlKTsKK0VBUEkg
dm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IHVzZXJfc2NhbGFibGUpOworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9n
ZXQoRXZhc19PYmplY3QqIG8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59719</attachid>
            <date>2010-06-24 18:50:32 -0700</date>
            <delta_ts>2010-06-25 09:18:58 -0700</delta_ts>
            <desc> viewport-patch-for-eflwebkit-11</desc>
            <filename>patch-viewport.txt</filename>
            <type>text/plain</type>
            <size>21276</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjEzMDgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMTAtMDYtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAgICAgICAqIGVm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFuZ2VkJyBzaWduYWwu
CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKTogQWRkIGEgY2FsbGJhY2sgZnVuY3Rpb24g
Zm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAgICAoYnJvd3NlckNyZWF0
ZSk6IFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6IEltcGxlbWVudCBtZXRob2QgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiAgRGVmaW5l
IG1ldGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgYSBmdW5jdGlvbiB0byBz
ZXQgbGF5b3V0CisgICAgICAgIHdoZW4gd2Vic2l0ZSBkb2Vzbid0IGNvbnRhaW4gdmlld3BvcnQg
dGFnLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Z2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgICogZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oOiBBZGRlZCBpbnRlcm5hbCBBUElzIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFn
LgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBBUElzIHRvIHByb2Nlc3Mg
YW5kIHRvIGhhbmRsZSB2aWV3cG9ydCB0YWcuCisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmll
d3BvcnRfc2V0KTogUmVwb3J0cyB0aGF0IHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICAgICAgICAo
ZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KTogR2V0cyBkYXRhIG9mIHZpZXdwb3J0IHRhZy4KKyAgICAg
ICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KTogU2V0cyB0aGUgY3VycmVudCB6b29tIHJhbmdl
LgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9nZXQpOiBHZXRzIHRoZSBjdXJyZW50IHpv
b20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6IFNldHMgaWYg
em9vbSBpcyBlbmFibGVkLgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQpOiBH
ZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBlZmwvZXdrL2V3a192aWV3Lmg6CisK
IDIwMTAtMDYtMTUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4LiBTaW1wbGUgdHlwby4KSW5kZXg6IFdlYktp
dC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0VXZWJM
YXVuY2hlci9tYWluLmMJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9FV2ViTGF1bmNo
ZXIvbWFpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5IEBACiAKICNkZWZpbmUgREVG
QVVMVF9XSURUSCAgICAgIDgwMAogI2RlZmluZSBERUZBVUxUX0hFSUdIVCAgICAgNjAwCisjZGVm
aW5lIERFRkFVTFRfWk9PTV9JTklUICAxLjAKKyNkZWZpbmUgREVGQVVMVF9aT09NX01JTiAgIDEu
MAorI2RlZmluZSBERUZBVUxUX1pPT01fTUFYICAgMS4wCiAKICNkZWZpbmUgaW5mbyhmb3JtYXQs
IGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTEyNSw2ICsxMjgsMTUgQEAgc3RhdGljIGNvbnN0IEVjb3JlX0dldG9wdCBvcHRpb25zID0g
ewogICAgIH0KIH07CiAKK3R5cGVkZWYgc3RydWN0IF9WaWV3cG9ydCB7CisgICAgaW50IHc7Cisg
ICAgaW50IGg7CisgICAgZmxvYXQgaW5pdFNjYWxlOworICAgIGZsb2F0IG1pblNjYWxlOworICAg
IGZsb2F0IG1heFNjYWxlOworICAgIEVpbmFfQm9vbCB1c2VyU2NhbGFibGU7Cit9IFZpZXdwb3J0
OworCiB0eXBlZGVmIHN0cnVjdCBfRUxhdW5jaGVyIHsKICAgICBFY29yZV9FdmFzICplZTsKICAg
ICBFdmFzICpldmFzOwpAQCAtMTMyLDYgKzE0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9FTGF1bmNo
ZXIgewogICAgIEV2YXNfT2JqZWN0ICpicm93c2VyOwogICAgIGNvbnN0IGNoYXIgKnRoZW1lOwog
ICAgIGNvbnN0IGNoYXIgKnVzZXJBZ2VudDsKKyAgICBWaWV3cG9ydCB2aWV3cG9ydDsKIH0gRUxh
dW5jaGVyOwogCiBzdGF0aWMgdm9pZCBicm93c2VyRGVzdHJveShFY29yZV9FdmFzICplZSk7CkBA
IC0yMjUsNiArMjM4LDIzIEBAIHRpdGxlX3NldChFY29yZV9FdmFzICplZSwgY29uc3QgY2hhciAq
dGkKICAgICBlY29yZV9ldmFzX3RpdGxlX3NldChlZSwgbGFiZWwpOwogfQogCisvKioKKyAqIFRo
aXMgaXMgZW4gZXhhbXBsZSBmdW5jdGlvbiB0byBhZGp1c3Qgdmlld3BvcnQgdmlhIHZpZXdwb3J0
IHRhZydzIGFyZ3VtZW50cy4KKyAqIEFwcGxpY2F0aW9uIGNhbiBpbnZva2UgdGhpcyBmdW5jdGlv
biBpbiBvcmRlciB0byBhZGp1c3Qgdmlld3BvcnQgdGFnIHdoZW4gaXQgaXMgcmVxdWlyZWQuCisg
Ki8KK3N0YXRpYyB2b2lkCit2aWV3cG9ydF9zZXQoKQoreworICAgIEVMYXVuY2hlciAqYXBwOwor
ICAgIGFwcCA9IChFTGF1bmNoZXIqKSBlaW5hX2xpc3RfZGF0YV9nZXQod2luZG93cyk7CisKKyAg
ICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoYXBwLT5icm93c2VyLCBhcHAtPnZpZXdw
b3J0LncsIGFwcC0+dmlld3BvcnQuaCk7CisgICAgZXdrX3ZpZXdfem9vbV9zZXQoYXBwLT5icm93
c2VyLCBhcHAtPnZpZXdwb3J0LmluaXRTY2FsZSwgMCwgMCk7CisgICAgaWYgKCFld2tfdmlld196
b29tX3JhbmdlX3NldChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQubWluU2NhbGUsIGFwcC0+
dmlld3BvcnQubWF4U2NhbGUpKQorICAgICAgICBpbmZvKCIgRmFpbCB0byBzZXQgem9vbSByYW5n
ZS4gbWluU2NhbGUgPSAlZiwgbWF4U2NhbGUgPSAlZlxuIiwgYXBwLT52aWV3cG9ydC5taW5TY2Fs
ZSwgYXBwLT52aWV3cG9ydC5tYXhTY2FsZSk7CisgICAgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9z
ZXQoYXBwLT5icm93c2VyLCBhcHAtPnZpZXdwb3J0LnVzZXJTY2FsYWJsZSk7Cit9CisKIHN0YXRp
YyB2b2lkCiBvbl90aXRsZV9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndl
YnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CkBAIC0zNDUsNiArMzc1LDQ4IEBAIG9uX3Rvb2x0
aXBfdGV4dF9zZXQodm9pZCogdXNlcl9kYXRhLCBFdmEKICAgICAgICAgaW5mbygiJXNcbiIsIHRl
eHQpOwogfQogCisvKioKKyAqICJ2aWV3cG9ydCxjaGFuZ2VkIiBzaWduYWwgd2lsbCBiZSBhbHdh
eXMgZW1pdHRlZCByZWdhcmRsZXNzIG9mIHRoZSB2aWV3cG9ydCBleGlzdGVuY2UuCisgKgorICog
SWYgeW91IGRvbid0IHdhbnQgdG8gcHJvY2VzcyB0aGUgdmlld3BvcnQgdGFnLCB5b3UgY2FuIGVp
dGhlciBkbyBub3RoaW5nIGluIHRoaXMgY2FsbGJhY2sKKyAqIG9yIHNpbXBseSBpZ25vcmUgdGhl
IHNpZ25hbCBpbiB5b3VyIGFwcGxpY2F0aW9uLgorICogCisgKiBNb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoaXMgY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3NhZmFy
aS9saWJyYXJ5L2RvY3VtCisgKiBlbnRhdGlvbi9hcHBsZWFwcGxpY2F0aW9ucy9yZWZlcmVuY2Uv
c2FmYXJpd2ViY29udGVudC91c2luZ3RoZXZpZXdwb3J0L3VzaW5ndGhldmlld3BvcnQuaHRtbAor
ICovCitzdGF0aWMgdm9pZAorb25fdmlld3BvcnRfY2hhbmdlZCh2b2lkKiB1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEVMYXVuY2hlciAq
YXBwID0gKEVMYXVuY2hlciAqKXVzZXJfZGF0YTsKKworICAgIGZsb2F0IHcsIGgsIGluaXRTY2Fs
ZSwgbWluU2NhbGUsIG1heFNjYWxlLCB1c2VyU2NhbGFibGU7CisKKyAgICBld2tfdmlld192aWV3
cG9ydF9nZXQod2VidmlldywgJncsICZoLCAmaW5pdFNjYWxlLCAmbWF4U2NhbGUsICZtaW5TY2Fs
ZSwgJnVzZXJTY2FsYWJsZSk7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGVyZSBpcyBubyBhcmd1
bWVudCBpbiB2aWV3cG9ydCB0YWcsIGFyZ3VtZW50J3MgdmFsdWUgaXMgLTEuCisgICAgICovCisg
ICAgaWYgKChpbnQpdyA9PSAtMSkKKyAgICAgICAgdyA9IERFRkFVTFRfV0lEVEg7CisgICAgaWYg
KChpbnQpaCA9PSAtMSkKKyAgICAgICAgaCA9IERFRkFVTFRfSEVJR0hUOworICAgIGlmICgoaW50
KWluaXRTY2FsZSA9PSAtMSkKKyAgICAgICAgaW5pdFNjYWxlID0gREVGQVVMVF9aT09NX0lOSVQ7
CisgICAgaWYgKChpbnQpbWluU2NhbGUgPT0gLTEpCisgICAgICAgIG1pblNjYWxlID0gREVGQVVM
VF9aT09NX01JTjsKKyAgICBpZiAoKGludCltYXhTY2FsZSA9PSAtMSkKKyAgICAgICAgbWF4U2Nh
bGUgPSBERUZBVUxUX1pPT01fTUFYOworICAgIGlmICgoaW50KXVzZXJTY2FsYWJsZSA9PSAtMSkK
KyAgICAgICAgdXNlclNjYWxhYmxlID0gRUlOQV9UUlVFOworCisgICAgYXBwLT52aWV3cG9ydC53
ID0gKGludCl3OworICAgIGFwcC0+dmlld3BvcnQuaCA9IChpbnQpaDsKKyAgICBhcHAtPnZpZXdw
b3J0LmluaXRTY2FsZSA9IGluaXRTY2FsZTsKKyAgICBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlID0g
bWluU2NhbGU7CisgICAgYXBwLT52aWV3cG9ydC5tYXhTY2FsZSA9IG1heFNjYWxlOworICAgIGFw
cC0+dmlld3BvcnQudXNlclNjYWxhYmxlID0gKEVpbmFfQm9vbCl1c2VyU2NhbGFibGU7Cit9CisK
IHN0YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2Jq
ZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewpAQCAtNTc5LDYgKzY1MSw3IEBAIGJy
b3dzZXJDcmVhdGUoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGEKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAidGl0bGUsY2hhbmdlZCIsIG9uX3RpdGxl
X2NoYW5nZWQsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+
YnJvd3NlciwgImxvYWQscHJvZ3Jlc3MiLCBvbl9wcm9ncmVzcywgYXBwKTsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAibG9hZCxmaW5pc2hlZCIsIG9u
X2xvYWRfZmluaXNoZWQsIGFwcCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KGFwcC0+YnJvd3NlciwgInZpZXdwb3J0LGNoYW5nZWQiLCBvbl92aWV3cG9ydF9jaGFuZ2VkLCBh
cHApOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3Nlciwg
InRvb2xiYXJzLHZpc2libGUsc2V0Iiwgb25fdG9vbGJhcnNfdmlzaWJsZV9zZXQsIGFwcCk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJz
LHZpc2libGUsZ2V0Iiwgb25fdG9vbGJhcnNfdmlzaWJsZV9nZXQsIGFwcCk7CkluZGV4OiBXZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2
MTIyOSkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgog
I2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpA
QCAtNDUyLDQgKzQ1MywxMyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6Y2hvb3NlSWNvbkZvckZp
bGVzCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRFZmw6OmRp
ZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJn
dW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0Cit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRFZmwqIGNs
aWVudCA9IHN0YXRpY19jYXN0PEZyYW1lTG9hZGVyQ2xpZW50RWZsKj4oZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKSk7CisgICAgaWYgKGNsaWVudC0+Z2V0SW5pdExheW91dENvbXBsZXRlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBld2tfdmlld192aWV3cG9ydF9zZXQobV92aWV3LCBhcmd1
bWVudHMud2lkdGgsIGFyZ3VtZW50cy5oZWlnaHQsIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFy
Z3VtZW50cy5taW5pbXVtU2NhbGUsIGFyZ3VtZW50cy5tYXhpbXVtU2NhbGUsIGFyZ3VtZW50cy51
c2VyU2NhbGFibGUpOworfQorCiB9CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmgJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEZvckZyYW1lKEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nLCAwdT4mLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3Q7CisKICAgICBFdmFzX09i
amVjdCogbV92aWV3OwogICAgIEtVUkwgbV9ob3ZlcmVkTGlua1VSTDsKIH07CkluZGV4OiBXZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAko
cmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03
MCw2ICs3MSw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEUKICAg
ICAsIG1fY3VzdG9tVXNlckFnZW50KCIiKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQorICAgICwgbV9pbml0TGF5b3V0Q29tcGxl
dGVkKGZhbHNlKQogewogfQogCkBAIC01NzUsMTEgKzU3NywxNiBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZENoCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CisgICAgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gZmFs
c2U7CisKICAgICBld2tfZnJhbWVfdXJpX2NoYW5nZWQobV9mcmFtZSk7CiAgICAgaWYgKGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KG1fdmlldykgIT0gbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGV3a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIDApOwogICAgIGV3a192aWV3X3VyaV9jaGFu
Z2VkKG1fdmlldyk7CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgZXdr
X3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgYXJndW1lbnRzLndpZHRoLCBhcmd1bWVudHMuaGVp
Z2h0LCBhcmd1bWVudHMuaW5pdGlhbFNjYWxlLCBhcmd1bWVudHMubWluaW11bVNjYWxlLCBhcmd1
bWVudHMubWF4aW11bVNjYWxlLCBhcmd1bWVudHMudXNlclNjYWxhYmxlKTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKQpAQCAt
NTkwLDcgKzU5Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmkK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKQogewog
ICAgIC8vIGVtaXQgbV9mcmFtZS0+aW5pdGlhbExheW91dENvbXBsZXRlZCgpOwotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gdHJ1ZTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQoKQpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkg
QEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAgIHZvaWQgc2V0
Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyAmYWdlbnQpOwogICAgIGNvbnN0IFN0cmluZyYg
Y3VzdG9tVXNlckFnZW50KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEluaXRMYXlvdXRDb21wbGV0
ZWQoYm9vbCBjb21wbGV0ZWQpIHsgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gY29tcGxldGVkOyB9
CisgICAgYm9vbCBnZXRJbml0TGF5b3V0Q29tcGxldGVkKCkgeyByZXR1cm4gbV9pbml0TGF5b3V0
Q29tcGxldGVkOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBoYXNGcmFtZVZpZXcoKSBjb25zdDsKIApAQCAtMjEzLDYgKzIxNiw4IEBA
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICAvLyBQbHVnaW4g
dmlldyB0byByZWRpcmVjdCBkYXRhIHRvCiAgICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3Owog
ICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKKworICAgIGJvb2wgbV9pbml0TGF5
b3V0Q29tcGxldGVkOwogfTsKIAogfQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCShyZXZpc2lvbiA2
MTIyOSkKKysrIFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDYgKzkzLDggQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZQog
CiB2b2lkICAgICAgICAgICAgIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywgV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCk7CiAKK3ZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfdmlld3BvcnRf
c2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB3LCBmbG9hdCBoLCBmbG9hdCBpbml0X3NjYWxlLCBm
bG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSk7CisK
IEV3a19IaXN0b3J5ICAgICAgKmV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExp
c3QgKmhpc3RvcnkpOwogdm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlz
dG9yeSAqaGlzdG9yeSk7CiAKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDYxMjI5KQor
KysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiAr
MTAwLDE5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWluYV9C
b29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJv
d3Npbmc6MTsKICAgICAgICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICBmbG9hdCB3OworICAgICAgICAgICAgZmxvYXQgaDsKKyAgICAg
ICAgICAgIGZsb2F0IGluaXRfc2NhbGU7CisgICAgICAgICAgICBmbG9hdCBtaW5fc2NhbGU7Cisg
ICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7CisgICAgICAgICAgICBmbG9hdCB1c2VyX3NjYWxh
YmxlOworICAgICAgICB9IHZpZXdwb3J0OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
ZmxvYXQgbWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOworICAgICAgICAg
ICAgRWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB6b29tX3JhbmdlOwogICAg
IH0gc2V0dGluZ3M7CiAgICAgc3RydWN0IHsKICAgICAgICAgc3RydWN0IHsKQEAgLTU3NCw2ICs1
ODcsOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJp
di0+c2V0dGluZ3MucHJpdmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZyA9
IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAKKyAgICBwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSA9IFpPT01fTUlOOworICAgIHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlID0gWk9PTV9NQVg7CisKICAgICBwcml2LT5tYWlu
X2ZyYW1lID0gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKICAg
ICBpZiAoIXByaXYtPm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBj
cmVhdGUgbWFpbiBmcmFtZS4iKTsKQEAgLTk5OCw2ICsxMDE0LDExIEBAIHZvaWQgZXdrX3ZpZXdf
Zml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXMKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwor
CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4ocHJpdi0+bWFpbl9mcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpKTsKKyAgICBpZiAoIWNsaWVudC0+Z2V0SW5pdExheW91dENvbXBsZXRlZCgp
KQorICAgICAgICByZXR1cm47CisKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+
X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodyA8PSAwICYmIGggPD0gMCkgewog
ICAgICAgICBpZiAoIXByaXYtPmZpeGVkX2xheW91dC51c2UpCkBAIC0xNzU0LDE0ICsxNzc1LDIy
IEBAIGZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWMKIEVpbmFfQm9vbCBl
d2tfdmlld196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBj
eCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpvb21fc2V0LCBFSU5BX0ZB
TFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZl
bCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworCisgICAg
aWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKKyAgICAgICAg
V1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9z
Y2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgs
IChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3Jhbmdl
Lm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRv
dWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsK
ICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xODI0LDE0ICsxODUzLDIy
IEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQKIEVpbmFfQm9vbCBl
d2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nv
b3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3Nl
dCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikgewotICAgICAgICBXUk4o
Inpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29t
KTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7
CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAgICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpv
b20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2Fs
ZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTk3NCwx
MiArMjAxMSwxNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhCiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0
LCBFSU5BX0ZBTFNFKTsKIAotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9v
bSk7CisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsK
KyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwg
KGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29t
KTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9P
TV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUp
Wk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6
ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJs
ZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0zNjkyLDMg
KzM3MzQsMTM2IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamUKICAg
ICBEQkcoInZpZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG8sICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwogfQorCisvKioKKyAqIEBpbnRlcm5h
bAorICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisgKgorICogQHBhcmFtIG8g
dmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICogQHBhcmFt
IGluaXRfc2NhbGUgaW5pdGlhbFNjYWxlIHZhbHVlLgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhp
bXVtU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWluX3NjYWxlIG1pbmltdW1TY2FsZSB2YWx1ZS4K
KyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXJzY2FsYWJsZSBmbGFnLgorICoKKyAqIEVtaXRz
IHNpZ25hbDogInZpZXdwb3J0LGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KKyAqLwordm9p
ZCBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHcsIGZsb2F0IGgs
IGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxvYXQgbWluX3NjYWxlLCBmbG9h
dCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQu
dyA9IHc7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaCA9IGg7CisgICAgcHJpdi0+c2V0
dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZSA9IGluaXRfc2NhbGU7CisgICAgcHJpdi0+c2V0dGlu
Z3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZp
ZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9y
dC51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKK30gCisKKy8qKgorICog
R2V0cyBkYXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisg
KiBAcGFyYW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3Nj
YWxlIGluaXRpYWwgU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gU2Nh
bGUgdmFsdWUuCisgKiBAcGFyYW0gbWluX3NjYWxlIG1pbmltdW0gU2NhbGUgdmFsdWUuCisgKiBA
cGFyYW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIHZhbHVlLgorICovCit2b2lkIGV3a192
aWV3X3ZpZXdwb3J0X2dldChFdmFzX09iamVjdCAqbywgZmxvYXQqIHcsIGZsb2F0KiBoLCBmbG9h
dCogaW5pdF9zY2FsZSwgZmxvYXQqIG1heF9zY2FsZSwgZmxvYXQqIG1pbl9zY2FsZSwgZmxvYXQq
IHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CisgICAKKyAgICBpZiAodykKKyAgICAgICAgKncgPSBw
cml2LT5zZXR0aW5ncy52aWV3cG9ydC53OworICAgIGlmIChoKQorICAgICAgICAqaCA9IHByaXYt
PnNldHRpbmdzLnZpZXdwb3J0Lmg7CisgICAgaWYgKGluaXRfc2NhbGUpCisgICAgICAgICppbml0
X3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZTsKKyAgICBpZiAobWF4
X3NjYWxlKQorICAgICAgICAqbWF4X3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4
X3NjYWxlOworICAgIGlmIChtaW5fc2NhbGUpCisgICAgICAgICptaW5fc2NhbGUgPSBwcml2LT5z
ZXR0aW5ncy52aWV3cG9ydC5taW5fc2NhbGU7CisgICAgaWYgKHVzZXJfc2NhbGFibGUpCisgICAg
ICAgICp1c2VyX3NjYWxhYmxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJs
ZTsKK30KKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgorICogQHBh
cmFtIG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJh
bmdlLgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisg
KiAKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gcmFuZ2UgaXMgY2hhbmdlZCwgQGMg
RUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3pv
b21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9z
Y2FsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKKworICAgIGlmIChtYXhfc2NhbGUgPCBtaW5fc2NhbGUpIHsKKyAgICAg
ICAgV1JOKCJtaW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4X3NjYWxlIik7CisgICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4
X3NjYWxlID0gbWF4X3NjYWxlOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisg
KiBHZXRzIHRoZSBjdXJyZW50IHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAq
IEBwYXJhbSBtaW5fc2NhbGUgd2hlcmUgdG8gcmV0dXJuIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHpv
b20gcmFuZ2UuCisgKiBAcGFyYW0gbWF4X3NjYWxlIHdoZXJlIHRvIHJldHVybiB0aGUgbWF4aW11
bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICovCit2b2lkIGV3a192aWV3X3pvb21fcmFuZ2VfZ2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOworCisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1pbl9zY2FsZSA9IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlOworICAgIGlmIChtYXhfc2NhbGUpCisgICAgICAg
ICptYXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZTsKK30KKwor
LyoqCisgKiBTZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3Lgor
ICogQHBhcmFtIHVzZXJfc2NhbGFibGUgYm9vbGVhbiBwb2ludGVyIGluIHdoaWNoIHRvIGVuYWJs
ZSB6b29tLiBJdCBkZWZhdWx0cworICogdG8gQGMgRUlOQV9UUlVFLgorICovCit2b2lkIGV3a192
aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdXNlcl9zY2Fs
YWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKKworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UudXNlcl9zY2Fs
YWJsZSA9IHVzZXJfc2NhbGFibGU7Cit9CisKKy8qKgorICogR2V0cyBpZiB6b29tIGlzIGVuYWJs
ZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHdoZXJl
IHRvIHJldHVybiB0aGUgY3VycmVudCB1c2VyIHNjYWxhYmxlIHZhbHVlLgorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qu
CisgKi8KK0VpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCog
bykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKKworICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJf
c2NhbGFibGU7Cit9CkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBleHRl
cm4gIkMiIHsKICAqICAtICJkb3dubG9hZCxyZXF1ZXN0IiwgRXdrX0Rvd25sb2FkOiByZXBvcnRz
IGEgZG93bmxvYWQgaXMgYmVpbmcgcmVxdWVzdGVkCiAgKiAgICBhbmQgYXMgYXJndW1lbnRzIGdp
dmVzIGl0cyBkZXRhaWxzLgogICogIC0gImljb24scmVjZWl2ZWQiLCB2b2lkOiBtYWluIGZyYW1l
IHJlY2VpdmVkIGFuIGljb24uCisgKiAgLSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IFJlcG9y
dCB0aGF0IHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgogICovCiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tf
Vmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CkBAIC00NTEsNiArNDUyLDEyIEBA
IEVBUEkgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGEKIEVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3Is
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3Bh
aW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKIAorRUFQSSB2b2lkIGV3a192aWV3X3ZpZXdwb3J0
X2dldChFdmFzX09iamVjdCAqbywgZmxvYXQqIHcsIGZsb2F0KiBoLCBmbG9hdCogaW5pdF9zY2Fs
ZSwgZmxvYXQqIG1heF9zY2FsZSwgZmxvYXQqIG1pbl9zY2FsZSwgZmxvYXQqIHVzZXJfc2NhbGFi
bGUpOworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3Qq
IG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKTsKK0VBUEkgdm9pZCBld2tfdmll
d196b29tX3JhbmdlX2dldChFdmFzX09iamVjdCogbywgZmxvYXQqIG1pbl9zY2FsZSwgZmxvYXQq
IG1heF9zY2FsZSk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192
aWV3X3VzZXJfc2NhbGFibGVfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="46755"
          type_id="3"
          status="-"
          setter="lucas.de.marchi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59773</attachid>
            <date>2010-06-25 09:18:58 -0700</date>
            <delta_ts>2010-06-29 05:53:12 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-12</desc>
            <filename>patch-viewport.txt</filename>
            <type>text/plain</type>
            <size>21409</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjEzMDgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTAtMDYtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnLgorICAg
ICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKworICAgICAgICAqIGVm
bC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFuZ2VkJyBzaWduYWwu
CisgICAgICAgIChvbl92aWV3cG9ydF9jaGFuZ2VkKTogQWRkIGEgY2FsbGJhY2sgZnVuY3Rpb24g
Zm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAgICAoYnJvd3NlckNyZWF0
ZSk6IFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6IEltcGxlbWVudCBtZXRob2QgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiAgRGVmaW5l
IG1ldGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgYSBmdW5jdGlvbiB0byBz
ZXQgbGF5b3V0CisgICAgICAgIHdoZW4gd2Vic2l0ZSBkb2Vzbid0IGNvbnRhaW4gdmlld3BvcnQg
dGFnLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Z2V0SW5pdExheW91dENvbXBsZXRlZCk6CisgICAgICAgICogZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oOiBBZGRlZCBpbnRlcm5hbCBBUElzIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFn
LgorICAgICAgICAqIGVmbC9ld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBBUElzIHRvIHByb2Nlc3Mg
YW5kIHRvIGhhbmRsZSB2aWV3cG9ydCB0YWcuCisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmll
d3BvcnRfc2V0KTogUmVwb3J0cyB0aGF0IHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICAgICAgICAo
ZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KTogR2V0cyBkYXRhIG9mIHZpZXdwb3J0IHRhZy4KKyAgICAg
ICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KTogU2V0cyB0aGUgem9vbSByYW5nZS4KKyAgICAg
ICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6IEdldHMgbWluaW11bSB2YWx1ZSBvZiB6
b29tIHJhbmdlLgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KTogR2V0cyBt
YXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxh
YmxlX3NldCk6IFNldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICAgICAgICAoZXdrX3ZpZXdfdXNl
cl9zY2FsYWJsZV9nZXQpOiBHZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBlZmwv
ZXdrL2V3a192aWV3Lmg6CisKIDIwMTAtMDYtMTUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGdu
c0Bnbm9tZS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4LiBTaW1wbGUg
dHlwby4KSW5kZXg6IFdlYktpdC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMJKHJldmlzaW9uIDYxMjI5KQorKysgV2Vi
S2l0L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3
IEBACiAKICNkZWZpbmUgREVGQVVMVF9XSURUSCAgICAgIDgwMAogI2RlZmluZSBERUZBVUxUX0hF
SUdIVCAgICAgNjAwCisjZGVmaW5lIERFRkFVTFRfWk9PTV9JTklUICAxLjAKIAogI2RlZmluZSBp
bmZvKGZvcm1hdCwgYXJncy4uLikgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApAQCAtMTI1LDYgKzEyNiwxNSBAQCBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0
IG9wdGlvbnMgPSB7CiAgICAgfQogfTsKIAordHlwZWRlZiBzdHJ1Y3QgX1ZpZXdwb3J0IHsKKyAg
ICBpbnQgdzsKKyAgICBpbnQgaDsKKyAgICBmbG9hdCBpbml0U2NhbGU7CisgICAgZmxvYXQgbWlu
U2NhbGU7CisgICAgZmxvYXQgbWF4U2NhbGU7CisgICAgRWluYV9Cb29sIHVzZXJTY2FsYWJsZTsK
K30gVmlld3BvcnQ7CisKIHR5cGVkZWYgc3RydWN0IF9FTGF1bmNoZXIgewogICAgIEVjb3JlX0V2
YXMgKmVlOwogICAgIEV2YXMgKmV2YXM7CkBAIC0xMzIsNiArMTQyLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX0VMYXVuY2hlciB7CiAgICAgRXZhc19PYmplY3QgKmJyb3dzZXI7CiAgICAgY29uc3QgY2hh
ciAqdGhlbWU7CiAgICAgY29uc3QgY2hhciAqdXNlckFnZW50OworICAgIFZpZXdwb3J0IHZpZXdw
b3J0OwogfSBFTGF1bmNoZXI7CiAKIHN0YXRpYyB2b2lkIGJyb3dzZXJEZXN0cm95KEVjb3JlX0V2
YXMgKmVlKTsKQEAgLTIyNSw2ICsyMzYsMjMgQEAgdGl0bGVfc2V0KEVjb3JlX0V2YXMgKmVlLCBj
b25zdCBjaGFyICp0aQogICAgIGVjb3JlX2V2YXNfdGl0bGVfc2V0KGVlLCBsYWJlbCk7CiB9CiAK
Ky8qKgorICogVGhpcyBpcyBlbiBleGFtcGxlIGZ1bmN0aW9uIHRvIGFkanVzdCB2aWV3cG9ydCB2
aWEgdmlld3BvcnQgdGFnJ3MgYXJndW1lbnRzLgorICogQXBwbGljYXRpb24gY2FuIGludm9rZSB0
aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGFkanVzdCB2aWV3cG9ydCB0YWcgd2hlbiBpdCBpcyBy
ZXF1aXJlZC4KKyAqLworc3RhdGljIHZvaWQKK3ZpZXdwb3J0X3NldCgpCit7CisgICAgRUxhdW5j
aGVyICphcHA7CisgICAgYXBwID0gKEVMYXVuY2hlciopIGVpbmFfbGlzdF9kYXRhX2dldCh3aW5k
b3dzKTsKKworICAgIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChhcHAtPmJyb3dzZXIs
IGFwcC0+dmlld3BvcnQudywgYXBwLT52aWV3cG9ydC5oKTsKKyAgICBld2tfdmlld196b29tX3Nl
dChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQuaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBpZiAo
IWV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC5taW5T
Y2FsZSwgYXBwLT52aWV3cG9ydC5tYXhTY2FsZSkpCisgICAgICAgIGluZm8oIiBGYWlsIHRvIHNl
dCB6b29tIHJhbmdlLiBtaW5TY2FsZSA9ICVmLCBtYXhTY2FsZSA9ICVmXG4iLCBhcHAtPnZpZXdw
b3J0Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNjYWxlKTsKKyAgICBld2tfdmlld191c2Vy
X3NjYWxhYmxlX3NldChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQudXNlclNjYWxhYmxlKTsK
K30KKwogc3RhdGljIHZvaWQKIG9uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAgLTM0NSw2ICszNzMsNDgg
QEAgb25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEsIEV2YQogICAgICAgICBpbmZv
KCIlc1xuIiwgdGV4dCk7CiB9CiAKKy8qKgorICogInZpZXdwb3J0LGNoYW5nZWQiIHNpZ25hbCB3
aWxsIGJlIGFsd2F5cyBlbWl0dGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHZpZXdwb3J0IGV4aXN0ZW5j
ZS4KKyAqCisgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBwcm9jZXNzIHRoZSB2aWV3cG9ydCB0YWcs
IHlvdSBjYW4gZWl0aGVyIGRvIG5vdGhpbmcgaW4gdGhpcyBjYWxsYmFjaworICogb3Igc2ltcGx5
IGlnbm9yZSB0aGUgc2lnbmFsIGluIHlvdXIgYXBwbGljYXRpb24uCisgKiAKKyAqIE1vcmUgaW5m
b3JtYXRpb24gYWJvdXQgdGhpcyBjYW4gYmUgZm91bmQgYXQgaHR0cDovL2RldmVsb3Blci5hcHBs
ZS5jb20vc2FmYXJpL2xpYnJhcnkvZG9jdW0KKyAqIGVudGF0aW9uL2FwcGxlYXBwbGljYXRpb25z
L3JlZmVyZW5jZS9zYWZhcml3ZWJjb250ZW50L3VzaW5ndGhldmlld3BvcnQvdXNpbmd0aGV2aWV3
cG9ydC5odG1sCisgKi8KK3N0YXRpYyB2b2lkCitvbl92aWV3cG9ydF9jaGFuZ2VkKHZvaWQqIHVz
ZXJfZGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAg
RUxhdW5jaGVyICphcHAgPSAoRUxhdW5jaGVyICopdXNlcl9kYXRhOworCisgICAgZmxvYXQgdywg
aCwgaW5pdFNjYWxlLCBtaW5TY2FsZSwgbWF4U2NhbGUsIHVzZXJTY2FsYWJsZTsKKworICAgIGV3
a192aWV3X3ZpZXdwb3J0X2dldCh3ZWJ2aWV3LCAmdywgJmgsICZpbml0U2NhbGUsICZtYXhTY2Fs
ZSwgJm1pblNjYWxlLCAmdXNlclNjYWxhYmxlKTsKKworICAgIC8qKgorICAgICAqIElmIHRoZXJl
IGlzIG5vIGFyZ3VtZW50IGluIHZpZXdwb3J0IHRhZywgYXJndW1lbnQncyB2YWx1ZSBpcyAtMS4K
KyAgICAgKi8KKyAgICBpZiAoKGludCl3ID09IC0xKQorICAgICAgICB3ID0gREVGQVVMVF9XSURU
SDsKKyAgICBpZiAoKGludCloID09IC0xKQorICAgICAgICBoID0gREVGQVVMVF9IRUlHSFQ7Cisg
ICAgaWYgKChpbnQpaW5pdFNjYWxlID09IC0xKQorICAgICAgICBpbml0U2NhbGUgPSBERUZBVUxU
X1pPT01fSU5JVDsKKyAgICBpZiAoKGludCltaW5TY2FsZSA9PSAtMSkKKyAgICAgICAgbWluU2Nh
bGUgPSBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQod2Vidmlldyk7CisgICAgaWYgKChpbnQp
bWF4U2NhbGUgPT0gLTEpCisgICAgICAgIG1heFNjYWxlID0gZXdrX3ZpZXdfem9vbV9yYW5nZV9t
YXhfZ2V0KHdlYnZpZXcpOworICAgIGlmICgoaW50KXVzZXJTY2FsYWJsZSA9PSAtMSkKKyAgICAg
ICAgdXNlclNjYWxhYmxlID0gRUlOQV9UUlVFOworCisgICAgYXBwLT52aWV3cG9ydC53ID0gKGlu
dCl3OworICAgIGFwcC0+dmlld3BvcnQuaCA9IChpbnQpaDsKKyAgICBhcHAtPnZpZXdwb3J0Lmlu
aXRTY2FsZSA9IGluaXRTY2FsZTsKKyAgICBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlID0gbWluU2Nh
bGU7CisgICAgYXBwLT52aWV3cG9ydC5tYXhTY2FsZSA9IG1heFNjYWxlOworICAgIGFwcC0+dmll
d3BvcnQudXNlclNjYWxhYmxlID0gKEVpbmFfQm9vbCl1c2VyU2NhbGFibGU7Cit9CisKIHN0YXRp
YyB2b2lkCiBvbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3
ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQogewpAQCAtNTc5LDYgKzY0OSw3IEBAIGJyb3dzZXJD
cmVhdGUoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGEKICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAidGl0bGUsY2hhbmdlZCIsIG9uX3RpdGxlX2NoYW5n
ZWQsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3Nl
ciwgImxvYWQscHJvZ3Jlc3MiLCBvbl9wcm9ncmVzcywgYXBwKTsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2VyLCAibG9hZCxmaW5pc2hlZCIsIG9uX2xvYWRf
ZmluaXNoZWQsIGFwcCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+
YnJvd3NlciwgInZpZXdwb3J0LGNoYW5nZWQiLCBvbl92aWV3cG9ydF9jaGFuZ2VkLCBhcHApOwog
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xi
YXJzLHZpc2libGUsc2V0Iiwgb25fdG9vbGJhcnNfdmlzaWJsZV9zZXQsIGFwcCk7CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2li
bGUsZ2V0Iiwgb25fdG9vbGJhcnNfdmlzaWJsZV9nZXQsIGFwcCk7CkluZGV4OiBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2MTIyOSkK
KysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAi
Vmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDUy
LDQgKzQ1MywxMyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6Y2hvb3NlSWNvbkZvckZpbGVzCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2Vp
dmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JiBhcmd1bWVudHMpIGNvbnN0Cit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9
IHN0YXRpY19jYXN0PEZyYW1lTG9hZGVyQ2xpZW50RWZsKj4oZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKSk7CisgICAgaWYgKGNsaWVudC0+Z2V0SW5pdExheW91dENvbXBsZXRlZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBld2tfdmlld192aWV3cG9ydF9zZXQobV92aWV3LCBhcmd1bWVudHMu
d2lkdGgsIGFyZ3VtZW50cy5oZWlnaHQsIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50
cy5taW5pbXVtU2NhbGUsIGFyZ3VtZW50cy5tYXhpbXVtU2NhbGUsIGFyZ3VtZW50cy51c2VyU2Nh
bGFibGUpOworfQorCiB9CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgJKHJldmlzaW9uIDYxMjI5KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dEZvckZyYW1lKEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nLCAwdT4mLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3Q7CisKICAgICBFdmFzX09iamVjdCog
bV92aWV3OwogICAgIEtVUkwgbV9ob3ZlcmVkTGlua1VSTDsKIH07CkluZGV4OiBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNp
b24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlByb2dy
ZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgImV3
a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03MCw2ICs3
MSw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEUKICAgICAsIG1f
Y3VzdG9tVXNlckFnZW50KCIiKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBtX2hhc1Nl
bnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQorICAgICwgbV9pbml0TGF5b3V0Q29tcGxldGVkKGZh
bHNlKQogewogfQogCkBAIC01NzUsMTEgKzU3NywxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERpZENoCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpCiB7CisgICAgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gZmFsc2U7CisK
ICAgICBld2tfZnJhbWVfdXJpX2NoYW5nZWQobV9mcmFtZSk7CiAgICAgaWYgKGV3a192aWV3X2Zy
YW1lX21haW5fZ2V0KG1fdmlldykgIT0gbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIGV3
a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIDApOwogICAgIGV3a192aWV3X3VyaV9jaGFuZ2VkKG1f
dmlldyk7CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgZXdrX3ZpZXdf
dmlld3BvcnRfc2V0KG1fdmlldywgYXJndW1lbnRzLndpZHRoLCBhcmd1bWVudHMuaGVpZ2h0LCBh
cmd1bWVudHMuaW5pdGlhbFNjYWxlLCBhcmd1bWVudHMubWluaW11bVNjYWxlLCBhcmd1bWVudHMu
bWF4aW11bVNjYWxlLCBhcmd1bWVudHMudXNlclNjYWxhYmxlKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKQpAQCAtNTkwLDcg
KzU5Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmkKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKQogewogICAgIC8v
IGVtaXQgbV9mcmFtZS0+aW5pdGlhbExheW91dENvbXBsZXRlZCgpOwotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQo
KQpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgY2xh
c3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAgIHZvaWQgc2V0Q3VzdG9t
VXNlckFnZW50KGNvbnN0IFN0cmluZyAmYWdlbnQpOwogICAgIGNvbnN0IFN0cmluZyYgY3VzdG9t
VXNlckFnZW50KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEluaXRMYXlvdXRDb21wbGV0ZWQoYm9v
bCBjb21wbGV0ZWQpIHsgbV9pbml0TGF5b3V0Q29tcGxldGVkID0gY29tcGxldGVkOyB9CisgICAg
Ym9vbCBnZXRJbml0TGF5b3V0Q29tcGxldGVkKCkgeyByZXR1cm4gbV9pbml0TGF5b3V0Q29tcGxl
dGVkOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBoYXNGcmFtZVZpZXcoKSBjb25zdDsKIApAQCAtMjEzLDYgKzIxNiw4IEBAIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICAvLyBQbHVnaW4gdmlldyB0
byByZWRpcmVjdCBkYXRhIHRvCiAgICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAgIGJv
b2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKKworICAgIGJvb2wgbV9pbml0TGF5b3V0Q29t
cGxldGVkOwogfTsKIAogfQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCShyZXZpc2lvbiA2MTIyOSkK
KysrIFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYg
KzkzLDggQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZQogCiB2b2lk
ICAgICAgICAgICAgIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCk7CiAKK3ZvaWQgICAgICAgICAgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2
YXNfT2JqZWN0ICpvLCBmbG9hdCB3LCBmbG9hdCBoLCBmbG9hdCBpbml0X3NjYWxlLCBmbG9hdCBt
YXhfc2NhbGUsIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSk7CisKIEV3a19I
aXN0b3J5ICAgICAgKmV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QgKmhp
c3RvcnkpOwogdm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSAq
aGlzdG9yeSk7CiAKSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDYxMjI5KQorKysgV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDE5
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIHJl
c2l6YWJsZV90ZXh0YXJlYXM6MTsKICAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmc6
MTsKICAgICAgICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nOjE7CisgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICBmbG9hdCB3OworICAgICAgICAgICAgZmxvYXQgaDsKKyAgICAgICAgICAg
IGZsb2F0IGluaXRfc2NhbGU7CisgICAgICAgICAgICBmbG9hdCBtaW5fc2NhbGU7CisgICAgICAg
ICAgICBmbG9hdCBtYXhfc2NhbGU7CisgICAgICAgICAgICBmbG9hdCB1c2VyX3NjYWxhYmxlOwor
ICAgICAgICB9IHZpZXdwb3J0OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZmxvYXQg
bWluX3NjYWxlOworICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOworICAgICAgICAgICAgRWlu
YV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgfSB6b29tX3JhbmdlOwogICAgIH0gc2V0
dGluZ3M7CiAgICAgc3RydWN0IHsKICAgICAgICAgc3RydWN0IHsKQEAgLTU3NCw2ICs1ODcsOSBA
QCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJpdi0+c2V0
dGluZ3MucHJpdmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZyA9IHByaXYt
PnBhZ2Vfc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAKKyAgICBwcml2LT5zZXR0
aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSA9IFpPT01fTUlOOworICAgIHByaXYtPnNldHRpbmdz
Lnpvb21fcmFuZ2UubWF4X3NjYWxlID0gWk9PTV9NQVg7CisKICAgICBwcml2LT5tYWluX2ZyYW1l
ID0gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KHNkLCBwcml2LCAwKS5nZXQoKTsKICAgICBpZiAo
IXByaXYtPm1haW5fZnJhbWUpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUg
bWFpbiBmcmFtZS4iKTsKQEAgLTk5OCw2ICsxMDE0LDExIEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRf
bGF5b3V0X3NpemVfc2V0KEV2YXMKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOworCisgICAg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4ocHJpdi0+bWFpbl9mcmFtZS0+bG9hZGVyKCktPmNs
aWVudCgpKTsKKyAgICBpZiAoIWNsaWVudC0+Z2V0SW5pdExheW91dENvbXBsZXRlZCgpKQorICAg
ICAgICByZXR1cm47CisKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+X3ByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodyA8PSAwICYmIGggPD0gMCkgewogICAgICAg
ICBpZiAoIXByaXYtPmZpeGVkX2xheW91dC51c2UpCkBAIC0xNzU0LDE0ICsxNzc1LDIyIEBAIGZs
b2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWMKIEVpbmFfQm9vbCBld2tfdmll
d196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZh
c19Db29yZCBjeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpvb21fc2V0LCBFSU5BX0ZBTFNFKTsK
LSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8
ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKCFw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1
c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAg
fQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkg
eworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChkb3Vi
bGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9z
Y2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xODI0LDE0ICsxODUzLDIyIEBAIHZv
aWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQKIEVpbmFfQm9vbCBld2tfdmll
d196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4
LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlO
QV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikgewotICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKwor
ICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7CisgICAg
ICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CisgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgIH0KKworICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
aW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3Vi
bGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFY
KSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01f
TUFYLCAoZG91YmxlKXpvb20pOworICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIs
IChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9v
bSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTk3NCwxMiArMjAx
MSwxNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhCiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5B
X0ZBTFNFKTsKIAotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9vbSk7Cisg
ICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKKyAgICAg
ICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisK
KyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Cisg
ICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRp
bmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKyAgICB9CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwg
KGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29t
KTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0zNjkyLDMgKzM3MzQs
MTQ4IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamUKICAgICBEQkco
InZpZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJk
b3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwogfQorCisvKioKKyAqIEBpbnRlcm5hbAorICog
UmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4K
KyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICogQHBhcmFtIGluaXRf
c2NhbGUgaW5pdGlhbFNjYWxlIHZhbHVlLgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtU2Nh
bGUgdmFsdWUuCisgKiBAcGFyYW0gbWluX3NjYWxlIG1pbmltdW1TY2FsZSB2YWx1ZS4KKyAqIEBw
YXJhbSB1c2VyX3NjYWxhYmxlIHVzZXJzY2FsYWJsZSBmbGFnLgorICoKKyAqIEVtaXRzIHNpZ25h
bDogInZpZXdwb3J0LGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KKyAqLwordm9pZCBld2tf
dmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHcsIGZsb2F0IGgsIGZsb2F0
IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCB1c2Vy
X3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudyA9IHc7
CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaCA9IGg7CisgICAgcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQuaW5pdF9zY2FsZSA9IGluaXRfc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmll
d3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0
Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2Vy
X3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKK30gCisKKy8qKgorICogR2V0cyBk
YXRhIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFy
YW0gdyB3aWR0aC4KKyAqIEBwYXJhbSBoIGhlaWdodC4KKyAqIEBwYXJhbSBpbml0X3NjYWxlIGlu
aXRpYWwgU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gU2NhbGUgdmFs
dWUuCisgKiBAcGFyYW0gbWluX3NjYWxlIG1pbmltdW0gU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0g
dXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIHZhbHVlLgorICovCit2b2lkIGV3a192aWV3X3Zp
ZXdwb3J0X2dldChFdmFzX09iamVjdCAqbywgZmxvYXQqIHcsIGZsb2F0KiBoLCBmbG9hdCogaW5p
dF9zY2FsZSwgZmxvYXQqIG1heF9zY2FsZSwgZmxvYXQqIG1pbl9zY2FsZSwgZmxvYXQqIHVzZXJf
c2NhbGFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVChzZCwgcHJpdik7CisKKyAgICBpZiAodykKKyAgICAgICAgKncgPSBwcml2LT5zZXR0
aW5ncy52aWV3cG9ydC53OworICAgIGlmIChoKQorICAgICAgICAqaCA9IHByaXYtPnNldHRpbmdz
LnZpZXdwb3J0Lmg7CisgICAgaWYgKGluaXRfc2NhbGUpCisgICAgICAgICppbml0X3NjYWxlID0g
cHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZTsKKyAgICBpZiAobWF4X3NjYWxlKQor
ICAgICAgICAqbWF4X3NjYWxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWF4X3NjYWxlOwor
ICAgIGlmIChtaW5fc2NhbGUpCisgICAgICAgICptaW5fc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52
aWV3cG9ydC5taW5fc2NhbGU7CisgICAgaWYgKHVzZXJfc2NhbGFibGUpCisgICAgICAgICp1c2Vy
X3NjYWxhYmxlID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudXNlcl9zY2FsYWJsZTsKK30KKwor
LyoqCisgKiBTZXRzIHRoZSB6b29tIHJhbmdlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBA
cGFyYW0gbWluX3NjYWxlIG1pbmltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAqIEBwYXJhbSBt
YXhfc2NhbGUgbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiB6b29tIHJhbmdlIGlzIGNoYW5nZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90
IG9yIGZhaWx1cmUuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisK
KyAgICBpZiAobWF4X3NjYWxlIDwgbWluX3NjYWxlKSB7CisgICAgICAgIFdSTigibWluX3NjYWxl
IGlzIGxhcmdlciB0aGFuIG1heF9zY2FsZSIpOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KyAgICB9CisKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSA9IG1pbl9z
Y2FsZTsKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSA9IG1heF9zY2Fs
ZTsKKworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgorICogR2V0cyB0aGUgbWluaW11
bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKgorICogQHJl
dHVybiBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKi8KK2Zsb2F0IGV3a192aWV3X3pv
b21fcmFuZ2VfbWluX2dldChFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZTsKK30KKworLyoqCisgKiBHZXRzIHRo
ZSBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAq
CisgKiBAcmV0dXJuIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAqLworZmxvYXQgZXdr
X3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVX
X1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAg
cmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlOworfQorCisvKioKKyAq
IFNldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFy
YW0gdXNlcl9zY2FsYWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gZW5hYmxlIHpvb20u
IEl0IGRlZmF1bHRzCisgKiB0byBAYyBFSU5BX1RSVUUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdXNl
cl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKQor
eworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2Qs
IHByaXYpOworCisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlID0g
dXNlcl9zY2FsYWJsZTsKK30KKworLyoqCisgKiBHZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFtIHVzZXJfc2NhbGFibGUgd2hlcmUgdG8gcmV0
dXJuIHRoZSBjdXJyZW50IHVzZXIgc2NhbGFibGUgdmFsdWUuCisgKgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgem9vbSBpcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLwor
RWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0KEV2YXNfT2JqZWN0KiBvKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOworCisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UudXNlcl9zY2FsYWJs
ZTsKK30KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuaAkocmV2aXNpb24gNjEyMjkpCisrKyBXZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIGV4dGVybiAiQyIg
ewogICogIC0gImRvd25sb2FkLHJlcXVlc3QiLCBFd2tfRG93bmxvYWQ6IHJlcG9ydHMgYSBkb3du
bG9hZCBpcyBiZWluZyByZXF1ZXN0ZWQKICAqICAgIGFuZCBhcyBhcmd1bWVudHMgZ2l2ZXMgaXRz
IGRldGFpbHMuCiAgKiAgLSAiaWNvbixyZWNlaXZlZCIsIHZvaWQ6IG1haW4gZnJhbWUgcmVjZWl2
ZWQgYW4gaWNvbi4KKyAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgdm9pZDogUmVwb3J0IHRoYXQg
dmlld3BvcnQgaGFzIGNoYW5nZWQuCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKQEAgLTQ1MSw2ICs0NTIsMTMgQEAgRUFQSSB2
b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYQogRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3Qg
RWluYV9SZWN0YW5nbGUgKmFyZWEpOwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29u
dGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWlu
YV9SZWN0YW5nbGUgKmFyZWEpOwogCitFQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2
YXNfT2JqZWN0ICpvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9h
dCogbWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogdXNlcl9zY2FsYWJsZSk7CitF
QVBJIEVpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCogbywgZmxv
YXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpOworRUFQSSBmbG9hdCBld2tfdmlld196b29t
X3JhbmdlX21pbl9nZXQoRXZhc19PYmplY3QqIG8pOworRUFQSSBmbG9hdCBld2tfdmlld196b29t
X3JhbmdlX21heF9nZXQoRXZhc19PYmplY3QqIG8pOworRUFQSSB2b2lkIGV3a192aWV3X3VzZXJf
c2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSk7CitF
QVBJIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCogbyk7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60015</attachid>
            <date>2010-06-29 05:53:12 -0700</date>
            <delta_ts>2010-07-06 22:51:34 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-13</desc>
            <filename>viewport-patch-13.txt</filename>
            <type>text/plain</type>
            <size>22101</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjIwODgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDQgQEAKKzIwMTAtMDYtMjggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1l
dGEgdGFnLgorICAgICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKwor
ICAgICAgICAqIGVmbC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICh2aWV3cG9ydF9zZXQpOiAKKyAgICAgICAgKG9uX3ZpZXdw
b3J0X2NoYW5nZWQpOiBBZGQgYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICd2aWV3cG9ydCxj
aGFuZ2VkJyBzaWduYWwuCisgICAgICAgIChicm93c2VyQ3JlYXRlKTogUmVnaXN0ZXIgdGhlIGNh
bGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgJ3ZpZXdwb3J0LGNoYW5nZWQnIHNpZ25hbC4KKyAgICAg
ICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDogSW1wbGVtZW50IG1l
dGhvZCB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBlZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IERlZmluZSBtZXRob2QgdG8gcHJvY2VzcyB2
aWV3cG9ydCB0YWcuCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xp
ZW50RWZsLmNwcDogSW1wbGVtZW50IGEgZnVuY3Rpb24gdG8gc2V0IGxheW91dCAKKyAgICAgICAg
d2hlbiB3ZWJzaXRlIGRvZXNuJ3QgY29udGFpbiB2aWV3cG9ydCB0YWcuCisgICAgICAgICogZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEVmbCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0
TGF5b3V0KToKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRJbml0TGF5
b3V0Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpn
ZXRJbml0TGF5b3V0Q29tcGxldGVkKToKKyAgICAgICAgKiBlZmwvZXdrL2V3a19wcml2YXRlLmg6
IEFkZGVkIGludGVybmFsIEFQSXMgdG8gcHJvY2VzcyB2aWV3cG9ydCB0YWcuCisgICAgICAgICog
ZWZsL2V3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAg
ICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZXhjZWVkZWRf
ZGF0YWJhc2VfcXVvdGEpOgorICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRfc2V0KTogUmVwb3J0
cyB0aGF0IHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRf
Z2V0KTogR2V0cyBkYXRhIG9mIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKGV3a192aWV3X3pvb21f
cmFuZ2Vfc2V0KTogU2V0cyB0aGUgem9vbSByYW5nZS4KKyAgICAgICAgKGV3a192aWV3X3pvb21f
cmFuZ2VfbWluX2dldCk6IEdldHMgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICAgICAg
ICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KTogR2V0cyBtYXhpbXVtIHZhbHVlIG9mIHpv
b20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6IFNldHMgaWYg
em9vbSBpcyBlbmFibGVkLgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQpOiBH
ZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBlZmwvZXdrL2V3a192aWV3Lmg6CisK
IDIwMTAtMDYtMjggIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5t
b2JpPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogV2ViS2l0L2VmbC9F
V2ViTGF1bmNoZXIvbWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvRVdlYkxhdW5jaGVy
L21haW4uYwkocmV2aXNpb24gNjE1MTYpCisrKyBXZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWlu
LmMJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIAogI2RlZmluZSBERUZBVUxUX1dJ
RFRIICAgICAgODAwCiAjZGVmaW5lIERFRkFVTFRfSEVJR0hUICAgICA2MDAKKyNkZWZpbmUgREVG
QVVMVF9aT09NX0lOSVQgIDEuMAogCiAjZGVmaW5lIGluZm8oZm9ybWF0LCBhcmdzLi4uKSAgICAg
ICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjUsNiArMTI2
LDE1IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9ucyA9IHsKICAgICB9CiB9Owog
Cit0eXBlZGVmIHN0cnVjdCBfVmlld3BvcnQgeworICAgIGludCB3OworICAgIGludCBoOworICAg
IGZsb2F0IGluaXRTY2FsZTsKKyAgICBmbG9hdCBtaW5TY2FsZTsKKyAgICBmbG9hdCBtYXhTY2Fs
ZTsKKyAgICBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlOworfSBWaWV3cG9ydDsKKwogdHlwZWRlZiBz
dHJ1Y3QgX0VMYXVuY2hlciB7CiAgICAgRWNvcmVfRXZhcyAqZWU7CiAgICAgRXZhcyAqZXZhczsK
QEAgLTEzMiw2ICsxNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRUxhdW5jaGVyIHsKICAgICBFdmFz
X09iamVjdCAqYnJvd3NlcjsKICAgICBjb25zdCBjaGFyICp0aGVtZTsKICAgICBjb25zdCBjaGFy
ICp1c2VyQWdlbnQ7CisgICAgVmlld3BvcnQgdmlld3BvcnQ7CiB9IEVMYXVuY2hlcjsKIAogc3Rh
dGljIHZvaWQgYnJvd3NlckRlc3Ryb3koRWNvcmVfRXZhcyAqZWUpOwpAQCAtMjI1LDYgKzIzNiwy
MyBAQCB0aXRsZV9zZXQoRWNvcmVfRXZhcyAqZWUsIGNvbnN0IGNoYXIgKnRpCiAgICAgZWNvcmVf
ZXZhc190aXRsZV9zZXQoZWUsIGxhYmVsKTsKIH0KIAorLyoqCisgKiBUaGlzIGlzIGVuIGV4YW1w
bGUgZnVuY3Rpb24gdG8gYWRqdXN0IHZpZXdwb3J0IHZpYSB2aWV3cG9ydCB0YWcncyBhcmd1bWVu
dHMuCisgKiBBcHBsaWNhdGlvbiBjYW4gaW52b2tlIHRoaXMgZnVuY3Rpb24gaW4gb3JkZXIgdG8g
YWRqdXN0IHZpZXdwb3J0IHRhZyB3aGVuIGl0IGlzIHJlcXVpcmVkLgorICovCitzdGF0aWMgdm9p
ZAordmlld3BvcnRfc2V0KCkKK3sKKyAgICBFTGF1bmNoZXIgKmFwcDsKKyAgICBhcHAgPSAoRUxh
dW5jaGVyKikgZWluYV9saXN0X2RhdGFfZ2V0KHdpbmRvd3MpOworCisgICAgZXdrX3ZpZXdfZml4
ZWRfbGF5b3V0X3NpemVfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC53LCBhcHAtPnZp
ZXdwb3J0LmgpOworICAgIGV3a192aWV3X3pvb21fc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3
cG9ydC5pbml0U2NhbGUsIDAsIDApOworICAgIGlmICghZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQo
YXBwLT5icm93c2VyLCBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNj
YWxlKSkKKyAgICAgICAgaW5mbygiIEZhaWwgdG8gc2V0IHpvb20gcmFuZ2UuIG1pblNjYWxlID0g
JWYsIG1heFNjYWxlID0gJWZcbiIsIGFwcC0+dmlld3BvcnQubWluU2NhbGUsIGFwcC0+dmlld3Bv
cnQubWF4U2NhbGUpOworICAgIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KGFwcC0+YnJvd3Nl
ciwgYXBwLT52aWV3cG9ydC51c2VyU2NhbGFibGUpOworfQorCiBzdGF0aWMgdm9pZAogb25fdGl0
bGVfY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpl
dmVudF9pbmZvKQogewpAQCAtMzQ1LDYgKzM3Myw0OCBAQCBvbl90b29sdGlwX3RleHRfc2V0KHZv
aWQqIHVzZXJfZGF0YSwgRXZhCiAgICAgICAgIGluZm8oIiVzXG4iLCB0ZXh0KTsKIH0KIAorLyoq
CisgKiAidmlld3BvcnQsY2hhbmdlZCIgc2lnbmFsIHdpbGwgYmUgYWx3YXlzIGVtaXR0ZWQgcmVn
YXJkbGVzcyBvZiB0aGUgdmlld3BvcnQgZXhpc3RlbmNlLgorICoKKyAqIElmIHlvdSBkb24ndCB3
YW50IHRvIHByb2Nlc3MgdGhlIHZpZXdwb3J0IHRhZywgeW91IGNhbiBlaXRoZXIgZG8gbm90aGlu
ZyBpbiB0aGlzIGNhbGxiYWNrCisgKiBvciBzaW1wbHkgaWdub3JlIHRoZSBzaWduYWwgaW4geW91
ciBhcHBsaWNhdGlvbi4KKyAqIAorICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhbiBi
ZSBmb3VuZCBhdCBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9zYWZhcmkvbGlicmFyeS9kb2N1
bQorICogZW50YXRpb24vYXBwbGVhcHBsaWNhdGlvbnMvcmVmZXJlbmNlL3NhZmFyaXdlYmNvbnRl
bnQvdXNpbmd0aGV2aWV3cG9ydC91c2luZ3RoZXZpZXdwb3J0Lmh0bWwKKyAqLworc3RhdGljIHZv
aWQKK29uX3ZpZXdwb3J0X2NoYW5nZWQodm9pZCogdXNlcl9kYXRhLCBFdmFzX09iamVjdCogd2Vi
dmlldywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFTGF1bmNoZXIgKmFwcCA9IChFTGF1bmNo
ZXIgKil1c2VyX2RhdGE7CisKKyAgICBmbG9hdCB3LCBoLCBpbml0U2NhbGUsIG1pblNjYWxlLCBt
YXhTY2FsZSwgdXNlclNjYWxhYmxlOworCisgICAgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KHdlYnZp
ZXcsICZ3LCAmaCwgJmluaXRTY2FsZSwgJm1heFNjYWxlLCAmbWluU2NhbGUsICZ1c2VyU2NhbGFi
bGUpOworCisgICAgLyoqCisgICAgICogSWYgdGhlcmUgaXMgbm8gYXJndW1lbnQgaW4gdmlld3Bv
cnQgdGFnLCBhcmd1bWVudCdzIHZhbHVlIGlzIC0xLgorICAgICAqLworICAgIGlmICgoaW50KXcg
PT0gLTEpCisgICAgICAgIHcgPSBERUZBVUxUX1dJRFRIOworICAgIGlmICgoaW50KWggPT0gLTEp
CisgICAgICAgIGggPSBERUZBVUxUX0hFSUdIVDsKKyAgICBpZiAoKGludClpbml0U2NhbGUgPT0g
LTEpCisgICAgICAgIGluaXRTY2FsZSA9IERFRkFVTFRfWk9PTV9JTklUOyAvLyBUaGVyZSdzIG5v
IHNjYWxlIHNlcGFyYXRlZCBmcm9tIHpvb21pbmcgaW4gd2Via2l0LWVmbC4KKyAgICBpZiAoKGlu
dCltaW5TY2FsZSA9PSAtMSkKKyAgICAgICAgbWluU2NhbGUgPSBld2tfdmlld196b29tX3Jhbmdl
X21pbl9nZXQod2Vidmlldyk7CisgICAgaWYgKChpbnQpbWF4U2NhbGUgPT0gLTEpCisgICAgICAg
IG1heFNjYWxlID0gZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KHdlYnZpZXcpOworICAgIGlm
ICgoaW50KXVzZXJTY2FsYWJsZSA9PSAtMSkKKyAgICAgICAgdXNlclNjYWxhYmxlID0gRUlOQV9U
UlVFOworCisgICAgYXBwLT52aWV3cG9ydC53ID0gKGludCl3OworICAgIGFwcC0+dmlld3BvcnQu
aCA9IChpbnQpaDsKKyAgICBhcHAtPnZpZXdwb3J0LmluaXRTY2FsZSA9IGluaXRTY2FsZTsKKyAg
ICBhcHAtPnZpZXdwb3J0Lm1pblNjYWxlID0gbWluU2NhbGU7CisgICAgYXBwLT52aWV3cG9ydC5t
YXhTY2FsZSA9IG1heFNjYWxlOworICAgIGFwcC0+dmlld3BvcnQudXNlclNjYWxhYmxlID0gKEVp
bmFfQm9vbCl1c2VyU2NhbGFibGU7Cit9CisKIHN0YXRpYyB2b2lkCiBvbl9tb3VzZV9kb3duKHZv
aWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZv
KQogewpAQCAtNTc5LDYgKzY0OSw3IEBAIGJyb3dzZXJDcmVhdGUoY29uc3QgY2hhciAqdXJsLCBj
b25zdCBjaGEKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwLT5icm93c2Vy
LCAidGl0bGUsY2hhbmdlZCIsIG9uX3RpdGxlX2NoYW5nZWQsIGFwcCk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQscHJvZ3Jlc3MiLCBvbl9w
cm9ncmVzcywgYXBwKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwLT5i
cm93c2VyLCAibG9hZCxmaW5pc2hlZCIsIG9uX2xvYWRfZmluaXNoZWQsIGFwcCk7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInZpZXdwb3J0LGNoYW5n
ZWQiLCBvbl92aWV3cG9ydF9jaGFuZ2VkLCBhcHApOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2libGUsc2V0Iiwgb25fdG9v
bGJhcnNfdmlzaWJsZV9zZXQsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKGFwcC0+YnJvd3NlciwgInRvb2xiYXJzLHZpc2libGUsZ2V0Iiwgb25fdG9vbGJhcnNfdmlz
aWJsZV9nZXQsIGFwcCk7CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2MTUxNikKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDU0LDQgKzQ1NSwxMyBAQCB2b2lkIENocm9t
ZUNsaWVudEVmbDo6Y2hvb3NlSWNvbkZvckZpbGVzCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFt
ZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0Cit7Cisg
ICAgRnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0PEZyYW1lTG9hZGVy
Q2xpZW50RWZsKj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgaWYgKGNsaWVudC0+
Z2V0SW5pdExheW91dENvbXBsZXRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBld2tfdmll
d192aWV3cG9ydF9zZXQobV92aWV3LCBhcmd1bWVudHMud2lkdGgsIGFyZ3VtZW50cy5oZWlnaHQs
IGFyZ3VtZW50cy5pbml0aWFsU2NhbGUsIGFyZ3VtZW50cy5taW5pbXVtU2NhbGUsIGFyZ3VtZW50
cy5tYXhpbXVtU2NhbGUsIGFyZ3VtZW50cy51c2VyU2NhbGFibGUpOworfQorCiB9CkluZGV4OiBX
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHJldmlzaW9uIDYx
NTE2KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkod29y
a2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKik7CiAgICAg
dmlydHVhbCB2b2lkIGljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nLCAwdT4mLCBQYXNz
UmVmUHRyPEZpbGVDaG9vc2VyPik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdw
b3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3Vt
ZW50cykgY29uc3Q7CisKICAgICBFdmFzX09iamVjdCogbV92aWV3OwogICAgIEtVUkwgbV9ob3Zl
cmVkTGlua1VSTDsKIH07CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjE1MTYpCisrKyBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJW
aWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03MCw2ICs3MSw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpGcmFtZUxvYWRlckNsaWVudEUKICAgICAsIG1fY3VzdG9tVXNlckFnZW50KCIiKQogICAg
ICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNl
KQorICAgICwgbV9pbml0TGF5b3V0Q29tcGxldGVkKGZhbHNlKQogewogfQogCkBAIC01NzUsMTEg
KzU3NywxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoCiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CisgICAg
bV9pbml0TGF5b3V0Q29tcGxldGVkID0gZmFsc2U7CisKICAgICBld2tfZnJhbWVfdXJpX2NoYW5n
ZWQobV9mcmFtZSk7CiAgICAgaWYgKGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fdmlldykgIT0g
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3ZpZXcs
IDApOwogICAgIGV3a192aWV3X3VyaV9jaGFuZ2VkKG1fdmlldyk7CisKKyAgICBWaWV3cG9ydEFy
Z3VtZW50cyBhcmd1bWVudHM7CisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgYXJn
dW1lbnRzLndpZHRoLCBhcmd1bWVudHMuaGVpZ2h0LCBhcmd1bWVudHMuaW5pdGlhbFNjYWxlLCBh
cmd1bWVudHMubWluaW11bVNjYWxlLCBhcmd1bWVudHMubWF4aW11bVNjYWxlLCBhcmd1bWVudHMu
dXNlclNjYWxhYmxlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaW5pc2hEb2N1bWVudExvYWQoKQpAQCAtNTkwLDcgKzU5Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmkKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkRmlyc3RMYXlvdXQoKQogewogICAgIC8vIGVtaXQgbV9mcmFtZS0+aW5pdGlhbExh
eW91dENvbXBsZXRlZCgpOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pbml0TGF5b3V0
Q29tcGxldGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQpJbmRleDogV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gNjE1MTYp
CisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwg
OiBwdWJsaWMgRnJhbQogICAgIHZvaWQgc2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyAm
YWdlbnQpOwogICAgIGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50KCkgY29uc3Q7CiAKKyAg
ICB2b2lkIHNldEluaXRMYXlvdXRDb21wbGV0ZWQoYm9vbCBjb21wbGV0ZWQpIHsgbV9pbml0TGF5
b3V0Q29tcGxldGVkID0gY29tcGxldGVkOyB9CisgICAgYm9vbCBnZXRJbml0TGF5b3V0Q29tcGxl
dGVkKCkgeyByZXR1cm4gbV9pbml0TGF5b3V0Q29tcGxldGVkOyB9CisKICAgICB2aXJ0dWFsIGJv
b2wgaGFzV2ViVmlldygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNGcmFtZVZpZXcoKSBj
b25zdDsKIApAQCAtMjEzLDYgKzIxNiw4IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW0KICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCiAgICAg
UGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1Bs
dWdpbjsKKworICAgIGJvb2wgbV9pbml0TGF5b3V0Q29tcGxldGVkOwogfTsKIAogfQpJbmRleDog
V2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3
ay9ld2tfcHJpdmF0ZS5oCShyZXZpc2lvbiA2MTUxNikKKysrIFdlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZQogCiB2b2lkICAgICAgICAgICAgIGV3a192aWV3X3Bv
cHVwX25ldyhFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQs
IGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiAKK3ZvaWQgICAg
ICAgICAgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB3LCBm
bG9hdCBoLCBmbG9hdCBpbml0X3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2Fs
ZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSk7CisKIEV3a19IaXN0b3J5ICAgICAgKmV3a19oaXN0b3J5
X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QgKmhpc3RvcnkpOwogdm9pZCAgICAgICAgICAg
ICAgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSAqaGlzdG9yeSk7CiAKSW5kZXg6IFdlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAJKHJldmlzaW9uIDYxNTE2KQorKysgV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDE5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKICAg
ICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmc6MTsKICAgICAgICAgRWluYV9Cb29sIGNh
cmV0X2Jyb3dzaW5nOjE7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBmbG9hdCB3Owor
ICAgICAgICAgICAgZmxvYXQgaDsKKyAgICAgICAgICAgIGZsb2F0IGluaXRfc2NhbGU7CisgICAg
ICAgICAgICBmbG9hdCBtaW5fc2NhbGU7CisgICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7Cisg
ICAgICAgICAgICBmbG9hdCB1c2VyX3NjYWxhYmxlOworICAgICAgICB9IHZpZXdwb3J0OworICAg
ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZmxvYXQgbWluX3NjYWxlOworICAgICAgICAgICAg
ZmxvYXQgbWF4X3NjYWxlOworICAgICAgICAgICAgRWluYV9Cb29sIHVzZXJfc2NhbGFibGU6MTsK
KyAgICAgICAgfSB6b29tX3JhbmdlOwogICAgIH0gc2V0dGluZ3M7CiAgICAgc3RydWN0IHsKICAg
ICAgICAgc3RydWN0IHsKQEAgLTU3NCw2ICs1ODcsMTEgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogX2V3a192aWV3XwogICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVfYnJvd3Npbmcg
PSBwcml2LT5wYWdlX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgcHJp
di0+c2V0dGluZ3MuY2FyZXRfYnJvd3NpbmcgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5jYXJldEJy
b3dzaW5nRW5hYmxlZCgpOwogCisgICAgLy8gU2luY2UgdGhlcmUncyBubyBzY2FsZSBzZXBhcmF0
ZWQgZnJvbSB6b29taW5nIGluIHdlYmtpdC1lZmwsIHRoaXMgZnVuY3Rpb25hbGl0eSBvZgorICAg
IC8vIHZpZXdwb3J0IG1ldGEgdGFnIGlzIGltcGxlbWVudGVkIHVzaW5nIHpvb20uCisgICAgcHJp
di0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUgPSBaT09NX01JTjsKKyAgICBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSA9IFpPT01fTUFYOworCiAgICAgcHJpdi0+bWFp
bl9mcmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAg
ICAgaWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3Qg
Y3JlYXRlIG1haW4gZnJhbWUuIik7CkBAIC05OTgsNiArMTAxNiwxMSBAQCB2b2lkIGV3a192aWV3
X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsK
KworICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KHByaXYtPm1haW5fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKSk7CisgICAgaWYgKCFjbGllbnQtPmdldEluaXRMYXlvdXRDb21wbGV0ZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc2Qt
Pl9wcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHcgPD0gMCAmJiBoIDw9IDApIHsK
ICAgICAgICAgaWYgKCFwcml2LT5maXhlZF9sYXlvdXQudXNlKQpAQCAtMTc1NCwxNCArMTc3Nywy
MiBAQCBmbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX3NldCwgRUlOQV9G
QUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikgewotICAgICAgICBXUk4oInpvb20gbGV2
ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKworICAg
IGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7CisgICAgICAg
IFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OworICAgIH0KKworICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5f
c2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUp
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7
Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFY
LCAoZG91YmxlKXpvb20pOworICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChk
b3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7
CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTgyNCwxNCArMTg1NSwy
MiBAQCB2b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0CiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19D
b29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpvb21fd2Vha19z
ZXQsIEVJTkFfRkFMU0UpOwotICAgIGlmICh6b29tIDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9v
bSk7CisKKyAgICBpZiAoIXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UudXNlcl9zY2FsYWJsZSkg
eworICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYi
LCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpv
b20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9Ci0gICAgaWYgKHpvb20gPiBa
T09NX01BWCkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJs
ZSlaT09NX01BWCwgKGRvdWJsZSl6b29tKTsKKyAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdz
Lnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVm
IDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91
YmxlKXpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE5NzQs
MTIgKzIwMTMsMTcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YQog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3Nl
dCwgRUlOQV9GQUxTRSk7CiAKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91YmxlKXpv
b20pOworICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7
CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7CiAgICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpv
b20pOworCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2Fs
ZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMzQ0OSw3
ICszNDkzLDcgQEAgdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdAogICAg
IGlmICghc2QtPmFwaS0+ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgRVJSKCIjIyMjIyAlbHUgJWx1IiwgY3VycmVudF9zaXplLCBleHBlY3RlZF9zaXpl
KTsKKyAgICBFUlIoIiMjIyMjICV1ICV1IiwgY3VycmVudF9zaXplLCBleHBlY3RlZF9zaXplKTsK
ICAgICByZXR1cm4gc2QtPmFwaS0+ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoc2QsIGZyYW1lLCBk
YXRhYmFzZU5hbWUsIGN1cnJlbnRfc2l6ZSwgZXhwZWN0ZWRfc2l6ZSk7CiB9CiAKQEAgLTM2OTIs
MyArMzczNiwxNDggQEAgdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZQog
ICAgIERCRygidmlldz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7CiB9CisKKy8qKgorICogQGludGVy
bmFsCisgKiBSZXBvcnRzIHRoZSB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KKyAqCisgKiBAcGFyYW0g
byB2aWV3LgorICogQHBhcmFtIHcgd2lkdGguCisgKiBAcGFyYW0gaCBoZWlnaHQuCisgKiBAcGFy
YW0gaW5pdF9zY2FsZSBpbml0aWFsU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWF4X3NjYWxlIG1h
eGltdW1TY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bVNjYWxlIHZhbHVl
LgorICogQHBhcmFtIHVzZXJfc2NhbGFibGUgdXNlcnNjYWxhYmxlIGZsYWcuCisgKgorICogRW1p
dHMgc2lnbmFsOiAidmlld3BvcnQsY2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgorICovCit2
b2lkIGV3a192aWV3X3ZpZXdwb3J0X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgdywgZmxvYXQg
aCwgZmxvYXQgaW5pdF9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlLCBmbG9hdCBtaW5fc2NhbGUsIGZs
b2F0IHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBF
V0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9y
dC53ID0gdzsKKyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5oID0gaDsKKyAgICBwcml2LT5z
ZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlID0gaW5pdF9zY2FsZTsKKyAgICBwcml2LT5zZXR0
aW5ncy52aWV3cG9ydC5taW5fc2NhbGUgPSBtaW5fc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mu
dmlld3BvcnQubWF4X3NjYWxlID0gbWF4X3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdw
b3J0LnVzZXJfc2NhbGFibGUgPSB1c2VyX3NjYWxhYmxlOworCisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAidmlld3BvcnQsY2hhbmdlZCIsIDApOworfSAKKworLyoqCisg
KiBHZXRzIGRhdGEgb2Ygdmlld3BvcnQgbWV0YSB0YWcuCisgKgorICogQHBhcmFtIG8gdmlldy4K
KyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICogQHBhcmFtIGluaXRf
c2NhbGUgaW5pdGlhbCBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bSBT
Y2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSBTY2FsZSB2YWx1ZS4KKyAq
IEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXIgU2NhbGFibGUgdmFsdWUuCisgKi8KK3ZvaWQgZXdr
X3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZs
b2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9h
dCogdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmICh3KQorICAgICAgICAqdyA9IHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0Lnc7CisgICAgaWYgKGgpCisgICAgICAgICpoID0gcHJpdi0+
c2V0dGluZ3Mudmlld3BvcnQuaDsKKyAgICBpZiAoaW5pdF9zY2FsZSkKKyAgICAgICAgKmluaXRf
c2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlOworICAgIGlmIChtYXhf
c2NhbGUpCisgICAgICAgICptYXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhf
c2NhbGU7CisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1pbl9zY2FsZSA9IHByaXYtPnNl
dHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICBpZiAodXNlcl9zY2FsYWJsZSkKKyAgICAg
ICAgKnVzZXJfc2NhbGFibGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxl
OworfQorCisvKioKKyAqIFNldHMgdGhlIHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gdmll
dy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICog
QHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKiAKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gcmFuZ2UgaXMgY2hhbmdlZCwgQGMgRUlOQV9GQUxT
RSBpZiBub3Qgb3IgZmFpbHVyZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vf
c2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK3sK
KyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBw
cml2KTsKKworICAgIGlmIChtYXhfc2NhbGUgPCBtaW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJt
aW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4X3NjYWxlIik7CisgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgIH0KKworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxl
ID0gbWluX3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlID0g
bWF4X3NjYWxlOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCisgKiBHZXRzIHRo
ZSBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAq
CisgKiBAcmV0dXJuIG1pbmltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAqLworZmxvYXQgZXdr
X3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVX
X1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAg
cmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlOworfQorCisvKioKKyAq
IEdldHMgdGhlIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3LgorICoKKyAqIEByZXR1cm4gbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICovCitm
bG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7
CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGU7Cit9CisK
Ky8qKgorICogU2V0cyBpZiB6b29tIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4K
KyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBlbmFi
bGUgem9vbS4gSXQgZGVmYXVsdHMKKyAqIHRvIEBjIEVJTkFfVFJVRS4KKyAqLwordm9pZCBld2tf
dmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJfc2Nh
bGFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2Nh
bGFibGUgPSB1c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIEdldHMgaWYgem9vbSBpcyBlbmFi
bGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVy
ZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2FsYWJsZSB2YWx1ZS4KKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90
LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2Vy
X3NjYWxhYmxlOworfQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCShyZXZpc2lvbiA2MTUxNikKKysrIFdlYktp
dC9lZmwvZXdrL2V3a192aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgZXh0
ZXJuICJDIiB7CiAgKiAgLSAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZDogcmVwb3J0
cyBhIGRvd25sb2FkIGlzIGJlaW5nIHJlcXVlc3RlZAogICogICAgYW5kIGFzIGFyZ3VtZW50cyBn
aXZlcyBpdHMgZGV0YWlscy4KICAqICAtICJpY29uLHJlY2VpdmVkIiwgdm9pZDogbWFpbiBmcmFt
ZSByZWNlaXZlZCBhbiBpY29uLgorICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCB2b2lkOiBSZXBv
cnQgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KICAqLwogCiB0eXBlZGVmIHN0cnVjdCBfRXdr
X1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwpAQCAtNDUxLDYgKzQ1MiwxMyBA
QCBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhCiBFQVBJIEVpbmFfQm9v
bCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNy
LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19w
YWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBj
b25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKK0VBUEkgdm9pZCBld2tfdmlld192aWV3cG9y
dF9nZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2Nh
bGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxh
YmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0
KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJIGZsb2F0IGV3a192
aWV3X3pvb21fcmFuZ2VfbWluX2dldChFdmFzX09iamVjdCogbyk7CitFQVBJIGZsb2F0IGV3a192
aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCogbyk7CitFQVBJIHZvaWQgZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0KEV2YXNfT2Jq
ZWN0KiBvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60684</attachid>
            <date>2010-07-06 22:51:34 -0700</date>
            <delta_ts>2010-07-06 23:05:38 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-14</desc>
            <filename>viewport-patch-14.txt</filename>
            <type>text/plain</type>
            <size>22125</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjI2MTgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDIgQEAKKzIwMTAtMDctMDYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1l
dGEgdGFnLgorICAgICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKwor
ICAgICAgICAqIGVmbC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICh2aWV3cG9ydF9zZXQpOgorICAgICAgICAob25fdmlld3Bv
cnRfY2hhbmdlZCk6IEFkZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgJ3ZpZXdwb3J0LGNo
YW5nZWQnIHNpZ25hbC4KKyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOiBSZWdpc3RlciB0aGUgY2Fs
bGJhY2sgZnVuY3Rpb24gZm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAg
ICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgbWV0
aG9kIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFnLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50RWZsOjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDogRGVmaW5lIG1ldGhvZCB0byBwcm9jZXNzIHZp
ZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsKTogSW1wbGVtZW50IGEgZnVuY3Rpb24gdG8gc2V0IGxheW91dAorICAg
ICAgICB3aGVuIHdlYnNpdGUgZG9lc24ndCBjb250YWluIHZpZXdwb3J0IHRhZy4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RM
YXlvdXQpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldEluaXRMYXlv
dXRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Omdl
dEluaXRMYXlvdXRDb21wbGV0ZWQpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ByaXZhdGUuaDog
QWRkZWQgaW50ZXJuYWwgQVBJcyB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBl
ZmwvZXdrL2V3a192aWV3LmNwcDogQWRkZWQgQVBJcyB0byBwcm9jZXNzIGFuZCB0byBoYW5kbGUg
dmlld3BvcnQgdGFnLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3
a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX3Nl
dCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X3NldCk6IFJl
cG9ydHMgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KKyAgICAgICAgKGV3a192aWV3X3ZpZXdw
b3J0X2dldCk6IFJlcG9ydHMgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KKyAgICAgICAgKGV3
a192aWV3X3pvb21fcmFuZ2Vfc2V0KTogU2V0cyB0aGUgem9vbSByYW5nZS4KKyAgICAgICAgKGV3
a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6IEdldHMgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJh
bmdlLgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KTogR2V0cyBtYXhpbXVt
IHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3Nl
dCk6IFNldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2Fs
YWJsZV9nZXQpOiBHZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBlZmwvZXdrL2V3
a192aWV3Lmg6CisKIDIwMTAtMDctMDUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KSW5kZXg6IFdlYktpdC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMJKHJldmlzaW9uIDYyNjEzKQorKysgV2ViS2l0
L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBA
CiAKICNkZWZpbmUgREVGQVVMVF9XSURUSCAgICAgIDgwMAogI2RlZmluZSBERUZBVUxUX0hFSUdI
VCAgICAgNjAwCisjZGVmaW5lIERFRkFVTFRfWk9PTV9JTklUICAxLjAKIAogI2RlZmluZSBpbmZv
KGZvcm1hdCwgYXJncy4uLikgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXApAQCAtMTI1LDYgKzEyNiwxNSBAQCBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9w
dGlvbnMgPSB7CiAgICAgfQogfTsKIAordHlwZWRlZiBzdHJ1Y3QgX1ZpZXdwb3J0IHsKKyAgICBp
bnQgdzsKKyAgICBpbnQgaDsKKyAgICBmbG9hdCBpbml0U2NhbGU7CisgICAgZmxvYXQgbWluU2Nh
bGU7CisgICAgZmxvYXQgbWF4U2NhbGU7CisgICAgRWluYV9Cb29sIHVzZXJTY2FsYWJsZTsKK30g
Vmlld3BvcnQ7CisKIHR5cGVkZWYgc3RydWN0IF9FTGF1bmNoZXIgewogICAgIEVjb3JlX0V2YXMg
KmVlOwogICAgIEV2YXMgKmV2YXM7CkBAIC0xMzIsNiArMTQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X0VMYXVuY2hlciB7CiAgICAgRXZhc19PYmplY3QgKmJyb3dzZXI7CiAgICAgY29uc3QgY2hhciAq
dGhlbWU7CiAgICAgY29uc3QgY2hhciAqdXNlckFnZW50OworICAgIFZpZXdwb3J0IHZpZXdwb3J0
OwogfSBFTGF1bmNoZXI7CiAKIHN0YXRpYyB2b2lkIGJyb3dzZXJEZXN0cm95KEVjb3JlX0V2YXMg
KmVlKTsKQEAgLTIyNSw2ICsyMzYsMjMgQEAgdGl0bGVfc2V0KEVjb3JlX0V2YXMgKmVlLCBjb25z
dCBjaGFyICp0aQogICAgIGVjb3JlX2V2YXNfdGl0bGVfc2V0KGVlLCBsYWJlbCk7CiB9CiAKKy8q
KgorICogVGhpcyBpcyBlbiBleGFtcGxlIGZ1bmN0aW9uIHRvIGFkanVzdCB2aWV3cG9ydCB2aWEg
dmlld3BvcnQgdGFnJ3MgYXJndW1lbnRzLgorICogQXBwbGljYXRpb24gY2FuIGludm9rZSB0aGlz
IGZ1bmN0aW9uIGluIG9yZGVyIHRvIGFkanVzdCB2aWV3cG9ydCB0YWcgd2hlbiBpdCBpcyByZXF1
aXJlZC4KKyAqLworc3RhdGljIHZvaWQKK3ZpZXdwb3J0X3NldCgpCit7CisgICAgRUxhdW5jaGVy
ICphcHA7CisgICAgYXBwID0gKEVMYXVuY2hlciopIGVpbmFfbGlzdF9kYXRhX2dldCh3aW5kb3dz
KTsKKworICAgIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChhcHAtPmJyb3dzZXIsIGFw
cC0+dmlld3BvcnQudywgYXBwLT52aWV3cG9ydC5oKTsKKyAgICBld2tfdmlld196b29tX3NldChh
cHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQuaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBpZiAoIWV3
a192aWV3X3pvb21fcmFuZ2Vfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC5taW5TY2Fs
ZSwgYXBwLT52aWV3cG9ydC5tYXhTY2FsZSkpCisgICAgICAgIGluZm8oIiBGYWlsIHRvIHNldCB6
b29tIHJhbmdlLiBtaW5TY2FsZSA9ICVmLCBtYXhTY2FsZSA9ICVmXG4iLCBhcHAtPnZpZXdwb3J0
Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNjYWxlKTsKKyAgICBld2tfdmlld191c2VyX3Nj
YWxhYmxlX3NldChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQudXNlclNjYWxhYmxlKTsKK30K
Kwogc3RhdGljIHZvaWQKIG9uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAgLTM0NSw2ICszNzMsNDggQEAg
b25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEsIEV2YQogICAgICAgICBpbmZvKCIl
c1xuIiwgdGV4dCk7CiB9CiAKKy8qKgorICogInZpZXdwb3J0LGNoYW5nZWQiIHNpZ25hbCB3aWxs
IGJlIGFsd2F5cyBlbWl0dGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHZpZXdwb3J0IGV4aXN0ZW5jZS4K
KyAqCisgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBwcm9jZXNzIHRoZSB2aWV3cG9ydCB0YWcsIHlv
dSBjYW4gZWl0aGVyIGRvIG5vdGhpbmcgaW4gdGhpcyBjYWxsYmFjaworICogb3Igc2ltcGx5IGln
bm9yZSB0aGUgc2lnbmFsIGluIHlvdXIgYXBwbGljYXRpb24uCisgKiAKKyAqIE1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhpcyBjYW4gYmUgZm91bmQgYXQgaHR0cDovL2RldmVsb3Blci5hcHBsZS5j
b20vc2FmYXJpL2xpYnJhcnkvZG9jdW0KKyAqIGVudGF0aW9uL2FwcGxlYXBwbGljYXRpb25zL3Jl
ZmVyZW5jZS9zYWZhcml3ZWJjb250ZW50L3VzaW5ndGhldmlld3BvcnQvdXNpbmd0aGV2aWV3cG9y
dC5odG1sCisgKi8KK3N0YXRpYyB2b2lkCitvbl92aWV3cG9ydF9jaGFuZ2VkKHZvaWQqIHVzZXJf
ZGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRUxh
dW5jaGVyICphcHAgPSAoRUxhdW5jaGVyICopdXNlcl9kYXRhOworCisgICAgZmxvYXQgdywgaCwg
aW5pdFNjYWxlLCBtaW5TY2FsZSwgbWF4U2NhbGUsIHVzZXJTY2FsYWJsZTsKKworICAgIGV3a192
aWV3X3ZpZXdwb3J0X2dldCh3ZWJ2aWV3LCAmdywgJmgsICZpbml0U2NhbGUsICZtYXhTY2FsZSwg
Jm1pblNjYWxlLCAmdXNlclNjYWxhYmxlKTsKKworICAgIC8qKgorICAgICAqIElmIHRoZXJlIGlz
IG5vIGFyZ3VtZW50IGluIHZpZXdwb3J0IHRhZywgYXJndW1lbnQncyB2YWx1ZSBpcyAtMS4KKyAg
ICAgKi8KKyAgICBpZiAoKGludCl3ID09IC0xKQorICAgICAgICB3ID0gREVGQVVMVF9XSURUSDsK
KyAgICBpZiAoKGludCloID09IC0xKQorICAgICAgICBoID0gREVGQVVMVF9IRUlHSFQ7CisgICAg
aWYgKChpbnQpaW5pdFNjYWxlID09IC0xKQorICAgICAgICBpbml0U2NhbGUgPSBERUZBVUxUX1pP
T01fSU5JVDsgLy8gVGhlcmUncyBubyBzY2FsZSBzZXBhcmF0ZWQgZnJvbSB6b29taW5nIGluIHdl
YmtpdC1lZmwuCisgICAgaWYgKChpbnQpbWluU2NhbGUgPT0gLTEpCisgICAgICAgIG1pblNjYWxl
ID0gZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KHdlYnZpZXcpOworICAgIGlmICgoaW50KW1h
eFNjYWxlID09IC0xKQorICAgICAgICBtYXhTY2FsZSA9IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4
X2dldCh3ZWJ2aWV3KTsKKyAgICBpZiAoKGludCl1c2VyU2NhbGFibGUgPT0gLTEpCisgICAgICAg
IHVzZXJTY2FsYWJsZSA9IEVJTkFfVFJVRTsKKworICAgIGFwcC0+dmlld3BvcnQudyA9IChpbnQp
dzsKKyAgICBhcHAtPnZpZXdwb3J0LmggPSAoaW50KWg7CisgICAgYXBwLT52aWV3cG9ydC5pbml0
U2NhbGUgPSBpbml0U2NhbGU7CisgICAgYXBwLT52aWV3cG9ydC5taW5TY2FsZSA9IG1pblNjYWxl
OworICAgIGFwcC0+dmlld3BvcnQubWF4U2NhbGUgPSBtYXhTY2FsZTsKKyAgICBhcHAtPnZpZXdw
b3J0LnVzZXJTY2FsYWJsZSA9IChFaW5hX0Jvb2wpdXNlclNjYWxhYmxlOworfQorCiBzdGF0aWMg
dm9pZAogb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogd2Vi
dmlldywgdm9pZCogZXZlbnRfaW5mbykKIHsKQEAgLTU3OSw2ICs2NDksNyBAQCBicm93c2VyQ3Jl
YXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRsZV9jaGFuZ2Vk
LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIs
ICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmluaXNoZWQiLCBvbl9sb2FkX2Zp
bmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJy
b3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRfY2hhbmdlZCwgYXBwKTsKIAog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFy
cyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0LCBhcHApOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxl
LGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJbmRleDogV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjI2MTMpCisr
KyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlZp
ZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTUwNCw0ICs1MDUs
MTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29zZUljb25Gb3JGaWxlcwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpkaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1l
bnRzKSBjb25zdAoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNf
Y2FzdDxGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOwor
ICAgIGlmIChjbGllbnQtPmdldEluaXRMYXlvdXRDb21wbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgYXJndW1lbnRzLndpZHRoLCBh
cmd1bWVudHMuaGVpZ2h0LCBhcmd1bWVudHMuaW5pdGlhbFNjYWxlLCBhcmd1bWVudHMubWluaW11
bVNjYWxlLCBhcmd1bWVudHMubWF4aW11bVNjYWxlLCBhcmd1bWVudHMudXNlclNjYWxhYmxlKTsK
K30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCShyZXZpc2lvbiA2MjYxMykKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBpY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZywgMHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0
QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0OworCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsK
ICAgICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CiB9OwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDYyNjEz
KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNr
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNzAsNiArNzEsNyBAQCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFCiAgICAgLCBtX2N1c3RvbVVz
ZXJBZ2VudCgiIikKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9u
c2VUb1BsdWdpbihmYWxzZSkKKyAgICAsIG1faW5pdExheW91dENvbXBsZXRlZChmYWxzZSkKIHsK
IH0KIApAQCAtNTc1LDExICs1NzcsMTYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRDaAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogeworICAgIG1faW5pdExheW91dENvbXBsZXRlZCA9IGZhbHNlOworCiAgICAgZXdr
X2ZyYW1lX3VyaV9jaGFuZ2VkKG1fZnJhbWUpOwogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWlu
X2dldChtX3ZpZXcpICE9IG1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBld2tfdmlld190
aXRsZV9zZXQobV92aWV3LCAwKTsKICAgICBld2tfdmlld191cmlfY2hhbmdlZChtX3ZpZXcpOwor
CisgICAgVmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworICAgIGV3a192aWV3X3ZpZXdwb3J0
X3NldChtX3ZpZXcsIGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRz
LmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1T
Y2FsZSwgYXJndW1lbnRzLnVzZXJTY2FsYWJsZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKQEAgLTU5MCw3ICs1OTcsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKIHsKICAgICAvLyBlbWl0IG1f
ZnJhbWUtPmluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1faW5pdExheW91dENvbXBsZXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKSW5kZXg6
IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJ
KHJldmlzaW9uIDYyNjEzKQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcgJmFnZW50KTsKICAgICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2Vu
dCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRJbml0TGF5b3V0Q29tcGxldGVkKGJvb2wgY29tcGxl
dGVkKSB7IG1faW5pdExheW91dENvbXBsZXRlZCA9IGNvbXBsZXRlZDsgfQorICAgIGJvb2wgZ2V0
SW5pdExheW91dENvbXBsZXRlZCgpIHsgcmV0dXJuIG1faW5pdExheW91dENvbXBsZXRlZDsgfQor
CiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aGFzRnJhbWVWaWV3KCkgY29uc3Q7CiAKQEAgLTIxMyw2ICsyMTYsOCBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJl
Y3QgZGF0YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW47CisKKyAgICBib29sIG1faW5pdExheW91dENvbXBsZXRlZDsK
IH07CiAKIH0KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAkocmV2aXNpb24gNjI2MTMpCisrKyBXZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBA
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdrX3ZpZXcKIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8s
IEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAogdm9pZCAgICAgICAg
ICAgICBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJl
Y3QpOwordm9pZCAgICAgICAgICAgICBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IHcsIGZsb2F0IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwg
ZmxvYXQgbWluX3NjYWxlLCBmbG9hdCB1c2VyX3NjYWxhYmxlKTsKIAogdm9pZCAgICAgICAgICAg
ICBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRG93bmxvYWQg
KmRvd25sb2FkKTsKIApJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkocmV2aXNpb24gNjI2MTMpCisrKyBX
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIs
MTkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICBFaW5hX0Jvb2wg
cmVzaXphYmxlX3RleHRhcmVhczoxOwogICAgICAgICBFaW5hX0Jvb2wgcHJpdmF0ZV9icm93c2lu
ZzoxOwogICAgICAgICBFaW5hX0Jvb2wgY2FyZXRfYnJvd3Npbmc6MTsKKyAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIGZsb2F0IHc7CisgICAgICAgICAgICBmbG9hdCBoOworICAgICAgICAg
ICAgZmxvYXQgaW5pdF9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAg
ICAgICAgIGZsb2F0IG1heF9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IHVzZXJfc2NhbGFibGU7
CisgICAgICAgIH0gdmlld3BvcnQ7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBmbG9h
dCBtaW5fc2NhbGU7CisgICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7CisgICAgICAgICAgICBF
aW5hX0Jvb2wgdXNlcl9zY2FsYWJsZToxOworICAgICAgICB9IHpvb21fcmFuZ2U7CiAgICAgfSBz
ZXR0aW5nczsKICAgICBzdHJ1Y3QgewogICAgICAgICBzdHJ1Y3QgewpAQCAtNTc2LDYgKzU4OSwx
MiBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJpdi0+
c2V0dGluZ3MucHJpdmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZyA9IHBy
aXYtPnBhZ2Vfc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAKKyAgICAvLyBTaW5j
ZSB0aGVyZSdzIG5vIHNjYWxlIHNlcGFyYXRlZCBmcm9tIHpvb21pbmcgaW4gd2Via2l0LWVmbCwg
dGhpcyBmdW5jdGlvbmFsaXR5IG9mCisgICAgLy8gdmlld3BvcnQgbWV0YSB0YWcgaXMgaW1wbGVt
ZW50ZWQgdXNpbmcgem9vbS4gV2hlbiBzY2FsZSB6b29tIGlzIHN1cHBvcnRlZCBieSB3ZWJraXQt
ZWZsLAorICAgIC8vIHRoaXMgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBz
Y2FsZSB6b29tIHBhdGNoLgorICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxl
ID0gWk9PTV9NSU47CisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUgPSBa
T09NX01BWDsKKwogICAgIHByaXYtPm1haW5fZnJhbWUgPSBfZXdrX3ZpZXdfY29yZV9mcmFtZV9u
ZXcoc2QsIHByaXYsIDApLmdldCgpOwogICAgIGlmICghcHJpdi0+bWFpbl9mcmFtZSkgewogICAg
ICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIGZyYW1lLiIpOwpAQCAtMTAwMSw2
ICsxMDIwLDExIEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXMKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOworCisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
Kj4ocHJpdi0+bWFpbl9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBpZiAoIWNsaWVu
dC0+Z2V0SW5pdExheW91dENvbXBsZXRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAg
ICBpZiAodyA8PSAwICYmIGggPD0gMCkgewogICAgICAgICBpZiAoIXByaXYtPmZpeGVkX2xheW91
dC51c2UpCkBAIC0xNzU3LDE0ICsxNzgxLDIyIEBAIGZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNv
bnN0IEV2YXNfT2JqZWMKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCog
bywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVChzZCwgcHJpdik7CisKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGktPnpvb21fc2V0LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlO
KSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01f
TUlOLCAoZG91YmxlKXpvb20pOworCisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3Jhbmdl
LnVzZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsK
KyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2
ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9z
Y2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQot
ICAgIGlmICh6b29tID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4g
JWYgOiAlZiIsIChkb3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20g
PiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpv
b20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3Jhbmdl
Lm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAg
ICAgfQogCkBAIC0xODI3LDE0ICsxODU5LDIyIEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Nt
b290aF9zY2FsZV9zZXQKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+YXBpLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20g
PCBaT09NX01JTikgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRv
dWJsZSlaT09NX01JTiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlz
IGZhbHNlIik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIGlmICh6
b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KLSAgICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworICAg
IGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KIApAQCAtMTk3NywxMiArMjAxNywxNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKIAotICAgIGlmICh6b29t
IDwgWk9PTV9NSU4pIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChk
b3VibGUpWk9PTV9NSU4sIChkb3VibGUpem9vbSk7CisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMg
ZmFsc2UiKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29t
ID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChk
b3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxl
LCAoZG91YmxlKXpvb20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisgICAg
aWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAg
ICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CiAgICAgfQogCkBAIC0zNzEwLDMgKzM3NTUsMTQ4IEBAIHZvaWQgZXdrX3ZpZXdfZG93
bmxvYWRfcmVxdWVzdChFdmFzX09iamUKICAgICBEQkcoInZpZXc9JXAiLCBvKTsKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxv
YWQpOwogfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFz
IGNoYW5nZWQuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICog
QHBhcmFtIGggaGVpZ2h0LgorICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbFNjYWxlIHZhbHVl
LgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWlu
X3NjYWxlIG1pbmltdW1TY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXJz
Y2FsYWJsZSBmbGFnLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInZpZXdwb3J0LGNoYW5nZWQiIHdp
dGggbm8gcGFyYW1ldGVycy4KKyAqLwordm9pZCBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19P
YmplY3QgKm8sIGZsb2F0IHcsIGZsb2F0IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9z
Y2FsZSwgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19W
SUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisg
ICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQudyA9IHc7CisgICAgcHJpdi0+c2V0dGluZ3Mudmll
d3BvcnQuaCA9IGg7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZSA9IGlu
aXRfc2NhbGU7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3Nj
YWxlOworICAgIHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsK
KyAgICBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJs
ZTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInZpZXdwb3J0LGNo
YW5nZWQiLCAwKTsKK30KKworLyoqCisgKiBHZXRzIGRhdGEgb2Ygdmlld3BvcnQgbWV0YSB0YWcu
CisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGgg
aGVpZ2h0LgorICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbCBTY2FsZSB2YWx1ZS4KKyAqIEBw
YXJhbSBtYXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2NhbGUg
bWluaW11bSBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXIgU2NhbGFi
bGUgdmFsdWUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxl
LCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAg
IGlmICh3KQorICAgICAgICAqdyA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lnc7CisgICAgaWYg
KGgpCisgICAgICAgICpoID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaDsKKyAgICBpZiAoaW5p
dF9zY2FsZSkKKyAgICAgICAgKmluaXRfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5p
bml0X3NjYWxlOworICAgIGlmIChtYXhfc2NhbGUpCisgICAgICAgICptYXhfc2NhbGUgPSBwcml2
LT5zZXR0aW5ncy52aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAg
ICAgKm1pbl9zY2FsZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICBp
ZiAodXNlcl9zY2FsYWJsZSkKKyAgICAgICAgKnVzZXJfc2NhbGFibGUgPSBwcml2LT5zZXR0aW5n
cy52aWV3cG9ydC51c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIFNldHMgdGhlIHpvb20gcmFu
Z2UuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2
YWx1ZSBvZiB6b29tIHJhbmdlLgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtIHZhbHVlIG9m
IHpvb20gcmFuZ2UuCisgKiAKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gcmFuZ2Ug
aXMgY2hhbmdlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KKyAqLworRWluYV9C
b29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2Nh
bGUsIGZsb2F0IG1heF9zY2FsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmIChtYXhfc2NhbGUgPCBtaW5f
c2NhbGUpIHsKKyAgICAgICAgV1JOKCJtaW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4X3NjYWxl
Iik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIHByaXYtPnNldHRp
bmdzLnpvb21fcmFuZ2UubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYtPnNldHRpbmdz
Lnpvb21fcmFuZ2UubWF4X3NjYWxlID0gbWF4X3NjYWxlOworCisgICAgcmV0dXJuIEVJTkFfVFJV
RTsKK30KKworLyoqCisgKiBHZXRzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisg
KgorICogQHBhcmFtIG8gdmlldy4KKyAqCisgKiBAcmV0dXJuIG1pbmltdW0gdmFsdWUgb2Ygem9v
bSByYW5nZS4KKyAqLworZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KEV2YXNfT2Jq
ZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOworCisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlOworfQorCisvKioKKyAqIEdldHMgdGhlIG1heGltdW0gdmFsdWUgb2Ygem9vbSBy
YW5nZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICoKKyAqIEByZXR1cm4gbWF4aW11bSB2YWx1
ZSBvZiB6b29tIHJhbmdlLgorICovCitmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQo
RXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS5tYXhfc2NhbGU7Cit9CisKKy8qKgorICogU2V0cyBpZiB6b29tIGlzIGVuYWJsZWQu
CisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIGJvb2xlYW4g
cG9pbnRlciBpbiB3aGljaCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVsdHMKKyAqIHRvIEBjIEVJ
TkFfVFJVRS4KKyAqLwordm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8s
IHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0
aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUgPSB1c2VyX3NjYWxhYmxlOworfQorCisvKioK
KyAqIEdldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBA
cGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVyZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2Fs
YWJsZSB2YWx1ZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJs
ZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9z
Y2FsYWJsZV9nZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNk
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+
c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlOworfQpJbmRleDogV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCShy
ZXZpc2lvbiA2MjYxMykKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDYgKzg1LDcgQEAgZXh0ZXJuICJDIiB7CiAgKiAgLSAiZG93bmxvYWQscmVxdWVz
dCIsIEV3a19Eb3dubG9hZDogcmVwb3J0cyBhIGRvd25sb2FkIGlzIGJlaW5nIHJlcXVlc3RlZAog
ICogICAgYW5kIGFzIGFyZ3VtZW50cyBnaXZlcyBpdHMgZGV0YWlscy4KICAqICAtICJpY29uLHJl
Y2VpdmVkIiwgdm9pZDogbWFpbiBmcmFtZSByZWNlaXZlZCBhbiBpY29uLgorICogIC0gInZpZXdw
b3J0LGNoYW5nZWQiLCB2b2lkOiBSZXBvcnQgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KICAq
LwogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9E
YXRhOwpAQCAtNDUzLDYgKzQ1NCwxMyBAQCBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF90cmFuc2xhCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRl
X0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiBF
QVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKK0VB
UEkgdm9pZCBld2tfdmlld192aWV3cG9ydF9nZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0KiB3LCBm
bG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5f
c2NhbGUsIGZsb2F0KiB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9z
Y2FsZSk7CitFQVBJIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldChFdmFzX09iamVj
dCogbyk7CitFQVBJIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVj
dCogbyk7CitFQVBJIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3Qq
IG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Vz
ZXJfc2NhbGFibGVfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60686</attachid>
            <date>2010-07-06 23:05:38 -0700</date>
            <delta_ts>2010-07-07 07:49:24 -0700</delta_ts>
            <desc>viewport-patch-for-eflwebkit-15</desc>
            <filename>viewport-patch-15.txt</filename>
            <type>text/plain</type>
            <size>22113</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjI2MTgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDIgQEAKKzIwMTAtMDctMDYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbRUZMXSBFRkxXZWJLaXQgZG9lc24ndCBzdXBwb3J0IHZpZXdwb3J0IG1l
dGEgdGFnLgorICAgICAgICBTdXBwb3J0IHZpZXdwb3J0IG1ldGEgdGFnIG9uIEVGTCBQb3J0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzgKKwor
ICAgICAgICAqIGVmbC9FV2ViTGF1bmNoZXIvbWFpbi5jOiBQcm9jZXNzICd2aWV3cG9ydCxjaGFu
Z2VkJyBzaWduYWwuCisgICAgICAgICh2aWV3cG9ydF9zZXQpOgorICAgICAgICAob25fdmlld3Bv
cnRfY2hhbmdlZCk6IEFkZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgJ3ZpZXdwb3J0LGNo
YW5nZWQnIHNpZ25hbC4KKyAgICAgICAgKGJyb3dzZXJDcmVhdGUpOiBSZWdpc3RlciB0aGUgY2Fs
bGJhY2sgZnVuY3Rpb24gZm9yIHRoZSAndmlld3BvcnQsY2hhbmdlZCcgc2lnbmFsLgorICAgICAg
ICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgbWV0
aG9kIHRvIHByb2Nlc3Mgdmlld3BvcnQgdGFnLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50RWZsOjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIGVmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDogRGVmaW5lIG1ldGhvZCB0byBwcm9jZXNzIHZp
ZXdwb3J0IHRhZy4KKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsKTogSW1wbGVtZW50IGEgZnVuY3Rpb24gdG8gc2V0IGxheW91dAorICAg
ICAgICB3aGVuIHdlYnNpdGUgZG9lc24ndCBjb250YWluIHZpZXdwb3J0IHRhZy4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RM
YXlvdXQpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldEluaXRMYXlv
dXRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Omdl
dEluaXRMYXlvdXRDb21wbGV0ZWQpOgorICAgICAgICAqIGVmbC9ld2svZXdrX3ByaXZhdGUuaDog
QWRkZWQgaW50ZXJuYWwgQVBJcyB0byBwcm9jZXNzIHZpZXdwb3J0IHRhZy4KKyAgICAgICAgKiBl
ZmwvZXdrL2V3a192aWV3LmNwcDogQWRkZWQgQVBJcyB0byBwcm9jZXNzIGFuZCB0byBoYW5kbGUg
dmlld3BvcnQgdGFnLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3
a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX3Nl
dCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X3NldCk6IFJl
cG9ydHMgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KKyAgICAgICAgKGV3a192aWV3X3ZpZXdw
b3J0X2dldCk6IFJlcG9ydHMgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KKyAgICAgICAgKGV3
a192aWV3X3pvb21fcmFuZ2Vfc2V0KTogU2V0cyB0aGUgem9vbSByYW5nZS4KKyAgICAgICAgKGV3
a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6IEdldHMgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJh
bmdlLgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KTogR2V0cyBtYXhpbXVt
IHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3Nl
dCk6IFNldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2Fs
YWJsZV9nZXQpOiBHZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBlZmwvZXdrL2V3
a192aWV3Lmg6CisKIDIwMTAtMDctMDUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KSW5kZXg6IFdlYktpdC9lZmwvRVdlYkxhdW5jaGVyL21haW4uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZWZsL0VXZWJMYXVuY2hlci9tYWluLmMJKHJldmlzaW9uIDYyNjEzKQorKysgV2ViS2l0
L2VmbC9FV2ViTGF1bmNoZXIvbWFpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBA
CiAKICNkZWZpbmUgREVGQVVMVF9XSURUSCAgICAgIDgwMAogI2RlZmluZSBERUZBVUxUX0hFSUdI
VCAgICAgNjAwCisjZGVmaW5lIERFRkFVTFRfWk9PTV9JTklUICAxLjAKIAogI2RlZmluZSBpbmZv
KGZvcm1hdCwgYXJncy4uLikgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXApAQCAtMTI1LDYgKzEyNiwxNSBAQCBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9w
dGlvbnMgPSB7CiAgICAgfQogfTsKIAordHlwZWRlZiBzdHJ1Y3QgX1ZpZXdwb3J0IHsKKyAgICBp
bnQgdzsKKyAgICBpbnQgaDsKKyAgICBmbG9hdCBpbml0U2NhbGU7CisgICAgZmxvYXQgbWluU2Nh
bGU7CisgICAgZmxvYXQgbWF4U2NhbGU7CisgICAgRWluYV9Cb29sIHVzZXJTY2FsYWJsZTsKK30g
Vmlld3BvcnQ7CisKIHR5cGVkZWYgc3RydWN0IF9FTGF1bmNoZXIgewogICAgIEVjb3JlX0V2YXMg
KmVlOwogICAgIEV2YXMgKmV2YXM7CkBAIC0xMzIsNiArMTQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X0VMYXVuY2hlciB7CiAgICAgRXZhc19PYmplY3QgKmJyb3dzZXI7CiAgICAgY29uc3QgY2hhciAq
dGhlbWU7CiAgICAgY29uc3QgY2hhciAqdXNlckFnZW50OworICAgIFZpZXdwb3J0IHZpZXdwb3J0
OwogfSBFTGF1bmNoZXI7CiAKIHN0YXRpYyB2b2lkIGJyb3dzZXJEZXN0cm95KEVjb3JlX0V2YXMg
KmVlKTsKQEAgLTIyNSw2ICsyMzYsMjMgQEAgdGl0bGVfc2V0KEVjb3JlX0V2YXMgKmVlLCBjb25z
dCBjaGFyICp0aQogICAgIGVjb3JlX2V2YXNfdGl0bGVfc2V0KGVlLCBsYWJlbCk7CiB9CiAKKy8q
KgorICogVGhpcyBpcyBlbiBleGFtcGxlIGZ1bmN0aW9uIHRvIGFkanVzdCB2aWV3cG9ydCB2aWEg
dmlld3BvcnQgdGFnJ3MgYXJndW1lbnRzLgorICogQXBwbGljYXRpb24gY2FuIGludm9rZSB0aGlz
IGZ1bmN0aW9uIGluIG9yZGVyIHRvIGFkanVzdCB2aWV3cG9ydCB0YWcgd2hlbiBpdCBpcyByZXF1
aXJlZC4KKyAqLworc3RhdGljIHZvaWQKK3ZpZXdwb3J0X3NldCgpCit7CisgICAgRUxhdW5jaGVy
ICphcHA7CisgICAgYXBwID0gKEVMYXVuY2hlciopIGVpbmFfbGlzdF9kYXRhX2dldCh3aW5kb3dz
KTsKKworICAgIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChhcHAtPmJyb3dzZXIsIGFw
cC0+dmlld3BvcnQudywgYXBwLT52aWV3cG9ydC5oKTsKKyAgICBld2tfdmlld196b29tX3NldChh
cHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQuaW5pdFNjYWxlLCAwLCAwKTsKKyAgICBpZiAoIWV3
a192aWV3X3pvb21fcmFuZ2Vfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC5taW5TY2Fs
ZSwgYXBwLT52aWV3cG9ydC5tYXhTY2FsZSkpCisgICAgICAgIGluZm8oIiBGYWlsIHRvIHNldCB6
b29tIHJhbmdlLiBtaW5TY2FsZSA9ICVmLCBtYXhTY2FsZSA9ICVmXG4iLCBhcHAtPnZpZXdwb3J0
Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNjYWxlKTsKKyAgICBld2tfdmlld191c2VyX3Nj
YWxhYmxlX3NldChhcHAtPmJyb3dzZXIsIGFwcC0+dmlld3BvcnQudXNlclNjYWxhYmxlKTsKK30K
Kwogc3RhdGljIHZvaWQKIG9uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAgLTM0NSw2ICszNzMsNDggQEAg
b25fdG9vbHRpcF90ZXh0X3NldCh2b2lkKiB1c2VyX2RhdGEsIEV2YQogICAgICAgICBpbmZvKCIl
c1xuIiwgdGV4dCk7CiB9CiAKKy8qKgorICogInZpZXdwb3J0LGNoYW5nZWQiIHNpZ25hbCB3aWxs
IGJlIGFsd2F5cyBlbWl0dGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHZpZXdwb3J0IGV4aXN0ZW5jZS4K
KyAqCisgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBwcm9jZXNzIHRoZSB2aWV3cG9ydCB0YWcsIHlv
dSBjYW4gZWl0aGVyIGRvIG5vdGhpbmcgaW4gdGhpcyBjYWxsYmFjaworICogb3Igc2ltcGx5IGln
bm9yZSB0aGUgc2lnbmFsIGluIHlvdXIgYXBwbGljYXRpb24uCisgKiAKKyAqIE1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhpcyBjYW4gYmUgZm91bmQgYXQgaHR0cDovL2RldmVsb3Blci5hcHBsZS5j
b20vc2FmYXJpL2xpYnJhcnkvZG9jdW0KKyAqIGVudGF0aW9uL2FwcGxlYXBwbGljYXRpb25zL3Jl
ZmVyZW5jZS9zYWZhcml3ZWJjb250ZW50L3VzaW5ndGhldmlld3BvcnQvdXNpbmd0aGV2aWV3cG9y
dC5odG1sCisgKi8KK3N0YXRpYyB2b2lkCitvbl92aWV3cG9ydF9jaGFuZ2VkKHZvaWQqIHVzZXJf
ZGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRUxh
dW5jaGVyICphcHAgPSAoRUxhdW5jaGVyICopdXNlcl9kYXRhOworCisgICAgZmxvYXQgdywgaCwg
aW5pdFNjYWxlLCBtaW5TY2FsZSwgbWF4U2NhbGUsIHVzZXJTY2FsYWJsZTsKKworICAgIGV3a192
aWV3X3ZpZXdwb3J0X2dldCh3ZWJ2aWV3LCAmdywgJmgsICZpbml0U2NhbGUsICZtYXhTY2FsZSwg
Jm1pblNjYWxlLCAmdXNlclNjYWxhYmxlKTsKKworICAgIC8qKgorICAgICAqIElmIHRoZXJlIGlz
IG5vIGFyZ3VtZW50IGluIHZpZXdwb3J0IHRhZywgYXJndW1lbnQncyB2YWx1ZSBpcyAtMS4KKyAg
ICAgKi8KKyAgICBpZiAoKGludCl3ID09IC0xKQorICAgICAgICB3ID0gREVGQVVMVF9XSURUSDsK
KyAgICBpZiAoKGludCloID09IC0xKQorICAgICAgICBoID0gREVGQVVMVF9IRUlHSFQ7CisgICAg
aWYgKChpbnQpaW5pdFNjYWxlID09IC0xKQorICAgICAgICBpbml0U2NhbGUgPSBERUZBVUxUX1pP
T01fSU5JVDsgLy8gVGhlcmUncyBubyBzY2FsZSBzZXBhcmF0ZWQgZnJvbSB6b29taW5nIGluIHdl
YmtpdC1lZmwuCisgICAgaWYgKChpbnQpbWluU2NhbGUgPT0gLTEpCisgICAgICAgIG1pblNjYWxl
ID0gZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KHdlYnZpZXcpOworICAgIGlmICgoaW50KW1h
eFNjYWxlID09IC0xKQorICAgICAgICBtYXhTY2FsZSA9IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4
X2dldCh3ZWJ2aWV3KTsKKyAgICBpZiAoKGludCl1c2VyU2NhbGFibGUgPT0gLTEpCisgICAgICAg
IHVzZXJTY2FsYWJsZSA9IEVJTkFfVFJVRTsKKworICAgIGFwcC0+dmlld3BvcnQudyA9IChpbnQp
dzsKKyAgICBhcHAtPnZpZXdwb3J0LmggPSAoaW50KWg7CisgICAgYXBwLT52aWV3cG9ydC5pbml0
U2NhbGUgPSBpbml0U2NhbGU7CisgICAgYXBwLT52aWV3cG9ydC5taW5TY2FsZSA9IG1pblNjYWxl
OworICAgIGFwcC0+dmlld3BvcnQubWF4U2NhbGUgPSBtYXhTY2FsZTsKKyAgICBhcHAtPnZpZXdw
b3J0LnVzZXJTY2FsYWJsZSA9IChFaW5hX0Jvb2wpdXNlclNjYWxhYmxlOworfQorCiBzdGF0aWMg
dm9pZAogb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogd2Vi
dmlldywgdm9pZCogZXZlbnRfaW5mbykKIHsKQEAgLTU3OSw2ICs2NDksNyBAQCBicm93c2VyQ3Jl
YXRlKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRsZV9jaGFuZ2Vk
LCBhcHApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIs
ICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcCk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGFwcC0+YnJvd3NlciwgImxvYWQsZmluaXNoZWQiLCBvbl9sb2FkX2Zp
bmlzaGVkLCBhcHApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJy
b3dzZXIsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgb25fdmlld3BvcnRfY2hhbmdlZCwgYXBwKTsKIAog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFy
cyx2aXNpYmxlLHNldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfc2V0LCBhcHApOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHAtPmJyb3dzZXIsICJ0b29sYmFycyx2aXNpYmxl
LGdldCIsIG9uX3Rvb2xiYXJzX3Zpc2libGVfZ2V0LCBhcHApOwpJbmRleDogV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjI2MTMpCisr
KyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlZp
ZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTUwNCw0ICs1MDUs
MTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmNob29zZUljb25Gb3JGaWxlcwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpkaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1l
bnRzKSBjb25zdAoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNf
Y2FzdDxGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOwor
ICAgIGlmIChjbGllbnQtPmdldEluaXRMYXlvdXRDb21wbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KG1fdmlldywgYXJndW1lbnRzLndpZHRoLCBh
cmd1bWVudHMuaGVpZ2h0LCBhcmd1bWVudHMuaW5pdGlhbFNjYWxlLCBhcmd1bWVudHMubWluaW11
bVNjYWxlLCBhcmd1bWVudHMubWF4aW11bVNjYWxlLCBhcmd1bWVudHMudXNlclNjYWxhYmxlKTsK
K30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCShyZXZpc2lvbiA2MjYxMykKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBpY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZywgMHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0
QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0OworCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsK
ICAgICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CiB9OwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDYyNjEz
KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNr
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNzAsNiArNzEsNyBAQCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFCiAgICAgLCBtX2N1c3RvbVVz
ZXJBZ2VudCgiIikKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9u
c2VUb1BsdWdpbihmYWxzZSkKKyAgICAsIG1faW5pdExheW91dENvbXBsZXRlZChmYWxzZSkKIHsK
IH0KIApAQCAtNTc1LDExICs1NzcsMTYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRDaAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogeworICAgIG1faW5pdExheW91dENvbXBsZXRlZCA9IGZhbHNlOworCiAgICAgZXdr
X2ZyYW1lX3VyaV9jaGFuZ2VkKG1fZnJhbWUpOwogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWlu
X2dldChtX3ZpZXcpICE9IG1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBld2tfdmlld190
aXRsZV9zZXQobV92aWV3LCAwKTsKICAgICBld2tfdmlld191cmlfY2hhbmdlZChtX3ZpZXcpOwor
CisgICAgVmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworICAgIGV3a192aWV3X3ZpZXdwb3J0
X3NldChtX3ZpZXcsIGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRz
LmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1T
Y2FsZSwgYXJndW1lbnRzLnVzZXJTY2FsYWJsZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKQEAgLTU5MCw3ICs1OTcsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKIHsKICAgICAvLyBlbWl0IG1f
ZnJhbWUtPmluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1faW5pdExheW91dENvbXBsZXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKSW5kZXg6
IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJ
KHJldmlzaW9uIDYyNjEzKQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcgJmFnZW50KTsKICAgICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2Vu
dCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRJbml0TGF5b3V0Q29tcGxldGVkKGJvb2wgY29tcGxl
dGVkKSB7IG1faW5pdExheW91dENvbXBsZXRlZCA9IGNvbXBsZXRlZDsgfQorICAgIGJvb2wgZ2V0
SW5pdExheW91dENvbXBsZXRlZCgpIHsgcmV0dXJuIG1faW5pdExheW91dENvbXBsZXRlZDsgfQor
CiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aGFzRnJhbWVWaWV3KCkgY29uc3Q7CiAKQEAgLTIxMyw2ICsyMTYsOCBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJl
Y3QgZGF0YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW47CisKKyAgICBib29sIG1faW5pdExheW91dENvbXBsZXRlZDsK
IH07CiAKIH0KSW5kZXg6IFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAkocmV2aXNpb24gNjI2MTMpCisrKyBXZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBA
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdrX3ZpZXcKIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8s
IEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAogdm9pZCAgICAgICAg
ICAgICBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJl
Y3QpOwordm9pZCBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHcs
IGZsb2F0IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxvYXQgbWluX3Nj
YWxlLCBmbG9hdCB1c2VyX3NjYWxhYmxlKTsKIAogdm9pZCAgICAgICAgICAgICBld2tfdmlld19k
b3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRG93bmxvYWQgKmRvd25sb2FkKTsK
IApJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAkocmV2aXNpb24gNjI2MTMpCisrKyBXZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMTkgQEAgc3RydWN0
IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICBFaW5hX0Jvb2wgcmVzaXphYmxlX3Rl
eHRhcmVhczoxOwogICAgICAgICBFaW5hX0Jvb2wgcHJpdmF0ZV9icm93c2luZzoxOwogICAgICAg
ICBFaW5hX0Jvb2wgY2FyZXRfYnJvd3Npbmc6MTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAg
ICAgIGZsb2F0IHc7CisgICAgICAgICAgICBmbG9hdCBoOworICAgICAgICAgICAgZmxvYXQgaW5p
dF9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IG1pbl9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0
IG1heF9zY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IHVzZXJfc2NhbGFibGU7CisgICAgICAgIH0g
dmlld3BvcnQ7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBmbG9hdCBtaW5fc2NhbGU7
CisgICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7CisgICAgICAgICAgICBFaW5hX0Jvb2wgdXNl
cl9zY2FsYWJsZToxOworICAgICAgICB9IHpvb21fcmFuZ2U7CiAgICAgfSBzZXR0aW5nczsKICAg
ICBzdHJ1Y3QgewogICAgICAgICBzdHJ1Y3QgewpAQCAtNTc2LDYgKzU4OSwxMiBAQCBzdGF0aWMg
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJpdi0+c2V0dGluZ3MucHJp
dmF0ZV9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93c2luZyA9IHByaXYtPnBhZ2Vfc2V0
dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAKKyAgICAvLyBTaW5jZSB0aGVyZSdzIG5v
IHNjYWxlIHNlcGFyYXRlZCBmcm9tIHpvb21pbmcgaW4gd2Via2l0LWVmbCwgdGhpcyBmdW5jdGlv
bmFsaXR5IG9mCisgICAgLy8gdmlld3BvcnQgbWV0YSB0YWcgaXMgaW1wbGVtZW50ZWQgdXNpbmcg
em9vbS4gV2hlbiBzY2FsZSB6b29tIGlzIHN1cHBvcnRlZCBieSB3ZWJraXQtZWZsLAorICAgIC8v
IHRoaXMgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBzY2FsZSB6b29tIHBh
dGNoLgorICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlID0gWk9PTV9NSU47
CisgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUgPSBaT09NX01BWDsKKwog
ICAgIHByaXYtPm1haW5fZnJhbWUgPSBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoc2QsIHByaXYs
IDApLmdldCgpOwogICAgIGlmICghcHJpdi0+bWFpbl9mcmFtZSkgewogICAgICAgICBDUklUSUNB
TCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIGZyYW1lLiIpOwpAQCAtMTAwMSw2ICsxMDIwLDExIEBA
IHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXMKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYpOworCisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVu
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4ocHJpdi0+bWFp
bl9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBpZiAoIWNsaWVudC0+Z2V0SW5pdExh
eW91dENvbXBsZXRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJDb3JlOjpGcmFtZVZp
ZXcqIHZpZXcgPSBzZC0+X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodyA8PSAw
ICYmIGggPD0gMCkgewogICAgICAgICBpZiAoIXByaXYtPmZpeGVkX2xheW91dC51c2UpCkBAIC0x
NzU3LDE0ICsxNzgxLDIyIEBAIGZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWMKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9v
bSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CisKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlO
QV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPnpv
b21fc2V0LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoem9vbSA8IFpPT01fTUlOKSB7Ci0gICAgICAg
IFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKVpPT01fTUlOLCAoZG91Ymxl
KXpvb20pOworCisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFi
bGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6
ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJs
ZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29t
ID4gWk9PTV9NQVgpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChk
b3VibGUpWk9PTV9NQVgsIChkb3VibGUpem9vbSk7CisgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0
aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMg
PiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwg
KGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0x
ODI3LDE0ICsxODU5LDIyIEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9h
dCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKKwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFw
aS0+em9vbV93ZWFrX3NldCwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHpvb20gPCBaT09NX01JTikg
ewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlaT09NX01J
TiwgKGRvdWJsZSl6b29tKTsKKworICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51
c2VyX3NjYWxhYmxlKSB7CisgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7Cisg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIGlmICh6b29tIDwgcHJpdi0+
c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVs
IGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2Nh
bGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KLSAg
ICBpZiAoem9vbSA+IFpPT01fTUFYKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVm
IDogJWYiLCAoZG91YmxlKVpPT01fTUFYLCAoZG91YmxlKXpvb20pOworICAgIGlmICh6b29tID4g
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKKyAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUsIChkb3VibGUpem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAg
IH0KIApAQCAtMTk3NywxMiArMjAxNywxNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9zZXQoRXZhCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGks
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKIAotICAgIGlmICh6b29tIDwgWk9PTV9NSU4p
IHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpWk9PTV9N
SU4sIChkb3VibGUpem9vbSk7CisgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVz
ZXJfc2NhbGFibGUpIHsKKyAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29tID4gWk9PTV9NQVgp
IHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpWk9PTV9N
QVgsIChkb3VibGUpem9vbSk7CisKKyAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWluX3NjYWxlKSB7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYi
LCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpv
b20pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisgICAgaWYgKHpvb20gPiBw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1h
eF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAg
fQogCkBAIC0zNzEwLDMgKzM3NTUsMTQ4IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVz
dChFdmFzX09iamUKICAgICBEQkcoInZpZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG8sICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwogfQorCisv
KioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisg
KgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVp
Z2h0LgorICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbFNjYWxlIHZhbHVlLgorICogQHBhcmFt
IG1heF9zY2FsZSBtYXhpbXVtU2NhbGUgdmFsdWUuCisgKiBAcGFyYW0gbWluX3NjYWxlIG1pbmlt
dW1TY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXJzY2FsYWJsZSBmbGFn
LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInZpZXdwb3J0LGNoYW5nZWQiIHdpdGggbm8gcGFyYW1l
dGVycy4KKyAqLwordm9pZCBld2tfdmlld192aWV3cG9ydF9zZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0IHcsIGZsb2F0IGgsIGZsb2F0IGluaXRfc2NhbGUsIGZsb2F0IG1heF9zY2FsZSwgZmxvYXQg
bWluX3NjYWxlLCBmbG9hdCB1c2VyX3NjYWxhYmxlKQoreworICAgIEVXS19WSUVXX1NEX0dFVChv
LCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgcHJpdi0+c2V0
dGluZ3Mudmlld3BvcnQudyA9IHc7CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaCA9IGg7
CisgICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaW5pdF9zY2FsZSA9IGluaXRfc2NhbGU7Cisg
ICAgcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHBy
aXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1heF9zY2FsZSA9IG1heF9zY2FsZTsKKyAgICBwcml2LT5z
ZXR0aW5ncy52aWV3cG9ydC51c2VyX3NjYWxhYmxlID0gdXNlcl9zY2FsYWJsZTsKKworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsK
K30KKworLyoqCisgKiBHZXRzIGRhdGEgb2Ygdmlld3BvcnQgbWV0YSB0YWcuCisgKgorICogQHBh
cmFtIG8gdmlldy4KKyAqIEBwYXJhbSB3IHdpZHRoLgorICogQHBhcmFtIGggaGVpZ2h0LgorICog
QHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbCBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtYXhfc2Nh
bGUgbWF4aW11bSBTY2FsZSB2YWx1ZS4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSBTY2Fs
ZSB2YWx1ZS4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHVzZXIgU2NhbGFibGUgdmFsdWUuCisg
Ki8KK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfZ2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCogdywg
ZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCogbWF4X3NjYWxlLCBmbG9hdCogbWlu
X3NjYWxlLCBmbG9hdCogdXNlcl9zY2FsYWJsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywg
c2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmICh3KQorICAg
ICAgICAqdyA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lnc7CisgICAgaWYgKGgpCisgICAgICAg
ICpoID0gcHJpdi0+c2V0dGluZ3Mudmlld3BvcnQuaDsKKyAgICBpZiAoaW5pdF9zY2FsZSkKKyAg
ICAgICAgKmluaXRfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC5pbml0X3NjYWxlOwor
ICAgIGlmIChtYXhfc2NhbGUpCisgICAgICAgICptYXhfc2NhbGUgPSBwcml2LT5zZXR0aW5ncy52
aWV3cG9ydC5tYXhfc2NhbGU7CisgICAgaWYgKG1pbl9zY2FsZSkKKyAgICAgICAgKm1pbl9zY2Fs
ZSA9IHByaXYtPnNldHRpbmdzLnZpZXdwb3J0Lm1pbl9zY2FsZTsKKyAgICBpZiAodXNlcl9zY2Fs
YWJsZSkKKyAgICAgICAgKnVzZXJfc2NhbGFibGUgPSBwcml2LT5zZXR0aW5ncy52aWV3cG9ydC51
c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIFNldHMgdGhlIHpvb20gcmFuZ2UuCisgKgorICog
QHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2YWx1ZSBvZiB6b29t
IHJhbmdlLgorICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2Uu
CisgKiAKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gcmFuZ2UgaXMgY2hhbmdlZCwg
QGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3
X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1h
eF9zY2FsZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmIChtYXhfc2NhbGUgPCBtaW5fc2NhbGUpIHsKKyAg
ICAgICAgV1JOKCJtaW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4X3NjYWxlIik7CisgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFu
Z2UubWluX3NjYWxlID0gbWluX3NjYWxlOworICAgIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWF4X3NjYWxlID0gbWF4X3NjYWxlOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoq
CisgKiBHZXRzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCisgKgorICogQHBhcmFt
IG8gdmlldy4KKyAqCisgKiBAcmV0dXJuIG1pbmltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAq
LworZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KEV2YXNfT2JqZWN0KiBvKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOworCisgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlOwor
fQorCisvKioKKyAqIEdldHMgdGhlIG1heGltdW0gdmFsdWUgb2Ygem9vbSByYW5nZS4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3LgorICoKKyAqIEByZXR1cm4gbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJh
bmdlLgorICovCitmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhf
c2NhbGU7Cit9CisKKy8qKgorICogU2V0cyBpZiB6b29tIGlzIGVuYWJsZWQuCisgKgorICogQHBh
cmFtIG8gdmlldy4KKyAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3
aGljaCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVsdHMKKyAqIHRvIEBjIEVJTkFfVFJVRS4KKyAq
Lwordm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIHVzZXJfc2NhbGFibGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBF
V0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLnVzZXJfc2NhbGFibGUgPSB1c2VyX3NjYWxhYmxlOworfQorCisvKioKKyAqIEdldHMgaWYg
em9vbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gdXNlcl9z
Y2FsYWJsZSB3aGVyZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2FsYWJsZSB2YWx1ZS4K
KyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJsZWQsIEBjIEVJTkFf
RkFMU0UgaWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQo
RXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS51c2VyX3NjYWxhYmxlOworfQpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCShyZXZpc2lvbiA2MjYx
MykKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYg
Kzg1LDcgQEAgZXh0ZXJuICJDIiB7CiAgKiAgLSAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3du
bG9hZDogcmVwb3J0cyBhIGRvd25sb2FkIGlzIGJlaW5nIHJlcXVlc3RlZAogICogICAgYW5kIGFz
IGFyZ3VtZW50cyBnaXZlcyBpdHMgZGV0YWlscy4KICAqICAtICJpY29uLHJlY2VpdmVkIiwgdm9p
ZDogbWFpbiBmcmFtZSByZWNlaXZlZCBhbiBpY29uLgorICogIC0gInZpZXdwb3J0LGNoYW5nZWQi
LCB2b2lkOiBSZXBvcnQgdGhhdCB2aWV3cG9ydCBoYXMgY2hhbmdlZC4KICAqLwogCiB0eXBlZGVm
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwpAQCAtNDUz
LDYgKzQ1NCwxMyBAQCBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhCiBF
QVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYs
IGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiBFQVBJIEVpbmFfQm9v
bCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNh
aXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKK0VBUEkgdm9pZCBld2tf
dmlld192aWV3cG9ydF9nZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0KiB3LCBmbG9hdCogaCwgZmxv
YXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0
KiB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CitFQVBJ
IGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldChFdmFzX09iamVjdCogbyk7CitFQVBJ
IGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCogbyk7CitFQVBJ
IHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCB1c2VyX3NjYWxhYmxlKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVf
Z2V0KEV2YXNfT2JqZWN0KiBvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>